summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct6
-rw-r--r--configs/autoconf.in12
-rw-r--r--configs/darwin7
-rw-r--r--configs/linux-dri2
-rw-r--r--configs/linux-egl2
-rw-r--r--configs/linux-opengl-es2
-rw-r--r--configs/linux-osmesa6
-rw-r--r--configs/linux-osmesa162
-rw-r--r--configs/linux-osmesa322
-rw-r--r--configure.ac49
-rw-r--r--docs/GL3.txt4
-rw-r--r--docs/lists.html9
-rw-r--r--docs/relnotes-7.8.2.html6
-rw-r--r--include/GL/glext.h3806
-rw-r--r--include/GL/glxext.h4
-rw-r--r--include/GL/internal/dri_interface.h14
-rw-r--r--progs/demos/rain.cxx2
-rw-r--r--progs/demos/textures.c66
-rw-r--r--progs/demos/vao_demo.c2
-rw-r--r--progs/egl/eglut/Makefile5
-rw-r--r--progs/egl/opengl/Makefile4
-rw-r--r--progs/egl/opengles1/Makefile4
-rw-r--r--progs/egl/openvg/Makefile4
-rw-r--r--progs/osdemos/Makefile2
-rw-r--r--progs/osdemos/ostest1.c6
-rw-r--r--progs/tests/arraytexture.c2
-rw-r--r--progs/tests/blendminmax.c2
-rw-r--r--progs/tests/blendsquare.c2
-rw-r--r--progs/tests/bug_3101.c2
-rw-r--r--progs/tests/bug_3195.c2
-rw-r--r--progs/tests/crossbar.c2
-rw-r--r--progs/tests/interleave.c2
-rw-r--r--progs/tests/invert.c2
-rw-r--r--progs/tests/prog_parameter.c2
-rw-r--r--progs/tests/stencil_twoside.c2
-rw-r--r--progs/tests/stencil_wrap.c2
-rw-r--r--progs/tests/vao-01.c2
-rw-r--r--progs/tests/vao-02.c2
-rw-r--r--progs/tests/zreaddraw.c61
-rw-r--r--src/egl/drivers/dri2/egl_dri2.c3
-rw-r--r--src/gallium/Makefile.template2
-rw-r--r--src/gallium/auxiliary/Makefile1
-rw-r--r--src/gallium/auxiliary/SConscript1
-rw-r--r--src/gallium/auxiliary/cso_cache/cso_context.c6
-rw-r--r--src/gallium/auxiliary/draw/draw_llvm.c174
-rw-r--r--src/gallium/auxiliary/draw/draw_llvm.h17
-rw-r--r--src/gallium/auxiliary/draw/draw_pipe_vbuf.c4
-rw-r--r--src/gallium/auxiliary/draw/draw_pipe_wide_line.c1
-rw-r--r--src/gallium/auxiliary/draw/draw_private.h3
-rw-r--r--src/gallium/auxiliary/draw/draw_pt.c48
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_emit.c10
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_fetch.c9
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_fetch_emit.c6
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c3
-rw-r--r--src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c62
-rw-r--r--src/gallium/auxiliary/draw/draw_vs.c4
-rw-r--r--src/gallium/auxiliary/draw/draw_vs.h13
-rw-r--r--src/gallium/auxiliary/draw/draw_vs_aos.c25
-rw-r--r--src/gallium/auxiliary/draw/draw_vs_exec.c2
-rw-r--r--src/gallium/auxiliary/draw/draw_vs_ppc.c4
-rw-r--r--src/gallium/auxiliary/draw/draw_vs_sse.c4
-rw-r--r--src/gallium/auxiliary/draw/draw_vs_varient.c23
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_arit.c26
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_flow.c75
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_flow.h10
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_format_aos.c7
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_init.c10
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_logic.c12
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_logic.h3
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample.c59
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample.h8
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c125
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi.h4
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c226
-rw-r--r--src/gallium/auxiliary/os/os_thread.h9
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt36
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_dump.c1
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_exec.c81
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_info.c8
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h4
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_sanity.c19
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_sse2.c16
-rw-r--r--src/gallium/auxiliary/translate/translate.h3
-rw-r--r--src/gallium/auxiliary/translate/translate_generic.c19
-rw-r--r--src/gallium/auxiliary/translate/translate_sse.c10
-rw-r--r--src/gallium/auxiliary/util/u_caps.c245
-rw-r--r--src/gallium/auxiliary/util/u_caps.h67
-rw-r--r--src/gallium/auxiliary/util/u_debug.c42
-rw-r--r--src/gallium/auxiliary/util/u_debug.h39
-rw-r--r--src/gallium/auxiliary/util/u_dump_state.c4
-rw-r--r--src/gallium/auxiliary/util/u_format.h12
-rw-r--r--src/gallium/auxiliary/util/u_format_s3tc.c361
-rw-r--r--src/gallium/auxiliary/util/u_surfaces.c8
-rw-r--r--src/gallium/auxiliary/util/u_tile.c4
-rw-r--r--src/gallium/docs/source/conf.py4
-rw-r--r--src/gallium/docs/source/screen.rst155
-rw-r--r--src/gallium/docs/source/tgsi.rst51
-rw-r--r--src/gallium/drivers/cell/spu/spu_exec.c12
-rw-r--r--src/gallium/drivers/failover/fo_context.c2
-rw-r--r--src/gallium/drivers/failover/fo_state.c33
-rw-r--r--src/gallium/drivers/i965/brw_curbe.c2
-rw-r--r--src/gallium/drivers/i965/brw_state_batch.c4
-rw-r--r--src/gallium/drivers/i965/intel_decode.c11
-rw-r--r--src/gallium/drivers/identity/id_context.c6
-rw-r--r--src/gallium/drivers/identity/id_drm.c2
-rw-r--r--src/gallium/drivers/llvmpipe/Makefile7
-rw-r--r--src/gallium/drivers/llvmpipe/SConscript2
-rw-r--r--src/gallium/drivers/llvmpipe/lp_context.c63
-rw-r--r--src/gallium/drivers/llvmpipe/lp_context.h3
-rw-r--r--src/gallium/drivers/llvmpipe/lp_draw_arrays.c28
-rw-r--r--src/gallium/drivers/llvmpipe/lp_flush.c50
-rw-r--r--src/gallium/drivers/llvmpipe/lp_flush.h21
-rw-r--r--src/gallium/drivers/llvmpipe/lp_jit.c9
-rw-r--r--src/gallium/drivers/llvmpipe/lp_limits.h (renamed from src/gallium/drivers/llvmpipe/lp_tile_size.h)37
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast.c33
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast.h2
-rw-r--r--src/gallium/drivers/llvmpipe/lp_rast_priv.h10
-rw-r--r--src/gallium/drivers/llvmpipe/lp_scene.c122
-rw-r--r--src/gallium/drivers/llvmpipe/lp_scene.h48
-rw-r--r--src/gallium/drivers/llvmpipe/lp_screen.c70
-rw-r--r--src/gallium/drivers/llvmpipe/lp_screen.h2
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup.c76
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_context.h1
-rw-r--r--src/gallium/drivers/llvmpipe/lp_setup_vbuf.c7
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state.h139
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_blend.c46
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_clip.c31
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_fs.c48
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_rasterizer.c19
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_sampler.c30
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_surface.c4
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_vertex.c20
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_vs.c23
-rw-r--r--src/gallium/drivers/llvmpipe/lp_surface.c28
-rw-r--r--src/gallium/drivers/llvmpipe/lp_surface.h2
-rw-r--r--src/gallium/drivers/llvmpipe/lp_test_blend.c2
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tex_sample.c (renamed from src/gallium/drivers/llvmpipe/lp_tex_sample_llvm.c)0
-rw-r--r--src/gallium/drivers/llvmpipe/lp_texture.c136
-rw-r--r--src/gallium/drivers/llvmpipe/lp_texture.h11
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tile_image.c22
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tile_image.h8
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tile_soa.h11
-rw-r--r--src/gallium/drivers/llvmpipe/lp_tile_soa.py45
-rwxr-xr-xsrc/gallium/drivers/llvmpipe/sp2lp.sh34
-rw-r--r--src/gallium/drivers/nouveau/SConscript11
-rw-r--r--src/gallium/drivers/nv50/SConscript26
-rw-r--r--src/gallium/drivers/nv50/nv50_program.c15
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.c18
-rw-r--r--src/gallium/drivers/nv50/nv50_screen.h3
-rw-r--r--src/gallium/drivers/nv50/nv50_surface.c28
-rw-r--r--src/gallium/drivers/nvfx/SConscript40
-rw-r--r--src/gallium/drivers/nvfx/nvfx_vbo.c1
-rw-r--r--src/gallium/drivers/r300/Makefile1
-rw-r--r--src/gallium/drivers/r300/SConscript1
-rw-r--r--src/gallium/drivers/r300/r300_context.c16
-rw-r--r--src/gallium/drivers/r300/r300_context.h26
-rw-r--r--src/gallium/drivers/r300/r300_cs.h10
-rw-r--r--src/gallium/drivers/r300/r300_debug.c2
-rw-r--r--src/gallium/drivers/r300/r300_emit.c106
-rw-r--r--src/gallium/drivers/r300/r300_emit.h5
-rw-r--r--src/gallium/drivers/r300/r300_fs.c8
-rw-r--r--src/gallium/drivers/r300/r300_hyperz.c108
-rw-r--r--src/gallium/drivers/r300/r300_hyperz.h30
-rw-r--r--src/gallium/drivers/r300/r300_reg.h2
-rw-r--r--src/gallium/drivers/r300/r300_render.c98
-rw-r--r--src/gallium/drivers/r300/r300_screen.c3
-rw-r--r--src/gallium/drivers/r300/r300_screen.h2
-rw-r--r--src/gallium/drivers/r300/r300_state.c137
-rw-r--r--src/gallium/drivers/r300/r300_state_derived.c241
-rw-r--r--src/gallium/drivers/r300/r300_state_inlines.h23
-rw-r--r--src/gallium/drivers/r300/r300_state_invariant.c14
-rw-r--r--src/gallium/drivers/r300/r300_texture.c53
-rw-r--r--src/gallium/drivers/r300/r300_texture.h2
-rw-r--r--src/gallium/drivers/r300/r300_tgsi_to_rc.c2
-rw-r--r--src/gallium/drivers/r300/r300_vs.c131
-rw-r--r--src/gallium/drivers/r300/r300_vs.h10
-rw-r--r--src/gallium/drivers/r300/r300_winsys.h6
-rw-r--r--src/gallium/drivers/softpipe/sp_clear.c10
-rw-r--r--src/gallium/drivers/softpipe/sp_flush.c68
-rw-r--r--src/gallium/drivers/softpipe/sp_flush.h17
-rw-r--r--src/gallium/drivers/softpipe/sp_screen.c75
-rw-r--r--src/gallium/drivers/softpipe/sp_tex_tile_cache.c3
-rw-r--r--src/gallium/drivers/softpipe/sp_texture.c146
-rw-r--r--src/gallium/drivers/softpipe/sp_tile_cache.c12
-rw-r--r--src/gallium/drivers/softpipe/sp_tile_cache.h2
-rw-r--r--src/gallium/drivers/svga/svga_draw_arrays.c5
-rw-r--r--src/gallium/drivers/svga/svga_resource.c4
-rw-r--r--src/gallium/drivers/svga/svga_screen.c1
-rw-r--r--src/gallium/drivers/svga/svga_state_need_swtnl.c10
-rw-r--r--src/gallium/drivers/svga/svga_state_vs.c2
-rw-r--r--src/gallium/drivers/svga/svga_tgsi_insn.c3
-rw-r--r--src/gallium/drivers/trace/tr_context.c4
-rw-r--r--src/gallium/drivers/trace/tr_drm.c2
-rw-r--r--src/gallium/include/pipe/p_defines.h10
-rw-r--r--src/gallium/include/pipe/p_screen.h4
-rw-r--r--src/gallium/include/pipe/p_shader_tokens.h6
-rw-r--r--src/gallium/include/state_tracker/st_api.h35
-rw-r--r--src/gallium/state_trackers/dri/common/dri1_helper.c10
-rw-r--r--src/gallium/state_trackers/dri/common/dri_context.c68
-rw-r--r--src/gallium/state_trackers/dri/common/dri_context.h2
-rw-r--r--src/gallium/state_trackers/dri/common/dri_drawable.c141
-rw-r--r--src/gallium/state_trackers/dri/common/dri_drawable.h17
-rw-r--r--src/gallium/state_trackers/dri/common/dri_screen.c47
-rw-r--r--src/gallium/state_trackers/dri/common/dri_screen.h29
-rw-r--r--src/gallium/state_trackers/dri/common/dri_st_api.c289
-rw-r--r--src/gallium/state_trackers/dri/common/dri_st_api.h65
-rw-r--r--src/gallium/state_trackers/dri/drm/Makefile1
-rw-r--r--src/gallium/state_trackers/dri/drm/SConscript1
-rw-r--r--src/gallium/state_trackers/dri/drm/dri1.c65
-rw-r--r--src/gallium/state_trackers/dri/drm/dri1.h8
-rw-r--r--src/gallium/state_trackers/dri/drm/dri2.c50
-rw-r--r--src/gallium/state_trackers/dri/drm/dri2.h12
l---------src/gallium/state_trackers/dri/drm/dri_st_api.c1
-rw-r--r--src/gallium/state_trackers/dri/sw/Makefile1
-rw-r--r--src/gallium/state_trackers/dri/sw/SConscript1
l---------src/gallium/state_trackers/dri/sw/dri_st_api.c1
-rw-r--r--src/gallium/state_trackers/dri/sw/drisw.c67
-rw-r--r--src/gallium/state_trackers/dri/sw/drisw.h11
-rw-r--r--src/gallium/state_trackers/egl/common/egl_g3d_st.c28
-rw-r--r--src/gallium/state_trackers/es/st_es1.c13
-rw-r--r--src/gallium/state_trackers/es/st_es2.c14
-rw-r--r--src/gallium/state_trackers/glx/xlib/xm_st.c13
-rw-r--r--src/gallium/state_trackers/vega/vg_manager.c33
-rw-r--r--src/gallium/state_trackers/wgl/stw_st.c4
-rw-r--r--src/gallium/targets/Makefile.dri15
-rw-r--r--src/gallium/targets/dri-swrast/Makefile3
-rw-r--r--src/gallium/targets/dri-swrast/swrast_drm_api.c3
-rw-r--r--src/gallium/targets/libgl-xlib/xlib.c16
-rw-r--r--src/gallium/winsys/i915/sw/i915_sw_buffer.c2
-rw-r--r--src/gallium/winsys/i965/drm/SConscript2
-rw-r--r--src/gallium/winsys/radeon/drm/SConscript1
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm.c4
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_drm_buffer.c15
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_r300.c12
-rw-r--r--src/gallium/winsys/radeon/drm/radeon_winsys.h8
-rw-r--r--src/gallium/winsys/svga/drm/vmw_context.c17
-rw-r--r--src/gallium/winsys/sw/xlib/xlib_sw_winsys.c17
-rw-r--r--src/glx/Makefile2
-rw-r--r--src/glx/XF86dri.c2
-rw-r--r--src/glx/apple/.gitignore4
-rw-r--r--src/glx/apple/GL_aliases10
-rw-r--r--src/glx/apple/GL_extensions106
-rw-r--r--src/glx/apple/GL_noop15
-rw-r--r--src/glx/apple/GL_promoted4
-rw-r--r--src/glx/apple/Makefile129
-rw-r--r--src/glx/apple/OVERALL_DESIGN18
-rw-r--r--src/glx/apple/README_UPDATING8
-rw-r--r--src/glx/apple/RELEASE_NOTES71
-rw-r--r--src/glx/apple/TODO26
-rw-r--r--src/glx/apple/apple_cgl.c128
-rw-r--r--src/glx/apple/apple_cgl.h86
-rw-r--r--src/glx/apple/apple_exports.list623
-rw-r--r--src/glx/apple/apple_glx.c214
-rw-r--r--src/glx/apple/apple_glx.h49
-rw-r--r--src/glx/apple/apple_glx_context.c616
-rw-r--r--src/glx/apple/apple_glx_context.h93
-rw-r--r--src/glx/apple/apple_glx_drawable.c542
-rw-r--r--src/glx/apple/apple_glx_drawable.h227
-rw-r--r--src/glx/apple/apple_glx_pbuffer.c348
-rw-r--r--src/glx/apple/apple_glx_pixmap.c230
-rw-r--r--src/glx/apple/apple_glx_surface.c224
-rw-r--r--src/glx/apple/apple_visual.c153
-rw-r--r--src/glx/apple/apple_visual.h41
-rw-r--r--src/glx/apple/apple_xgl_api_additional.c37
-rw-r--r--src/glx/apple/apple_xgl_api_read.c133
-rw-r--r--src/glx/apple/apple_xgl_api_stereo.c128
-rw-r--r--src/glx/apple/apple_xgl_api_viewport.c46
-rw-r--r--src/glx/apple/appledri.c452
-rw-r--r--src/glx/apple/appledri.h124
-rw-r--r--src/glx/apple/appledristr.h266
-rw-r--r--src/glx/apple/gen_api_header.tcl86
-rw-r--r--src/glx/apple/gen_api_library.tcl212
-rw-r--r--src/glx/apple/gen_code.tcl50
-rw-r--r--src/glx/apple/gen_defs.tcl67
-rw-r--r--src/glx/apple/gen_exports.tcl132
-rw-r--r--src/glx/apple/gen_funcs.tcl735
-rw-r--r--src/glx/apple/gen_types.tcl32
-rw-r--r--src/glx/apple/glx_empty.c375
-rw-r--r--src/glx/apple/glx_error.c65
-rw-r--r--src/glx/apple/glx_error.h33
-rw-r--r--src/glx/apple/glxreply.c134
-rw-r--r--src/glx/apple/specs/enum.spec7522
-rw-r--r--src/glx/apple/specs/enumext.spec6542
-rw-r--r--src/glx/apple/specs/gl.spec28563
-rw-r--r--src/glx/apple/specs/gl.tm322
-rw-r--r--src/glx/apple/specs/glx.spec602
-rw-r--r--src/glx/apple/specs/glxenum.spec420
-rw-r--r--src/glx/apple/specs/glxenumext.spec515
-rw-r--r--src/glx/apple/specs/glxext.spec1330
-rwxr-xr-xsrc/glx/apple/specs/update.sh4
-rw-r--r--src/glx/clientattrib.c2
-rw-r--r--src/glx/dri2_glx.c46
-rw-r--r--src/glx/dri_common.c7
-rw-r--r--src/glx/dri_glx.c2
-rw-r--r--src/glx/drisw_glx.c2
-rw-r--r--src/glx/glcontextmodes.c4
-rw-r--r--src/glx/glx_pbuffer.c197
-rw-r--r--src/glx/glxclient.h24
-rw-r--r--src/glx/glxcmds.c203
-rw-r--r--src/glx/glxcurrent.c69
-rw-r--r--src/glx/glxext.c90
-rw-r--r--src/glx/glxextensions.c38
-rw-r--r--src/glx/indirect.c30
-rw-r--r--src/glx/indirect_size.c2
-rw-r--r--src/glx/singlepix.c2
-rw-r--r--src/mesa/drivers/common/meta.c13
-rw-r--r--src/mesa/drivers/dri/common/dri_util.c87
-rw-r--r--src/mesa/drivers/dri/common/dri_util.h3
-rw-r--r--src/mesa/drivers/dri/i915/i915_fragprog.c18
-rw-r--r--src/mesa/drivers/dri/i915/i915_program.c22
-rw-r--r--src/mesa/drivers/dri/i915/i915_tex_layout.c2
-rw-r--r--src/mesa/drivers/dri/i965/brw_program.c34
-rw-r--r--src/mesa/drivers/dri/i965/brw_sf_state.c15
-rw-r--r--src/mesa/drivers/dri/i965/brw_tex_layout.c80
-rw-r--r--src/mesa/drivers/dri/i965/brw_vs_emit.c90
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_sampler_state.c8
-rw-r--r--src/mesa/drivers/dri/i965/brw_wm_surface_state.c2
-rw-r--r--src/mesa/drivers/dri/intel/intel_screen.c1
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_layout.c8
-rw-r--r--src/mesa/drivers/dri/intel/intel_tex_layout.h2
-rw-r--r--src/mesa/drivers/dri/nouveau/nouveau_screen.c1
-rw-r--r--src/mesa/drivers/dri/r300/r300_state.c15
-rw-r--r--src/mesa/drivers/dri/r600/r600_blit.c4
-rw-r--r--src/mesa/drivers/dri/r600/r600_context.c2
-rw-r--r--src/mesa/drivers/dri/r600/r600_tex.c48
-rw-r--r--src/mesa/drivers/dri/r600/r600_tex.h2
-rw-r--r--src/mesa/drivers/dri/r600/r700_assembler.c21
-rw-r--r--src/mesa/drivers/dri/r600/r700_chip.c259
-rw-r--r--src/mesa/drivers/dri/r600/r700_fragprog.c21
-rw-r--r--src/mesa/drivers/dri/r600/r700_state.c5
-rw-r--r--src/mesa/drivers/dri/r600/r700_vertprog.c10
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_bo_legacy.c3
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_queryobj.c4
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.c4
-rw-r--r--src/mesa/drivers/dri/radeon/radeon_screen.h2
-rw-r--r--src/mesa/glapi/gen/ARB_seamless_cube_map.xml2
-rw-r--r--src/mesa/glapi/glapi_getproc.c3
-rw-r--r--src/mesa/glapi/glapi_nop.c20
-rw-r--r--src/mesa/main/debug.c4
-rw-r--r--src/mesa/main/dlist.c2
-rw-r--r--src/mesa/main/enums.c2
-rw-r--r--src/mesa/main/formats.c58
-rw-r--r--src/mesa/main/formats.h14
-rw-r--r--src/mesa/main/framebuffer.c41
-rw-r--r--src/mesa/main/framebuffer.h3
-rw-r--r--src/mesa/main/image.c60
-rw-r--r--src/mesa/main/image.h5
-rw-r--r--src/mesa/main/mipmap.c29
-rw-r--r--src/mesa/main/shaders.c2
-rw-r--r--src/mesa/main/texfetch.c548
-rw-r--r--src/mesa/main/texfetch_tmp.h193
-rw-r--r--src/mesa/main/texformat.c26
-rw-r--r--src/mesa/main/teximage.c46
-rw-r--r--src/mesa/main/texobj.c4
-rw-r--r--src/mesa/main/texstore.c153
-rw-r--r--src/mesa/shader/program_parse.tab.c7
-rw-r--r--src/mesa/shader/program_parse.y7
-rw-r--r--src/mesa/shader/slang/slang_codegen.c2
-rw-r--r--src/mesa/shader/slang/slang_emit.c31
-rw-r--r--src/mesa/shader/slang/slang_ir.c8
-rw-r--r--src/mesa/shader/slang/slang_label.c2
-rw-r--r--src/mesa/shader/slang/slang_link.c10
-rw-r--r--src/mesa/shader/slang/slang_print.c8
-rw-r--r--src/mesa/shader/slang/slang_utility.c2
-rw-r--r--src/mesa/state_tracker/st_atom_framebuffer.c10
-rw-r--r--src/mesa/state_tracker/st_atom_pixeltransfer.c15
-rw-r--r--src/mesa/state_tracker/st_atom_sampler.c9
-rw-r--r--src/mesa/state_tracker/st_atom_texture.c3
-rw-r--r--src/mesa/state_tracker/st_cb_accum.c4
-rw-r--r--src/mesa/state_tracker/st_cb_bitmap.c22
-rw-r--r--src/mesa/state_tracker/st_cb_blit.c2
-rw-r--r--src/mesa/state_tracker/st_cb_clear.c13
-rw-r--r--src/mesa/state_tracker/st_cb_condrender.c4
-rw-r--r--src/mesa/state_tracker/st_cb_drawpixels.c2
-rw-r--r--src/mesa/state_tracker/st_cb_eglimage.c4
-rw-r--r--src/mesa/state_tracker/st_cb_fbo.c43
-rw-r--r--src/mesa/state_tracker/st_cb_feedback.c4
-rw-r--r--src/mesa/state_tracker/st_cb_flush.c4
-rw-r--r--src/mesa/state_tracker/st_cb_queryobj.c10
-rw-r--r--src/mesa/state_tracker/st_cb_rasterpos.c6
-rw-r--r--src/mesa/state_tracker/st_cb_readpixels.c11
-rw-r--r--src/mesa/state_tracker/st_cb_texture.c283
-rw-r--r--src/mesa/state_tracker/st_context.h1
-rw-r--r--src/mesa/state_tracker/st_debug.c3
-rw-r--r--src/mesa/state_tracker/st_draw.c23
-rw-r--r--src/mesa/state_tracker/st_draw_feedback.c8
-rw-r--r--src/mesa/state_tracker/st_format.c324
-rw-r--r--src/mesa/state_tracker/st_gen_mipmap.c147
-rw-r--r--src/mesa/state_tracker/st_gl_api.h9
-rw-r--r--src/mesa/state_tracker/st_manager.c33
-rw-r--r--src/mesa/state_tracker/st_program.c21
-rw-r--r--src/mesa/state_tracker/st_texture.c39
-rw-r--r--src/mesa/state_tracker/st_texture.h24
-rw-r--r--src/mesa/x86-64/xform4.S8
394 files changed, 61646 insertions, 5465 deletions
diff --git a/SConstruct b/SConstruct
index fdcd72b30d..3a4ff9a3fa 100644
--- a/SConstruct
+++ b/SConstruct
@@ -50,7 +50,7 @@ common.AddOptions(opts)
opts.Add(ListVariable('statetrackers', 'state trackers to build', default_statetrackers,
['mesa', 'python', 'xorg']))
opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers,
- ['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'identity', 'llvmpipe']))
+ ['softpipe', 'failover', 'svga', 'i915', 'i965', 'trace', 'r300', 'identity', 'llvmpipe', 'nouveau', 'nv50', 'nvfx']))
opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys,
['xlib', 'vmware', 'i915', 'i965', 'gdi', 'radeon', 'graw-xlib']))
@@ -113,8 +113,10 @@ if env['llvm'] and 'llvmpipe' not in env['drivers']:
env['drivers'].append('llvmpipe')
# Includes
-env.Append(CPPPATH = [
+env.Prepend(CPPPATH = [
'#/include',
+])
+env.Append(CPPPATH = [
'#/src/gallium/include',
'#/src/gallium/auxiliary',
'#/src/gallium/drivers',
diff --git a/configs/autoconf.in b/configs/autoconf.in
index 2235abe73f..eeb99780be 100644
--- a/configs/autoconf.in
+++ b/configs/autoconf.in
@@ -28,6 +28,10 @@ INTEL_LIBS = @INTEL_LIBS@
INTEL_CFLAGS = @INTEL_CFLAGS@
X11_LIBS = @X11_LIBS@
X11_CFLAGS = @X11_CFLAGS@
+LLVM_CFLAGS = @LLVM_CFLAGS@
+LLVM_LDFLAGS = @LLVM_LDFLAGS@
+LLVM_LIBS = @LLVM_LIBS@
+
# Assembler
MESA_ASM_SOURCES = @MESA_ASM_SOURCES@
@@ -169,3 +173,11 @@ GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
EGL_DRI2_CFLAGS = @EGL_DRI2_CFLAGS@
EGL_DRI2_LIBS = @EGL_DRI2_LIBS@
+
+MESA_LLVM = @MESA_LLVM@
+
+LLVM_VERSION = @LLVM_VERSION@
+ifneq ($(LLVM_VERSION),)
+ HAVE_LLVM := 0x0$(subst .,0,$(LLVM_VERSION:svn=))
+ DEFINES += -DHAVE_LLVM=$(HAVE_LLVM)
+endif
diff --git a/configs/darwin b/configs/darwin
index d28d5906ba..e519684877 100644
--- a/configs/darwin
+++ b/configs/darwin
@@ -13,7 +13,10 @@ CC = gcc
CXX = g++
PIC_FLAGS = -fPIC
DEFINES = -D_DARWIN_C_SOURCE -DPTHREADS -D_GNU_SOURCE \
- -DGLX_ALIAS_UNSUPPORTED -DGLX_INDIRECT_RENDERING
+ -DGLX_ALIAS_UNSUPPORTED \
+ -DGLX_DIRECT_RENDERING -DGLX_USE_APPLEGL
+
+# -DGLX_INDIRECT_RENDERING \
# -D_GNU_SOURCE - for src/mesa/main ...
# -DGLX_DIRECT_RENDERING - pulls in libdrm stuff in glx
@@ -49,7 +52,7 @@ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X
APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXmu -lXt -lXi -lm
# omit glw lib for now:
-SRC_DIRS = glsl glx mesa gallium glu glut/glx glew
+SRC_DIRS = glsl glx/apple mesa gallium glu glut/glx glew
GLU_DIRS = sgi
DRIVER_DIRS = osmesa
#DRIVER_DIRS = dri
diff --git a/configs/linux-dri b/configs/linux-dri
index 9017becdaf..49e3579046 100644
--- a/configs/linux-dri
+++ b/configs/linux-dri
@@ -52,7 +52,7 @@ GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
# Directories
SRC_DIRS := glx egl $(SRC_DIRS)
-PROGRAM_DIRS := egl/opengl $(PROGRAM_DIRS)
+PROGRAM_DIRS := egl/eglut egl/opengl $(PROGRAM_DIRS)
# EGL directories
EGL_DRIVERS_DIRS = glx
diff --git a/configs/linux-egl b/configs/linux-egl
index cd664b4171..566c7b941c 100644
--- a/configs/linux-egl
+++ b/configs/linux-egl
@@ -48,7 +48,7 @@ GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lXdamage -lXfixes \
# Directories
SRC_DIRS = gallium mesa gallium/winsys gallium/targets glu egl
-PROGRAM_DIRS = egl/opengl
+PROGRAM_DIRS = egl/eglut egl/opengl
DRIVER_DIRS = dri
GALLIUM_WINSYS_DIRS = egl_drm
diff --git a/configs/linux-opengl-es b/configs/linux-opengl-es
index ead47136f4..6984aa9b2c 100644
--- a/configs/linux-opengl-es
+++ b/configs/linux-opengl-es
@@ -7,7 +7,7 @@ CONFIG_NAME = linux-opengl-es
# Directories to build
LIB_DIR = lib
SRC_DIRS = egl glsl mesa/es gallium gallium/winsys gallium/targets
-PROGRAM_DIRS = egl/opengles1 egl/opengles2
+PROGRAM_DIRS = egl/eglut egl/opengles1 egl/opengles2
# egl st needs this
DEFINES += -DGLX_DIRECT_RENDERING
diff --git a/configs/linux-osmesa b/configs/linux-osmesa
index c112642f89..3015f5fcbb 100644
--- a/configs/linux-osmesa
+++ b/configs/linux-osmesa
@@ -9,7 +9,7 @@ CONFIG_NAME = linux-osmesa
# Compiler and flags
CC = gcc
CXX = g++
-CFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -DPTHREADS
+CFLAGS = -g -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE -DPTHREADS
CXXFLAGS = -O3 -ansi -pedantic -fPIC -ffast-math -D_POSIX_SOURCE -D_POSIX_C_SOURCE=199309L -D_SVID_SOURCE -D_BSD_SOURCE
# Work around aliasing bugs - developers should comment this out
@@ -17,12 +17,12 @@ CFLAGS += -fno-strict-aliasing
CXXFLAGS += -fno-strict-aliasing
# Directories
-SRC_DIRS = gallium mesa glu
+SRC_DIRS = glsl mesa glu
DRIVER_DIRS = osmesa
PROGRAM_DIRS = osdemos
# Dependencies
-OSMESA_LIB_DEPS = -lm -lpthread
+OSMESA_LIB_DEPS = -lm -lpthread -ldl
GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(OSMESA_LIB)
APP_LIB_DEPS = -lm -lpthread
diff --git a/configs/linux-osmesa16 b/configs/linux-osmesa16
index b3c8da0991..090ca27309 100644
--- a/configs/linux-osmesa16
+++ b/configs/linux-osmesa16
@@ -20,7 +20,7 @@ OSMESA_LIB_NAME = libOSMesa16.so
# Directories
-SRC_DIRS = gallium mesa glu
+SRC_DIRS = glsl mesa glu
DRIVER_DIRS = osmesa
PROGRAM_DIRS =
diff --git a/configs/linux-osmesa32 b/configs/linux-osmesa32
index 5804ef8e5f..63de7f9a46 100644
--- a/configs/linux-osmesa32
+++ b/configs/linux-osmesa32
@@ -20,7 +20,7 @@ OSMESA_LIB_NAME = libOSMesa32.so
# Directories
-SRC_DIRS = gallium mesa glu
+SRC_DIRS = glsl mesa glu
DRIVER_DIRS = osmesa
PROGRAM_DIRS =
diff --git a/configure.ac b/configure.ac
index 01f511749c..2811ec9e40 100644
--- a/configure.ac
+++ b/configure.ac
@@ -496,6 +496,7 @@ AC_SUBST([GALLIUM_TARGET_DIRS])
AC_SUBST([GALLIUM_WINSYS_DIRS])
AC_SUBST([GALLIUM_DRIVERS_DIRS])
AC_SUBST([GALLIUM_STATE_TRACKERS_DIRS])
+AC_SUBST([MESA_LLVM])
dnl
dnl User supplied program configuration
@@ -1007,7 +1008,7 @@ if test "x$enable_egl" = xyes; then
fi
if test "$with_demos" = yes; then
- PROGRAM_DIRS="$PROGRAM_DIRS egl/opengl"
+ PROGRAM_DIRS="$PROGRAM_DIRS egl/eglut egl/opengl"
fi
fi
AC_SUBST([EGL_LIB_DEPS])
@@ -1234,8 +1235,16 @@ AC_ARG_ENABLE([gallium],
[enable_gallium=yes])
if test "x$enable_gallium" = xyes; then
SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
+ AC_CHECK_HEADER([udis86.h], [HAS_UDIS86="yes"],
+ [HAS_UDIS86="no"])
+ AC_PATH_PROG([LLVM_CONFIG], [llvm-config], [no])
fi
+AC_SUBST([LLVM_CFLAGS])
+AC_SUBST([LLVM_LIBS])
+AC_SUBST([LLVM_LDFLAGS])
+AC_SUBST([LLVM_VERSION])
+
dnl
dnl Gallium state trackers configuration
dnl
@@ -1370,6 +1379,35 @@ AC_ARG_WITH([max-height],
)
dnl
+dnl Gallium LLVM
+dnl
+AC_ARG_ENABLE([gallium-llvm],
+ [AS_HELP_STRING([--enable-gallium-llvm],
+ [build gallium LLVM support @<:@default=disabled@:>@])],
+ [enable_gallium_llvm="$enableval"],
+ [enable_gallium_llvm=auto])
+if test "x$enable_gallium_llvm" = xyes; then
+ if test "x$LLVM_CONFIG" != xno; then
+ LLVM_VERSION=`$LLVM_CONFIG --version`
+ LLVM_CFLAGS=`$LLVM_CONFIG --cflags`
+ LLVM_LIBS="`$LLVM_CONFIG --libs jit interpreter nativecodegen bitwriter` -lstdc++"
+
+ if test "x$HAS_UDIS86" != xno; then
+ LLVM_LIBS="$LLVM_LIBS -ludis86"
+ DEFINES="$DEFINES -DHAVE_UDIS86"
+ fi
+ LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
+ GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
+ DEFINES="$DEFINES -DMESA_LLVM -D__STDC_CONSTANT_MACROS"
+ MESA_LLVM=1
+ else
+ MESA_LLVM=0
+ fi
+else
+ MESA_LLVM=0
+fi
+
+dnl
dnl Gallium helper functions
dnl
gallium_check_st() {
@@ -1515,6 +1553,15 @@ fi
echo " Use XCB: $enable_xcb"
echo ""
+if test "x$MESA_LLVM" == x1; then
+ echo " llvm: yes"
+ echo " llvm-config: $LLVM_CONFIG"
+ echo " llvm-version: $LLVM_VERSION"
+else
+ echo " llvm: no"
+fi
+
+echo ""
if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
echo " Gallium: yes"
echo " Gallium dirs: $GALLIUM_DIRS"
diff --git a/docs/GL3.txt b/docs/GL3.txt
index 78ac6e852d..386619e2f7 100644
--- a/docs/GL3.txt
+++ b/docs/GL3.txt
@@ -34,7 +34,7 @@ glGetStringi command DONE, except for dispatch
glTexParameterI, glGetTexParameterI commands DONE, except for dispatch
glVertexAttribI commands not started
glBindFragDataLocation, glGetFragDataLocation cmds not started
-glBindBufferRange, glBindBufferBase commands not started
+glBindBufferRange, glBindBufferBase commands DONE
GL 3.1:
@@ -47,7 +47,7 @@ Primitive restart (GL_NV_primitive_restart) not started
Texture buffer objs (GL_ARB_textur_buffer_object) not started
Rectangular textures (GL_ARB_texture_rectangle) DONE
Uniform buffer objs (GL_ARB_uniform_buffer_object) not started
-Signed normalized texture formats not started
+Signed normalized texture formats ~50% done
GL 3.2:
diff --git a/docs/lists.html b/docs/lists.html
index 1c6a4d930a..148789153f 100644
--- a/docs/lists.html
+++ b/docs/lists.html
@@ -40,6 +40,15 @@ versions are sent to this list. Very low traffic.
Follow the links above for list archives.
</p>
+<p>
+The old Mesa lists hosted at SourceForge are no longer in use.
+The archives are still available, however:
+<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-announce" target="_parent">mesa3d-announce</a>,
+<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-users" target="_parent">mesa3d-users</a>,
+<a href="http://sourceforge.net/mailarchive/forum.php?forum_name=mesa3d-dev" target="_parent">mesa3d-dev</a>.
+</p>
+
+
<p>For mailing lists about Direct Rendering Modules (drm) in Linux/BSD
kernels, see the
<a href="http://dri.freedesktop.org/wiki/MailingLists" target="_parent">
diff --git a/docs/relnotes-7.8.2.html b/docs/relnotes-7.8.2.html
index 85c132a29f..2194b651b7 100644
--- a/docs/relnotes-7.8.2.html
+++ b/docs/relnotes-7.8.2.html
@@ -34,6 +34,12 @@ tbd
<p>None.</p>
+<h2>Changes</h2>
+<ul>
+<li>Upgraded glext.h to version 61, and upgraded glxext.h
+</ul>
+
+
<h2>Bug fixes</h2>
<ul>
<li>Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT).
diff --git a/include/GL/glext.h b/include/GL/glext.h
index 473b22aea6..73b148154d 100644
--- a/include/GL/glext.h
+++ b/include/GL/glext.h
@@ -6,7 +6,7 @@ extern "C" {
#endif
/*
-** Copyright (c) 2007-2009 The Khronos Group Inc.
+** Copyright (c) 2007-2010 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
@@ -29,10 +29,9 @@ extern "C" {
*/
/* Header file version number, required by OpenGL ABI for Linux */
-/* glext.h last updated $Date: 2009-09-24 13:55:03 -0700 (Thu, 24 Sep 2009) $ */
+/* glext.h last updated $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $ */
/* Current version at http://www.opengl.org/registry/ */
-#define GL_GLEXT_VERSION 56
-
+#define GL_GLEXT_VERSION 61
/* Function declaration macros - to move into glplatform.h */
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
@@ -887,6 +886,111 @@ extern "C" {
/* Don't need to reuse tokens from ARB_vertex_array_bgra since they're already in 1.2 core */
#endif
+#ifndef GL_VERSION_3_3
+/* Reuse tokens from ARB_blend_func_extended */
+/* reuse GL_SRC1_COLOR */
+/* reuse GL_ONE_MINUS_SRC1_COLOR */
+/* reuse GL_ONE_MINUS_SRC1_ALPHA */
+/* reuse GL_MAX_DUAL_SOURCE_DRAW_BUFFERS */
+/* Would reuse tokens from ARB_explicit_attrib_location, but it has none */
+/* Reuse tokens from ARB_occlusion_query2 */
+/* reuse GL_ANY_SAMPLES_PASSED */
+/* Reuse tokens from ARB_sampler_objects */
+/* reuse GL_SAMPLER_BINDING */
+/* Would reuse tokens from ARB_shader_bit_encoding, but it has none */
+/* Reuse tokens from ARB_texture_rgb10_a2ui */
+/* reuse GL_RGB10_A2UI */
+/* Reuse tokens from ARB_texture_swizzle */
+/* reuse GL_TEXTURE_SWIZZLE_R */
+/* reuse GL_TEXTURE_SWIZZLE_G */
+/* reuse GL_TEXTURE_SWIZZLE_B */
+/* reuse GL_TEXTURE_SWIZZLE_A */
+/* reuse GL_TEXTURE_SWIZZLE_RGBA */
+/* Reuse tokens from ARB_timer_query */
+/* reuse GL_TIME_ELAPSED */
+/* reuse GL_TIMESTAMP */
+/* Reuse tokens from ARB_vertex_type_2_10_10_10_rev */
+/* reuse GL_INT_2_10_10_10_REV */
+#endif
+
+#ifndef GL_VERSION_4_0
+/* Reuse tokens from ARB_draw_indirect */
+/* reuse GL_DRAW_INDIRECT_BUFFER */
+/* reuse GL_DRAW_INDIRECT_BUFFER_BINDING */
+/* Reuse tokens from ARB_gpu_shader5 */
+/* reuse GL_GEOMETRY_SHADER_INVOCATIONS */
+/* reuse GL_MAX_GEOMETRY_SHADER_INVOCATIONS */
+/* reuse GL_MIN_FRAGMENT_INTERPOLATION_OFFSET */
+/* reuse GL_MAX_FRAGMENT_INTERPOLATION_OFFSET */
+/* reuse GL_FRAGMENT_INTERPOLATION_OFFSET_BITS */
+/* reuse GL_MAX_VERTEX_STREAMS */
+/* Reuse tokens from ARB_gpu_shader_fp64 */
+/* reuse GL_DOUBLE_VEC2 */
+/* reuse GL_DOUBLE_VEC3 */
+/* reuse GL_DOUBLE_VEC4 */
+/* reuse GL_DOUBLE_MAT2 */
+/* reuse GL_DOUBLE_MAT3 */
+/* reuse GL_DOUBLE_MAT4 */
+/* reuse GL_DOUBLE_MAT2x3 */
+/* reuse GL_DOUBLE_MAT2x4 */
+/* reuse GL_DOUBLE_MAT3x2 */
+/* reuse GL_DOUBLE_MAT3x4 */
+/* reuse GL_DOUBLE_MAT4x2 */
+/* reuse GL_DOUBLE_MAT4x3 */
+/* Reuse tokens from ARB_shader_subroutine */
+/* reuse GL_ACTIVE_SUBROUTINES */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORMS */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS */
+/* reuse GL_ACTIVE_SUBROUTINE_MAX_LENGTH */
+/* reuse GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH */
+/* reuse GL_MAX_SUBROUTINES */
+/* reuse GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS */
+/* reuse GL_NUM_COMPATIBLE_SUBROUTINES */
+/* reuse GL_COMPATIBLE_SUBROUTINES */
+/* Reuse tokens from ARB_tessellation_shader */
+/* reuse GL_PATCHES */
+/* reuse GL_PATCH_VERTICES */
+/* reuse GL_PATCH_DEFAULT_INNER_LEVEL */
+/* reuse GL_PATCH_DEFAULT_OUTER_LEVEL */
+/* reuse GL_TESS_CONTROL_OUTPUT_VERTICES */
+/* reuse GL_TESS_GEN_MODE */
+/* reuse GL_TESS_GEN_SPACING */
+/* reuse GL_TESS_GEN_VERTEX_ORDER */
+/* reuse GL_TESS_GEN_POINT_MODE */
+/* reuse GL_ISOLINES */
+/* reuse GL_FRACTIONAL_ODD */
+/* reuse GL_FRACTIONAL_EVEN */
+/* reuse GL_MAX_PATCH_VERTICES */
+/* reuse GL_MAX_TESS_GEN_LEVEL */
+/* reuse GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS */
+/* reuse GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS */
+/* reuse GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_PATCH_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS */
+/* reuse GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS */
+/* reuse GL_MAX_TESS_CONTROL_INPUT_COMPONENTS */
+/* reuse GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS */
+/* reuse GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS */
+/* reuse GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER */
+/* reuse GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER */
+/* reuse GL_TESS_EVALUATION_SHADER */
+/* reuse GL_TESS_CONTROL_SHADER */
+/* Would reuse tokens from ARB_texture_buffer_object_rgb32, but it has none */
+/* Reuse tokens from ARB_transform_feedback2 */
+/* reuse GL_TRANSFORM_FEEDBACK */
+/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+/* reuse GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+/* reuse GL_TRANSFORM_FEEDBACK_BINDING */
+/* Reuse tokens from ARB_transform_feedback3 */
+/* reuse GL_MAX_TRANSFORM_FEEDBACK_BUFFERS */
+/* reuse GL_MAX_VERTEX_STREAMS */
+#endif
+
#ifndef GL_ARB_multitexture
#define GL_TEXTURE0_ARB 0x84C0
#define GL_TEXTURE1_ARB 0x84C1
@@ -1699,14 +1803,171 @@ extern "C" {
#endif
#ifndef GL_ARB_texture_gather
-#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
-#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F
+#define GL_MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB 0x8E5F
#endif
#ifndef GL_ARB_texture_query_lod
#endif
+#ifndef GL_ARB_shading_language_include
+#define GL_SHADER_INCLUDE_ARB 0x8DAE
+#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
+#endif
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
+#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
+#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
+#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB 0x8E8F
+#endif
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_SRC1_COLOR 0x88F9
+/* reuse GL_SRC1_ALPHA */
+#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+#endif
+
+#ifndef GL_ARB_explicit_attrib_location
+#endif
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+#endif
+
+#ifndef GL_ARB_sampler_objects
+#define GL_SAMPLER_BINDING 0x8919
+#endif
+
+#ifndef GL_ARB_shader_bit_encoding
+#endif
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_RGB10_A2UI 0x906F
+#endif
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_TEXTURE_SWIZZLE_R 0x8E42
+#define GL_TEXTURE_SWIZZLE_G 0x8E43
+#define GL_TEXTURE_SWIZZLE_B 0x8E44
+#define GL_TEXTURE_SWIZZLE_A 0x8E45
+#define GL_TEXTURE_SWIZZLE_RGBA 0x8E46
+#endif
+
+#ifndef GL_ARB_timer_query
+#define GL_TIME_ELAPSED 0x88BF
+#define GL_TIMESTAMP 0x8E28
+#endif
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+/* reuse GL_UNSIGNED_INT_2_10_10_10_REV */
+#define GL_INT_2_10_10_10_REV 0x8D9F
+#endif
+
+#ifndef GL_ARB_draw_indirect
+#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
+#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+#endif
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET 0x8E5C
+#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS 0x8E5D
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+#endif
+
+#ifndef GL_ARB_gpu_shader_fp64
+/* reuse GL_DOUBLE */
+#define GL_DOUBLE_VEC2 0x8FFC
+#define GL_DOUBLE_VEC3 0x8FFD
+#define GL_DOUBLE_VEC4 0x8FFE
+#define GL_DOUBLE_MAT2 0x8F46
+#define GL_DOUBLE_MAT3 0x8F47
+#define GL_DOUBLE_MAT4 0x8F48
+#define GL_DOUBLE_MAT2x3 0x8F49
+#define GL_DOUBLE_MAT2x4 0x8F4A
+#define GL_DOUBLE_MAT3x2 0x8F4B
+#define GL_DOUBLE_MAT3x4 0x8F4C
+#define GL_DOUBLE_MAT4x2 0x8F4D
+#define GL_DOUBLE_MAT4x3 0x8F4E
+#endif
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ACTIVE_SUBROUTINES 0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_MAX_SUBROUTINES 0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
+/* reuse GL_UNIFORM_SIZE */
+/* reuse GL_UNIFORM_NAME_LENGTH */
+#endif
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_PATCHES 0x000E
+#define GL_PATCH_VERTICES 0x8E72
+#define GL_PATCH_DEFAULT_INNER_LEVEL 0x8E73
+#define GL_PATCH_DEFAULT_OUTER_LEVEL 0x8E74
+#define GL_TESS_CONTROL_OUTPUT_VERTICES 0x8E75
+#define GL_TESS_GEN_MODE 0x8E76
+#define GL_TESS_GEN_SPACING 0x8E77
+#define GL_TESS_GEN_VERTEX_ORDER 0x8E78
+#define GL_TESS_GEN_POINT_MODE 0x8E79
+/* reuse GL_TRIANGLES */
+/* reuse GL_QUADS */
+#define GL_ISOLINES 0x8E7A
+/* reuse GL_EQUAL */
+#define GL_FRACTIONAL_ODD 0x8E7B
+#define GL_FRACTIONAL_EVEN 0x8E7C
+/* reuse GL_CCW */
+/* reuse GL_CW */
+#define GL_MAX_PATCH_VERTICES 0x8E7D
+#define GL_MAX_TESS_GEN_LEVEL 0x8E7E
+#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E7F
+#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E80
+#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS 0x8E81
+#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS 0x8E82
+#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS 0x8E83
+#define GL_MAX_TESS_PATCH_COMPONENTS 0x8E84
+#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS 0x8E85
+#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS 0x8E86
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS 0x886C
+#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS 0x886D
+#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS 0x8E1E
+#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS 0x8E1F
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#define GL_TESS_EVALUATION_SHADER 0x8E87
+#define GL_TESS_CONTROL_SHADER 0x8E88
+#endif
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+/* reuse GL_RGB32F */
+/* reuse GL_RGB32UI */
+/* reuse GL_RGB32I */
+#endif
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_TRANSFORM_FEEDBACK 0x8E22
+#define GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED 0x8E23
+#define GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE 0x8E24
+#define GL_TRANSFORM_FEEDBACK_BINDING 0x8E25
+#endif
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+#endif
+
#ifndef GL_EXT_abgr
#define GL_ABGR_EXT 0x8000
#endif
@@ -3528,9 +3789,9 @@ extern "C" {
#endif
#ifndef GL_APPLE_element_array
-#define GL_ELEMENT_ARRAY_APPLE 0x8768
-#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8769
-#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x876A
+#define GL_ELEMENT_ARRAY_APPLE 0x8A0C
+#define GL_ELEMENT_ARRAY_TYPE_APPLE 0x8A0D
+#define GL_ELEMENT_ARRAY_POINTER_APPLE 0x8A0E
#endif
#ifndef GL_APPLE_fence
@@ -3547,6 +3808,7 @@ extern "C" {
#define GL_VERTEX_ARRAY_RANGE_LENGTH_APPLE 0x851E
#define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
#define GL_VERTEX_ARRAY_RANGE_POINTER_APPLE 0x8521
+#define GL_STORAGE_CLIENT_APPLE 0x85B4
#define GL_STORAGE_CACHED_APPLE 0x85BE
#define GL_STORAGE_SHARED_APPLE 0x85BF
#endif
@@ -4393,6 +4655,16 @@ extern "C" {
#ifndef GL_NV_texture_barrier
#endif
+#ifndef GL_AMD_shader_stencil_export
+#endif
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+/* reuse GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB */
+#endif
+
+#ifndef GL_AMD_conservative_depth
+#endif
+
/*************************************************************/
@@ -4481,12 +4753,12 @@ typedef struct __GLsync *GLsync;
#ifndef GL_VERSION_1_2
#define GL_VERSION_1_2 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendColor (GLclampf, GLclampf, GLclampf, GLclampf);
-GLAPI void APIENTRY glBlendEquation (GLenum);
-GLAPI void APIENTRY glDrawRangeElements (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexImage3D (GLenum, GLint, GLint, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glBlendColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+GLAPI void APIENTRY glBlendEquation (GLenum mode);
+GLAPI void APIENTRY glDrawRangeElements (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
+GLAPI void APIENTRY glTexImage3D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDCOLORPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
@@ -4499,38 +4771,38 @@ typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DPROC) (GLenum target, GLint level,
#ifndef GL_VERSION_1_2_DEPRECATED
#define GL_VERSION_1_2_DEPRECATED 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTable (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glColorTableParameterfv (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glColorTableParameteriv (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyColorTable (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glGetColorTable (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetColorTableParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetColorTableParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glColorSubTable (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyColorSubTable (GLenum, GLsizei, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glConvolutionFilter1D (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionParameterf (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glConvolutionParameterfv (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glConvolutionParameteri (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glConvolutionParameteriv (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetConvolutionFilter (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetSeparableFilter (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-GLAPI void APIENTRY glSeparableFilter2D (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
-GLAPI void APIENTRY glGetHistogram (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetHistogramParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetHistogramParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMinmax (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glHistogram (GLenum, GLsizei, GLenum, GLboolean);
-GLAPI void APIENTRY glMinmax (GLenum, GLenum, GLboolean);
-GLAPI void APIENTRY glResetHistogram (GLenum);
-GLAPI void APIENTRY glResetMinmax (GLenum);
+GLAPI void APIENTRY glColorTable (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glColorTableParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glColorTableParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyColorTable (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glGetColorTable (GLenum target, GLenum format, GLenum type, GLvoid *table);
+GLAPI void APIENTRY glGetColorTableParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetColorTableParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glColorSubTable (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+GLAPI void APIENTRY glCopyColorSubTable (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glConvolutionFilter1D (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionParameterf (GLenum target, GLenum pname, GLfloat params);
+GLAPI void APIENTRY glConvolutionParameterfv (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glConvolutionParameteri (GLenum target, GLenum pname, GLint params);
+GLAPI void APIENTRY glConvolutionParameteriv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyConvolutionFilter1D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyConvolutionFilter2D (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetConvolutionFilter (GLenum target, GLenum format, GLenum type, GLvoid *image);
+GLAPI void APIENTRY glGetConvolutionParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetConvolutionParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSeparableFilter (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+GLAPI void APIENTRY glSeparableFilter2D (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
+GLAPI void APIENTRY glGetHistogram (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetHistogramParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetHistogramParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMinmax (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetMinmaxParameterfv (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMinmaxParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glHistogram (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glMinmax (GLenum target, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glResetHistogram (GLenum target);
+GLAPI void APIENTRY glResetMinmax (GLenum target);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLORTABLEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params);
@@ -4569,15 +4841,15 @@ typedef void (APIENTRYP PFNGLRESETMINMAXPROC) (GLenum target);
#ifndef GL_VERSION_1_3
#define GL_VERSION_1_3 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTexture (GLenum);
-GLAPI void APIENTRY glSampleCoverage (GLclampf, GLboolean);
-GLAPI void APIENTRY glCompressedTexImage3D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage2D (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage1D (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedTexImage (GLenum, GLint, GLvoid *);
+GLAPI void APIENTRY glActiveTexture (GLenum texture);
+GLAPI void APIENTRY glSampleCoverage (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glCompressedTexImage3D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage1D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage3D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage1D (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glGetCompressedTexImage (GLenum target, GLint level, GLvoid *img);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
typedef void (APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLclampf value, GLboolean invert);
@@ -4593,43 +4865,43 @@ typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEPROC) (GLenum target, GLint le
#ifndef GL_VERSION_1_3_DEPRECATED
#define GL_VERSION_1_3_DEPRECATED 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClientActiveTexture (GLenum);
-GLAPI void APIENTRY glMultiTexCoord1d (GLenum, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord1dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord1f (GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord1fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord1i (GLenum, GLint);
-GLAPI void APIENTRY glMultiTexCoord1iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord1s (GLenum, GLshort);
-GLAPI void APIENTRY glMultiTexCoord1sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord2d (GLenum, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord2dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord2f (GLenum, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord2fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord2i (GLenum, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord2iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord2s (GLenum, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord2sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord3d (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord3dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord3f (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord3fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord3i (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord3iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord3s (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord3sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord4d (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord4dv (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord4f (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord4fv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord4i (GLenum, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord4iv (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord4s (GLenum, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord4sv (GLenum, const GLshort *);
-GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *);
-GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *);
-GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *);
-GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *);
+GLAPI void APIENTRY glClientActiveTexture (GLenum texture);
+GLAPI void APIENTRY glMultiTexCoord1d (GLenum target, GLdouble s);
+GLAPI void APIENTRY glMultiTexCoord1dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord1f (GLenum target, GLfloat s);
+GLAPI void APIENTRY glMultiTexCoord1fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord1i (GLenum target, GLint s);
+GLAPI void APIENTRY glMultiTexCoord1iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord1s (GLenum target, GLshort s);
+GLAPI void APIENTRY glMultiTexCoord1sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord2d (GLenum target, GLdouble s, GLdouble t);
+GLAPI void APIENTRY glMultiTexCoord2dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord2f (GLenum target, GLfloat s, GLfloat t);
+GLAPI void APIENTRY glMultiTexCoord2fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord2i (GLenum target, GLint s, GLint t);
+GLAPI void APIENTRY glMultiTexCoord2iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord2s (GLenum target, GLshort s, GLshort t);
+GLAPI void APIENTRY glMultiTexCoord2sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord3d (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+GLAPI void APIENTRY glMultiTexCoord3dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord3f (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+GLAPI void APIENTRY glMultiTexCoord3fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord3i (GLenum target, GLint s, GLint t, GLint r);
+GLAPI void APIENTRY glMultiTexCoord3iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord3s (GLenum target, GLshort s, GLshort t, GLshort r);
+GLAPI void APIENTRY glMultiTexCoord3sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord4d (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void APIENTRY glMultiTexCoord4dv (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord4f (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void APIENTRY glMultiTexCoord4fv (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord4i (GLenum target, GLint s, GLint t, GLint r, GLint q);
+GLAPI void APIENTRY glMultiTexCoord4iv (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord4s (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void APIENTRY glMultiTexCoord4sv (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glLoadTransposeMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glLoadTransposeMatrixd (const GLdouble *m);
+GLAPI void APIENTRY glMultTransposeMatrixf (const GLfloat *m);
+GLAPI void APIENTRY glMultTransposeMatrixd (const GLdouble *m);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREPROC) (GLenum texture);
typedef void (APIENTRYP PFNGLMULTITEXCOORD1DPROC) (GLenum target, GLdouble s);
@@ -4673,13 +4945,13 @@ typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDPROC) (const GLdouble *m);
#ifndef GL_VERSION_1_4
#define GL_VERSION_1_4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparate (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glMultiDrawArrays (GLenum, GLint *, GLsizei *, GLsizei);
-GLAPI void APIENTRY glMultiDrawElements (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
-GLAPI void APIENTRY glPointParameterf (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfv (GLenum, const GLfloat *);
-GLAPI void APIENTRY glPointParameteri (GLenum, GLint);
-GLAPI void APIENTRY glPointParameteriv (GLenum, const GLint *);
+GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+GLAPI void APIENTRY glMultiDrawArrays (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawElements (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
+GLAPI void APIENTRY glPointParameterf (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfv (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glPointParameteri (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointParameteriv (GLenum pname, const GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
@@ -4693,44 +4965,44 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *p
#ifndef GL_VERSION_1_4_DEPRECATED
#define GL_VERSION_1_4_DEPRECATED 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogCoordf (GLfloat);
-GLAPI void APIENTRY glFogCoordfv (const GLfloat *);
-GLAPI void APIENTRY glFogCoordd (GLdouble);
-GLAPI void APIENTRY glFogCoorddv (const GLdouble *);
-GLAPI void APIENTRY glFogCoordPointer (GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glSecondaryColor3b (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *);
-GLAPI void APIENTRY glSecondaryColor3d (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *);
-GLAPI void APIENTRY glSecondaryColor3f (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *);
-GLAPI void APIENTRY glSecondaryColor3i (GLint, GLint, GLint);
-GLAPI void APIENTRY glSecondaryColor3iv (const GLint *);
-GLAPI void APIENTRY glSecondaryColor3s (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *);
-GLAPI void APIENTRY glSecondaryColor3ub (GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *);
-GLAPI void APIENTRY glSecondaryColor3ui (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *);
-GLAPI void APIENTRY glSecondaryColor3us (GLushort, GLushort, GLushort);
-GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *);
-GLAPI void APIENTRY glSecondaryColorPointer (GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glWindowPos2d (GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos2dv (const GLdouble *);
-GLAPI void APIENTRY glWindowPos2f (GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos2fv (const GLfloat *);
-GLAPI void APIENTRY glWindowPos2i (GLint, GLint);
-GLAPI void APIENTRY glWindowPos2iv (const GLint *);
-GLAPI void APIENTRY glWindowPos2s (GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos2sv (const GLshort *);
-GLAPI void APIENTRY glWindowPos3d (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos3dv (const GLdouble *);
-GLAPI void APIENTRY glWindowPos3f (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos3fv (const GLfloat *);
-GLAPI void APIENTRY glWindowPos3i (GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos3iv (const GLint *);
-GLAPI void APIENTRY glWindowPos3s (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos3sv (const GLshort *);
+GLAPI void APIENTRY glFogCoordf (GLfloat coord);
+GLAPI void APIENTRY glFogCoordfv (const GLfloat *coord);
+GLAPI void APIENTRY glFogCoordd (GLdouble coord);
+GLAPI void APIENTRY glFogCoorddv (const GLdouble *coord);
+GLAPI void APIENTRY glFogCoordPointer (GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glSecondaryColor3b (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void APIENTRY glSecondaryColor3bv (const GLbyte *v);
+GLAPI void APIENTRY glSecondaryColor3d (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void APIENTRY glSecondaryColor3dv (const GLdouble *v);
+GLAPI void APIENTRY glSecondaryColor3f (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void APIENTRY glSecondaryColor3fv (const GLfloat *v);
+GLAPI void APIENTRY glSecondaryColor3i (GLint red, GLint green, GLint blue);
+GLAPI void APIENTRY glSecondaryColor3iv (const GLint *v);
+GLAPI void APIENTRY glSecondaryColor3s (GLshort red, GLshort green, GLshort blue);
+GLAPI void APIENTRY glSecondaryColor3sv (const GLshort *v);
+GLAPI void APIENTRY glSecondaryColor3ub (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void APIENTRY glSecondaryColor3ubv (const GLubyte *v);
+GLAPI void APIENTRY glSecondaryColor3ui (GLuint red, GLuint green, GLuint blue);
+GLAPI void APIENTRY glSecondaryColor3uiv (const GLuint *v);
+GLAPI void APIENTRY glSecondaryColor3us (GLushort red, GLushort green, GLushort blue);
+GLAPI void APIENTRY glSecondaryColor3usv (const GLushort *v);
+GLAPI void APIENTRY glSecondaryColorPointer (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glWindowPos2d (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dv (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2f (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fv (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2i (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2iv (const GLint *v);
+GLAPI void APIENTRY glWindowPos2s (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2sv (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3d (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dv (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3f (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fv (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3i (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3iv (const GLint *v);
+GLAPI void APIENTRY glWindowPos3s (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3sv (const GLshort *v);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLFOGCOORDFPROC) (GLfloat coord);
typedef void (APIENTRYP PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
@@ -4775,25 +5047,25 @@ typedef void (APIENTRYP PFNGLWINDOWPOS3SVPROC) (const GLshort *v);
#ifndef GL_VERSION_1_5
#define GL_VERSION_1_5 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueries (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteQueries (GLsizei, const GLuint *);
-GLAPI GLboolean APIENTRY glIsQuery (GLuint);
-GLAPI void APIENTRY glBeginQuery (GLenum, GLuint);
-GLAPI void APIENTRY glEndQuery (GLenum);
-GLAPI void APIENTRY glGetQueryiv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectuiv (GLuint, GLenum, GLuint *);
-GLAPI void APIENTRY glBindBuffer (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteBuffers (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenBuffers (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsBuffer (GLuint);
-GLAPI void APIENTRY glBufferData (GLenum, GLsizeiptr, const GLvoid *, GLenum);
-GLAPI void APIENTRY glBufferSubData (GLenum, GLintptr, GLsizeiptr, const GLvoid *);
-GLAPI void APIENTRY glGetBufferSubData (GLenum, GLintptr, GLsizeiptr, GLvoid *);
-GLAPI GLvoid* APIENTRY glMapBuffer (GLenum, GLenum);
-GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum);
-GLAPI void APIENTRY glGetBufferParameteriv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetBufferPointerv (GLenum, GLenum, GLvoid* *);
+GLAPI void APIENTRY glGenQueries (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteQueries (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsQuery (GLuint id);
+GLAPI void APIENTRY glBeginQuery (GLenum target, GLuint id);
+GLAPI void APIENTRY glEndQuery (GLenum target);
+GLAPI void APIENTRY glGetQueryiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectiv (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectuiv (GLuint id, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
+GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
+GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
+GLAPI GLboolean APIENTRY glIsBuffer (GLuint buffer);
+GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+GLAPI void APIENTRY glGetBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapBuffer (GLenum target, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapBuffer (GLenum target);
+GLAPI void APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetBufferPointerv (GLenum target, GLenum pname, GLvoid* *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGENQUERIESPROC) (GLsizei n, GLuint *ids);
typedef void (APIENTRYP PFNGLDELETEQUERIESPROC) (GLsizei n, const GLuint *ids);
@@ -4819,99 +5091,99 @@ typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVPROC) (GLenum target, GLenum pname
#ifndef GL_VERSION_2_0
#define GL_VERSION_2_0 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparate (GLenum, GLenum);
-GLAPI void APIENTRY glDrawBuffers (GLsizei, const GLenum *);
-GLAPI void APIENTRY glStencilOpSeparate (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glStencilFuncSeparate (GLenum, GLenum, GLint, GLuint);
-GLAPI void APIENTRY glStencilMaskSeparate (GLenum, GLuint);
-GLAPI void APIENTRY glAttachShader (GLuint, GLuint);
-GLAPI void APIENTRY glBindAttribLocation (GLuint, GLuint, const GLchar *);
-GLAPI void APIENTRY glCompileShader (GLuint);
+GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glDrawBuffers (GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+GLAPI void APIENTRY glStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+GLAPI void APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask);
+GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name);
+GLAPI void APIENTRY glCompileShader (GLuint shader);
GLAPI GLuint APIENTRY glCreateProgram (void);
-GLAPI GLuint APIENTRY glCreateShader (GLenum);
-GLAPI void APIENTRY glDeleteProgram (GLuint);
-GLAPI void APIENTRY glDeleteShader (GLuint);
-GLAPI void APIENTRY glDetachShader (GLuint, GLuint);
-GLAPI void APIENTRY glDisableVertexAttribArray (GLuint);
-GLAPI void APIENTRY glEnableVertexAttribArray (GLuint);
-GLAPI void APIENTRY glGetActiveAttrib (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-GLAPI void APIENTRY glGetActiveUniform (GLuint, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLchar *);
-GLAPI void APIENTRY glGetAttachedShaders (GLuint, GLsizei, GLsizei *, GLuint *);
-GLAPI GLint APIENTRY glGetAttribLocation (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetProgramiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetProgramInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetShaderiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetShaderInfoLog (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetShaderSource (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI GLint APIENTRY glGetUniformLocation (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetUniformfv (GLuint, GLint, GLfloat *);
-GLAPI void APIENTRY glGetUniformiv (GLuint, GLint, GLint *);
-GLAPI void APIENTRY glGetVertexAttribdv (GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetVertexAttribfv (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint, GLenum, GLvoid* *);
-GLAPI GLboolean APIENTRY glIsProgram (GLuint);
-GLAPI GLboolean APIENTRY glIsShader (GLuint);
-GLAPI void APIENTRY glLinkProgram (GLuint);
-GLAPI void APIENTRY glShaderSource (GLuint, GLsizei, const GLchar* *, const GLint *);
-GLAPI void APIENTRY glUseProgram (GLuint);
-GLAPI void APIENTRY glUniform1f (GLint, GLfloat);
-GLAPI void APIENTRY glUniform2f (GLint, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform3f (GLint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform4f (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform1i (GLint, GLint);
-GLAPI void APIENTRY glUniform2i (GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform3i (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform4i (GLint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform1fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform2fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform3fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform4fv (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform1iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform2iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform3iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform4iv (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniformMatrix2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glValidateProgram (GLuint);
-GLAPI void APIENTRY glVertexAttrib1d (GLuint, GLdouble);
-GLAPI void APIENTRY glVertexAttrib1dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib1f (GLuint, GLfloat);
-GLAPI void APIENTRY glVertexAttrib1fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib1s (GLuint, GLshort);
-GLAPI void APIENTRY glVertexAttrib1sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib2d (GLuint, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib2dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib2f (GLuint, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib2fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib2s (GLuint, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib2sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib3d (GLuint, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib3dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib3f (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib3fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib3s (GLuint, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib3sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4Niv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4Nub (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttrib4bv (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4d (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib4dv (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib4f (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib4fv (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib4iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4s (GLuint, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib4sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4ubv (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4usv (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttribPointer (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
+GLAPI GLuint APIENTRY glCreateShader (GLenum type);
+GLAPI void APIENTRY glDeleteProgram (GLuint program);
+GLAPI void APIENTRY glDeleteShader (GLuint shader);
+GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
+GLAPI void APIENTRY glDisableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
+GLAPI void APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *obj);
+GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
+GLAPI void APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source);
+GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params);
+GLAPI void APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribdv (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgram (GLuint program);
+GLAPI GLboolean APIENTRY glIsShader (GLuint shader);
+GLAPI void APIENTRY glLinkProgram (GLuint program);
+GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length);
+GLAPI void APIENTRY glUseProgram (GLuint program);
+GLAPI void APIENTRY glUniform1f (GLint location, GLfloat v0);
+GLAPI void APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
+GLAPI void APIENTRY glUniform2i (GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glValidateProgram (GLuint program);
+GLAPI void APIENTRY glVertexAttrib1d (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1f (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1s (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2d (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2s (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3d (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3s (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nbv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4Niv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4Nsv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4Nub (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4Nubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4Nuiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4Nusv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttrib4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4d (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dv (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4s (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
typedef void (APIENTRYP PFNGLDRAWBUFFERSPROC) (GLsizei n, const GLenum *bufs);
@@ -5011,12 +5283,12 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size,
#ifndef GL_VERSION_2_1
#define GL_VERSION_2_1 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformMatrix2x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix2x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4x2fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3x4fv (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4x3fv (GLint, GLsizei, GLboolean, const GLfloat *);
+GLAPI void APIENTRY glUniformMatrix2x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix2x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3x4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4x3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
@@ -5033,64 +5305,64 @@ typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3FVPROC) (GLint location, GLsizei co
/* ARB_map_buffer_range */
/* ARB_vertex_array_object */
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaski (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
-GLAPI void APIENTRY glGetBooleani_v (GLenum, GLuint, GLboolean *);
-GLAPI void APIENTRY glGetIntegeri_v (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glEnablei (GLenum, GLuint);
-GLAPI void APIENTRY glDisablei (GLenum, GLuint);
-GLAPI GLboolean APIENTRY glIsEnabledi (GLenum, GLuint);
-GLAPI void APIENTRY glBeginTransformFeedback (GLenum);
+GLAPI void APIENTRY glColorMaski (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+GLAPI void APIENTRY glGetBooleani_v (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glGetIntegeri_v (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glEnablei (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisablei (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledi (GLenum target, GLuint index);
+GLAPI void APIENTRY glBeginTransformFeedback (GLenum primitiveMode);
GLAPI void APIENTRY glEndTransformFeedback (void);
-GLAPI void APIENTRY glBindBufferRange (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-GLAPI void APIENTRY glBindBufferBase (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint, GLsizei, const GLchar* *, GLenum);
-GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
-GLAPI void APIENTRY glClampColor (GLenum, GLenum);
-GLAPI void APIENTRY glBeginConditionalRender (GLuint, GLenum);
+GLAPI void APIENTRY glBindBufferRange (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferBase (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryings (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glGetTransformFeedbackVarying (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glClampColor (GLenum target, GLenum clamp);
+GLAPI void APIENTRY glBeginConditionalRender (GLuint id, GLenum mode);
GLAPI void APIENTRY glEndConditionalRender (void);
-GLAPI void APIENTRY glVertexAttribIPointer (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetVertexAttribIiv (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint, GLenum, GLuint *);
-GLAPI void APIENTRY glVertexAttribI1i (GLuint, GLint);
-GLAPI void APIENTRY glVertexAttribI2i (GLuint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI3i (GLuint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI4i (GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI1ui (GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI2ui (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI3ui (GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI4ui (GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI1iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI2iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI3iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI4iv (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI1uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI2uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI3uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4uiv (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4bv (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttribI4sv (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttribI4ubv (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttribI4usv (GLuint, const GLushort *);
-GLAPI void APIENTRY glGetUniformuiv (GLuint, GLint, GLuint *);
-GLAPI void APIENTRY glBindFragDataLocation (GLuint, GLuint, const GLchar *);
-GLAPI GLint APIENTRY glGetFragDataLocation (GLuint, const GLchar *);
-GLAPI void APIENTRY glUniform1ui (GLint, GLuint);
-GLAPI void APIENTRY glUniform2ui (GLint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform3ui (GLint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform4ui (GLint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform1uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform2uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform3uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform4uiv (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glTexParameterIiv (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTexParameterIuiv (GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetTexParameterIiv (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTexParameterIuiv (GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glClearBufferiv (GLenum, GLint, const GLint *);
-GLAPI void APIENTRY glClearBufferuiv (GLenum, GLint, const GLuint *);
-GLAPI void APIENTRY glClearBufferfv (GLenum, GLint, const GLfloat *);
-GLAPI void APIENTRY glClearBufferfi (GLenum, GLint, GLfloat, GLint);
-GLAPI const GLubyte * APIENTRY glGetStringi (GLenum, GLuint);
+GLAPI void APIENTRY glVertexAttribIPointer (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribIiv (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribIuiv (GLuint index, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glVertexAttribI1i (GLuint index, GLint x);
+GLAPI void APIENTRY glVertexAttribI2i (GLuint index, GLint x, GLint y);
+GLAPI void APIENTRY glVertexAttribI3i (GLuint index, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexAttribI4i (GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexAttribI1ui (GLuint index, GLuint x);
+GLAPI void APIENTRY glVertexAttribI2ui (GLuint index, GLuint x, GLuint y);
+GLAPI void APIENTRY glVertexAttribI3ui (GLuint index, GLuint x, GLuint y, GLuint z);
+GLAPI void APIENTRY glVertexAttribI4ui (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glVertexAttribI1iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI2iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI3iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI4iv (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI1uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI2uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI3uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4uiv (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4bv (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttribI4sv (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribI4ubv (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribI4usv (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glGetUniformuiv (GLuint program, GLint location, GLuint *params);
+GLAPI void APIENTRY glBindFragDataLocation (GLuint program, GLuint color, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataLocation (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glUniform1ui (GLint location, GLuint v0);
+GLAPI void APIENTRY glUniform2ui (GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glUniform3ui (GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glUniform4ui (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glUniform1uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform2uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform3uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform4uiv (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glTexParameterIiv (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexParameterIuiv (GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTexParameterIiv (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexParameterIuiv (GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glClearBufferiv (GLenum buffer, GLint drawbuffer, const GLint *value);
+GLAPI void APIENTRY glClearBufferuiv (GLenum buffer, GLint drawbuffer, const GLuint *value);
+GLAPI void APIENTRY glClearBufferfv (GLenum buffer, GLint drawbuffer, const GLfloat *value);
+GLAPI void APIENTRY glClearBufferfi (GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil);
+GLAPI const GLubyte * APIENTRY glGetStringi (GLenum name, GLuint index);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLORMASKIPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
@@ -5158,10 +5430,10 @@ typedef const GLubyte * (APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint ind
/* ARB_copy_buffer */
/* ARB_uniform_buffer_object */
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstanced (GLenum, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glDrawElementsInstanced (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
-GLAPI void APIENTRY glTexBuffer (GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint);
+GLAPI void APIENTRY glDrawArraysInstanced (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstanced (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
+GLAPI void APIENTRY glTexBuffer (GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glPrimitiveRestartIndex (GLuint index);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
@@ -5177,56 +5449,80 @@ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXPROC) (GLuint index);
/* ARB_sync */
/* ARB_texture_multisample */
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetInteger64i_v (GLenum, GLuint, GLint64 *);
-GLAPI void APIENTRY glGetBufferParameteri64v (GLenum, GLenum, GLint64 *);
-GLAPI void APIENTRY glProgramParameteri (GLuint, GLenum, GLint);
-GLAPI void APIENTRY glFramebufferTexture (GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTextureFace (GLenum, GLenum, GLuint, GLint, GLenum);
+GLAPI void APIENTRY glGetInteger64i_v (GLenum target, GLuint index, GLint64 *data);
+GLAPI void APIENTRY glGetBufferParameteri64v (GLenum target, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glProgramParameteri (GLuint program, GLenum pname, GLint value);
+GLAPI void APIENTRY glFramebufferTexture (GLenum target, GLenum attachment, GLuint texture, GLint level);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERI64VPROC) (GLenum target, GLenum pname, GLint64 *params);
typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIPROC) (GLuint program, GLenum pname, GLint value);
typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
-typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
+#endif
+
+#ifndef GL_VERSION_3_3
+#define GL_VERSION_3_3 1
+/* OpenGL 3.3 also reuses entry points from these extensions: */
+/* ARB_blend_func_extended */
+/* ARB_sampler_objects */
+/* ARB_explicit_attrib_location, but it has none */
+/* ARB_occlusion_query2 (no entry points) */
+/* ARB_shader_bit_encoding (no entry points) */
+/* ARB_texture_rgb10_a2ui (no entry points) */
+/* ARB_texture_swizzle (no entry points) */
+/* ARB_timer_query */
+/* ARB_vertex_type_2_10_10_10_rev */
+#endif
+
+#ifndef GL_VERSION_4_0
+#define GL_VERSION_4_0 1
+/* OpenGL 4.0 also reuses entry points from these extensions: */
+/* ARB_gpu_shader5 (no entry points) */
+/* ARB_gpu_shader_fp64 */
+/* ARB_shader_subroutine */
+/* ARB_tessellation_shader */
+/* ARB_texture_buffer_object_rgb32 (no entry points) */
+/* ARB_transform_feedback2 */
+/* ARB_transform_feedback3 */
#endif
#ifndef GL_ARB_multitexture
#define GL_ARB_multitexture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveTextureARB (GLenum);
-GLAPI void APIENTRY glClientActiveTextureARB (GLenum);
-GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum, GLint);
-GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum, GLshort);
-GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum, const GLshort *);
-GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum, const GLshort *);
+GLAPI void APIENTRY glActiveTextureARB (GLenum texture);
+GLAPI void APIENTRY glClientActiveTextureARB (GLenum texture);
+GLAPI void APIENTRY glMultiTexCoord1dARB (GLenum target, GLdouble s);
+GLAPI void APIENTRY glMultiTexCoord1dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord1fARB (GLenum target, GLfloat s);
+GLAPI void APIENTRY glMultiTexCoord1fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord1iARB (GLenum target, GLint s);
+GLAPI void APIENTRY glMultiTexCoord1ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord1sARB (GLenum target, GLshort s);
+GLAPI void APIENTRY glMultiTexCoord1svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord2dARB (GLenum target, GLdouble s, GLdouble t);
+GLAPI void APIENTRY glMultiTexCoord2dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord2fARB (GLenum target, GLfloat s, GLfloat t);
+GLAPI void APIENTRY glMultiTexCoord2fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord2iARB (GLenum target, GLint s, GLint t);
+GLAPI void APIENTRY glMultiTexCoord2ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord2sARB (GLenum target, GLshort s, GLshort t);
+GLAPI void APIENTRY glMultiTexCoord2svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord3dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r);
+GLAPI void APIENTRY glMultiTexCoord3dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord3fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r);
+GLAPI void APIENTRY glMultiTexCoord3fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord3iARB (GLenum target, GLint s, GLint t, GLint r);
+GLAPI void APIENTRY glMultiTexCoord3ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord3sARB (GLenum target, GLshort s, GLshort t, GLshort r);
+GLAPI void APIENTRY glMultiTexCoord3svARB (GLenum target, const GLshort *v);
+GLAPI void APIENTRY glMultiTexCoord4dARB (GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+GLAPI void APIENTRY glMultiTexCoord4dvARB (GLenum target, const GLdouble *v);
+GLAPI void APIENTRY glMultiTexCoord4fARB (GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+GLAPI void APIENTRY glMultiTexCoord4fvARB (GLenum target, const GLfloat *v);
+GLAPI void APIENTRY glMultiTexCoord4iARB (GLenum target, GLint s, GLint t, GLint r, GLint q);
+GLAPI void APIENTRY glMultiTexCoord4ivARB (GLenum target, const GLint *v);
+GLAPI void APIENTRY glMultiTexCoord4sARB (GLenum target, GLshort s, GLshort t, GLshort r, GLshort q);
+GLAPI void APIENTRY glMultiTexCoord4svARB (GLenum target, const GLshort *v);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLACTIVETEXTUREARBPROC) (GLenum texture);
typedef void (APIENTRYP PFNGLCLIENTACTIVETEXTUREARBPROC) (GLenum texture);
@@ -5267,10 +5563,10 @@ typedef void (APIENTRYP PFNGLMULTITEXCOORD4SVARBPROC) (GLenum target, const GLsh
#ifndef GL_ARB_transpose_matrix
#define GL_ARB_transpose_matrix 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *);
-GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *);
-GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *);
-GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *);
+GLAPI void APIENTRY glLoadTransposeMatrixfARB (const GLfloat *m);
+GLAPI void APIENTRY glLoadTransposeMatrixdARB (const GLdouble *m);
+GLAPI void APIENTRY glMultTransposeMatrixfARB (const GLfloat *m);
+GLAPI void APIENTRY glMultTransposeMatrixdARB (const GLdouble *m);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXFARBPROC) (const GLfloat *m);
typedef void (APIENTRYP PFNGLLOADTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
@@ -5281,7 +5577,7 @@ typedef void (APIENTRYP PFNGLMULTTRANSPOSEMATRIXDARBPROC) (const GLdouble *m);
#ifndef GL_ARB_multisample
#define GL_ARB_multisample 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleCoverageARB (GLclampf, GLboolean);
+GLAPI void APIENTRY glSampleCoverageARB (GLclampf value, GLboolean invert);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean invert);
#endif
@@ -5297,13 +5593,13 @@ typedef void (APIENTRYP PFNGLSAMPLECOVERAGEARBPROC) (GLclampf value, GLboolean i
#ifndef GL_ARB_texture_compression
#define GL_ARB_texture_compression 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum, GLint, GLvoid *);
+GLAPI void APIENTRY glCompressedTexImage3DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage2DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexImage1DARB (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage3DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage2DARB (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glCompressedTexSubImage1DARB (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *data);
+GLAPI void APIENTRY glGetCompressedTexImageARB (GLenum target, GLint level, GLvoid *img);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *data);
typedef void (APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DARBPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data);
@@ -5321,8 +5617,8 @@ typedef void (APIENTRYP PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GLint
#ifndef GL_ARB_point_parameters
#define GL_ARB_point_parameters 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfARB (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfvARB (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameterfARB (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvARB (GLenum pname, const GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPOINTPARAMETERFARBPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLfloat *params);
@@ -5331,16 +5627,16 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERFVARBPROC) (GLenum pname, const GLflo
#ifndef GL_ARB_vertex_blend
#define GL_ARB_vertex_blend 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWeightbvARB (GLint, const GLbyte *);
-GLAPI void APIENTRY glWeightsvARB (GLint, const GLshort *);
-GLAPI void APIENTRY glWeightivARB (GLint, const GLint *);
-GLAPI void APIENTRY glWeightfvARB (GLint, const GLfloat *);
-GLAPI void APIENTRY glWeightdvARB (GLint, const GLdouble *);
-GLAPI void APIENTRY glWeightubvARB (GLint, const GLubyte *);
-GLAPI void APIENTRY glWeightusvARB (GLint, const GLushort *);
-GLAPI void APIENTRY glWeightuivARB (GLint, const GLuint *);
-GLAPI void APIENTRY glWeightPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glVertexBlendARB (GLint);
+GLAPI void APIENTRY glWeightbvARB (GLint size, const GLbyte *weights);
+GLAPI void APIENTRY glWeightsvARB (GLint size, const GLshort *weights);
+GLAPI void APIENTRY glWeightivARB (GLint size, const GLint *weights);
+GLAPI void APIENTRY glWeightfvARB (GLint size, const GLfloat *weights);
+GLAPI void APIENTRY glWeightdvARB (GLint size, const GLdouble *weights);
+GLAPI void APIENTRY glWeightubvARB (GLint size, const GLubyte *weights);
+GLAPI void APIENTRY glWeightusvARB (GLint size, const GLushort *weights);
+GLAPI void APIENTRY glWeightuivARB (GLint size, const GLuint *weights);
+GLAPI void APIENTRY glWeightPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexBlendARB (GLint count);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLWEIGHTBVARBPROC) (GLint size, const GLbyte *weights);
typedef void (APIENTRYP PFNGLWEIGHTSVARBPROC) (GLint size, const GLshort *weights);
@@ -5357,11 +5653,11 @@ typedef void (APIENTRYP PFNGLVERTEXBLENDARBPROC) (GLint count);
#ifndef GL_ARB_matrix_palette
#define GL_ARB_matrix_palette 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint);
-GLAPI void APIENTRY glMatrixIndexubvARB (GLint, const GLubyte *);
-GLAPI void APIENTRY glMatrixIndexusvARB (GLint, const GLushort *);
-GLAPI void APIENTRY glMatrixIndexuivARB (GLint, const GLuint *);
-GLAPI void APIENTRY glMatrixIndexPointerARB (GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glCurrentPaletteMatrixARB (GLint index);
+GLAPI void APIENTRY glMatrixIndexubvARB (GLint size, const GLubyte *indices);
+GLAPI void APIENTRY glMatrixIndexusvARB (GLint size, const GLushort *indices);
+GLAPI void APIENTRY glMatrixIndexuivARB (GLint size, const GLuint *indices);
+GLAPI void APIENTRY glMatrixIndexPointerARB (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCURRENTPALETTEMATRIXARBPROC) (GLint index);
typedef void (APIENTRYP PFNGLMATRIXINDEXUBVARBPROC) (GLint size, const GLubyte *indices);
@@ -5401,22 +5697,22 @@ typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTERARBPROC) (GLint size, GLenum type
#ifndef GL_ARB_window_pos
#define GL_ARB_window_pos 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dARB (GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *);
-GLAPI void APIENTRY glWindowPos2fARB (GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *);
-GLAPI void APIENTRY glWindowPos2iARB (GLint, GLint);
-GLAPI void APIENTRY glWindowPos2ivARB (const GLint *);
-GLAPI void APIENTRY glWindowPos2sARB (GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos2svARB (const GLshort *);
-GLAPI void APIENTRY glWindowPos3dARB (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *);
-GLAPI void APIENTRY glWindowPos3fARB (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *);
-GLAPI void APIENTRY glWindowPos3iARB (GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos3ivARB (const GLint *);
-GLAPI void APIENTRY glWindowPos3sARB (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos3svARB (const GLshort *);
+GLAPI void APIENTRY glWindowPos2dARB (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dvARB (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2fARB (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fvARB (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2iARB (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2ivARB (const GLint *v);
+GLAPI void APIENTRY glWindowPos2sARB (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2svARB (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3dARB (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dvARB (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3fARB (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fvARB (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3iARB (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3ivARB (const GLint *v);
+GLAPI void APIENTRY glWindowPos3sARB (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3svARB (const GLshort *v);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLWINDOWPOS2DARBPROC) (GLdouble x, GLdouble y);
typedef void (APIENTRYP PFNGLWINDOWPOS2DVARBPROC) (const GLdouble *v);
@@ -5439,68 +5735,68 @@ typedef void (APIENTRYP PFNGLWINDOWPOS3SVARBPROC) (const GLshort *v);
#ifndef GL_ARB_vertex_program
#define GL_ARB_vertex_program 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttrib1dARB (GLuint, GLdouble);
-GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib1fARB (GLuint, GLfloat);
-GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib1sARB (GLuint, GLshort);
-GLAPI void APIENTRY glVertexAttrib1svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib2dARB (GLuint, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib2fARB (GLuint, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib2sARB (GLuint, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib2svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib3dARB (GLuint, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib3fARB (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib3sARB (GLuint, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib3svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttrib4dARB (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib4fARB (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttrib4sARB (GLuint, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib4svARB (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttribPointerARB (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint);
-GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint);
-GLAPI void APIENTRY glProgramStringARB (GLenum, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glBindProgramARB (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteProgramsARB (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenProgramsARB (GLsizei, GLuint *);
-GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetProgramivARB (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetProgramStringARB (GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribivARB (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint, GLenum, GLvoid* *);
-GLAPI GLboolean APIENTRY glIsProgramARB (GLuint);
+GLAPI void APIENTRY glVertexAttrib1dARB (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1fARB (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1sARB (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2dARB (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2fARB (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2sARB (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3sARB (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4NbvARB (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4NivARB (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4NsvARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4NubARB (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4NubvARB (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4NuivARB (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4NusvARB (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttrib4bvARB (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttrib4dARB (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dvARB (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4fARB (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fvARB (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4ivARB (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttrib4sARB (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4svARB (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubvARB (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttrib4uivARB (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttrib4usvARB (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribPointerARB (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glEnableVertexAttribArrayARB (GLuint index);
+GLAPI void APIENTRY glDisableVertexAttribArrayARB (GLuint index);
+GLAPI void APIENTRY glProgramStringARB (GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+GLAPI void APIENTRY glBindProgramARB (GLenum target, GLuint program);
+GLAPI void APIENTRY glDeleteProgramsARB (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glGenProgramsARB (GLsizei n, GLuint *programs);
+GLAPI void APIENTRY glProgramEnvParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramEnvParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glProgramEnvParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramEnvParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glProgramLocalParameter4dARB (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramLocalParameter4dvARB (GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glProgramLocalParameter4fARB (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramLocalParameter4fvARB (GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glGetProgramEnvParameterdvARB (GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetProgramEnvParameterfvARB (GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetProgramLocalParameterdvARB (GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetProgramLocalParameterfvARB (GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetProgramivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramStringARB (GLenum target, GLenum pname, GLvoid *string);
+GLAPI void APIENTRY glGetVertexAttribdvARB (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfvARB (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribivARB (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointervARB (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgramARB (GLuint program);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXATTRIB1DARBPROC) (GLuint index, GLdouble x);
typedef void (APIENTRYP PFNGLVERTEXATTRIB1DVARBPROC) (GLuint index, const GLdouble *v);
@@ -5574,17 +5870,17 @@ typedef GLboolean (APIENTRYP PFNGLISPROGRAMARBPROC) (GLuint program);
#ifndef GL_ARB_vertex_buffer_object
#define GL_ARB_vertex_buffer_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindBufferARB (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteBuffersARB (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenBuffersARB (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsBufferARB (GLuint);
-GLAPI void APIENTRY glBufferDataARB (GLenum, GLsizeiptrARB, const GLvoid *, GLenum);
-GLAPI void APIENTRY glBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *);
-GLAPI void APIENTRY glGetBufferSubDataARB (GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *);
-GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum, GLenum);
-GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum);
-GLAPI void APIENTRY glGetBufferParameterivARB (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetBufferPointervARB (GLenum, GLenum, GLvoid* *);
+GLAPI void APIENTRY glBindBufferARB (GLenum target, GLuint buffer);
+GLAPI void APIENTRY glDeleteBuffersARB (GLsizei n, const GLuint *buffers);
+GLAPI void APIENTRY glGenBuffersARB (GLsizei n, GLuint *buffers);
+GLAPI GLboolean APIENTRY glIsBufferARB (GLuint buffer);
+GLAPI void APIENTRY glBufferDataARB (GLenum target, GLsizeiptrARB size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid *data);
+GLAPI void APIENTRY glGetBufferSubDataARB (GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapBufferARB (GLenum target, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapBufferARB (GLenum target);
+GLAPI void APIENTRY glGetBufferParameterivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetBufferPointervARB (GLenum target, GLenum pname, GLvoid* *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBINDBUFFERARBPROC) (GLenum target, GLuint buffer);
typedef void (APIENTRYP PFNGLDELETEBUFFERSARBPROC) (GLsizei n, const GLuint *buffers);
@@ -5602,14 +5898,14 @@ typedef void (APIENTRYP PFNGLGETBUFFERPOINTERVARBPROC) (GLenum target, GLenum pn
#ifndef GL_ARB_occlusion_query
#define GL_ARB_occlusion_query 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenQueriesARB (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteQueriesARB (GLsizei, const GLuint *);
-GLAPI GLboolean APIENTRY glIsQueryARB (GLuint);
-GLAPI void APIENTRY glBeginQueryARB (GLenum, GLuint);
-GLAPI void APIENTRY glEndQueryARB (GLenum);
-GLAPI void APIENTRY glGetQueryivARB (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectivARB (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glGenQueriesARB (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteQueriesARB (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsQueryARB (GLuint id);
+GLAPI void APIENTRY glBeginQueryARB (GLenum target, GLuint id);
+GLAPI void APIENTRY glEndQueryARB (GLenum target);
+GLAPI void APIENTRY glGetQueryivARB (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectivARB (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetQueryObjectuivARB (GLuint id, GLenum pname, GLuint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGENQUERIESARBPROC) (GLsizei n, GLuint *ids);
typedef void (APIENTRYP PFNGLDELETEQUERIESARBPROC) (GLsizei n, const GLuint *ids);
@@ -5624,45 +5920,45 @@ typedef void (APIENTRYP PFNGLGETQUERYOBJECTUIVARBPROC) (GLuint id, GLenum pname,
#ifndef GL_ARB_shader_objects
#define GL_ARB_shader_objects 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB);
-GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum);
-GLAPI void APIENTRY glDetachObjectARB (GLhandleARB, GLhandleARB);
-GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum);
-GLAPI void APIENTRY glShaderSourceARB (GLhandleARB, GLsizei, const GLcharARB* *, const GLint *);
-GLAPI void APIENTRY glCompileShaderARB (GLhandleARB);
+GLAPI void APIENTRY glDeleteObjectARB (GLhandleARB obj);
+GLAPI GLhandleARB APIENTRY glGetHandleARB (GLenum pname);
+GLAPI void APIENTRY glDetachObjectARB (GLhandleARB containerObj, GLhandleARB attachedObj);
+GLAPI GLhandleARB APIENTRY glCreateShaderObjectARB (GLenum shaderType);
+GLAPI void APIENTRY glShaderSourceARB (GLhandleARB shaderObj, GLsizei count, const GLcharARB* *string, const GLint *length);
+GLAPI void APIENTRY glCompileShaderARB (GLhandleARB shaderObj);
GLAPI GLhandleARB APIENTRY glCreateProgramObjectARB (void);
-GLAPI void APIENTRY glAttachObjectARB (GLhandleARB, GLhandleARB);
-GLAPI void APIENTRY glLinkProgramARB (GLhandleARB);
-GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB);
-GLAPI void APIENTRY glValidateProgramARB (GLhandleARB);
-GLAPI void APIENTRY glUniform1fARB (GLint, GLfloat);
-GLAPI void APIENTRY glUniform2fARB (GLint, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform3fARB (GLint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform4fARB (GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glUniform1iARB (GLint, GLint);
-GLAPI void APIENTRY glUniform2iARB (GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform3iARB (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform4iARB (GLint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glUniform1fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform2fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform3fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform4fvARB (GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glUniform1ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform2ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform3ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniform4ivARB (GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glUniformMatrix2fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix3fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glUniformMatrix4fvARB (GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB, GLenum, GLint *);
-GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
-GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB, GLsizei, GLsizei *, GLhandleARB *);
-GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB, const GLcharARB *);
-GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
-GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB, GLint, GLfloat *);
-GLAPI void APIENTRY glGetUniformivARB (GLhandleARB, GLint, GLint *);
-GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB, GLsizei, GLsizei *, GLcharARB *);
+GLAPI void APIENTRY glAttachObjectARB (GLhandleARB containerObj, GLhandleARB obj);
+GLAPI void APIENTRY glLinkProgramARB (GLhandleARB programObj);
+GLAPI void APIENTRY glUseProgramObjectARB (GLhandleARB programObj);
+GLAPI void APIENTRY glValidateProgramARB (GLhandleARB programObj);
+GLAPI void APIENTRY glUniform1fARB (GLint location, GLfloat v0);
+GLAPI void APIENTRY glUniform2fARB (GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glUniform3fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glUniform4fARB (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glUniform1iARB (GLint location, GLint v0);
+GLAPI void APIENTRY glUniform2iARB (GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glUniform3iARB (GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glUniform4iARB (GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glUniform1fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform2fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform3fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform4fvARB (GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glUniform1ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform2ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform3ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniform4ivARB (GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glUniformMatrix2fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix3fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glUniformMatrix4fvARB (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glGetObjectParameterfvARB (GLhandleARB obj, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetObjectParameterivARB (GLhandleARB obj, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetInfoLogARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog);
+GLAPI void APIENTRY glGetAttachedObjectsARB (GLhandleARB containerObj, GLsizei maxCount, GLsizei *count, GLhandleARB *obj);
+GLAPI GLint APIENTRY glGetUniformLocationARB (GLhandleARB programObj, const GLcharARB *name);
+GLAPI void APIENTRY glGetActiveUniformARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+GLAPI void APIENTRY glGetUniformfvARB (GLhandleARB programObj, GLint location, GLfloat *params);
+GLAPI void APIENTRY glGetUniformivARB (GLhandleARB programObj, GLint location, GLint *params);
+GLAPI void APIENTRY glGetShaderSourceARB (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *source);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDELETEOBJECTARBPROC) (GLhandleARB obj);
typedef GLhandleARB (APIENTRYP PFNGLGETHANDLEARBPROC) (GLenum pname);
@@ -5708,9 +6004,9 @@ typedef void (APIENTRYP PFNGLGETSHADERSOURCEARBPROC) (GLhandleARB obj, GLsizei m
#ifndef GL_ARB_vertex_shader
#define GL_ARB_vertex_shader 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB, GLuint, const GLcharARB *);
-GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *);
-GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB, const GLcharARB *);
+GLAPI void APIENTRY glBindAttribLocationARB (GLhandleARB programObj, GLuint index, const GLcharARB *name);
+GLAPI void APIENTRY glGetActiveAttribARB (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
+GLAPI GLint APIENTRY glGetAttribLocationARB (GLhandleARB programObj, const GLcharARB *name);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name);
typedef void (APIENTRYP PFNGLGETACTIVEATTRIBARBPROC) (GLhandleARB programObj, GLuint index, GLsizei maxLength, GLsizei *length, GLint *size, GLenum *type, GLcharARB *name);
@@ -5740,7 +6036,7 @@ typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programObj,
#ifndef GL_ARB_draw_buffers
#define GL_ARB_draw_buffers 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersARB (GLsizei, const GLenum *);
+GLAPI void APIENTRY glDrawBuffersARB (GLsizei n, const GLenum *bufs);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs);
#endif
@@ -5752,7 +6048,7 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSARBPROC) (GLsizei n, const GLenum *bufs)
#ifndef GL_ARB_color_buffer_float
#define GL_ARB_color_buffer_float 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClampColorARB (GLenum, GLenum);
+GLAPI void APIENTRY glClampColorARB (GLenum target, GLenum clamp);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
#endif
@@ -5776,8 +6072,8 @@ typedef void (APIENTRYP PFNGLCLAMPCOLORARBPROC) (GLenum target, GLenum clamp);
#ifndef GL_ARB_draw_instanced
#define GL_ARB_draw_instanced 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
+GLAPI void APIENTRY glDrawArraysInstancedARB (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedARB (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDARBPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount);
typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
@@ -5786,26 +6082,26 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsizei
#ifndef GL_ARB_framebuffer_object
#define GL_ARB_framebuffer_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint);
-GLAPI void APIENTRY glBindRenderbuffer (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenRenderbuffers (GLsizei, GLuint *);
-GLAPI void APIENTRY glRenderbufferStorage (GLenum, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum, GLenum, GLint *);
-GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint);
-GLAPI void APIENTRY glBindFramebuffer (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteFramebuffers (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenFramebuffers (GLsizei, GLuint *);
-GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum);
-GLAPI void APIENTRY glFramebufferTexture1D (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture2D (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture3D (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGenerateMipmap (GLenum);
-GLAPI void APIENTRY glBlitFramebuffer (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
-GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glFramebufferTextureLayer (GLenum, GLenum, GLuint, GLint, GLint);
+GLAPI GLboolean APIENTRY glIsRenderbuffer (GLuint renderbuffer);
+GLAPI void APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers);
+GLAPI void APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsFramebuffer (GLuint framebuffer);
+GLAPI void APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer);
+GLAPI void APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers);
+GLAPI void APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers);
+GLAPI GLenum APIENTRY glCheckFramebufferStatus (GLenum target);
+GLAPI void APIENTRY glFramebufferTexture1D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture3D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateMipmap (GLenum target);
+GLAPI void APIENTRY glBlitFramebuffer (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+GLAPI void APIENTRY glRenderbufferStorageMultisample (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glFramebufferTextureLayer (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer);
typedef void (APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer);
@@ -5836,10 +6132,10 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERPROC) (GLenum target, GLenum
#ifndef GL_ARB_geometry_shader4
#define GL_ARB_geometry_shader4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriARB (GLuint, GLenum, GLint);
-GLAPI void APIENTRY glFramebufferTextureARB (GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum, GLenum, GLuint, GLint, GLenum);
+GLAPI void APIENTRY glProgramParameteriARB (GLuint program, GLenum pname, GLint value);
+GLAPI void APIENTRY glFramebufferTextureARB (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTextureLayerARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glFramebufferTextureFaceARB (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenum pname, GLint value);
typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREARBPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
@@ -5854,7 +6150,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEARBPROC) (GLenum target, GLen
#ifndef GL_ARB_instanced_arrays
#define GL_ARB_instanced_arrays 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint, GLuint);
+GLAPI void APIENTRY glVertexAttribDivisorARB (GLuint index, GLuint divisor);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint divisor);
#endif
@@ -5862,8 +6158,8 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBDIVISORARBPROC) (GLuint index, GLuint d
#ifndef GL_ARB_map_buffer_range
#define GL_ARB_map_buffer_range 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum, GLintptr, GLsizeiptr, GLbitfield);
-GLAPI void APIENTRY glFlushMappedBufferRange (GLenum, GLintptr, GLsizeiptr);
+GLAPI GLvoid* APIENTRY glMapBufferRange (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
+GLAPI void APIENTRY glFlushMappedBufferRange (GLenum target, GLintptr offset, GLsizeiptr length);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLvoid* (APIENTRYP PFNGLMAPBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access);
typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintptr offset, GLsizeiptr length);
@@ -5872,7 +6168,7 @@ typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEPROC) (GLenum target, GLintpt
#ifndef GL_ARB_texture_buffer_object
#define GL_ARB_texture_buffer_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferARB (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glTexBufferARB (GLenum target, GLenum internalformat, GLuint buffer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalformat, GLuint buffer);
#endif
@@ -5888,10 +6184,10 @@ typedef void (APIENTRYP PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum internalfo
#ifndef GL_ARB_vertex_array_object
#define GL_ARB_vertex_array_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindVertexArray (GLuint);
-GLAPI void APIENTRY glDeleteVertexArrays (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenVertexArrays (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsVertexArray (GLuint);
+GLAPI void APIENTRY glBindVertexArray (GLuint array);
+GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
+GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
+GLAPI GLboolean APIENTRY glIsVertexArray (GLuint array);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
@@ -5902,13 +6198,13 @@ typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYPROC) (GLuint array);
#ifndef GL_ARB_uniform_buffer_object
#define GL_ARB_uniform_buffer_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetUniformIndices (GLuint, GLsizei, const GLchar* *, GLuint *);
-GLAPI void APIENTRY glGetActiveUniformsiv (GLuint, GLsizei, const GLuint *, GLenum, GLint *);
-GLAPI void APIENTRY glGetActiveUniformName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glUniformBlockBinding (GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glGetUniformIndices (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
+GLAPI void APIENTRY glGetActiveUniformsiv (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformName (GLuint program, GLuint uniformIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformName);
+GLAPI GLuint APIENTRY glGetUniformBlockIndex (GLuint program, const GLchar *uniformBlockName);
+GLAPI void APIENTRY glGetActiveUniformBlockiv (GLuint program, GLuint uniformBlockIndex, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetActiveUniformBlockName (GLuint program, GLuint uniformBlockIndex, GLsizei bufSize, GLsizei *length, GLchar *uniformBlockName);
+GLAPI void APIENTRY glUniformBlockBinding (GLuint program, GLuint uniformBlockIndex, GLuint uniformBlockBinding);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETUNIFORMINDICESPROC) (GLuint program, GLsizei uniformCount, const GLchar* *uniformNames, GLuint *uniformIndices);
typedef void (APIENTRYP PFNGLGETACTIVEUNIFORMSIVPROC) (GLuint program, GLsizei uniformCount, const GLuint *uniformIndices, GLenum pname, GLint *params);
@@ -5926,7 +6222,7 @@ typedef void (APIENTRYP PFNGLUNIFORMBLOCKBINDINGPROC) (GLuint program, GLuint un
#ifndef GL_ARB_copy_buffer
#define GL_ARB_copy_buffer 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyBufferSubData (GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glCopyBufferSubData (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size);
#endif
@@ -5942,10 +6238,10 @@ typedef void (APIENTRYP PFNGLCOPYBUFFERSUBDATAPROC) (GLenum readTarget, GLenum w
#ifndef GL_ARB_draw_elements_base_vertex
#define GL_ARB_draw_elements_base_vertex 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum, GLsizei, GLenum, const GLvoid *, GLint);
-GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint);
-GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei, GLint);
-GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei, const GLint *);
+GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawRangeElementsBaseVertex (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
+GLAPI void APIENTRY glDrawElementsInstancedBaseVertex (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount, GLint basevertex);
+GLAPI void APIENTRY glMultiDrawElementsBaseVertex (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount, const GLint *basevertex);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices, GLint basevertex);
@@ -5960,7 +6256,7 @@ typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, cons
#ifndef GL_ARB_provoking_vertex
#define GL_ARB_provoking_vertex 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProvokingVertex (GLenum);
+GLAPI void APIENTRY glProvokingVertex (GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
#endif
@@ -5972,13 +6268,13 @@ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXPROC) (GLenum mode);
#ifndef GL_ARB_sync
#define GL_ARB_sync 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLsync APIENTRY glFenceSync (GLenum, GLbitfield);
-GLAPI GLboolean APIENTRY glIsSync (GLsync);
-GLAPI void APIENTRY glDeleteSync (GLsync);
-GLAPI GLenum APIENTRY glClientWaitSync (GLsync, GLbitfield, GLuint64);
-GLAPI void APIENTRY glWaitSync (GLsync, GLbitfield, GLuint64);
-GLAPI void APIENTRY glGetInteger64v (GLenum, GLint64 *);
-GLAPI void APIENTRY glGetSynciv (GLsync, GLenum, GLsizei, GLsizei *, GLint *);
+GLAPI GLsync APIENTRY glFenceSync (GLenum condition, GLbitfield flags);
+GLAPI GLboolean APIENTRY glIsSync (GLsync sync);
+GLAPI void APIENTRY glDeleteSync (GLsync sync);
+GLAPI GLenum APIENTRY glClientWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glWaitSync (GLsync sync, GLbitfield flags, GLuint64 timeout);
+GLAPI void APIENTRY glGetInteger64v (GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetSynciv (GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length, GLint *values);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags);
typedef GLboolean (APIENTRYP PFNGLISSYNCPROC) (GLsync sync);
@@ -5992,10 +6288,10 @@ typedef void (APIENTRYP PFNGLGETSYNCIVPROC) (GLsync sync, GLenum pname, GLsizei
#ifndef GL_ARB_texture_multisample
#define GL_ARB_texture_multisample 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage2DMultisample (GLenum, GLsizei, GLint, GLsizei, GLsizei, GLboolean);
-GLAPI void APIENTRY glTexImage3DMultisample (GLenum, GLsizei, GLint, GLsizei, GLsizei, GLsizei, GLboolean);
-GLAPI void APIENTRY glGetMultisamplefv (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glSampleMaski (GLuint, GLbitfield);
+GLAPI void APIENTRY glTexImage2DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glTexImage3DMultisample (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
+GLAPI void APIENTRY glGetMultisamplefv (GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaski (GLuint index, GLbitfield mask);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXIMAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
typedef void (APIENTRYP PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
@@ -6010,10 +6306,10 @@ typedef void (APIENTRYP PFNGLSAMPLEMASKIPROC) (GLuint index, GLbitfield mask);
#ifndef GL_ARB_draw_buffers_blend
#define GL_ARB_draw_buffers_blend 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationi (GLuint, GLenum);
-GLAPI void APIENTRY glBlendEquationSeparatei (GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glBlendFunci (GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glBlendFuncSeparatei (GLuint, GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glBlendEquationi (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparatei (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+GLAPI void APIENTRY glBlendFunci (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparatei (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
@@ -6024,7 +6320,7 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB,
#ifndef GL_ARB_sample_shading
#define GL_ARB_sample_shading 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMinSampleShading (GLclampf);
+GLAPI void APIENTRY glMinSampleShading (GLclampf value);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
#endif
@@ -6041,6 +6337,314 @@ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
#define GL_ARB_texture_query_lod 1
#endif
+#ifndef GL_ARB_shading_language_include
+#define GL_ARB_shading_language_include 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glNamedStringARB (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+GLAPI void APIENTRY glDeleteNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glCompileShaderIncludeARB (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length);
+GLAPI GLboolean APIENTRY glIsNamedStringARB (GLint namelen, const GLchar *name);
+GLAPI void APIENTRY glGetNamedStringARB (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+GLAPI void APIENTRY glGetNamedStringivARB (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const GLchar *name, GLint stringlen, const GLchar *string);
+typedef void (APIENTRYP PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const GLchar* *path, const GLint *length);
+typedef GLboolean (APIENTRYP PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const GLchar *name, GLsizei bufSize, GLint *stringlen, GLchar *string);
+typedef void (APIENTRYP PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const GLchar *name, GLenum pname, GLint *params);
+#endif
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_ARB_blend_func_extended 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindFragDataLocationIndexed (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataIndex (GLuint program, const GLchar *name);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name);
+typedef GLint (APIENTRYP PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const GLchar *name);
+#endif
+
+#ifndef GL_ARB_sampler_objects
+#define GL_ARB_sampler_objects 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glGenSamplers (GLsizei count, GLuint *samplers);
+GLAPI void APIENTRY glDeleteSamplers (GLsizei count, const GLuint *samplers);
+GLAPI GLboolean APIENTRY glIsSampler (GLuint sampler);
+GLAPI void APIENTRY glBindSampler (GLenum unit, GLuint sampler);
+GLAPI void APIENTRY glSamplerParameteri (GLuint sampler, GLenum pname, GLint param);
+GLAPI void APIENTRY glSamplerParameteriv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterf (GLuint sampler, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glSamplerParameterfv (GLuint sampler, GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glSamplerParameterIiv (GLuint sampler, GLenum pname, const GLint *param);
+GLAPI void APIENTRY glSamplerParameterIuiv (GLuint sampler, GLenum pname, const GLuint *param);
+GLAPI void APIENTRY glGetSamplerParameteriv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterIiv (GLuint sampler, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSamplerParameterfv (GLuint sampler, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetSamplerParameterIfv (GLuint sampler, GLenum pname, GLfloat *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint *samplers);
+typedef void (APIENTRYP PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint *samplers);
+typedef GLboolean (APIENTRYP PFNGLISSAMPLERPROC) (GLuint sampler);
+typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLenum unit, GLuint sampler);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint *param);
+typedef void (APIENTRYP PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint *param);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
+typedef void (APIENTRYP PFNGLGETSAMPLERPARAMETERIFVPROC) (GLuint sampler, GLenum pname, GLfloat *params);
+#endif
+
+#ifndef GL_ARB_timer_query
+#define GL_ARB_timer_query 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glQueryCounter (GLuint id, GLenum target);
+GLAPI void APIENTRY glGetQueryObjecti64v (GLuint id, GLenum pname, GLint64 *params);
+GLAPI void APIENTRY glGetQueryObjectui64v (GLuint id, GLenum pname, GLuint64 *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64 *params);
+typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64 *params);
+#endif
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glVertexP2ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP2uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glVertexP3ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP3uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glVertexP4ui (GLenum type, GLuint value);
+GLAPI void APIENTRY glVertexP4uiv (GLenum type, const GLuint *value);
+GLAPI void APIENTRY glTexCoordP1ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP1uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP2ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP2uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP3ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP3uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glTexCoordP4ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glTexCoordP4uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP1ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP1uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP2ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP2uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP3ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP3uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glMultiTexCoordP4ui (GLenum texture, GLenum type, GLuint coords);
+GLAPI void APIENTRY glMultiTexCoordP4uiv (GLenum texture, GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glNormalP3ui (GLenum type, GLuint coords);
+GLAPI void APIENTRY glNormalP3uiv (GLenum type, const GLuint *coords);
+GLAPI void APIENTRY glColorP3ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glColorP3uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glColorP4ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glColorP4uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glSecondaryColorP3ui (GLenum type, GLuint color);
+GLAPI void APIENTRY glSecondaryColorP3uiv (GLenum type, const GLuint *color);
+GLAPI void APIENTRY glVertexAttribP1ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP1uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP2ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP2uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP3ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP3uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+GLAPI void APIENTRY glVertexAttribP4ui (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+GLAPI void APIENTRY glVertexAttribP4uiv (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint *value);
+typedef void (APIENTRYP PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
+typedef void (APIENTRYP PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint *coords);
+typedef void (APIENTRYP PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (APIENTRYP PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint *color);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (APIENTRYP PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint *value);
+#endif
+
+#ifndef GL_ARB_draw_indirect
+#define GL_ARB_draw_indirect 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawArraysIndirect (GLenum mode, const GLvoid *indirect);
+GLAPI void APIENTRY glDrawElementsIndirect (GLenum mode, GLenum type, const GLvoid *indirect);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const GLvoid *indirect);
+typedef void (APIENTRYP PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const GLvoid *indirect);
+#endif
+
+#ifndef GL_ARB_gpu_shader_fp64
+#define GL_ARB_gpu_shader_fp64 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glUniform1d (GLint location, GLdouble x);
+GLAPI void APIENTRY glUniform2d (GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glUniform3d (GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glUniform4d (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glUniform1dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform2dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform3dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniform4dv (GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix2x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix3x4dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x2dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glUniformMatrix4x3dv (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glGetUniformdv (GLuint program, GLint location, GLdouble *params);
+GLAPI void APIENTRY glProgramUniform1dEXT (GLuint program, GLint location, GLdouble x);
+GLAPI void APIENTRY glProgramUniform2dEXT (GLuint program, GLint location, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glProgramUniform3dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glProgramUniform4dEXT (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramUniform1dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform2dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform3dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniform4dvEXT (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3dvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLUNIFORM1DPROC) (GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLUNIFORM2DPROC) (GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLUNIFORM3DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLUNIFORM4DPROC) (GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLUNIFORM1DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM2DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM3DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORM4DVPROC) (GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX2X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X2DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLUNIFORMMATRIX4X3DVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLGETUNIFORMDVPROC) (GLuint program, GLint location, GLdouble *params);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DEXTPROC) (GLuint program, GLint location, GLdouble x);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DEXTPROC) (GLuint program, GLint location, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM1DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM2DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM3DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORM4DVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+typedef void (APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3DVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLdouble *value);
+#endif
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ARB_shader_subroutine 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI GLint APIENTRY glGetSubroutineUniformLocation (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI GLuint APIENTRY glGetSubroutineIndex (GLuint program, GLenum shadertype, const GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineUniformiv (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+GLAPI void APIENTRY glGetActiveSubroutineUniformName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glGetActiveSubroutineName (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+GLAPI void APIENTRY glUniformSubroutinesuiv (GLenum shadertype, GLsizei count, const GLuint *indices);
+GLAPI void APIENTRY glGetUniformSubroutineuiv (GLenum shadertype, GLint location, GLuint *params);
+GLAPI void APIENTRY glGetProgramStageiv (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef GLint (APIENTRYP PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef GLuint (APIENTRYP PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint *values);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei *length, GLchar *name);
+typedef void (APIENTRYP PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint *indices);
+typedef void (APIENTRYP PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint *params);
+typedef void (APIENTRYP PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint *values);
+#endif
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_ARB_tessellation_shader 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glPatchParameteri (GLenum pname, GLint value);
+GLAPI void APIENTRY glPatchParameterfv (GLenum pname, const GLfloat *values);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
+typedef void (APIENTRYP PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat *values);
+#endif
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_ARB_transform_feedback2 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glBindTransformFeedback (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteTransformFeedbacks (GLsizei n, const GLuint *ids);
+GLAPI void APIENTRY glGenTransformFeedbacks (GLsizei n, GLuint *ids);
+GLAPI GLboolean APIENTRY glIsTransformFeedback (GLuint id);
+GLAPI void APIENTRY glPauseTransformFeedback (void);
+GLAPI void APIENTRY glResumeTransformFeedback (void);
+GLAPI void APIENTRY glDrawTransformFeedback (GLenum mode, GLuint id);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
+typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint *ids);
+typedef void (APIENTRYP PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint *ids);
+typedef GLboolean (APIENTRYP PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
+typedef void (APIENTRYP PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
+#endif
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_ARB_transform_feedback3 1
+#ifdef GL_GLEXT_PROTOTYPES
+GLAPI void APIENTRY glDrawTransformFeedbackStream (GLenum mode, GLuint id, GLuint stream);
+GLAPI void APIENTRY glBeginQueryIndexed (GLenum target, GLuint index, GLuint id);
+GLAPI void APIENTRY glEndQueryIndexed (GLenum target, GLuint index);
+GLAPI void APIENTRY glGetQueryIndexediv (GLenum target, GLuint index, GLenum pname, GLint *params);
+#endif /* GL_GLEXT_PROTOTYPES */
+typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
+typedef void (APIENTRYP PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
+typedef void (APIENTRYP PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
+typedef void (APIENTRYP PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint *params);
+#endif
+
#ifndef GL_EXT_abgr
#define GL_EXT_abgr 1
#endif
@@ -6048,7 +6652,7 @@ typedef void (APIENTRYP PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
#ifndef GL_EXT_blend_color
#define GL_EXT_blend_color 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
+GLAPI void APIENTRY glBlendColorEXT (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
#endif
@@ -6056,7 +6660,7 @@ typedef void (APIENTRYP PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, G
#ifndef GL_EXT_polygon_offset
#define GL_EXT_polygon_offset 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat, GLfloat);
+GLAPI void APIENTRY glPolygonOffsetEXT (GLfloat factor, GLfloat bias);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias);
#endif
@@ -6068,8 +6672,8 @@ typedef void (APIENTRYP PFNGLPOLYGONOFFSETEXTPROC) (GLfloat factor, GLfloat bias
#ifndef GL_EXT_texture3D
#define GL_EXT_texture3D 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage3DEXT (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexImage3DEXT (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXIMAGE3DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
@@ -6078,8 +6682,8 @@ typedef void (APIENTRYP PFNGLTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint level,
#ifndef GL_SGIS_texture_filter4
#define GL_SGIS_texture_filter4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum, GLenum, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glGetTexFilterFuncSGIS (GLenum target, GLenum filter, GLfloat *weights);
+GLAPI void APIENTRY glTexFilterFuncSGIS (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLfloat *weights);
typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filter, GLsizei n, const GLfloat *weights);
@@ -6088,8 +6692,8 @@ typedef void (APIENTRYP PFNGLTEXFILTERFUNCSGISPROC) (GLenum target, GLenum filte
#ifndef GL_EXT_subtexture
#define GL_EXT_subtexture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexSubImage1DEXT (GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXSUBIMAGE1DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
@@ -6098,11 +6702,11 @@ typedef void (APIENTRYP PFNGLTEXSUBIMAGE2DEXTPROC) (GLenum target, GLint level,
#ifndef GL_EXT_copy_texture
#define GL_EXT_copy_texture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum, GLint, GLint, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glCopyTexImage1DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTexImage2DEXT (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTexSubImage1DEXT (GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTexSubImage2DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glCopyTexSubImage3DEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOPYTEXIMAGE1DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
typedef void (APIENTRYP PFNGLCOPYTEXIMAGE2DEXTPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
@@ -6114,16 +6718,16 @@ typedef void (APIENTRYP PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint lev
#ifndef GL_EXT_histogram
#define GL_EXT_histogram 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetHistogramEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMinmaxEXT (GLenum, GLboolean, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glHistogramEXT (GLenum, GLsizei, GLenum, GLboolean);
-GLAPI void APIENTRY glMinmaxEXT (GLenum, GLenum, GLboolean);
-GLAPI void APIENTRY glResetHistogramEXT (GLenum);
-GLAPI void APIENTRY glResetMinmaxEXT (GLenum);
+GLAPI void APIENTRY glGetHistogramEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetHistogramParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetHistogramParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMinmaxEXT (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
+GLAPI void APIENTRY glGetMinmaxParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMinmaxParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glHistogramEXT (GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glMinmaxEXT (GLenum target, GLenum internalformat, GLboolean sink);
+GLAPI void APIENTRY glResetHistogramEXT (GLenum target);
+GLAPI void APIENTRY glResetMinmaxEXT (GLenum target);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETHISTOGRAMEXTPROC) (GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid *values);
typedef void (APIENTRYP PFNGLGETHISTOGRAMPARAMETERFVEXTPROC) (GLenum target, GLenum pname, GLfloat *params);
@@ -6140,19 +6744,19 @@ typedef void (APIENTRYP PFNGLRESETMINMAXEXTPROC) (GLenum target);
#ifndef GL_EXT_convolution
#define GL_EXT_convolution 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum, GLenum, GLenum, GLvoid *, GLvoid *, GLvoid *);
-GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum, GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *, const GLvoid *);
+GLAPI void APIENTRY glConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
+GLAPI void APIENTRY glConvolutionParameterfEXT (GLenum target, GLenum pname, GLfloat params);
+GLAPI void APIENTRY glConvolutionParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glConvolutionParameteriEXT (GLenum target, GLenum pname, GLint params);
+GLAPI void APIENTRY glConvolutionParameterivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyConvolutionFilter1DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyConvolutionFilter2DEXT (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetConvolutionFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *image);
+GLAPI void APIENTRY glGetConvolutionParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetConvolutionParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetSeparableFilterEXT (GLenum target, GLenum format, GLenum type, GLvoid *row, GLvoid *column, GLvoid *span);
+GLAPI void APIENTRY glSeparableFilter2DEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *row, const GLvoid *column);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER1DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *image);
typedef void (APIENTRYP PFNGLCONVOLUTIONFILTER2DEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *image);
@@ -6176,13 +6780,13 @@ typedef void (APIENTRYP PFNGLSEPARABLEFILTER2DEXTPROC) (GLenum target, GLenum in
#ifndef GL_SGI_color_table
#define GL_SGI_color_table 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableSGI (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glColorTableParameterivSGI (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glCopyColorTableSGI (GLenum, GLenum, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glGetColorTableSGI (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glColorTableSGI (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glColorTableParameterfvSGI (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glColorTableParameterivSGI (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCopyColorTableSGI (GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glGetColorTableSGI (GLenum target, GLenum format, GLenum type, GLvoid *table);
+GLAPI void APIENTRY glGetColorTableParameterfvSGI (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetColorTableParameterivSGI (GLenum target, GLenum pname, GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLORTABLESGIPROC) (GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
typedef void (APIENTRYP PFNGLCOLORTABLEPARAMETERFVSGIPROC) (GLenum target, GLenum pname, const GLfloat *params);
@@ -6196,7 +6800,7 @@ typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERIVSGIPROC) (GLenum target, GL
#ifndef GL_SGIX_pixel_texture
#define GL_SGIX_pixel_texture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenSGIX (GLenum);
+GLAPI void APIENTRY glPixelTexGenSGIX (GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
#endif
@@ -6204,12 +6808,12 @@ typedef void (APIENTRYP PFNGLPIXELTEXGENSGIXPROC) (GLenum mode);
#ifndef GL_SGIS_pixel_texture
#define GL_SGIS_pixel_texture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum, GLint);
-GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum, const GLint *);
-GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum, GLfloat);
-GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum, GLint *);
-GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum, GLfloat *);
+GLAPI void APIENTRY glPixelTexGenParameteriSGIS (GLenum pname, GLint param);
+GLAPI void APIENTRY glPixelTexGenParameterivSGIS (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glPixelTexGenParameterfSGIS (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPixelTexGenParameterfvSGIS (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetPixelTexGenParameterivSGIS (GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetPixelTexGenParameterfvSGIS (GLenum pname, GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERISGISPROC) (GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLPIXELTEXGENPARAMETERIVSGISPROC) (GLenum pname, const GLint *params);
@@ -6222,8 +6826,8 @@ typedef void (APIENTRYP PFNGLGETPIXELTEXGENPARAMETERFVSGISPROC) (GLenum pname, G
#ifndef GL_SGIS_texture4D
#define GL_SGIS_texture4D 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexImage4DSGIS (GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
+GLAPI void APIENTRY glTexImage4DSGIS (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTexSubImage4DSGIS (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXIMAGE4DSGISPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint woffset, GLsizei width, GLsizei height, GLsizei depth, GLsizei size4d, GLenum format, GLenum type, const GLvoid *pixels);
@@ -6240,12 +6844,12 @@ typedef void (APIENTRYP PFNGLTEXSUBIMAGE4DSGISPROC) (GLenum target, GLint level,
#ifndef GL_EXT_texture_object
#define GL_EXT_texture_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei, const GLuint *, GLboolean *);
-GLAPI void APIENTRY glBindTextureEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenTexturesEXT (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint);
-GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei, const GLuint *, const GLclampf *);
+GLAPI GLboolean APIENTRY glAreTexturesResidentEXT (GLsizei n, const GLuint *textures, GLboolean *residences);
+GLAPI void APIENTRY glBindTextureEXT (GLenum target, GLuint texture);
+GLAPI void APIENTRY glDeleteTexturesEXT (GLsizei n, const GLuint *textures);
+GLAPI void APIENTRY glGenTexturesEXT (GLsizei n, GLuint *textures);
+GLAPI GLboolean APIENTRY glIsTextureEXT (GLuint texture);
+GLAPI void APIENTRY glPrioritizeTexturesEXT (GLsizei n, const GLuint *textures, const GLclampf *priorities);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLboolean (APIENTRYP PFNGLARETEXTURESRESIDENTEXTPROC) (GLsizei n, const GLuint *textures, GLboolean *residences);
typedef void (APIENTRYP PFNGLBINDTEXTUREEXTPROC) (GLenum target, GLuint texture);
@@ -6258,8 +6862,8 @@ typedef void (APIENTRYP PFNGLPRIORITIZETEXTURESEXTPROC) (GLsizei n, const GLuint
#ifndef GL_SGIS_detail_texture
#define GL_SGIS_detail_texture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum, GLfloat *);
+GLAPI void APIENTRY glDetailTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetDetailTexFuncSGIS (GLenum target, GLfloat *points);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDETAILTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
@@ -6268,8 +6872,8 @@ typedef void (APIENTRYP PFNGLGETDETAILTEXFUNCSGISPROC) (GLenum target, GLfloat *
#ifndef GL_SGIS_sharpen_texture
#define GL_SGIS_sharpen_texture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum, GLfloat *);
+GLAPI void APIENTRY glSharpenTexFuncSGIS (GLenum target, GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetSharpenTexFuncSGIS (GLenum target, GLfloat *points);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSHARPENTEXFUNCSGISPROC) (GLenum target, GLsizei n, const GLfloat *points);
typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat *points);
@@ -6286,8 +6890,8 @@ typedef void (APIENTRYP PFNGLGETSHARPENTEXFUNCSGISPROC) (GLenum target, GLfloat
#ifndef GL_SGIS_multisample
#define GL_SGIS_multisample 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskSGIS (GLclampf, GLboolean);
-GLAPI void APIENTRY glSamplePatternSGIS (GLenum);
+GLAPI void APIENTRY glSampleMaskSGIS (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glSamplePatternSGIS (GLenum pattern);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSAMPLEMASKSGISPROC) (GLclampf value, GLboolean invert);
typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
@@ -6300,15 +6904,15 @@ typedef void (APIENTRYP PFNGLSAMPLEPATTERNSGISPROC) (GLenum pattern);
#ifndef GL_EXT_vertex_array
#define GL_EXT_vertex_array 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glArrayElementEXT (GLint);
-GLAPI void APIENTRY glColorPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glDrawArraysEXT (GLenum, GLint, GLsizei);
-GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei, GLsizei, const GLboolean *);
-GLAPI void APIENTRY glGetPointervEXT (GLenum, GLvoid* *);
-GLAPI void APIENTRY glIndexPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glNormalPointerEXT (GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glTexCoordPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glVertexPointerEXT (GLint, GLenum, GLsizei, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glArrayElementEXT (GLint i);
+GLAPI void APIENTRY glColorPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawArraysEXT (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glEdgeFlagPointerEXT (GLsizei stride, GLsizei count, const GLboolean *pointer);
+GLAPI void APIENTRY glGetPointervEXT (GLenum pname, GLvoid* *params);
+GLAPI void APIENTRY glIndexPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glNormalPointerEXT (GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glTexCoordPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexPointerEXT (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLARRAYELEMENTEXTPROC) (GLint i);
typedef void (APIENTRYP PFNGLCOLORPOINTEREXTPROC) (GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid *pointer);
@@ -6348,7 +6952,7 @@ typedef void (APIENTRYP PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type, GLs
#ifndef GL_EXT_blend_minmax
#define GL_EXT_blend_minmax 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationEXT (GLenum);
+GLAPI void APIENTRY glBlendEquationEXT (GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
#endif
@@ -6376,10 +6980,10 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONEXTPROC) (GLenum mode);
#ifndef GL_SGIX_sprite
#define GL_SGIX_sprite 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum, GLfloat);
-GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum, const GLfloat *);
-GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum, GLint);
-GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum, const GLint *);
+GLAPI void APIENTRY glSpriteParameterfSGIX (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glSpriteParameterfvSGIX (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glSpriteParameteriSGIX (GLenum pname, GLint param);
+GLAPI void APIENTRY glSpriteParameterivSGIX (GLenum pname, const GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSPRITEPARAMETERFSGIXPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRYP PFNGLSPRITEPARAMETERFVSGIXPROC) (GLenum pname, const GLfloat *params);
@@ -6394,8 +6998,8 @@ typedef void (APIENTRYP PFNGLSPRITEPARAMETERIVSGIXPROC) (GLenum pname, const GLi
#ifndef GL_EXT_point_parameters
#define GL_EXT_point_parameters 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfEXT (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfvEXT (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameterfEXT (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvEXT (GLenum pname, const GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPOINTPARAMETERFEXTPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLfloat *params);
@@ -6404,8 +7008,8 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERFVEXTPROC) (GLenum pname, const GLflo
#ifndef GL_SGIS_point_parameters
#define GL_SGIS_point_parameters 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameterfSGIS (GLenum, GLfloat);
-GLAPI void APIENTRY glPointParameterfvSGIS (GLenum, const GLfloat *);
+GLAPI void APIENTRY glPointParameterfSGIS (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPointParameterfvSGIS (GLenum pname, const GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPOINTPARAMETERFSGISPROC) (GLenum pname, GLfloat param);
typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfloat *params);
@@ -6415,11 +7019,11 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERFVSGISPROC) (GLenum pname, const GLfl
#define GL_SGIX_instruments 1
#ifdef GL_GLEXT_PROTOTYPES
GLAPI GLint APIENTRY glGetInstrumentsSGIX (void);
-GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei, GLint *);
-GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *);
-GLAPI void APIENTRY glReadInstrumentsSGIX (GLint);
+GLAPI void APIENTRY glInstrumentsBufferSGIX (GLsizei size, GLint *buffer);
+GLAPI GLint APIENTRY glPollInstrumentsSGIX (GLint *marker_p);
+GLAPI void APIENTRY glReadInstrumentsSGIX (GLint marker);
GLAPI void APIENTRY glStartInstrumentsSGIX (void);
-GLAPI void APIENTRY glStopInstrumentsSGIX (GLint);
+GLAPI void APIENTRY glStopInstrumentsSGIX (GLint marker);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLint (APIENTRYP PFNGLGETINSTRUMENTSSGIXPROC) (void);
typedef void (APIENTRYP PFNGLINSTRUMENTSBUFFERSGIXPROC) (GLsizei size, GLint *buffer);
@@ -6436,7 +7040,7 @@ typedef void (APIENTRYP PFNGLSTOPINSTRUMENTSSGIXPROC) (GLint marker);
#ifndef GL_SGIX_framezoom
#define GL_SGIX_framezoom 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFrameZoomSGIX (GLint);
+GLAPI void APIENTRY glFrameZoomSGIX (GLint factor);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLFRAMEZOOMSGIXPROC) (GLint factor);
#endif
@@ -6452,10 +7056,10 @@ typedef void (APIENTRYP PFNGLTAGSAMPLEBUFFERSGIXPROC) (void);
#ifndef GL_SGIX_polynomial_ffd
#define GL_SGIX_polynomial_ffd 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
-GLAPI void APIENTRY glDeformSGIX (GLbitfield);
-GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield);
+GLAPI void APIENTRY glDeformationMap3dSGIX (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
+GLAPI void APIENTRY glDeformationMap3fSGIX (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
+GLAPI void APIENTRY glDeformSGIX (GLbitfield mask);
+GLAPI void APIENTRY glLoadIdentityDeformationMapSGIX (GLbitfield mask);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDEFORMATIONMAP3DSGIXPROC) (GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, GLdouble w1, GLdouble w2, GLint wstride, GLint worder, const GLdouble *points);
typedef void (APIENTRYP PFNGLDEFORMATIONMAP3FSGIXPROC) (GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, GLfloat w1, GLfloat w2, GLint wstride, GLint worder, const GLfloat *points);
@@ -6466,7 +7070,7 @@ typedef void (APIENTRYP PFNGLLOADIDENTITYDEFORMATIONMAPSGIXPROC) (GLbitfield mas
#ifndef GL_SGIX_reference_plane
#define GL_SGIX_reference_plane 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *);
+GLAPI void APIENTRY glReferencePlaneSGIX (const GLdouble *equation);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLREFERENCEPLANESGIXPROC) (const GLdouble *equation);
#endif
@@ -6486,8 +7090,8 @@ typedef void (APIENTRYP PFNGLFLUSHRASTERSGIXPROC) (void);
#ifndef GL_SGIS_fog_function
#define GL_SGIS_fog_function 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogFuncSGIS (GLsizei, const GLfloat *);
-GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *);
+GLAPI void APIENTRY glFogFuncSGIS (GLsizei n, const GLfloat *points);
+GLAPI void APIENTRY glGetFogFuncSGIS (GLfloat *points);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLFOGFUNCSGISPROC) (GLsizei n, const GLfloat *points);
typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
@@ -6500,12 +7104,12 @@ typedef void (APIENTRYP PFNGLGETFOGFUNCSGISPROC) (GLfloat *points);
#ifndef GL_HP_image_transform
#define GL_HP_image_transform 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glImageTransformParameteriHP (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glImageTransformParameterfHP (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glImageTransformParameterivHP (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glImageTransformParameteriHP (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glImageTransformParameterfHP (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glImageTransformParameterivHP (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glImageTransformParameterfvHP (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetImageTransformParameterivHP (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetImageTransformParameterfvHP (GLenum target, GLenum pname, GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERIHPPROC) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLIMAGETRANSFORMPARAMETERFHPPROC) (GLenum target, GLenum pname, GLfloat param);
@@ -6526,8 +7130,8 @@ typedef void (APIENTRYP PFNGLGETIMAGETRANSFORMPARAMETERFVHPPROC) (GLenum target,
#ifndef GL_EXT_color_subtable
#define GL_EXT_color_subtable 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorSubTableEXT (GLenum, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum, GLsizei, GLint, GLint, GLsizei);
+GLAPI void APIENTRY glColorSubTableEXT (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
+GLAPI void APIENTRY glCopyColorSubTableEXT (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid *data);
typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
@@ -6540,7 +7144,7 @@ typedef void (APIENTRYP PFNGLCOPYCOLORSUBTABLEEXTPROC) (GLenum target, GLsizei s
#ifndef GL_PGI_misc_hints
#define GL_PGI_misc_hints 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glHintPGI (GLenum, GLint);
+GLAPI void APIENTRY glHintPGI (GLenum target, GLint mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
#endif
@@ -6548,10 +7152,10 @@ typedef void (APIENTRYP PFNGLHINTPGIPROC) (GLenum target, GLint mode);
#ifndef GL_EXT_paletted_texture
#define GL_EXT_paletted_texture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorTableEXT (GLenum, GLenum, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glGetColorTableEXT (GLenum, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glColorTableEXT (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
+GLAPI void APIENTRY glGetColorTableEXT (GLenum target, GLenum format, GLenum type, GLvoid *data);
+GLAPI void APIENTRY glGetColorTableParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetColorTableParameterfvEXT (GLenum target, GLenum pname, GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLORTABLEEXTPROC) (GLenum target, GLenum internalFormat, GLsizei width, GLenum format, GLenum type, const GLvoid *table);
typedef void (APIENTRYP PFNGLGETCOLORTABLEEXTPROC) (GLenum target, GLenum format, GLenum type, GLvoid *data);
@@ -6566,12 +7170,12 @@ typedef void (APIENTRYP PFNGLGETCOLORTABLEPARAMETERFVEXTPROC) (GLenum target, GL
#ifndef GL_SGIX_list_priority
#define GL_SGIX_list_priority 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetListParameterivSGIX (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glListParameterfSGIX (GLuint, GLenum, GLfloat);
-GLAPI void APIENTRY glListParameterfvSGIX (GLuint, GLenum, const GLfloat *);
-GLAPI void APIENTRY glListParameteriSGIX (GLuint, GLenum, GLint);
-GLAPI void APIENTRY glListParameterivSGIX (GLuint, GLenum, const GLint *);
+GLAPI void APIENTRY glGetListParameterfvSGIX (GLuint list, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetListParameterivSGIX (GLuint list, GLenum pname, GLint *params);
+GLAPI void APIENTRY glListParameterfSGIX (GLuint list, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glListParameterfvSGIX (GLuint list, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glListParameteriSGIX (GLuint list, GLenum pname, GLint param);
+GLAPI void APIENTRY glListParameterivSGIX (GLuint list, GLenum pname, const GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETLISTPARAMETERFVSGIXPROC) (GLuint list, GLenum pname, GLfloat *params);
typedef void (APIENTRYP PFNGLGETLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname, GLint *params);
@@ -6604,7 +7208,7 @@ typedef void (APIENTRYP PFNGLLISTPARAMETERIVSGIXPROC) (GLuint list, GLenum pname
#ifndef GL_EXT_index_material
#define GL_EXT_index_material 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexMaterialEXT (GLenum, GLenum);
+GLAPI void APIENTRY glIndexMaterialEXT (GLenum face, GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
#endif
@@ -6612,7 +7216,7 @@ typedef void (APIENTRYP PFNGLINDEXMATERIALEXTPROC) (GLenum face, GLenum mode);
#ifndef GL_EXT_index_func
#define GL_EXT_index_func 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIndexFuncEXT (GLenum, GLclampf);
+GLAPI void APIENTRY glIndexFuncEXT (GLenum func, GLclampf ref);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
#endif
@@ -6624,7 +7228,7 @@ typedef void (APIENTRYP PFNGLINDEXFUNCEXTPROC) (GLenum func, GLclampf ref);
#ifndef GL_EXT_compiled_vertex_array
#define GL_EXT_compiled_vertex_array 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glLockArraysEXT (GLint, GLsizei);
+GLAPI void APIENTRY glLockArraysEXT (GLint first, GLsizei count);
GLAPI void APIENTRY glUnlockArraysEXT (void);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLLOCKARRAYSEXTPROC) (GLint first, GLsizei count);
@@ -6634,8 +7238,8 @@ typedef void (APIENTRYP PFNGLUNLOCKARRAYSEXTPROC) (void);
#ifndef GL_EXT_cull_vertex
#define GL_EXT_cull_vertex 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCullParameterdvEXT (GLenum, GLdouble *);
-GLAPI void APIENTRY glCullParameterfvEXT (GLenum, GLfloat *);
+GLAPI void APIENTRY glCullParameterdvEXT (GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glCullParameterfvEXT (GLenum pname, GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble *params);
typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *params);
@@ -6648,24 +7252,24 @@ typedef void (APIENTRYP PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat *par
#ifndef GL_SGIX_fragment_lighting
#define GL_SGIX_fragment_lighting 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum, GLenum);
-GLAPI void APIENTRY glFragmentLightfSGIX (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glFragmentLightiSGIX (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glFragmentLightivSGIX (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum, GLfloat);
-GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum, const GLfloat *);
-GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum, GLint);
-GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum, const GLint *);
-GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glLightEnviSGIX (GLenum, GLint);
+GLAPI void APIENTRY glFragmentColorMaterialSGIX (GLenum face, GLenum mode);
+GLAPI void APIENTRY glFragmentLightfSGIX (GLenum light, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentLightfvSGIX (GLenum light, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentLightiSGIX (GLenum light, GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentLightivSGIX (GLenum light, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glFragmentLightModelfSGIX (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentLightModelfvSGIX (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentLightModeliSGIX (GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentLightModelivSGIX (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glFragmentMaterialfSGIX (GLenum face, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glFragmentMaterialfvSGIX (GLenum face, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glFragmentMaterialiSGIX (GLenum face, GLenum pname, GLint param);
+GLAPI void APIENTRY glFragmentMaterialivSGIX (GLenum face, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetFragmentLightfvSGIX (GLenum light, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFragmentLightivSGIX (GLenum light, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFragmentMaterialfvSGIX (GLenum face, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFragmentMaterialivSGIX (GLenum face, GLenum pname, GLint *params);
+GLAPI void APIENTRY glLightEnviSGIX (GLenum pname, GLint param);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLFRAGMENTCOLORMATERIALSGIXPROC) (GLenum face, GLenum mode);
typedef void (APIENTRYP PFNGLFRAGMENTLIGHTFSGIXPROC) (GLenum light, GLenum pname, GLfloat param);
@@ -6698,7 +7302,7 @@ typedef void (APIENTRYP PFNGLLIGHTENVISGIXPROC) (GLenum pname, GLint param);
#ifndef GL_EXT_draw_range_elements
#define GL_EXT_draw_range_elements 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *);
+GLAPI void APIENTRY glDrawRangeElementsEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices);
#endif
@@ -6714,9 +7318,9 @@ typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTSEXTPROC) (GLenum mode, GLuint star
#ifndef GL_EXT_light_texture
#define GL_EXT_light_texture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glApplyTextureEXT (GLenum);
-GLAPI void APIENTRY glTextureLightEXT (GLenum);
-GLAPI void APIENTRY glTextureMaterialEXT (GLenum, GLenum);
+GLAPI void APIENTRY glApplyTextureEXT (GLenum mode);
+GLAPI void APIENTRY glTextureLightEXT (GLenum pname);
+GLAPI void APIENTRY glTextureMaterialEXT (GLenum face, GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLAPPLYTEXTUREEXTPROC) (GLenum mode);
typedef void (APIENTRYP PFNGLTEXTURELIGHTEXTPROC) (GLenum pname);
@@ -6734,12 +7338,12 @@ typedef void (APIENTRYP PFNGLTEXTUREMATERIALEXTPROC) (GLenum face, GLenum mode);
#ifndef GL_SGIX_async
#define GL_SGIX_async 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint);
-GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *);
-GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *);
-GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei);
-GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint, GLsizei);
-GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint);
+GLAPI void APIENTRY glAsyncMarkerSGIX (GLuint marker);
+GLAPI GLint APIENTRY glFinishAsyncSGIX (GLuint *markerp);
+GLAPI GLint APIENTRY glPollAsyncSGIX (GLuint *markerp);
+GLAPI GLuint APIENTRY glGenAsyncMarkersSGIX (GLsizei range);
+GLAPI void APIENTRY glDeleteAsyncMarkersSGIX (GLuint marker, GLsizei range);
+GLAPI GLboolean APIENTRY glIsAsyncMarkerSGIX (GLuint marker);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLASYNCMARKERSGIXPROC) (GLuint marker);
typedef GLint (APIENTRYP PFNGLFINISHASYNCSGIXPROC) (GLuint *markerp);
@@ -6760,10 +7364,10 @@ typedef GLboolean (APIENTRYP PFNGLISASYNCMARKERSGIXPROC) (GLuint marker);
#ifndef GL_INTEL_parallel_arrays
#define GL_INTEL_parallel_arrays 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexPointervINTEL (GLint, GLenum, const GLvoid* *);
-GLAPI void APIENTRY glNormalPointervINTEL (GLenum, const GLvoid* *);
-GLAPI void APIENTRY glColorPointervINTEL (GLint, GLenum, const GLvoid* *);
-GLAPI void APIENTRY glTexCoordPointervINTEL (GLint, GLenum, const GLvoid* *);
+GLAPI void APIENTRY glVertexPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glNormalPointervINTEL (GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glColorPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
+GLAPI void APIENTRY glTexCoordPointervINTEL (GLint size, GLenum type, const GLvoid* *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXPOINTERVINTELPROC) (GLint size, GLenum type, const GLvoid* *pointer);
typedef void (APIENTRYP PFNGLNORMALPOINTERVINTELPROC) (GLenum type, const GLvoid* *pointer);
@@ -6778,10 +7382,10 @@ typedef void (APIENTRYP PFNGLTEXCOORDPOINTERVINTELPROC) (GLint size, GLenum type
#ifndef GL_EXT_pixel_transform
#define GL_EXT_pixel_transform 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum, GLenum, const GLfloat *);
+GLAPI void APIENTRY glPixelTransformParameteriEXT (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glPixelTransformParameterfEXT (GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glPixelTransformParameterivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glPixelTransformParameterfvEXT (GLenum target, GLenum pname, const GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERIEXTPROC) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFEXTPROC) (GLenum target, GLenum pname, GLfloat param);
@@ -6804,23 +7408,23 @@ typedef void (APIENTRYP PFNGLPIXELTRANSFORMPARAMETERFVEXTPROC) (GLenum target, G
#ifndef GL_EXT_secondary_color
#define GL_EXT_secondary_color 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *);
-GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *);
-GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *);
-GLAPI void APIENTRY glSecondaryColor3iEXT (GLint, GLint, GLint);
-GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *);
-GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *);
-GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *);
-GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *);
-GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort, GLushort, GLushort);
-GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *);
-GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glSecondaryColor3bEXT (GLbyte red, GLbyte green, GLbyte blue);
+GLAPI void APIENTRY glSecondaryColor3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glSecondaryColor3dEXT (GLdouble red, GLdouble green, GLdouble blue);
+GLAPI void APIENTRY glSecondaryColor3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glSecondaryColor3fEXT (GLfloat red, GLfloat green, GLfloat blue);
+GLAPI void APIENTRY glSecondaryColor3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glSecondaryColor3iEXT (GLint red, GLint green, GLint blue);
+GLAPI void APIENTRY glSecondaryColor3ivEXT (const GLint *v);
+GLAPI void APIENTRY glSecondaryColor3sEXT (GLshort red, GLshort green, GLshort blue);
+GLAPI void APIENTRY glSecondaryColor3svEXT (const GLshort *v);
+GLAPI void APIENTRY glSecondaryColor3ubEXT (GLubyte red, GLubyte green, GLubyte blue);
+GLAPI void APIENTRY glSecondaryColor3ubvEXT (const GLubyte *v);
+GLAPI void APIENTRY glSecondaryColor3uiEXT (GLuint red, GLuint green, GLuint blue);
+GLAPI void APIENTRY glSecondaryColor3uivEXT (const GLuint *v);
+GLAPI void APIENTRY glSecondaryColor3usEXT (GLushort red, GLushort green, GLushort blue);
+GLAPI void APIENTRY glSecondaryColor3usvEXT (const GLushort *v);
+GLAPI void APIENTRY glSecondaryColorPointerEXT (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BEXTPROC) (GLbyte red, GLbyte green, GLbyte blue);
typedef void (APIENTRYP PFNGLSECONDARYCOLOR3BVEXTPROC) (const GLbyte *v);
@@ -6844,7 +7448,7 @@ typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTEREXTPROC) (GLint size, GLenum t
#ifndef GL_EXT_texture_perturb_normal
#define GL_EXT_texture_perturb_normal 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureNormalEXT (GLenum);
+GLAPI void APIENTRY glTextureNormalEXT (GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
#endif
@@ -6852,8 +7456,8 @@ typedef void (APIENTRYP PFNGLTEXTURENORMALEXTPROC) (GLenum mode);
#ifndef GL_EXT_multi_draw_arrays
#define GL_EXT_multi_draw_arrays 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum, GLint *, GLsizei *, GLsizei);
-GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum, const GLsizei *, GLenum, const GLvoid* *, GLsizei);
+GLAPI void APIENTRY glMultiDrawArraysEXT (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawElementsEXT (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const GLvoid* *indices, GLsizei primcount);
@@ -6862,11 +7466,11 @@ typedef void (APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsiz
#ifndef GL_EXT_fog_coord
#define GL_EXT_fog_coord 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glFogCoordfEXT (GLfloat);
-GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *);
-GLAPI void APIENTRY glFogCoorddEXT (GLdouble);
-GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *);
-GLAPI void APIENTRY glFogCoordPointerEXT (GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glFogCoordfEXT (GLfloat coord);
+GLAPI void APIENTRY glFogCoordfvEXT (const GLfloat *coord);
+GLAPI void APIENTRY glFogCoorddEXT (GLdouble coord);
+GLAPI void APIENTRY glFogCoorddvEXT (const GLdouble *coord);
+GLAPI void APIENTRY glFogCoordPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLFOGCOORDFEXTPROC) (GLfloat coord);
typedef void (APIENTRYP PFNGLFOGCOORDFVEXTPROC) (const GLfloat *coord);
@@ -6882,28 +7486,28 @@ typedef void (APIENTRYP PFNGLFOGCOORDPOINTEREXTPROC) (GLenum type, GLsizei strid
#ifndef GL_EXT_coordinate_frame
#define GL_EXT_coordinate_frame 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTangent3bEXT (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *);
-GLAPI void APIENTRY glTangent3dEXT (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *);
-GLAPI void APIENTRY glTangent3fEXT (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *);
-GLAPI void APIENTRY glTangent3iEXT (GLint, GLint, GLint);
-GLAPI void APIENTRY glTangent3ivEXT (const GLint *);
-GLAPI void APIENTRY glTangent3sEXT (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glTangent3svEXT (const GLshort *);
-GLAPI void APIENTRY glBinormal3bEXT (GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *);
-GLAPI void APIENTRY glBinormal3dEXT (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *);
-GLAPI void APIENTRY glBinormal3fEXT (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *);
-GLAPI void APIENTRY glBinormal3iEXT (GLint, GLint, GLint);
-GLAPI void APIENTRY glBinormal3ivEXT (const GLint *);
-GLAPI void APIENTRY glBinormal3sEXT (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glBinormal3svEXT (const GLshort *);
-GLAPI void APIENTRY glTangentPointerEXT (GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glBinormalPointerEXT (GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glTangent3bEXT (GLbyte tx, GLbyte ty, GLbyte tz);
+GLAPI void APIENTRY glTangent3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glTangent3dEXT (GLdouble tx, GLdouble ty, GLdouble tz);
+GLAPI void APIENTRY glTangent3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glTangent3fEXT (GLfloat tx, GLfloat ty, GLfloat tz);
+GLAPI void APIENTRY glTangent3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glTangent3iEXT (GLint tx, GLint ty, GLint tz);
+GLAPI void APIENTRY glTangent3ivEXT (const GLint *v);
+GLAPI void APIENTRY glTangent3sEXT (GLshort tx, GLshort ty, GLshort tz);
+GLAPI void APIENTRY glTangent3svEXT (const GLshort *v);
+GLAPI void APIENTRY glBinormal3bEXT (GLbyte bx, GLbyte by, GLbyte bz);
+GLAPI void APIENTRY glBinormal3bvEXT (const GLbyte *v);
+GLAPI void APIENTRY glBinormal3dEXT (GLdouble bx, GLdouble by, GLdouble bz);
+GLAPI void APIENTRY glBinormal3dvEXT (const GLdouble *v);
+GLAPI void APIENTRY glBinormal3fEXT (GLfloat bx, GLfloat by, GLfloat bz);
+GLAPI void APIENTRY glBinormal3fvEXT (const GLfloat *v);
+GLAPI void APIENTRY glBinormal3iEXT (GLint bx, GLint by, GLint bz);
+GLAPI void APIENTRY glBinormal3ivEXT (const GLint *v);
+GLAPI void APIENTRY glBinormal3sEXT (GLshort bx, GLshort by, GLshort bz);
+GLAPI void APIENTRY glBinormal3svEXT (const GLshort *v);
+GLAPI void APIENTRY glTangentPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glBinormalPointerEXT (GLenum type, GLsizei stride, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTANGENT3BEXTPROC) (GLbyte tx, GLbyte ty, GLbyte tz);
typedef void (APIENTRYP PFNGLTANGENT3BVEXTPROC) (const GLbyte *v);
@@ -6956,14 +7560,14 @@ typedef void (APIENTRYP PFNGLFINISHTEXTURESUNXPROC) (void);
#ifndef GL_SUN_global_alpha
#define GL_SUN_global_alpha 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte);
-GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort);
-GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint);
-GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat);
-GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble);
-GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte);
-GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort);
-GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint);
+GLAPI void APIENTRY glGlobalAlphaFactorbSUN (GLbyte factor);
+GLAPI void APIENTRY glGlobalAlphaFactorsSUN (GLshort factor);
+GLAPI void APIENTRY glGlobalAlphaFactoriSUN (GLint factor);
+GLAPI void APIENTRY glGlobalAlphaFactorfSUN (GLfloat factor);
+GLAPI void APIENTRY glGlobalAlphaFactordSUN (GLdouble factor);
+GLAPI void APIENTRY glGlobalAlphaFactorubSUN (GLubyte factor);
+GLAPI void APIENTRY glGlobalAlphaFactorusSUN (GLushort factor);
+GLAPI void APIENTRY glGlobalAlphaFactoruiSUN (GLuint factor);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORBSUNPROC) (GLbyte factor);
typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORSSUNPROC) (GLshort factor);
@@ -6978,13 +7582,13 @@ typedef void (APIENTRYP PFNGLGLOBALALPHAFACTORUISUNPROC) (GLuint factor);
#ifndef GL_SUN_triangle_list
#define GL_SUN_triangle_list 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint);
-GLAPI void APIENTRY glReplacementCodeusSUN (GLushort);
-GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte);
-GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *);
-GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *);
-GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *);
-GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum, GLsizei, const GLvoid* *);
+GLAPI void APIENTRY glReplacementCodeuiSUN (GLuint code);
+GLAPI void APIENTRY glReplacementCodeusSUN (GLushort code);
+GLAPI void APIENTRY glReplacementCodeubSUN (GLubyte code);
+GLAPI void APIENTRY glReplacementCodeuivSUN (const GLuint *code);
+GLAPI void APIENTRY glReplacementCodeusvSUN (const GLushort *code);
+GLAPI void APIENTRY glReplacementCodeubvSUN (const GLubyte *code);
+GLAPI void APIENTRY glReplacementCodePointerSUN (GLenum type, GLsizei stride, const GLvoid* *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLREPLACEMENTCODEUISUNPROC) (GLuint code);
typedef void (APIENTRYP PFNGLREPLACEMENTCODEUSSUNPROC) (GLushort code);
@@ -6998,46 +7602,46 @@ typedef void (APIENTRYP PFNGLREPLACEMENTCODEPOINTERSUNPROC) (GLenum type, GLsize
#ifndef GL_SUN_vertex
#define GL_SUN_vertex 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat, GLfloat, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *, const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint, GLubyte, GLubyte, GLubyte, GLubyte, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *, const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *, const GLfloat *, const GLfloat *, const GLfloat *, const GLfloat *);
+GLAPI void APIENTRY glColor4ubVertex2fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glColor4ubVertex2fvSUN (const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glColor4ubVertex3fSUN (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor4ubVertex3fvSUN (const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glColor3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor3fVertex3fvSUN (const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glNormal3fVertex3fSUN (GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glNormal3fVertex3fvSUN (const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fSUN (GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glColor4fNormal3fVertex3fvSUN (const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fVertex3fSUN (GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fVertex3fvSUN (const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord4fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glTexCoord4fVertex4fvSUN (const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fSUN (GLfloat s, GLfloat t, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor4ubVertex3fvSUN (const GLfloat *tc, const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fSUN (GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glTexCoord2fColor4fNormal3fVertex3fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fSUN (GLfloat s, GLfloat t, GLfloat p, GLfloat q, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glTexCoord4fColor4fNormal3fVertex4fvSUN (const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fSUN (GLuint rc, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiVertex3fvSUN (const GLuint *rc, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fSUN (GLuint rc, GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor4ubVertex3fvSUN (const GLuint *rc, const GLubyte *c, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fSUN (GLuint rc, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *n, const GLfloat *v);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (GLuint rc, GLfloat s, GLfloat t, GLfloat r, GLfloat g, GLfloat b, GLfloat a, GLfloat nx, GLfloat ny, GLfloat nz, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (const GLuint *rc, const GLfloat *tc, const GLfloat *c, const GLfloat *n, const GLfloat *v);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FSUNPROC) (GLubyte r, GLubyte g, GLubyte b, GLubyte a, GLfloat x, GLfloat y);
typedef void (APIENTRYP PFNGLCOLOR4UBVERTEX2FVSUNPROC) (const GLubyte *c, const GLfloat *v);
@@ -7084,7 +7688,7 @@ typedef void (APIENTRYP PFNGLREPLACEMENTCODEUITEXCOORD2FCOLOR4FNORMAL3FVERTEX3FV
#ifndef GL_EXT_blend_func_separate
#define GL_EXT_blend_func_separate 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glBlendFuncSeparateEXT (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
#endif
@@ -7092,7 +7696,7 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEEXTPROC) (GLenum sfactorRGB, GLenu
#ifndef GL_INGR_blend_func_separate
#define GL_INGR_blend_func_separate 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum, GLenum, GLenum, GLenum);
+GLAPI void APIENTRY glBlendFuncSeparateINGR (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
#endif
@@ -7136,9 +7740,9 @@ typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINGRPROC) (GLenum sfactorRGB, GLen
#ifndef GL_EXT_vertex_weighting
#define GL_EXT_vertex_weighting 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexWeightfEXT (GLfloat);
-GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *);
-GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei, GLenum, GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexWeightfEXT (GLfloat weight);
+GLAPI void APIENTRY glVertexWeightfvEXT (const GLfloat *weight);
+GLAPI void APIENTRY glVertexWeightPointerEXT (GLsizei size, GLenum type, GLsizei stride, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXWEIGHTFEXTPROC) (GLfloat weight);
typedef void (APIENTRYP PFNGLVERTEXWEIGHTFVEXTPROC) (const GLfloat *weight);
@@ -7153,7 +7757,7 @@ typedef void (APIENTRYP PFNGLVERTEXWEIGHTPOINTEREXTPROC) (GLsizei size, GLenum t
#define GL_NV_vertex_array_range 1
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glFlushVertexArrayRangeNV (void);
-GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei, const GLvoid *);
+GLAPI void APIENTRY glVertexArrayRangeNV (GLsizei length, const GLvoid *pointer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGENVPROC) (void);
typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvoid *pointer);
@@ -7162,19 +7766,19 @@ typedef void (APIENTRYP PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, const GLvo
#ifndef GL_NV_register_combiners
#define GL_NV_register_combiners 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerParameterfvNV (GLenum, const GLfloat *);
-GLAPI void APIENTRY glCombinerParameterfNV (GLenum, GLfloat);
-GLAPI void APIENTRY glCombinerParameterivNV (GLenum, const GLint *);
-GLAPI void APIENTRY glCombinerParameteriNV (GLenum, GLint);
-GLAPI void APIENTRY glCombinerInputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glCombinerOutputNV (GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean);
-GLAPI void APIENTRY glFinalCombinerInputNV (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum, GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum, GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum, GLenum, GLint *);
+GLAPI void APIENTRY glCombinerParameterfvNV (GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glCombinerParameterfNV (GLenum pname, GLfloat param);
+GLAPI void APIENTRY glCombinerParameterivNV (GLenum pname, const GLint *params);
+GLAPI void APIENTRY glCombinerParameteriNV (GLenum pname, GLint param);
+GLAPI void APIENTRY glCombinerInputNV (GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+GLAPI void APIENTRY glCombinerOutputNV (GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum);
+GLAPI void APIENTRY glFinalCombinerInputNV (GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage);
+GLAPI void APIENTRY glGetCombinerInputParameterfvNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetCombinerInputParameterivNV (GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetCombinerOutputParameterfvNV (GLenum stage, GLenum portion, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetCombinerOutputParameterivNV (GLenum stage, GLenum portion, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterfvNV (GLenum variable, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetFinalCombinerInputParameterivNV (GLenum variable, GLenum pname, GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFVNVPROC) (GLenum pname, const GLfloat *params);
typedef void (APIENTRYP PFNGLCOMBINERPARAMETERFNVPROC) (GLenum pname, GLfloat param);
@@ -7218,30 +7822,30 @@ typedef void (APIENTRYP PFNGLRESIZEBUFFERSMESAPROC) (void);
#ifndef GL_MESA_window_pos
#define GL_MESA_window_pos 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glWindowPos2dMESA (GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *);
-GLAPI void APIENTRY glWindowPos2fMESA (GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *);
-GLAPI void APIENTRY glWindowPos2iMESA (GLint, GLint);
-GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *);
-GLAPI void APIENTRY glWindowPos2sMESA (GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *);
-GLAPI void APIENTRY glWindowPos3dMESA (GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *);
-GLAPI void APIENTRY glWindowPos3fMESA (GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *);
-GLAPI void APIENTRY glWindowPos3iMESA (GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *);
-GLAPI void APIENTRY glWindowPos3sMESA (GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *);
-GLAPI void APIENTRY glWindowPos4dMESA (GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *);
-GLAPI void APIENTRY glWindowPos4fMESA (GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *);
-GLAPI void APIENTRY glWindowPos4iMESA (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *);
-GLAPI void APIENTRY glWindowPos4sMESA (GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *);
+GLAPI void APIENTRY glWindowPos2dMESA (GLdouble x, GLdouble y);
+GLAPI void APIENTRY glWindowPos2dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos2fMESA (GLfloat x, GLfloat y);
+GLAPI void APIENTRY glWindowPos2fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos2iMESA (GLint x, GLint y);
+GLAPI void APIENTRY glWindowPos2ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos2sMESA (GLshort x, GLshort y);
+GLAPI void APIENTRY glWindowPos2svMESA (const GLshort *v);
+GLAPI void APIENTRY glWindowPos3dMESA (GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glWindowPos3dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos3fMESA (GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glWindowPos3fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos3iMESA (GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glWindowPos3ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos3sMESA (GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glWindowPos3svMESA (const GLshort *v);
+GLAPI void APIENTRY glWindowPos4dMESA (GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glWindowPos4dvMESA (const GLdouble *v);
+GLAPI void APIENTRY glWindowPos4fMESA (GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glWindowPos4fvMESA (const GLfloat *v);
+GLAPI void APIENTRY glWindowPos4iMESA (GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glWindowPos4ivMESA (const GLint *v);
+GLAPI void APIENTRY glWindowPos4sMESA (GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glWindowPos4svMESA (const GLshort *v);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLWINDOWPOS2DMESAPROC) (GLdouble x, GLdouble y);
typedef void (APIENTRYP PFNGLWINDOWPOS2DVMESAPROC) (const GLdouble *v);
@@ -7276,8 +7880,8 @@ typedef void (APIENTRYP PFNGLWINDOWPOS4SVMESAPROC) (const GLshort *v);
#ifndef GL_IBM_multimode_draw_arrays
#define GL_IBM_multimode_draw_arrays 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint);
-GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *, const GLsizei *, GLenum, const GLvoid* const *, GLsizei, GLint);
+GLAPI void APIENTRY glMultiModeDrawArraysIBM (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
+GLAPI void APIENTRY glMultiModeDrawElementsIBM (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLMULTIMODEDRAWARRAYSIBMPROC) (const GLenum *mode, const GLint *first, const GLsizei *count, GLsizei primcount, GLint modestride);
typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode, const GLsizei *count, GLenum type, const GLvoid* const *indices, GLsizei primcount, GLint modestride);
@@ -7286,14 +7890,14 @@ typedef void (APIENTRYP PFNGLMULTIMODEDRAWELEMENTSIBMPROC) (const GLenum *mode,
#ifndef GL_IBM_vertex_array_lists
#define GL_IBM_vertex_array_lists 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint, const GLboolean* *, GLint);
-GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glIndexPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glNormalPointerListIBM (GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glTexCoordPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
-GLAPI void APIENTRY glVertexPointerListIBM (GLint, GLenum, GLint, const GLvoid* *, GLint);
+GLAPI void APIENTRY glColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glSecondaryColorPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glEdgeFlagPointerListIBM (GLint stride, const GLboolean* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glFogCoordPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glIndexPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glNormalPointerListIBM (GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glTexCoordPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
+GLAPI void APIENTRY glVertexPointerListIBM (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
typedef void (APIENTRYP PFNGLSECONDARYCOLORPOINTERLISTIBMPROC) (GLint size, GLenum type, GLint stride, const GLvoid* *pointer, GLint ptrstride);
@@ -7332,7 +7936,7 @@ typedef void (APIENTRYP PFNGLVERTEXPOINTERLISTIBMPROC) (GLint size, GLenum type,
#ifndef GL_3DFX_tbuffer
#define GL_3DFX_tbuffer 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTbufferMask3DFX (GLuint);
+GLAPI void APIENTRY glTbufferMask3DFX (GLuint mask);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
#endif
@@ -7340,8 +7944,8 @@ typedef void (APIENTRYP PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
#ifndef GL_EXT_multisample
#define GL_EXT_multisample 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glSampleMaskEXT (GLclampf, GLboolean);
-GLAPI void APIENTRY glSamplePatternEXT (GLenum);
+GLAPI void APIENTRY glSampleMaskEXT (GLclampf value, GLboolean invert);
+GLAPI void APIENTRY glSamplePatternEXT (GLenum pattern);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSAMPLEMASKEXTPROC) (GLclampf value, GLboolean invert);
typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
@@ -7366,7 +7970,7 @@ typedef void (APIENTRYP PFNGLSAMPLEPATTERNEXTPROC) (GLenum pattern);
#ifndef GL_SGIS_texture_color_mask
#define GL_SGIS_texture_color_mask 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean, GLboolean, GLboolean, GLboolean);
+GLAPI void APIENTRY glTextureColorMaskSGIS (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
#endif
@@ -7374,7 +7978,7 @@ typedef void (APIENTRYP PFNGLTEXTURECOLORMASKSGISPROC) (GLboolean red, GLboolean
#ifndef GL_SGIX_igloo_interface
#define GL_SGIX_igloo_interface 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum, const GLvoid *);
+GLAPI void APIENTRY glIglooInterfaceSGIX (GLenum pname, const GLvoid *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid *params);
#endif
@@ -7390,13 +7994,13 @@ typedef void (APIENTRYP PFNGLIGLOOINTERFACESGIXPROC) (GLenum pname, const GLvoid
#ifndef GL_NV_fence
#define GL_NV_fence 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDeleteFencesNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenFencesNV (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsFenceNV (GLuint);
-GLAPI GLboolean APIENTRY glTestFenceNV (GLuint);
-GLAPI void APIENTRY glGetFenceivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glFinishFenceNV (GLuint);
-GLAPI void APIENTRY glSetFenceNV (GLuint, GLenum);
+GLAPI void APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences);
+GLAPI void APIENTRY glGenFencesNV (GLsizei n, GLuint *fences);
+GLAPI GLboolean APIENTRY glIsFenceNV (GLuint fence);
+GLAPI GLboolean APIENTRY glTestFenceNV (GLuint fence);
+GLAPI void APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params);
+GLAPI void APIENTRY glFinishFenceNV (GLuint fence);
+GLAPI void APIENTRY glSetFenceNV (GLuint fence, GLenum condition);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences);
typedef void (APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences);
@@ -7410,15 +8014,15 @@ typedef void (APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition);
#ifndef GL_NV_evaluators
#define GL_NV_evaluators 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLint, GLint, GLboolean, const GLvoid *);
-GLAPI void APIENTRY glMapParameterivNV (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMapParameterfvNV (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetMapControlPointsNV (GLenum, GLuint, GLenum, GLsizei, GLsizei, GLboolean, GLvoid *);
-GLAPI void APIENTRY glGetMapParameterivNV (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMapParameterfvNV (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glEvalMapsNV (GLenum, GLenum);
+GLAPI void APIENTRY glMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
+GLAPI void APIENTRY glMapParameterivNV (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMapParameterfvNV (GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetMapControlPointsNV (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLboolean packed, GLvoid *points);
+GLAPI void APIENTRY glGetMapParameterivNV (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMapParameterfvNV (GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMapAttribParameterivNV (GLenum target, GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMapAttribParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glEvalMapsNV (GLenum target, GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLMAPCONTROLPOINTSNVPROC) (GLenum target, GLuint index, GLenum type, GLsizei ustride, GLsizei vstride, GLint uorder, GLint vorder, GLboolean packed, const GLvoid *points);
typedef void (APIENTRYP PFNGLMAPPARAMETERIVNVPROC) (GLenum target, GLenum pname, const GLint *params);
@@ -7438,8 +8042,8 @@ typedef void (APIENTRYP PFNGLEVALMAPSNVPROC) (GLenum target, GLenum mode);
#ifndef GL_NV_register_combiners2
#define GL_NV_register_combiners2 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum, GLenum, GLfloat *);
+GLAPI void APIENTRY glCombinerStageParameterfvNV (GLenum stage, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glGetCombinerStageParameterfvNV (GLenum stage, GLenum pname, GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, const GLfloat *params);
typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, GLenum pname, GLfloat *params);
@@ -7468,70 +8072,70 @@ typedef void (APIENTRYP PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage, G
#ifndef GL_NV_vertex_program
#define GL_NV_vertex_program 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei, const GLuint *, GLboolean *);
-GLAPI void APIENTRY glBindProgramNV (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteProgramsNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glExecuteProgramNV (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glGenProgramsNV (GLsizei, GLuint *);
-GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum, GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum, GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetProgramivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetProgramStringNV (GLuint, GLenum, GLubyte *);
-GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint, GLenum, GLvoid* *);
-GLAPI GLboolean APIENTRY glIsProgramNV (GLuint);
-GLAPI void APIENTRY glLoadProgramNV (GLenum, GLuint, GLsizei, const GLubyte *);
-GLAPI void APIENTRY glProgramParameter4dNV (GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramParameter4dvNV (GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramParameter4fNV (GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramParameter4fvNV (GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glProgramParameters4dvNV (GLenum, GLuint, GLuint, const GLdouble *);
-GLAPI void APIENTRY glProgramParameters4fvNV (GLenum, GLuint, GLuint, const GLfloat *);
-GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glTrackMatrixNV (GLenum, GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glVertexAttribPointerNV (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glVertexAttrib1dNV (GLuint, GLdouble);
-GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib1fNV (GLuint, GLfloat);
-GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib1sNV (GLuint, GLshort);
-GLAPI void APIENTRY glVertexAttrib1svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib2dNV (GLuint, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib2fNV (GLuint, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib2sNV (GLuint, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib2svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib3dNV (GLuint, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib3fNV (GLuint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib3sNV (GLuint, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib3svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4dNV (GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVertexAttrib4fNV (GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVertexAttrib4sNV (GLuint, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexAttrib4svNV (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint, GLubyte, GLubyte, GLubyte, GLubyte);
-GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs1svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs2svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs3svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint, GLsizei, const GLdouble *);
-GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glVertexAttribs4svNV (GLuint, GLsizei, const GLshort *);
-GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint, GLsizei, const GLubyte *);
+GLAPI GLboolean APIENTRY glAreProgramsResidentNV (GLsizei n, const GLuint *programs, GLboolean *residences);
+GLAPI void APIENTRY glBindProgramNV (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteProgramsNV (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glExecuteProgramNV (GLenum target, GLuint id, const GLfloat *params);
+GLAPI void APIENTRY glGenProgramsNV (GLsizei n, GLuint *programs);
+GLAPI void APIENTRY glGetProgramParameterdvNV (GLenum target, GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetProgramParameterfvNV (GLenum target, GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetProgramivNV (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetProgramStringNV (GLuint id, GLenum pname, GLubyte *program);
+GLAPI void APIENTRY glGetTrackMatrixivNV (GLenum target, GLuint address, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribdvNV (GLuint index, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetVertexAttribfvNV (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribivNV (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribPointervNV (GLuint index, GLenum pname, GLvoid* *pointer);
+GLAPI GLboolean APIENTRY glIsProgramNV (GLuint id);
+GLAPI void APIENTRY glLoadProgramNV (GLenum target, GLuint id, GLsizei len, const GLubyte *program);
+GLAPI void APIENTRY glProgramParameter4dNV (GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramParameter4dvNV (GLenum target, GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glProgramParameter4fNV (GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramParameter4fvNV (GLenum target, GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glProgramParameters4dvNV (GLenum target, GLuint index, GLuint count, const GLdouble *v);
+GLAPI void APIENTRY glProgramParameters4fvNV (GLenum target, GLuint index, GLuint count, const GLfloat *v);
+GLAPI void APIENTRY glRequestResidentProgramsNV (GLsizei n, const GLuint *programs);
+GLAPI void APIENTRY glTrackMatrixNV (GLenum target, GLuint address, GLenum matrix, GLenum transform);
+GLAPI void APIENTRY glVertexAttribPointerNV (GLuint index, GLint fsize, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glVertexAttrib1dNV (GLuint index, GLdouble x);
+GLAPI void APIENTRY glVertexAttrib1dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib1fNV (GLuint index, GLfloat x);
+GLAPI void APIENTRY glVertexAttrib1fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib1sNV (GLuint index, GLshort x);
+GLAPI void APIENTRY glVertexAttrib1svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib2dNV (GLuint index, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexAttrib2dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib2fNV (GLuint index, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexAttrib2fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib2sNV (GLuint index, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexAttrib2svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib3dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexAttrib3dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib3fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexAttrib3fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib3sNV (GLuint index, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexAttrib3svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4dNV (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexAttrib4dvNV (GLuint index, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttrib4fNV (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexAttrib4fvNV (GLuint index, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttrib4sNV (GLuint index, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexAttrib4svNV (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttrib4ubNV (GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w);
+GLAPI void APIENTRY glVertexAttrib4ubvNV (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribs1dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs1fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs1svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs2dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs2fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs2svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs3dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs3fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs3svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs4dvNV (GLuint index, GLsizei count, const GLdouble *v);
+GLAPI void APIENTRY glVertexAttribs4fvNV (GLuint index, GLsizei count, const GLfloat *v);
+GLAPI void APIENTRY glVertexAttribs4svNV (GLuint index, GLsizei count, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribs4ubvNV (GLuint index, GLsizei count, const GLubyte *v);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLboolean (APIENTRYP PFNGLAREPROGRAMSRESIDENTNVPROC) (GLsizei n, const GLuint *programs, GLboolean *residences);
typedef void (APIENTRYP PFNGLBINDPROGRAMNVPROC) (GLenum target, GLuint id);
@@ -7626,10 +8230,10 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS4UBVNVPROC) (GLuint index, GLsizei cou
#ifndef GL_ATI_envmap_bumpmap
#define GL_ATI_envmap_bumpmap 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBumpParameterivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum, GLint *);
-GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum, GLfloat *);
+GLAPI void APIENTRY glTexBumpParameterivATI (GLenum pname, const GLint *param);
+GLAPI void APIENTRY glTexBumpParameterfvATI (GLenum pname, const GLfloat *param);
+GLAPI void APIENTRY glGetTexBumpParameterivATI (GLenum pname, GLint *param);
+GLAPI void APIENTRY glGetTexBumpParameterfvATI (GLenum pname, GLfloat *param);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERIVATIPROC) (GLenum pname, const GLint *param);
typedef void (APIENTRYP PFNGLTEXBUMPPARAMETERFVATIPROC) (GLenum pname, const GLfloat *param);
@@ -7640,20 +8244,20 @@ typedef void (APIENTRYP PFNGLGETTEXBUMPPARAMETERFVATIPROC) (GLenum pname, GLfloa
#ifndef GL_ATI_fragment_shader
#define GL_ATI_fragment_shader 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint);
-GLAPI void APIENTRY glBindFragmentShaderATI (GLuint);
-GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint);
+GLAPI GLuint APIENTRY glGenFragmentShadersATI (GLuint range);
+GLAPI void APIENTRY glBindFragmentShaderATI (GLuint id);
+GLAPI void APIENTRY glDeleteFragmentShaderATI (GLuint id);
GLAPI void APIENTRY glBeginFragmentShaderATI (void);
GLAPI void APIENTRY glEndFragmentShaderATI (void);
-GLAPI void APIENTRY glPassTexCoordATI (GLuint, GLuint, GLenum);
-GLAPI void APIENTRY glSampleMapATI (GLuint, GLuint, GLenum);
-GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint, const GLfloat *);
+GLAPI void APIENTRY glPassTexCoordATI (GLuint dst, GLuint coord, GLenum swizzle);
+GLAPI void APIENTRY glSampleMapATI (GLuint dst, GLuint interp, GLenum swizzle);
+GLAPI void APIENTRY glColorFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+GLAPI void APIENTRY glColorFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+GLAPI void APIENTRY glColorFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+GLAPI void APIENTRY glAlphaFragmentOp1ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod);
+GLAPI void APIENTRY glAlphaFragmentOp2ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod);
+GLAPI void APIENTRY glAlphaFragmentOp3ATI (GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod);
+GLAPI void APIENTRY glSetFragmentShaderConstantATI (GLuint dst, const GLfloat *value);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLuint (APIENTRYP PFNGLGENFRAGMENTSHADERSATIPROC) (GLuint range);
typedef void (APIENTRYP PFNGLBINDFRAGMENTSHADERATIPROC) (GLuint id);
@@ -7674,8 +8278,8 @@ typedef void (APIENTRYP PFNGLSETFRAGMENTSHADERCONSTANTATIPROC) (GLuint dst, cons
#ifndef GL_ATI_pn_triangles
#define GL_ATI_pn_triangles 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPNTrianglesiATI (GLenum, GLint);
-GLAPI void APIENTRY glPNTrianglesfATI (GLenum, GLfloat);
+GLAPI void APIENTRY glPNTrianglesiATI (GLenum pname, GLint param);
+GLAPI void APIENTRY glPNTrianglesfATI (GLenum pname, GLfloat param);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPNTRIANGLESIATIPROC) (GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
@@ -7684,18 +8288,18 @@ typedef void (APIENTRYP PFNGLPNTRIANGLESFATIPROC) (GLenum pname, GLfloat param);
#ifndef GL_ATI_vertex_array_object
#define GL_ATI_vertex_array_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei, const GLvoid *, GLenum);
-GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint);
-GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint, GLuint, GLsizei, const GLvoid *, GLenum);
-GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetObjectBufferivATI (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glFreeObjectBufferATI (GLuint);
-GLAPI void APIENTRY glArrayObjectATI (GLenum, GLint, GLenum, GLsizei, GLuint, GLuint);
-GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetArrayObjectivATI (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glVariantArrayObjectATI (GLuint, GLenum, GLsizei, GLuint, GLuint);
-GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint, GLenum, GLint *);
+GLAPI GLuint APIENTRY glNewObjectBufferATI (GLsizei size, const GLvoid *pointer, GLenum usage);
+GLAPI GLboolean APIENTRY glIsObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glUpdateObjectBufferATI (GLuint buffer, GLuint offset, GLsizei size, const GLvoid *pointer, GLenum preserve);
+GLAPI void APIENTRY glGetObjectBufferfvATI (GLuint buffer, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetObjectBufferivATI (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glFreeObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glArrayObjectATI (GLenum array, GLint size, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetArrayObjectfvATI (GLenum array, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetArrayObjectivATI (GLenum array, GLenum pname, GLint *params);
+GLAPI void APIENTRY glVariantArrayObjectATI (GLuint id, GLenum type, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetVariantArrayObjectfvATI (GLuint id, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVariantArrayObjectivATI (GLuint id, GLenum pname, GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLuint (APIENTRYP PFNGLNEWOBJECTBUFFERATIPROC) (GLsizei size, const GLvoid *pointer, GLenum usage);
typedef GLboolean (APIENTRYP PFNGLISOBJECTBUFFERATIPROC) (GLuint buffer);
@@ -7716,46 +8320,46 @@ typedef void (APIENTRYP PFNGLGETVARIANTARRAYOBJECTIVATIPROC) (GLuint id, GLenum
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glBeginVertexShaderEXT (void);
GLAPI void APIENTRY glEndVertexShaderEXT (void);
-GLAPI void APIENTRY glBindVertexShaderEXT (GLuint);
-GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint);
-GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint);
-GLAPI void APIENTRY glShaderOp1EXT (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glShaderOp2EXT (GLenum, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glShaderOp3EXT (GLenum, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glSwizzleEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glWriteMaskEXT (GLuint, GLuint, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glInsertComponentEXT (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glExtractComponentEXT (GLuint, GLuint, GLuint);
-GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glSetInvariantEXT (GLuint, GLenum, const GLvoid *);
-GLAPI void APIENTRY glSetLocalConstantEXT (GLuint, GLenum, const GLvoid *);
-GLAPI void APIENTRY glVariantbvEXT (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVariantsvEXT (GLuint, const GLshort *);
-GLAPI void APIENTRY glVariantivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVariantfvEXT (GLuint, const GLfloat *);
-GLAPI void APIENTRY glVariantdvEXT (GLuint, const GLdouble *);
-GLAPI void APIENTRY glVariantubvEXT (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVariantusvEXT (GLuint, const GLushort *);
-GLAPI void APIENTRY glVariantuivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVariantPointerEXT (GLuint, GLenum, GLuint, const GLvoid *);
-GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint);
-GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint);
-GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum, GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum, GLenum);
-GLAPI GLuint APIENTRY glBindParameterEXT (GLenum);
-GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint, GLenum);
-GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint, GLenum, GLboolean *);
-GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVariantPointervEXT (GLuint, GLenum, GLvoid* *);
-GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint, GLenum, GLboolean *);
-GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint, GLenum, GLboolean *);
-GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint, GLenum, GLfloat *);
+GLAPI void APIENTRY glBindVertexShaderEXT (GLuint id);
+GLAPI GLuint APIENTRY glGenVertexShadersEXT (GLuint range);
+GLAPI void APIENTRY glDeleteVertexShaderEXT (GLuint id);
+GLAPI void APIENTRY glShaderOp1EXT (GLenum op, GLuint res, GLuint arg1);
+GLAPI void APIENTRY glShaderOp2EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2);
+GLAPI void APIENTRY glShaderOp3EXT (GLenum op, GLuint res, GLuint arg1, GLuint arg2, GLuint arg3);
+GLAPI void APIENTRY glSwizzleEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+GLAPI void APIENTRY glWriteMaskEXT (GLuint res, GLuint in, GLenum outX, GLenum outY, GLenum outZ, GLenum outW);
+GLAPI void APIENTRY glInsertComponentEXT (GLuint res, GLuint src, GLuint num);
+GLAPI void APIENTRY glExtractComponentEXT (GLuint res, GLuint src, GLuint num);
+GLAPI GLuint APIENTRY glGenSymbolsEXT (GLenum datatype, GLenum storagetype, GLenum range, GLuint components);
+GLAPI void APIENTRY glSetInvariantEXT (GLuint id, GLenum type, const GLvoid *addr);
+GLAPI void APIENTRY glSetLocalConstantEXT (GLuint id, GLenum type, const GLvoid *addr);
+GLAPI void APIENTRY glVariantbvEXT (GLuint id, const GLbyte *addr);
+GLAPI void APIENTRY glVariantsvEXT (GLuint id, const GLshort *addr);
+GLAPI void APIENTRY glVariantivEXT (GLuint id, const GLint *addr);
+GLAPI void APIENTRY glVariantfvEXT (GLuint id, const GLfloat *addr);
+GLAPI void APIENTRY glVariantdvEXT (GLuint id, const GLdouble *addr);
+GLAPI void APIENTRY glVariantubvEXT (GLuint id, const GLubyte *addr);
+GLAPI void APIENTRY glVariantusvEXT (GLuint id, const GLushort *addr);
+GLAPI void APIENTRY glVariantuivEXT (GLuint id, const GLuint *addr);
+GLAPI void APIENTRY glVariantPointerEXT (GLuint id, GLenum type, GLuint stride, const GLvoid *addr);
+GLAPI void APIENTRY glEnableVariantClientStateEXT (GLuint id);
+GLAPI void APIENTRY glDisableVariantClientStateEXT (GLuint id);
+GLAPI GLuint APIENTRY glBindLightParameterEXT (GLenum light, GLenum value);
+GLAPI GLuint APIENTRY glBindMaterialParameterEXT (GLenum face, GLenum value);
+GLAPI GLuint APIENTRY glBindTexGenParameterEXT (GLenum unit, GLenum coord, GLenum value);
+GLAPI GLuint APIENTRY glBindTextureUnitParameterEXT (GLenum unit, GLenum value);
+GLAPI GLuint APIENTRY glBindParameterEXT (GLenum value);
+GLAPI GLboolean APIENTRY glIsVariantEnabledEXT (GLuint id, GLenum cap);
+GLAPI void APIENTRY glGetVariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetVariantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetVariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
+GLAPI void APIENTRY glGetVariantPointervEXT (GLuint id, GLenum value, GLvoid* *data);
+GLAPI void APIENTRY glGetInvariantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetInvariantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetInvariantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
+GLAPI void APIENTRY glGetLocalConstantBooleanvEXT (GLuint id, GLenum value, GLboolean *data);
+GLAPI void APIENTRY glGetLocalConstantIntegervEXT (GLuint id, GLenum value, GLint *data);
+GLAPI void APIENTRY glGetLocalConstantFloatvEXT (GLuint id, GLenum value, GLfloat *data);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBEGINVERTEXSHADEREXTPROC) (void);
typedef void (APIENTRYP PFNGLENDVERTEXSHADEREXTPROC) (void);
@@ -7804,51 +8408,51 @@ typedef void (APIENTRYP PFNGLGETLOCALCONSTANTFLOATVEXTPROC) (GLuint id, GLenum v
#ifndef GL_ATI_vertex_streams
#define GL_ATI_vertex_streams 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexStream1sATI (GLenum, GLshort);
-GLAPI void APIENTRY glVertexStream1svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream1iATI (GLenum, GLint);
-GLAPI void APIENTRY glVertexStream1ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream1fATI (GLenum, GLfloat);
-GLAPI void APIENTRY glVertexStream1fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream1dATI (GLenum, GLdouble);
-GLAPI void APIENTRY glVertexStream1dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glVertexStream2sATI (GLenum, GLshort, GLshort);
-GLAPI void APIENTRY glVertexStream2svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream2iATI (GLenum, GLint, GLint);
-GLAPI void APIENTRY glVertexStream2ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream2fATI (GLenum, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexStream2fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream2dATI (GLenum, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexStream2dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glVertexStream3sATI (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexStream3svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream3iATI (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexStream3ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexStream3fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexStream3dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glVertexStream4sATI (GLenum, GLshort, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glVertexStream4svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glVertexStream4iATI (GLenum, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexStream4ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glVertexStream4fATI (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glVertexStream4fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glVertexStream4dATI (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glVertexStream4dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glNormalStream3bATI (GLenum, GLbyte, GLbyte, GLbyte);
-GLAPI void APIENTRY glNormalStream3bvATI (GLenum, const GLbyte *);
-GLAPI void APIENTRY glNormalStream3sATI (GLenum, GLshort, GLshort, GLshort);
-GLAPI void APIENTRY glNormalStream3svATI (GLenum, const GLshort *);
-GLAPI void APIENTRY glNormalStream3iATI (GLenum, GLint, GLint, GLint);
-GLAPI void APIENTRY glNormalStream3ivATI (GLenum, const GLint *);
-GLAPI void APIENTRY glNormalStream3fATI (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glNormalStream3fvATI (GLenum, const GLfloat *);
-GLAPI void APIENTRY glNormalStream3dATI (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glNormalStream3dvATI (GLenum, const GLdouble *);
-GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum);
-GLAPI void APIENTRY glVertexBlendEnviATI (GLenum, GLint);
-GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum, GLfloat);
+GLAPI void APIENTRY glVertexStream1sATI (GLenum stream, GLshort x);
+GLAPI void APIENTRY glVertexStream1svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream1iATI (GLenum stream, GLint x);
+GLAPI void APIENTRY glVertexStream1ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream1fATI (GLenum stream, GLfloat x);
+GLAPI void APIENTRY glVertexStream1fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream1dATI (GLenum stream, GLdouble x);
+GLAPI void APIENTRY glVertexStream1dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream2sATI (GLenum stream, GLshort x, GLshort y);
+GLAPI void APIENTRY glVertexStream2svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream2iATI (GLenum stream, GLint x, GLint y);
+GLAPI void APIENTRY glVertexStream2ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream2fATI (GLenum stream, GLfloat x, GLfloat y);
+GLAPI void APIENTRY glVertexStream2fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream2dATI (GLenum stream, GLdouble x, GLdouble y);
+GLAPI void APIENTRY glVertexStream2dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream3sATI (GLenum stream, GLshort x, GLshort y, GLshort z);
+GLAPI void APIENTRY glVertexStream3svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream3iATI (GLenum stream, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexStream3ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream3fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glVertexStream3fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream3dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glVertexStream3dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glVertexStream4sATI (GLenum stream, GLshort x, GLshort y, GLshort z, GLshort w);
+GLAPI void APIENTRY glVertexStream4svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glVertexStream4iATI (GLenum stream, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexStream4ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glVertexStream4fATI (GLenum stream, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glVertexStream4fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glVertexStream4dATI (GLenum stream, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glVertexStream4dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glNormalStream3bATI (GLenum stream, GLbyte nx, GLbyte ny, GLbyte nz);
+GLAPI void APIENTRY glNormalStream3bvATI (GLenum stream, const GLbyte *coords);
+GLAPI void APIENTRY glNormalStream3sATI (GLenum stream, GLshort nx, GLshort ny, GLshort nz);
+GLAPI void APIENTRY glNormalStream3svATI (GLenum stream, const GLshort *coords);
+GLAPI void APIENTRY glNormalStream3iATI (GLenum stream, GLint nx, GLint ny, GLint nz);
+GLAPI void APIENTRY glNormalStream3ivATI (GLenum stream, const GLint *coords);
+GLAPI void APIENTRY glNormalStream3fATI (GLenum stream, GLfloat nx, GLfloat ny, GLfloat nz);
+GLAPI void APIENTRY glNormalStream3fvATI (GLenum stream, const GLfloat *coords);
+GLAPI void APIENTRY glNormalStream3dATI (GLenum stream, GLdouble nx, GLdouble ny, GLdouble nz);
+GLAPI void APIENTRY glNormalStream3dvATI (GLenum stream, const GLdouble *coords);
+GLAPI void APIENTRY glClientActiveVertexStreamATI (GLenum stream);
+GLAPI void APIENTRY glVertexBlendEnviATI (GLenum pname, GLint param);
+GLAPI void APIENTRY glVertexBlendEnvfATI (GLenum pname, GLfloat param);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXSTREAM1SATIPROC) (GLenum stream, GLshort x);
typedef void (APIENTRYP PFNGLVERTEXSTREAM1SVATIPROC) (GLenum stream, const GLshort *coords);
@@ -7900,9 +8504,9 @@ typedef void (APIENTRYP PFNGLVERTEXBLENDENVFATIPROC) (GLenum pname, GLfloat para
#ifndef GL_ATI_element_array
#define GL_ATI_element_array 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerATI (GLenum, const GLvoid *);
-GLAPI void APIENTRY glDrawElementArrayATI (GLenum, GLsizei);
-GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum, GLuint, GLuint, GLsizei);
+GLAPI void APIENTRY glElementPointerATI (GLenum type, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawElementArrayATI (GLenum mode, GLsizei count);
+GLAPI void APIENTRY glDrawRangeElementArrayATI (GLenum mode, GLuint start, GLuint end, GLsizei count);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLELEMENTPOINTERATIPROC) (GLenum type, const GLvoid *pointer);
typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYATIPROC) (GLenum mode, GLsizei count);
@@ -7912,7 +8516,7 @@ typedef void (APIENTRYP PFNGLDRAWRANGEELEMENTARRAYATIPROC) (GLenum mode, GLuint
#ifndef GL_SUN_mesh_array
#define GL_SUN_mesh_array 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum, GLint, GLsizei, GLsizei);
+GLAPI void APIENTRY glDrawMeshArraysSUN (GLenum mode, GLint first, GLsizei count, GLsizei width);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, GLsizei count, GLsizei width);
#endif
@@ -7932,13 +8536,13 @@ typedef void (APIENTRYP PFNGLDRAWMESHARRAYSSUNPROC) (GLenum mode, GLint first, G
#ifndef GL_NV_occlusion_query
#define GL_NV_occlusion_query 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei, const GLuint *);
-GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint);
-GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint);
+GLAPI void APIENTRY glGenOcclusionQueriesNV (GLsizei n, GLuint *ids);
+GLAPI void APIENTRY glDeleteOcclusionQueriesNV (GLsizei n, const GLuint *ids);
+GLAPI GLboolean APIENTRY glIsOcclusionQueryNV (GLuint id);
+GLAPI void APIENTRY glBeginOcclusionQueryNV (GLuint id);
GLAPI void APIENTRY glEndOcclusionQueryNV (void);
-GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glGetOcclusionQueryivNV (GLuint id, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetOcclusionQueryuivNV (GLuint id, GLenum pname, GLuint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGENOCCLUSIONQUERIESNVPROC) (GLsizei n, GLuint *ids);
typedef void (APIENTRYP PFNGLDELETEOCCLUSIONQUERIESNVPROC) (GLsizei n, const GLuint *ids);
@@ -7952,8 +8556,8 @@ typedef void (APIENTRYP PFNGLGETOCCLUSIONQUERYUIVNVPROC) (GLuint id, GLenum pnam
#ifndef GL_NV_point_sprite
#define GL_NV_point_sprite 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPointParameteriNV (GLenum, GLint);
-GLAPI void APIENTRY glPointParameterivNV (GLenum, const GLint *);
+GLAPI void APIENTRY glPointParameteriNV (GLenum pname, GLint param);
+GLAPI void APIENTRY glPointParameterivNV (GLenum pname, const GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPOINTPARAMETERINVPROC) (GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint *params);
@@ -7974,7 +8578,7 @@ typedef void (APIENTRYP PFNGLPOINTPARAMETERIVNVPROC) (GLenum pname, const GLint
#ifndef GL_EXT_stencil_two_side
#define GL_EXT_stencil_two_side 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum);
+GLAPI void APIENTRY glActiveStencilFaceEXT (GLenum face);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
#endif
@@ -7990,11 +8594,11 @@ typedef void (APIENTRYP PFNGLACTIVESTENCILFACEEXTPROC) (GLenum face);
#ifndef GL_APPLE_element_array
#define GL_APPLE_element_array 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glElementPointerAPPLE (GLenum, const GLvoid *);
-GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum, GLint, GLsizei);
-GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, GLint, GLsizei);
-GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum, const GLint *, const GLsizei *, GLsizei);
-GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum, GLuint, GLuint, const GLint *, const GLsizei *, GLsizei);
+GLAPI void APIENTRY glElementPointerAPPLE (GLenum type, const GLvoid *pointer);
+GLAPI void APIENTRY glDrawElementArrayAPPLE (GLenum mode, GLint first, GLsizei count);
+GLAPI void APIENTRY glDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
+GLAPI void APIENTRY glMultiDrawElementArrayAPPLE (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount);
+GLAPI void APIENTRY glMultiDrawRangeElementArrayAPPLE (GLenum mode, GLuint start, GLuint end, const GLint *first, const GLsizei *count, GLsizei primcount);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLELEMENTPOINTERAPPLEPROC) (GLenum type, const GLvoid *pointer);
typedef void (APIENTRYP PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
@@ -8006,14 +8610,14 @@ typedef void (APIENTRYP PFNGLMULTIDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode,
#ifndef GL_APPLE_fence
#define GL_APPLE_fence 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGenFencesAPPLE (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei, const GLuint *);
-GLAPI void APIENTRY glSetFenceAPPLE (GLuint);
-GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint);
-GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint);
-GLAPI void APIENTRY glFinishFenceAPPLE (GLuint);
-GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum, GLuint);
-GLAPI void APIENTRY glFinishObjectAPPLE (GLenum, GLint);
+GLAPI void APIENTRY glGenFencesAPPLE (GLsizei n, GLuint *fences);
+GLAPI void APIENTRY glDeleteFencesAPPLE (GLsizei n, const GLuint *fences);
+GLAPI void APIENTRY glSetFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glIsFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glTestFenceAPPLE (GLuint fence);
+GLAPI void APIENTRY glFinishFenceAPPLE (GLuint fence);
+GLAPI GLboolean APIENTRY glTestObjectAPPLE (GLenum object, GLuint name);
+GLAPI void APIENTRY glFinishObjectAPPLE (GLenum object, GLint name);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGENFENCESAPPLEPROC) (GLsizei n, GLuint *fences);
typedef void (APIENTRYP PFNGLDELETEFENCESAPPLEPROC) (GLsizei n, const GLuint *fences);
@@ -8028,10 +8632,10 @@ typedef void (APIENTRYP PFNGLFINISHOBJECTAPPLEPROC) (GLenum object, GLint name);
#ifndef GL_APPLE_vertex_array_object
#define GL_APPLE_vertex_array_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint);
-GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint);
+GLAPI void APIENTRY glBindVertexArrayAPPLE (GLuint array);
+GLAPI void APIENTRY glDeleteVertexArraysAPPLE (GLsizei n, const GLuint *arrays);
+GLAPI void APIENTRY glGenVertexArraysAPPLE (GLsizei n, GLuint *arrays);
+GLAPI GLboolean APIENTRY glIsVertexArrayAPPLE (GLuint array);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBINDVERTEXARRAYAPPLEPROC) (GLuint array);
typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSAPPLEPROC) (GLsizei n, const GLuint *arrays);
@@ -8042,9 +8646,9 @@ typedef GLboolean (APIENTRYP PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
#ifndef GL_APPLE_vertex_array_range
#define GL_APPLE_vertex_array_range 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei, GLvoid *);
-GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei, GLvoid *);
-GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum, GLint);
+GLAPI void APIENTRY glVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glFlushVertexArrayRangeAPPLE (GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glVertexArrayParameteriAPPLE (GLenum pname, GLint param);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
typedef void (APIENTRYP PFNGLFLUSHVERTEXARRAYRANGEAPPLEPROC) (GLsizei length, GLvoid *pointer);
@@ -8062,7 +8666,7 @@ typedef void (APIENTRYP PFNGLVERTEXARRAYPARAMETERIAPPLEPROC) (GLenum pname, GLin
#ifndef GL_ATI_draw_buffers
#define GL_ATI_draw_buffers 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawBuffersATI (GLsizei, const GLenum *);
+GLAPI void APIENTRY glDrawBuffersATI (GLsizei n, const GLenum *bufs);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs);
#endif
@@ -8090,12 +8694,12 @@ typedef void (APIENTRYP PFNGLDRAWBUFFERSATIPROC) (GLsizei n, const GLenum *bufs)
#define GL_NV_fragment_program 1
/* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint, GLsizei, const GLubyte *, const GLfloat *);
-GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint, GLsizei, const GLubyte *, const GLdouble *);
-GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint, GLsizei, const GLubyte *, GLfloat *);
-GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint, GLsizei, const GLubyte *, GLdouble *);
+GLAPI void APIENTRY glProgramNamedParameter4fNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glProgramNamedParameter4dNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glProgramNamedParameter4fvNV (GLuint id, GLsizei len, const GLubyte *name, const GLfloat *v);
+GLAPI void APIENTRY glProgramNamedParameter4dvNV (GLuint id, GLsizei len, const GLubyte *name, const GLdouble *v);
+GLAPI void APIENTRY glGetProgramNamedParameterfvNV (GLuint id, GLsizei len, const GLubyte *name, GLfloat *params);
+GLAPI void APIENTRY glGetProgramNamedParameterdvNV (GLuint id, GLsizei len, const GLubyte *name, GLdouble *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4FNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
typedef void (APIENTRYP PFNGLPROGRAMNAMEDPARAMETER4DNVPROC) (GLuint id, GLsizei len, const GLubyte *name, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
@@ -8108,52 +8712,52 @@ typedef void (APIENTRYP PFNGLGETPROGRAMNAMEDPARAMETERDVNVPROC) (GLuint id, GLsiz
#ifndef GL_NV_half_float
#define GL_NV_half_float 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertex2hNV (GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertex3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertex4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glNormal3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glColor4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV);
-GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum, const GLhalfNV *);
-GLAPI void APIENTRY glFogCoordhNV (GLhalfNV);
-GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *);
-GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV);
-GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib1hNV (GLuint, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib2hNV (GLuint, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib3hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttrib4hNV (GLuint, GLhalfNV, GLhalfNV, GLhalfNV, GLhalfNV);
-GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint, GLsizei, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint, GLsizei, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint, GLsizei, const GLhalfNV *);
-GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint, GLsizei, const GLhalfNV *);
+GLAPI void APIENTRY glVertex2hNV (GLhalfNV x, GLhalfNV y);
+GLAPI void APIENTRY glVertex2hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertex3hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z);
+GLAPI void APIENTRY glVertex3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertex4hNV (GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+GLAPI void APIENTRY glVertex4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glNormal3hNV (GLhalfNV nx, GLhalfNV ny, GLhalfNV nz);
+GLAPI void APIENTRY glNormal3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+GLAPI void APIENTRY glColor3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glColor4hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue, GLhalfNV alpha);
+GLAPI void APIENTRY glColor4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord1hNV (GLhalfNV s);
+GLAPI void APIENTRY glTexCoord1hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord2hNV (GLhalfNV s, GLhalfNV t);
+GLAPI void APIENTRY glTexCoord2hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord3hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r);
+GLAPI void APIENTRY glTexCoord3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glTexCoord4hNV (GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+GLAPI void APIENTRY glTexCoord4hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord1hNV (GLenum target, GLhalfNV s);
+GLAPI void APIENTRY glMultiTexCoord1hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord2hNV (GLenum target, GLhalfNV s, GLhalfNV t);
+GLAPI void APIENTRY glMultiTexCoord2hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord3hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r);
+GLAPI void APIENTRY glMultiTexCoord3hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glMultiTexCoord4hNV (GLenum target, GLhalfNV s, GLhalfNV t, GLhalfNV r, GLhalfNV q);
+GLAPI void APIENTRY glMultiTexCoord4hvNV (GLenum target, const GLhalfNV *v);
+GLAPI void APIENTRY glFogCoordhNV (GLhalfNV fog);
+GLAPI void APIENTRY glFogCoordhvNV (const GLhalfNV *fog);
+GLAPI void APIENTRY glSecondaryColor3hNV (GLhalfNV red, GLhalfNV green, GLhalfNV blue);
+GLAPI void APIENTRY glSecondaryColor3hvNV (const GLhalfNV *v);
+GLAPI void APIENTRY glVertexWeighthNV (GLhalfNV weight);
+GLAPI void APIENTRY glVertexWeighthvNV (const GLhalfNV *weight);
+GLAPI void APIENTRY glVertexAttrib1hNV (GLuint index, GLhalfNV x);
+GLAPI void APIENTRY glVertexAttrib1hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib2hNV (GLuint index, GLhalfNV x, GLhalfNV y);
+GLAPI void APIENTRY glVertexAttrib2hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib3hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z);
+GLAPI void APIENTRY glVertexAttrib3hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttrib4hNV (GLuint index, GLhalfNV x, GLhalfNV y, GLhalfNV z, GLhalfNV w);
+GLAPI void APIENTRY glVertexAttrib4hvNV (GLuint index, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs1hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs2hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs3hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
+GLAPI void APIENTRY glVertexAttribs4hvNV (GLuint index, GLsizei n, const GLhalfNV *v);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEX2HNVPROC) (GLhalfNV x, GLhalfNV y);
typedef void (APIENTRYP PFNGLVERTEX2HVNVPROC) (const GLhalfNV *v);
@@ -8206,8 +8810,8 @@ typedef void (APIENTRYP PFNGLVERTEXATTRIBS4HVNVPROC) (GLuint index, GLsizei n, c
#ifndef GL_NV_pixel_data_range
#define GL_NV_pixel_data_range 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPixelDataRangeNV (GLenum, GLsizei, GLvoid *);
-GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum);
+GLAPI void APIENTRY glPixelDataRangeNV (GLenum target, GLsizei length, GLvoid *pointer);
+GLAPI void APIENTRY glFlushPixelDataRangeNV (GLenum target);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPIXELDATARANGENVPROC) (GLenum target, GLsizei length, GLvoid *pointer);
typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
@@ -8217,7 +8821,7 @@ typedef void (APIENTRYP PFNGLFLUSHPIXELDATARANGENVPROC) (GLenum target);
#define GL_NV_primitive_restart 1
#ifdef GL_GLEXT_PROTOTYPES
GLAPI void APIENTRY glPrimitiveRestartNV (void);
-GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint);
+GLAPI void APIENTRY glPrimitiveRestartIndexNV (GLuint index);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPRIMITIVERESTARTNVPROC) (void);
typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
@@ -8234,8 +8838,8 @@ typedef void (APIENTRYP PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
#ifndef GL_ATI_map_object_buffer
#define GL_ATI_map_object_buffer 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint);
-GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint);
+GLAPI GLvoid* APIENTRY glMapObjectBufferATI (GLuint buffer);
+GLAPI void APIENTRY glUnmapObjectBufferATI (GLuint buffer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLvoid* (APIENTRYP PFNGLMAPOBJECTBUFFERATIPROC) (GLuint buffer);
typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
@@ -8244,8 +8848,8 @@ typedef void (APIENTRYP PFNGLUNMAPOBJECTBUFFERATIPROC) (GLuint buffer);
#ifndef GL_ATI_separate_stencil
#define GL_ATI_separate_stencil 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilOpSeparateATI (GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum, GLenum, GLint, GLuint);
+GLAPI void APIENTRY glStencilOpSeparateATI (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
+GLAPI void APIENTRY glStencilFuncSeparateATI (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSTENCILOPSEPARATEATIPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass);
typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
@@ -8254,9 +8858,9 @@ typedef void (APIENTRYP PFNGLSTENCILFUNCSEPARATEATIPROC) (GLenum frontfunc, GLen
#ifndef GL_ATI_vertex_attrib_array_object
#define GL_ATI_vertex_attrib_array_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint, GLint, GLenum, GLboolean, GLsizei, GLuint, GLuint);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint, GLenum, GLint *);
+GLAPI void APIENTRY glVertexAttribArrayObjectATI (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectfvATI (GLuint index, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVertexAttribArrayObjectivATI (GLuint index, GLenum pname, GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXATTRIBARRAYOBJECTATIPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, GLuint buffer, GLuint offset);
typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTFVATIPROC) (GLuint index, GLenum pname, GLfloat *params);
@@ -8270,7 +8874,7 @@ typedef void (APIENTRYP PFNGLGETVERTEXATTRIBARRAYOBJECTIVATIPROC) (GLuint index,
#ifndef GL_EXT_depth_bounds_test
#define GL_EXT_depth_bounds_test 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthBoundsEXT (GLclampd, GLclampd);
+GLAPI void APIENTRY glDepthBoundsEXT (GLclampd zmin, GLclampd zmax);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
#endif
@@ -8282,7 +8886,7 @@ typedef void (APIENTRYP PFNGLDEPTHBOUNDSEXTPROC) (GLclampd zmin, GLclampd zmax);
#ifndef GL_EXT_blend_equation_separate
#define GL_EXT_blend_equation_separate 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum, GLenum);
+GLAPI void APIENTRY glBlendEquationSeparateEXT (GLenum modeRGB, GLenum modeAlpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLenum modeAlpha);
#endif
@@ -8318,23 +8922,23 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEEXTPROC) (GLenum modeRGB, GLen
#ifndef GL_EXT_framebuffer_object
#define GL_EXT_framebuffer_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint);
-GLAPI void APIENTRY glBindRenderbufferEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei, GLuint *);
-GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum, GLenum, GLint *);
-GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint);
-GLAPI void APIENTRY glBindFramebufferEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei, GLuint *);
-GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum);
-GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum, GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGenerateMipmapEXT (GLenum);
+GLAPI GLboolean APIENTRY glIsRenderbufferEXT (GLuint renderbuffer);
+GLAPI void APIENTRY glBindRenderbufferEXT (GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glDeleteRenderbuffersEXT (GLsizei n, const GLuint *renderbuffers);
+GLAPI void APIENTRY glGenRenderbuffersEXT (GLsizei n, GLuint *renderbuffers);
+GLAPI void APIENTRY glRenderbufferStorageEXT (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetRenderbufferParameterivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI GLboolean APIENTRY glIsFramebufferEXT (GLuint framebuffer);
+GLAPI void APIENTRY glBindFramebufferEXT (GLenum target, GLuint framebuffer);
+GLAPI void APIENTRY glDeleteFramebuffersEXT (GLsizei n, const GLuint *framebuffers);
+GLAPI void APIENTRY glGenFramebuffersEXT (GLsizei n, GLuint *framebuffers);
+GLAPI GLenum APIENTRY glCheckFramebufferStatusEXT (GLenum target);
+GLAPI void APIENTRY glFramebufferTexture1DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture2DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTexture3DEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glFramebufferRenderbufferEXT (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetFramebufferAttachmentParameterivEXT (GLenum target, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateMipmapEXT (GLenum target);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLboolean (APIENTRYP PFNGLISRENDERBUFFEREXTPROC) (GLuint renderbuffer);
typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer);
@@ -8358,7 +8962,7 @@ typedef void (APIENTRYP PFNGLGENERATEMIPMAPEXTPROC) (GLenum target);
#ifndef GL_GREMEDY_string_marker
#define GL_GREMEDY_string_marker 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei, const GLvoid *);
+GLAPI void APIENTRY glStringMarkerGREMEDY (GLsizei len, const GLvoid *string);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid *string);
#endif
@@ -8370,7 +8974,7 @@ typedef void (APIENTRYP PFNGLSTRINGMARKERGREMEDYPROC) (GLsizei len, const GLvoid
#ifndef GL_EXT_stencil_clear_tag
#define GL_EXT_stencil_clear_tag 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glStencilClearTagEXT (GLsizei, GLuint);
+GLAPI void APIENTRY glStencilClearTagEXT (GLsizei stencilTagBits, GLuint stencilClearTag);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GLuint stencilClearTag);
#endif
@@ -8382,7 +8986,7 @@ typedef void (APIENTRYP PFNGLSTENCILCLEARTAGEXTPROC) (GLsizei stencilTagBits, GL
#ifndef GL_EXT_framebuffer_blit
#define GL_EXT_framebuffer_blit 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlitFramebufferEXT (GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum);
+GLAPI void APIENTRY glBlitFramebufferEXT (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
#endif
@@ -8390,7 +8994,7 @@ typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0,
#ifndef GL_EXT_framebuffer_multisample
#define GL_EXT_framebuffer_multisample 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum, GLsizei, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
#endif
@@ -8402,8 +9006,8 @@ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum targ
#ifndef GL_EXT_timer_query
#define GL_EXT_timer_query 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint, GLenum, GLint64EXT *);
-GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint, GLenum, GLuint64EXT *);
+GLAPI void APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64EXT *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64EXT *params);
typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64EXT *params);
@@ -8412,8 +9016,8 @@ typedef void (APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pnam
#ifndef GL_EXT_gpu_program_parameters
#define GL_EXT_gpu_program_parameters 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum, GLuint, GLsizei, const GLfloat *);
+GLAPI void APIENTRY glProgramEnvParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glProgramLocalParameters4fvEXT (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROGRAMENVPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, GLuint index, GLsizei count, const GLfloat *params);
@@ -8422,8 +9026,8 @@ typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERS4FVEXTPROC) (GLenum target, G
#ifndef GL_APPLE_flush_buffer_range
#define GL_APPLE_flush_buffer_range 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum, GLenum, GLint);
-GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum, GLintptr, GLsizeiptr);
+GLAPI void APIENTRY glBufferParameteriAPPLE (GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glFlushMappedBufferRangeAPPLE (GLenum target, GLintptr offset, GLsizeiptr size);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBUFFERPARAMETERIAPPLEPROC) (GLenum target, GLenum pname, GLint param);
typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GLintptr offset, GLsizeiptr size);
@@ -8432,22 +9036,22 @@ typedef void (APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEAPPLEPROC) (GLenum target, GL
#ifndef GL_NV_gpu_program4
#define GL_NV_gpu_program4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum, GLuint, const GLint *);
-GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum, GLuint, const GLuint *);
-GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum, GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum, GLuint, const GLint *);
-GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum, GLuint, const GLuint *);
-GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum, GLuint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum, GLuint, GLuint *);
-GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum, GLuint, GLuint *);
+GLAPI void APIENTRY glProgramLocalParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glProgramLocalParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glProgramLocalParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramLocalParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glProgramLocalParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glProgramLocalParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glProgramEnvParameterI4iNV (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glProgramEnvParameterI4ivNV (GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glProgramEnvParametersI4ivNV (GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramEnvParameterI4uiNV (GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glProgramEnvParameterI4uivNV (GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glProgramEnvParametersI4uivNV (GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetProgramLocalParameterIivNV (GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetProgramLocalParameterIuivNV (GLenum target, GLuint index, GLuint *params);
+GLAPI void APIENTRY glGetProgramEnvParameterIivNV (GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetProgramEnvParameterIuivNV (GLenum target, GLuint index, GLuint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4INVPROC) (GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
typedef void (APIENTRYP PFNGLPROGRAMLOCALPARAMETERI4IVNVPROC) (GLenum target, GLuint index, const GLint *params);
@@ -8470,10 +9074,10 @@ typedef void (APIENTRYP PFNGLGETPROGRAMENVPARAMETERIUIVNVPROC) (GLenum target, G
#ifndef GL_NV_geometry_program4
#define GL_NV_geometry_program4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramVertexLimitNV (GLenum, GLint);
-GLAPI void APIENTRY glFramebufferTextureEXT (GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum, GLenum, GLuint, GLint, GLenum);
+GLAPI void APIENTRY glProgramVertexLimitNV (GLenum target, GLint limit);
+GLAPI void APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glFramebufferTextureLayerEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glFramebufferTextureFaceEXT (GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROGRAMVERTEXLIMITNVPROC) (GLenum target, GLint limit);
typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level);
@@ -8484,7 +9088,7 @@ typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTUREFACEEXTPROC) (GLenum target, GLen
#ifndef GL_EXT_geometry_shader4
#define GL_EXT_geometry_shader4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramParameteriEXT (GLuint, GLenum, GLint);
+GLAPI void APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value);
#endif
@@ -8492,29 +9096,29 @@ typedef void (APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum p
#ifndef GL_NV_vertex_program4
#define GL_NV_vertex_program4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint, GLint);
-GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint, const GLint *);
-GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint, const GLuint *);
-GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint, const GLbyte *);
-GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint, const GLshort *);
-GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint, const GLubyte *);
-GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint, const GLushort *);
-GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint, GLenum, GLuint *);
+GLAPI void APIENTRY glVertexAttribI1iEXT (GLuint index, GLint x);
+GLAPI void APIENTRY glVertexAttribI2iEXT (GLuint index, GLint x, GLint y);
+GLAPI void APIENTRY glVertexAttribI3iEXT (GLuint index, GLint x, GLint y, GLint z);
+GLAPI void APIENTRY glVertexAttribI4iEXT (GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glVertexAttribI1uiEXT (GLuint index, GLuint x);
+GLAPI void APIENTRY glVertexAttribI2uiEXT (GLuint index, GLuint x, GLuint y);
+GLAPI void APIENTRY glVertexAttribI3uiEXT (GLuint index, GLuint x, GLuint y, GLuint z);
+GLAPI void APIENTRY glVertexAttribI4uiEXT (GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glVertexAttribI1ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI2ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI3ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI4ivEXT (GLuint index, const GLint *v);
+GLAPI void APIENTRY glVertexAttribI1uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI2uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI3uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4uivEXT (GLuint index, const GLuint *v);
+GLAPI void APIENTRY glVertexAttribI4bvEXT (GLuint index, const GLbyte *v);
+GLAPI void APIENTRY glVertexAttribI4svEXT (GLuint index, const GLshort *v);
+GLAPI void APIENTRY glVertexAttribI4ubvEXT (GLuint index, const GLubyte *v);
+GLAPI void APIENTRY glVertexAttribI4usvEXT (GLuint index, const GLushort *v);
+GLAPI void APIENTRY glVertexAttribIPointerEXT (GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glGetVertexAttribIivEXT (GLuint index, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVertexAttribIuivEXT (GLuint index, GLenum pname, GLuint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLVERTEXATTRIBI1IEXTPROC) (GLuint index, GLint x);
typedef void (APIENTRYP PFNGLVERTEXATTRIBI2IEXTPROC) (GLuint index, GLint x, GLint y);
@@ -8544,17 +9148,17 @@ typedef void (APIENTRYP PFNGLGETVERTEXATTRIBIUIVEXTPROC) (GLuint index, GLenum p
#ifndef GL_EXT_gpu_shader4
#define GL_EXT_gpu_shader4 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetUniformuivEXT (GLuint, GLint, GLuint *);
-GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint, GLuint, const GLchar *);
-GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint, const GLchar *);
-GLAPI void APIENTRY glUniform1uiEXT (GLint, GLuint);
-GLAPI void APIENTRY glUniform2uiEXT (GLint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform3uiEXT (GLint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform4uiEXT (GLint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glUniform1uivEXT (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform2uivEXT (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform3uivEXT (GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glUniform4uivEXT (GLint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glGetUniformuivEXT (GLuint program, GLint location, GLuint *params);
+GLAPI void APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name);
+GLAPI GLint APIENTRY glGetFragDataLocationEXT (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glUniform1uiEXT (GLint location, GLuint v0);
+GLAPI void APIENTRY glUniform2uiEXT (GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glUniform3uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glUniform4uiEXT (GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glUniform1uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform2uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform3uivEXT (GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glUniform4uivEXT (GLint location, GLsizei count, const GLuint *value);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETUNIFORMUIVEXTPROC) (GLuint program, GLint location, GLuint *params);
typedef void (APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name);
@@ -8572,8 +9176,8 @@ typedef void (APIENTRYP PFNGLUNIFORM4UIVEXTPROC) (GLint location, GLsizei count,
#ifndef GL_EXT_draw_instanced
#define GL_EXT_draw_instanced 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum, GLsizei, GLenum, const GLvoid *, GLsizei);
+GLAPI void APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
+GLAPI void APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount);
typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const GLvoid *indices, GLsizei primcount);
@@ -8590,7 +9194,7 @@ typedef void (APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei
#ifndef GL_EXT_texture_buffer_object
#define GL_EXT_texture_buffer_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexBufferEXT (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer);
#endif
@@ -8610,9 +9214,9 @@ typedef void (APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalfo
#ifndef GL_NV_depth_buffer_float
#define GL_NV_depth_buffer_float 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glDepthRangedNV (GLdouble, GLdouble);
-GLAPI void APIENTRY glClearDepthdNV (GLdouble);
-GLAPI void APIENTRY glDepthBoundsdNV (GLdouble, GLdouble);
+GLAPI void APIENTRY glDepthRangedNV (GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glClearDepthdNV (GLdouble depth);
+GLAPI void APIENTRY glDepthBoundsdNV (GLdouble zmin, GLdouble zmax);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLDEPTHRANGEDNVPROC) (GLdouble zNear, GLdouble zFar);
typedef void (APIENTRYP PFNGLCLEARDEPTHDNVPROC) (GLdouble depth);
@@ -8626,7 +9230,7 @@ typedef void (APIENTRYP PFNGLDEPTHBOUNDSDNVPROC) (GLdouble zmin, GLdouble zmax);
#ifndef GL_NV_framebuffer_multisample_coverage
#define GL_NV_framebuffer_multisample_coverage 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
+GLAPI void APIENTRY glRenderbufferStorageMultisampleCoverageNV (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLenum target, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
#endif
@@ -8642,9 +9246,9 @@ typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLECOVERAGENVPROC) (GLen
#ifndef GL_NV_parameter_buffer_object
#define GL_NV_parameter_buffer_object 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum, GLuint, GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum, GLuint, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum, GLuint, GLuint, GLsizei, const GLuint *);
+GLAPI void APIENTRY glProgramBufferParametersfvNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glProgramBufferParametersIivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glProgramBufferParametersIuivNV (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLuint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSFVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLfloat *params);
typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIIVNVPROC) (GLenum target, GLuint buffer, GLuint index, GLsizei count, const GLint *params);
@@ -8654,12 +9258,12 @@ typedef void (APIENTRYP PFNGLPROGRAMBUFFERPARAMETERSIUIVNVPROC) (GLenum target,
#ifndef GL_EXT_draw_buffers2
#define GL_EXT_draw_buffers2 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint, GLboolean, GLboolean, GLboolean, GLboolean);
-GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum, GLuint, GLboolean *);
-GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glEnableIndexedEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDisableIndexedEXT (GLenum, GLuint);
-GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum, GLuint);
+GLAPI void APIENTRY glColorMaskIndexedEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
+GLAPI void APIENTRY glGetBooleanIndexedvEXT (GLenum target, GLuint index, GLboolean *data);
+GLAPI void APIENTRY glGetIntegerIndexedvEXT (GLenum target, GLuint index, GLint *data);
+GLAPI void APIENTRY glEnableIndexedEXT (GLenum target, GLuint index);
+GLAPI void APIENTRY glDisableIndexedEXT (GLenum target, GLuint index);
+GLAPI GLboolean APIENTRY glIsEnabledIndexedEXT (GLenum target, GLuint index);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOLORMASKINDEXEDEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
typedef void (APIENTRYP PFNGLGETBOOLEANINDEXEDVEXTPROC) (GLenum target, GLuint index, GLboolean *data);
@@ -8672,17 +9276,17 @@ typedef GLboolean (APIENTRYP PFNGLISENABLEDINDEXEDEXTPROC) (GLenum target, GLuin
#ifndef GL_NV_transform_feedback
#define GL_NV_transform_feedback 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum);
+GLAPI void APIENTRY glBeginTransformFeedbackNV (GLenum primitiveMode);
GLAPI void APIENTRY glEndTransformFeedbackNV (void);
-GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint, const GLint *, GLenum);
-GLAPI void APIENTRY glBindBufferRangeNV (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-GLAPI void APIENTRY glBindBufferOffsetNV (GLenum, GLuint, GLuint, GLintptr);
-GLAPI void APIENTRY glBindBufferBaseNV (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint, GLsizei, const GLchar* *, GLenum);
-GLAPI void APIENTRY glActiveVaryingNV (GLuint, const GLchar *);
-GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint, const GLchar *);
-GLAPI void APIENTRY glGetActiveVaryingNV (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint, GLuint, GLint *);
+GLAPI void APIENTRY glTransformFeedbackAttribsNV (GLuint count, const GLint *attribs, GLenum bufferMode);
+GLAPI void APIENTRY glBindBufferRangeNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferOffsetNV (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+GLAPI void APIENTRY glBindBufferBaseNV (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryingsNV (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glActiveVaryingNV (GLuint program, const GLchar *name);
+GLAPI GLint APIENTRY glGetVaryingLocationNV (GLuint program, const GLchar *name);
+GLAPI void APIENTRY glGetActiveVaryingNV (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingNV (GLuint program, GLuint index, GLint *location);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKNVPROC) (GLenum primitiveMode);
typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKNVPROC) (void);
@@ -8700,9 +9304,9 @@ typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGNVPROC) (GLuint program,
#ifndef GL_EXT_bindable_uniform
#define GL_EXT_bindable_uniform 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUniformBufferEXT (GLuint, GLint, GLuint);
-GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint, GLint);
-GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint, GLint);
+GLAPI void APIENTRY glUniformBufferEXT (GLuint program, GLint location, GLuint buffer);
+GLAPI GLint APIENTRY glGetUniformBufferSizeEXT (GLuint program, GLint location);
+GLAPI GLintptr APIENTRY glGetUniformOffsetEXT (GLuint program, GLint location);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLUNIFORMBUFFEREXTPROC) (GLuint program, GLint location, GLuint buffer);
typedef GLint (APIENTRYP PFNGLGETUNIFORMBUFFERSIZEEXTPROC) (GLuint program, GLint location);
@@ -8712,12 +9316,12 @@ typedef GLintptr (APIENTRYP PFNGLGETUNIFORMOFFSETEXTPROC) (GLuint program, GLint
#ifndef GL_EXT_texture_integer
#define GL_EXT_texture_integer 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTexParameterIivEXT (GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTexParameterIuivEXT (GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glClearColorIiEXT (GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glClearColorIuiEXT (GLuint, GLuint, GLuint, GLuint);
+GLAPI void APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glClearColorIiEXT (GLint red, GLint green, GLint blue, GLint alpha);
+GLAPI void APIENTRY glClearColorIuiEXT (GLuint red, GLuint green, GLuint blue, GLuint alpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params);
typedef void (APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params);
@@ -8738,7 +9342,7 @@ typedef void (APIENTRYP PFNGLFRAMETERMINATORGREMEDYPROC) (void);
#ifndef GL_NV_conditional_render
#define GL_NV_conditional_render 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint, GLenum);
+GLAPI void APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode);
GLAPI void APIENTRY glEndConditionalRenderNV (void);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode);
@@ -8748,12 +9352,12 @@ typedef void (APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void);
#ifndef GL_NV_present_video
#define GL_NV_present_video 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, GLuint, GLuint, GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint, GLuint64EXT, GLuint, GLuint, GLenum, GLenum, GLuint, GLenum, GLuint, GLenum, GLuint, GLenum, GLuint);
-GLAPI void APIENTRY glGetVideoivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVideouivNV (GLuint, GLenum, GLuint *);
-GLAPI void APIENTRY glGetVideoi64vNV (GLuint, GLenum, GLint64EXT *);
-GLAPI void APIENTRY glGetVideoui64vNV (GLuint, GLenum, GLuint64EXT *);
+GLAPI void APIENTRY glPresentFrameKeyedNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
+GLAPI void APIENTRY glPresentFrameDualFillNV (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
+GLAPI void APIENTRY glGetVideoivNV (GLuint video_slot, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideouivNV (GLuint video_slot, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glGetVideoi64vNV (GLuint video_slot, GLenum pname, GLint64EXT *params);
+GLAPI void APIENTRY glGetVideoui64vNV (GLuint video_slot, GLenum pname, GLuint64EXT *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPRESENTFRAMEKEYEDNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLuint key0, GLenum target1, GLuint fill1, GLuint key1);
typedef void (APIENTRYP PFNGLPRESENTFRAMEDUALFILLNVPROC) (GLuint video_slot, GLuint64EXT minPresentTime, GLuint beginPresentTimeId, GLuint presentDurationId, GLenum type, GLenum target0, GLuint fill0, GLenum target1, GLuint fill1, GLenum target2, GLuint fill2, GLenum target3, GLuint fill3);
@@ -8766,13 +9370,13 @@ typedef void (APIENTRYP PFNGLGETVIDEOUI64VNVPROC) (GLuint video_slot, GLenum pna
#ifndef GL_EXT_transform_feedback
#define GL_EXT_transform_feedback 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum);
+GLAPI void APIENTRY glBeginTransformFeedbackEXT (GLenum primitiveMode);
GLAPI void APIENTRY glEndTransformFeedbackEXT (void);
-GLAPI void APIENTRY glBindBufferRangeEXT (GLenum, GLuint, GLuint, GLintptr, GLsizeiptr);
-GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum, GLuint, GLuint, GLintptr);
-GLAPI void APIENTRY glBindBufferBaseEXT (GLenum, GLuint, GLuint);
-GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint, GLsizei, const GLchar* *, GLenum);
-GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *);
+GLAPI void APIENTRY glBindBufferRangeEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size);
+GLAPI void APIENTRY glBindBufferOffsetEXT (GLenum target, GLuint index, GLuint buffer, GLintptr offset);
+GLAPI void APIENTRY glBindBufferBaseEXT (GLenum target, GLuint index, GLuint buffer);
+GLAPI void APIENTRY glTransformFeedbackVaryingsEXT (GLuint program, GLsizei count, const GLchar* *varyings, GLenum bufferMode);
+GLAPI void APIENTRY glGetTransformFeedbackVaryingEXT (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLsizei *size, GLenum *type, GLchar *name);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBEGINTRANSFORMFEEDBACKEXTPROC) (GLenum primitiveMode);
typedef void (APIENTRYP PFNGLENDTRANSFORMFEEDBACKEXTPROC) (void);
@@ -8786,192 +9390,192 @@ typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKVARYINGEXTPROC) (GLuint program
#ifndef GL_EXT_direct_state_access
#define GL_EXT_direct_state_access 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield);
-GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield);
-GLAPI void APIENTRY glMatrixLoadfEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixLoaddEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMatrixMultfEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixMultdEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum);
-GLAPI void APIENTRY glMatrixRotatefEXT (GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMatrixRotatedEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixScalefEXT (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMatrixScaledEXT (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixFrustumEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixOrthoEXT (GLenum, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glMatrixPopEXT (GLenum);
-GLAPI void APIENTRY glMatrixPushEXT (GLenum);
-GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum, const GLfloat *);
-GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum, const GLdouble *);
-GLAPI void APIENTRY glTextureParameterfEXT (GLuint, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glTextureParameterfvEXT (GLuint, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glTextureParameteriEXT (GLuint, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glTextureParameterivEXT (GLuint, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetTextureImageEXT (GLuint, GLenum, GLint, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint, GLenum, GLint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint, GLenum, GLint, GLenum, GLint *);
-GLAPI void APIENTRY glTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLint);
-GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLint, GLint, GLsizei, GLsizei, GLint);
-GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei);
-GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum, GLenum, GLint, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum, GLenum, GLint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum, GLenum, GLint, GLenum, GLint *);
-GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLenum, const GLvoid *);
-GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLint, GLint, GLsizei, GLsizei);
-GLAPI void APIENTRY glBindMultiTextureEXT (GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum, GLuint);
-GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum, GLuint);
-GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum, GLint, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexEnviEXT (GLenum, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexGendEXT (GLenum, GLenum, GLenum, GLdouble);
-GLAPI void APIENTRY glMultiTexGendvEXT (GLenum, GLenum, GLenum, const GLdouble *);
-GLAPI void APIENTRY glMultiTexGenfEXT (GLenum, GLenum, GLenum, GLfloat);
-GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum, GLenum, GLenum, const GLfloat *);
-GLAPI void APIENTRY glMultiTexGeniEXT (GLenum, GLenum, GLenum, GLint);
-GLAPI void APIENTRY glMultiTexGenivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum, GLenum, GLenum, GLdouble *);
-GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum, GLenum, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum, GLuint, GLvoid* *);
-GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint, GLenum, GLint, GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum, GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum, GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum, GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum, GLenum, GLint, GLvoid *);
-GLAPI void APIENTRY glNamedProgramStringEXT (GLuint, GLenum, GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint, GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble);
-GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint, GLenum, GLuint, const GLdouble *);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint, GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint, GLenum, GLuint, const GLfloat *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint, GLenum, GLuint, GLdouble *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint, GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint, GLenum, GLenum, GLvoid *);
-GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint, GLenum, GLuint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint, GLenum, GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint, GLenum, GLuint, const GLint *);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint, GLenum, GLuint, GLsizei, const GLint *);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint, GLenum, GLuint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint, GLenum, GLuint, const GLuint *);
-GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint, GLenum, GLuint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint, GLenum, GLuint, GLint *);
-GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint, GLenum, GLuint, GLuint *);
-GLAPI void APIENTRY glTextureParameterIivEXT (GLuint, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint, GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint, GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum, GLenum, GLenum, const GLint *);
-GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, const GLuint *);
-GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum, GLenum, GLenum, GLuint *);
-GLAPI void APIENTRY glProgramUniform1fEXT (GLuint, GLint, GLfloat);
-GLAPI void APIENTRY glProgramUniform2fEXT (GLuint, GLint, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramUniform3fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramUniform4fEXT (GLuint, GLint, GLfloat, GLfloat, GLfloat, GLfloat);
-GLAPI void APIENTRY glProgramUniform1iEXT (GLuint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform2iEXT (GLuint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform3iEXT (GLuint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform4iEXT (GLuint, GLint, GLint, GLint, GLint, GLint);
-GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint, GLint, GLsizei, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint, GLint, GLsizei, const GLint *);
-GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint, GLint, GLsizei, GLboolean, const GLfloat *);
-GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint, GLint, GLuint);
-GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint, GLint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint, GLint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint, GLint, GLuint, GLuint, GLuint, GLuint);
-GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint, GLint, GLsizei, const GLuint *);
-GLAPI void APIENTRY glNamedBufferDataEXT (GLuint, GLsizeiptr, const GLvoid *, GLenum);
-GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, const GLvoid *);
-GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint, GLenum);
-GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint);
-GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint, GLenum, GLvoid* *);
-GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint, GLintptr, GLsizeiptr, GLvoid *);
-GLAPI void APIENTRY glTextureBufferEXT (GLuint, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glMultiTexBufferEXT (GLenum, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint, GLenum, GLint *);
-GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint, GLenum);
-GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint, GLenum, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint, GLenum, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint, GLenum, GLenum, GLint *);
-GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint, GLenum);
-GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum, GLenum);
-GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint, GLenum);
-GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint, GLsizei, const GLenum *);
-GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint, GLenum);
-GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint, GLsizei, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint, GLsizei, GLsizei, GLenum, GLsizei, GLsizei);
-GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint, GLenum, GLuint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint, GLenum, GLuint, GLint, GLint);
-GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint, GLenum, GLuint, GLint, GLenum);
-GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint, GLenum, GLuint);
-GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum, GLenum, GLuint);
+GLAPI void APIENTRY glClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glPushClientAttribDefaultEXT (GLbitfield mask);
+GLAPI void APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixLoadIdentityEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z);
+GLAPI void APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z);
+GLAPI void APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+GLAPI void APIENTRY glMatrixPopEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixPushEXT (GLenum mode);
+GLAPI void APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m);
+GLAPI void APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m);
+GLAPI void APIENTRY glTextureParameterfEXT (GLuint texture, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glTextureParameteriEXT (GLuint texture, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetTextureImageEXT (GLuint texture, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+GLAPI void APIENTRY glGetTextureParameterfvEXT (GLuint texture, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureParameterivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureLevelParameterfvEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetTextureLevelParameterivEXT (GLuint texture, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glMultiTexParameterfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexParameteriEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border);
+GLAPI void APIENTRY glCopyMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+GLAPI void APIENTRY glCopyMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+GLAPI void APIENTRY glCopyMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetMultiTexImageEXT (GLenum texunit, GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+GLAPI void APIENTRY glGetMultiTexParameterfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexParameterivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterfvEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexLevelParameterivEXT (GLenum texunit, GLenum target, GLint level, GLenum pname, GLint *params);
+GLAPI void APIENTRY glMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid *pixels);
+GLAPI void APIENTRY glCopyMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glBindMultiTextureEXT (GLenum texunit, GLenum target, GLuint texture);
+GLAPI void APIENTRY glEnableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glDisableClientStateIndexedEXT (GLenum array, GLuint index);
+GLAPI void APIENTRY glMultiTexCoordPointerEXT (GLenum texunit, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+GLAPI void APIENTRY glMultiTexEnvfEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexEnviEXT (GLenum texunit, GLenum target, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexGendEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble param);
+GLAPI void APIENTRY glMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLdouble *params);
+GLAPI void APIENTRY glMultiTexGenfEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat param);
+GLAPI void APIENTRY glMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glMultiTexGeniEXT (GLenum texunit, GLenum coord, GLenum pname, GLint param);
+GLAPI void APIENTRY glMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glGetMultiTexEnvfvEXT (GLenum texunit, GLenum target, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexEnvivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexGendvEXT (GLenum texunit, GLenum coord, GLenum pname, GLdouble *params);
+GLAPI void APIENTRY glGetMultiTexGenfvEXT (GLenum texunit, GLenum coord, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetMultiTexGenivEXT (GLenum texunit, GLenum coord, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetFloatIndexedvEXT (GLenum target, GLuint index, GLfloat *data);
+GLAPI void APIENTRY glGetDoubleIndexedvEXT (GLenum target, GLuint index, GLdouble *data);
+GLAPI void APIENTRY glGetPointerIndexedvEXT (GLenum target, GLuint index, GLvoid* *data);
+GLAPI void APIENTRY glCompressedTextureImage3DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureImage2DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureImage1DEXT (GLuint texture, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage3DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage2DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedTextureSubImage1DEXT (GLuint texture, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glGetCompressedTextureImageEXT (GLuint texture, GLenum target, GLint lod, GLvoid *img);
+GLAPI void APIENTRY glCompressedMultiTexImage3DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage2DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexImage1DEXT (GLenum texunit, GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage3DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage2DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glCompressedMultiTexSubImage1DEXT (GLenum texunit, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid *bits);
+GLAPI void APIENTRY glGetCompressedMultiTexImageEXT (GLenum texunit, GLenum target, GLint lod, GLvoid *img);
+GLAPI void APIENTRY glNamedProgramStringEXT (GLuint program, GLenum target, GLenum format, GLsizei len, const GLvoid *string);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dEXT (GLuint program, GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4dvEXT (GLuint program, GLenum target, GLuint index, const GLdouble *params);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fEXT (GLuint program, GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+GLAPI void APIENTRY glNamedProgramLocalParameter4fvEXT (GLuint program, GLenum target, GLuint index, const GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterdvEXT (GLuint program, GLenum target, GLuint index, GLdouble *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterfvEXT (GLuint program, GLenum target, GLuint index, GLfloat *params);
+GLAPI void APIENTRY glGetNamedProgramivEXT (GLuint program, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramStringEXT (GLuint program, GLenum target, GLenum pname, GLvoid *string);
+GLAPI void APIENTRY glNamedProgramLocalParameters4fvEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLfloat *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4iEXT (GLuint program, GLenum target, GLuint index, GLint x, GLint y, GLint z, GLint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4ivEXT (GLuint program, GLenum target, GLuint index, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4ivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLint *params);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uiEXT (GLuint program, GLenum target, GLuint index, GLuint x, GLuint y, GLuint z, GLuint w);
+GLAPI void APIENTRY glNamedProgramLocalParameterI4uivEXT (GLuint program, GLenum target, GLuint index, const GLuint *params);
+GLAPI void APIENTRY glNamedProgramLocalParametersI4uivEXT (GLuint program, GLenum target, GLuint index, GLsizei count, const GLuint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIivEXT (GLuint program, GLenum target, GLuint index, GLint *params);
+GLAPI void APIENTRY glGetNamedProgramLocalParameterIuivEXT (GLuint program, GLenum target, GLuint index, GLuint *params);
+GLAPI void APIENTRY glTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetTextureParameterIivEXT (GLuint texture, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetTextureParameterIuivEXT (GLuint texture, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, const GLuint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIivEXT (GLenum texunit, GLenum target, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetMultiTexParameterIuivEXT (GLenum texunit, GLenum target, GLenum pname, GLuint *params);
+GLAPI void APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0);
+GLAPI void APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1);
+GLAPI void APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2);
+GLAPI void APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3);
+GLAPI void APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0);
+GLAPI void APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1);
+GLAPI void APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2);
+GLAPI void APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3);
+GLAPI void APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value);
+GLAPI void APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
+GLAPI void APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0);
+GLAPI void APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1);
+GLAPI void APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2);
+GLAPI void APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
+GLAPI void APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value);
+GLAPI void APIENTRY glNamedBufferDataEXT (GLuint buffer, GLsizeiptr size, const GLvoid *data, GLenum usage);
+GLAPI void APIENTRY glNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, const GLvoid *data);
+GLAPI GLvoid* APIENTRY glMapNamedBufferEXT (GLuint buffer, GLenum access);
+GLAPI GLboolean APIENTRY glUnmapNamedBufferEXT (GLuint buffer);
+GLAPI void APIENTRY glGetNamedBufferParameterivEXT (GLuint buffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetNamedBufferPointervEXT (GLuint buffer, GLenum pname, GLvoid* *params);
+GLAPI void APIENTRY glGetNamedBufferSubDataEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLvoid *data);
+GLAPI void APIENTRY glTextureBufferEXT (GLuint texture, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glMultiTexBufferEXT (GLenum texunit, GLenum target, GLenum internalformat, GLuint buffer);
+GLAPI void APIENTRY glNamedRenderbufferStorageEXT (GLuint renderbuffer, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glGetNamedRenderbufferParameterivEXT (GLuint renderbuffer, GLenum pname, GLint *params);
+GLAPI GLenum APIENTRY glCheckNamedFramebufferStatusEXT (GLuint framebuffer, GLenum target);
+GLAPI void APIENTRY glNamedFramebufferTexture1DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture2DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTexture3DEXT (GLuint framebuffer, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset);
+GLAPI void APIENTRY glNamedFramebufferRenderbufferEXT (GLuint framebuffer, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
+GLAPI void APIENTRY glGetNamedFramebufferAttachmentParameterivEXT (GLuint framebuffer, GLenum attachment, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGenerateTextureMipmapEXT (GLuint texture, GLenum target);
+GLAPI void APIENTRY glGenerateMultiTexMipmapEXT (GLenum texunit, GLenum target);
+GLAPI void APIENTRY glFramebufferDrawBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glFramebufferDrawBuffersEXT (GLuint framebuffer, GLsizei n, const GLenum *bufs);
+GLAPI void APIENTRY glFramebufferReadBufferEXT (GLuint framebuffer, GLenum mode);
+GLAPI void APIENTRY glGetFramebufferParameterivEXT (GLuint framebuffer, GLenum pname, GLint *params);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleEXT (GLuint renderbuffer, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedRenderbufferStorageMultisampleCoverageEXT (GLuint renderbuffer, GLsizei coverageSamples, GLsizei colorSamples, GLenum internalformat, GLsizei width, GLsizei height);
+GLAPI void APIENTRY glNamedFramebufferTextureEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level);
+GLAPI void APIENTRY glNamedFramebufferTextureLayerEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY glNamedFramebufferTextureFaceEXT (GLuint framebuffer, GLenum attachment, GLuint texture, GLint level, GLenum face);
+GLAPI void APIENTRY glTextureRenderbufferEXT (GLuint texture, GLenum target, GLuint renderbuffer);
+GLAPI void APIENTRY glMultiTexRenderbufferEXT (GLenum texunit, GLenum target, GLuint renderbuffer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
typedef void (APIENTRYP PFNGLPUSHCLIENTATTRIBDEFAULTEXTPROC) (GLbitfield mask);
@@ -9172,9 +9776,9 @@ typedef void (APIENTRYP PFNGLMULTITEXRENDERBUFFEREXTPROC) (GLenum texunit, GLenu
#ifndef GL_NV_explicit_multisample
#define GL_NV_explicit_multisample 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetMultisamplefvNV (GLenum, GLuint, GLfloat *);
-GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint, GLbitfield);
-GLAPI void APIENTRY glTexRenderbufferNV (GLenum, GLuint);
+GLAPI void APIENTRY glGetMultisamplefvNV (GLenum pname, GLuint index, GLfloat *val);
+GLAPI void APIENTRY glSampleMaskIndexedNV (GLuint index, GLbitfield mask);
+GLAPI void APIENTRY glTexRenderbufferNV (GLenum target, GLuint renderbuffer);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETMULTISAMPLEFVNVPROC) (GLenum pname, GLuint index, GLfloat *val);
typedef void (APIENTRYP PFNGLSAMPLEMASKINDEXEDNVPROC) (GLuint index, GLbitfield mask);
@@ -9184,13 +9788,13 @@ typedef void (APIENTRYP PFNGLTEXRENDERBUFFERNVPROC) (GLenum target, GLuint rende
#ifndef GL_NV_transform_feedback2
#define GL_NV_transform_feedback2 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum, GLuint);
-GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei, const GLuint *);
-GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei, GLuint *);
-GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint);
+GLAPI void APIENTRY glBindTransformFeedbackNV (GLenum target, GLuint id);
+GLAPI void APIENTRY glDeleteTransformFeedbacksNV (GLsizei n, const GLuint *ids);
+GLAPI void APIENTRY glGenTransformFeedbacksNV (GLsizei n, GLuint *ids);
+GLAPI GLboolean APIENTRY glIsTransformFeedbackNV (GLuint id);
GLAPI void APIENTRY glPauseTransformFeedbackNV (void);
GLAPI void APIENTRY glResumeTransformFeedbackNV (void);
-GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum, GLuint);
+GLAPI void APIENTRY glDrawTransformFeedbackNV (GLenum mode, GLuint id);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBINDTRANSFORMFEEDBACKNVPROC) (GLenum target, GLuint id);
typedef void (APIENTRYP PFNGLDELETETRANSFORMFEEDBACKSNVPROC) (GLsizei n, const GLuint *ids);
@@ -9208,17 +9812,17 @@ typedef void (APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKNVPROC) (GLenum mode, GLuint i
#ifndef GL_AMD_performance_monitor
#define GL_AMD_performance_monitor 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *, GLsizei, GLuint *);
-GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint, GLint *, GLint *, GLsizei, GLuint *);
-GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint, GLuint, GLsizei, GLsizei *, GLchar *);
-GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint, GLuint, GLenum, void *);
-GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei, GLuint *);
-GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei, GLuint *);
-GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint, GLboolean, GLuint, GLint, GLuint *);
-GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint);
-GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint);
-GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint, GLenum, GLsizei, GLuint *, GLint *);
+GLAPI void APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
+GLAPI void APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
+GLAPI void APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString);
+GLAPI void APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString);
+GLAPI void APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data);
+GLAPI void APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors);
+GLAPI void APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList);
+GLAPI void APIENTRY glBeginPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glEndPerfMonitorAMD (GLuint monitor);
+GLAPI void APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups);
typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters);
@@ -9240,8 +9844,8 @@ typedef void (APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor,
#ifndef GL_AMD_vertex_shader_tesselator
#define GL_AMD_vertex_shader_tesselator 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTessellationFactorAMD (GLfloat);
-GLAPI void APIENTRY glTessellationModeAMD (GLenum);
+GLAPI void APIENTRY glTessellationFactorAMD (GLfloat factor);
+GLAPI void APIENTRY glTessellationModeAMD (GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTESSELLATIONFACTORAMDPROC) (GLfloat factor);
typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
@@ -9250,7 +9854,7 @@ typedef void (APIENTRYP PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
#ifndef GL_EXT_provoking_vertex
#define GL_EXT_provoking_vertex 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glProvokingVertexEXT (GLenum);
+GLAPI void APIENTRY glProvokingVertexEXT (GLenum mode);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
#endif
@@ -9262,10 +9866,10 @@ typedef void (APIENTRYP PFNGLPROVOKINGVERTEXEXTPROC) (GLenum mode);
#ifndef GL_AMD_draw_buffers_blend
#define GL_AMD_draw_buffers_blend 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint, GLenum, GLenum);
-GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint, GLenum, GLenum, GLenum, GLenum);
-GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint, GLenum);
-GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint, GLenum, GLenum);
+GLAPI void APIENTRY glBlendFuncIndexedAMD (GLuint buf, GLenum src, GLenum dst);
+GLAPI void APIENTRY glBlendFuncSeparateIndexedAMD (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+GLAPI void APIENTRY glBlendEquationIndexedAMD (GLuint buf, GLenum mode);
+GLAPI void APIENTRY glBlendEquationSeparateIndexedAMD (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBLENDFUNCINDEXEDAMDPROC) (GLuint buf, GLenum src, GLenum dst);
typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEINDEXEDAMDPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
@@ -9276,8 +9880,8 @@ typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEINDEXEDAMDPROC) (GLuint buf, G
#ifndef GL_APPLE_texture_range
#define GL_APPLE_texture_range 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glTextureRangeAPPLE (GLenum, GLsizei, const GLvoid *);
-GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum, GLenum, GLvoid* *);
+GLAPI void APIENTRY glTextureRangeAPPLE (GLenum target, GLsizei length, const GLvoid *pointer);
+GLAPI void APIENTRY glGetTexParameterPointervAPPLE (GLenum target, GLenum pname, GLvoid* *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLTEXTURERANGEAPPLEPROC) (GLenum target, GLsizei length, const GLvoid *pointer);
typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, GLenum pname, GLvoid* *params);
@@ -9290,13 +9894,13 @@ typedef void (APIENTRYP PFNGLGETTEXPARAMETERPOINTERVAPPLEPROC) (GLenum target, G
#ifndef GL_APPLE_vertex_program_evaluators
#define GL_APPLE_vertex_program_evaluators 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint, GLenum);
-GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint, GLenum);
-GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint, GLenum);
-GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
-GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint, GLuint, GLdouble, GLdouble, GLint, GLint, GLdouble, GLdouble, GLint, GLint, const GLdouble *);
-GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint, GLuint, GLfloat, GLfloat, GLint, GLint, GLfloat, GLfloat, GLint, GLint, const GLfloat *);
+GLAPI void APIENTRY glEnableVertexAttribAPPLE (GLuint index, GLenum pname);
+GLAPI void APIENTRY glDisableVertexAttribAPPLE (GLuint index, GLenum pname);
+GLAPI GLboolean APIENTRY glIsVertexAttribEnabledAPPLE (GLuint index, GLenum pname);
+GLAPI void APIENTRY glMapVertexAttrib1dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+GLAPI void APIENTRY glMapVertexAttrib1fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+GLAPI void APIENTRY glMapVertexAttrib2dAPPLE (GLuint index, GLuint size, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+GLAPI void APIENTRY glMapVertexAttrib2fAPPLE (GLuint index, GLuint size, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
typedef void (APIENTRYP PFNGLDISABLEVERTEXATTRIBAPPLEPROC) (GLuint index, GLenum pname);
@@ -9314,9 +9918,9 @@ typedef void (APIENTRYP PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuint s
#ifndef GL_APPLE_object_purgeable
#define GL_APPLE_object_purgeable 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum, GLuint, GLenum);
-GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum, GLuint, GLenum);
-GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum, GLuint, GLenum, GLint *);
+GLAPI GLenum APIENTRY glObjectPurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
+GLAPI GLenum APIENTRY glObjectUnpurgeableAPPLE (GLenum objectType, GLuint name, GLenum option);
+GLAPI void APIENTRY glGetObjectParameterivAPPLE (GLenum objectType, GLuint name, GLenum pname, GLint *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef GLenum (APIENTRYP PFNGLOBJECTPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
typedef GLenum (APIENTRYP PFNGLOBJECTUNPURGEABLEAPPLEPROC) (GLenum objectType, GLuint name, GLenum option);
@@ -9334,18 +9938,18 @@ typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVAPPLEPROC) (GLenum objectType,
#ifndef GL_NV_video_capture
#define GL_NV_video_capture 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint);
-GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint, GLuint, GLenum, GLintptrARB);
-GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint, GLuint, GLenum, GLenum, GLuint);
-GLAPI void APIENTRY glEndVideoCaptureNV (GLuint);
-GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint, GLuint, GLenum, GLint *);
-GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint, GLuint, GLenum, GLfloat *);
-GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint, GLuint, GLenum, GLdouble *);
-GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint, GLuint *, GLuint64EXT *);
-GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint, GLuint, GLenum, const GLint *);
-GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint, GLuint, GLenum, const GLfloat *);
-GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint, GLuint, GLenum, const GLdouble *);
+GLAPI void APIENTRY glBeginVideoCaptureNV (GLuint video_capture_slot);
+GLAPI void APIENTRY glBindVideoCaptureStreamBufferNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
+GLAPI void APIENTRY glBindVideoCaptureStreamTextureNV (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLenum target, GLuint texture);
+GLAPI void APIENTRY glEndVideoCaptureNV (GLuint video_capture_slot);
+GLAPI void APIENTRY glGetVideoCaptureivNV (GLuint video_capture_slot, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLint *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLfloat *params);
+GLAPI void APIENTRY glGetVideoCaptureStreamdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, GLdouble *params);
+GLAPI GLenum APIENTRY glVideoCaptureNV (GLuint video_capture_slot, GLuint *sequence_num, GLuint64EXT *capture_time);
+GLAPI void APIENTRY glVideoCaptureStreamParameterivNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLint *params);
+GLAPI void APIENTRY glVideoCaptureStreamParameterfvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLfloat *params);
+GLAPI void APIENTRY glVideoCaptureStreamParameterdvNV (GLuint video_capture_slot, GLuint stream, GLenum pname, const GLdouble *params);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBEGINVIDEOCAPTURENVPROC) (GLuint video_capture_slot);
typedef void (APIENTRYP PFNGLBINDVIDEOCAPTURESTREAMBUFFERNVPROC) (GLuint video_capture_slot, GLuint stream, GLenum frame_region, GLintptrARB offset);
@@ -9364,7 +9968,7 @@ typedef void (APIENTRYP PFNGLVIDEOCAPTURESTREAMPARAMETERDVNVPROC) (GLuint video_
#ifndef GL_NV_copy_image
#define GL_NV_copy_image 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glCopyImageSubDataNV (GLuint, GLenum, GLint, GLint, GLint, GLint, GLuint, GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei);
+GLAPI void APIENTRY glCopyImageSubDataNV (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
#endif
@@ -9372,9 +9976,9 @@ typedef void (APIENTRYP PFNGLCOPYIMAGESUBDATANVPROC) (GLuint srcName, GLenum src
#ifndef GL_EXT_separate_shader_objects
#define GL_EXT_separate_shader_objects 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glUseShaderProgramEXT (GLenum, GLuint);
-GLAPI void APIENTRY glActiveProgramEXT (GLuint);
-GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum, const GLchar *);
+GLAPI void APIENTRY glUseShaderProgramEXT (GLenum type, GLuint program);
+GLAPI void APIENTRY glActiveProgramEXT (GLuint program);
+GLAPI GLuint APIENTRY glCreateShaderProgramEXT (GLenum type, const GLchar *string);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint program);
typedef void (APIENTRYP PFNGLACTIVEPROGRAMEXTPROC) (GLuint program);
@@ -9388,26 +9992,26 @@ typedef GLuint (APIENTRYP PFNGLCREATESHADERPROGRAMEXTPROC) (GLenum type, const G
#ifndef GL_NV_shader_buffer_load
#define GL_NV_shader_buffer_load 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glMakeBufferResidentNV (GLenum, GLenum);
-GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum);
-GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum);
-GLAPI void APIENTRY glNamedMakeBufferResidentNV (GLuint, GLenum);
-GLAPI void APIENTRY glNamedMakeBufferNonResidentNV (GLuint);
-GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint);
-GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum, GLenum, GLuint64EXT *);
-GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint, GLenum, GLuint64EXT *);
-GLAPI void APIENTRY glGetIntegerui64vNV (GLenum, GLuint64EXT *);
-GLAPI void APIENTRY glUniformui64NV (GLint, GLuint64EXT);
-GLAPI void APIENTRY glUniformui64vNV (GLint, GLsizei, const GLuint64EXT *);
-GLAPI void APIENTRY glGetUniformui64vNV (GLuint, GLint, GLuint64EXT *);
-GLAPI void APIENTRY glProgramUniformui64NV (GLuint, GLint, GLuint64EXT);
-GLAPI void APIENTRY glProgramUniformui64vNV (GLuint, GLint, GLsizei, const GLuint64EXT *);
+GLAPI void APIENTRY glMakeBufferResidentNV (GLenum target, GLenum access);
+GLAPI void APIENTRY glMakeBufferNonResidentNV (GLenum target);
+GLAPI GLboolean APIENTRY glIsBufferResidentNV (GLenum target);
+GLAPI void APIENTRY glMakeNamedBufferResidentNV (GLuint buffer, GLenum access);
+GLAPI void APIENTRY glMakeNamedBufferNonResidentNV (GLuint buffer);
+GLAPI GLboolean APIENTRY glIsNamedBufferResidentNV (GLuint buffer);
+GLAPI void APIENTRY glGetBufferParameterui64vNV (GLenum target, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetNamedBufferParameterui64vNV (GLuint buffer, GLenum pname, GLuint64EXT *params);
+GLAPI void APIENTRY glGetIntegerui64vNV (GLenum value, GLuint64EXT *result);
+GLAPI void APIENTRY glUniformui64NV (GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glUniformui64vNV (GLint location, GLsizei count, const GLuint64EXT *value);
+GLAPI void APIENTRY glGetUniformui64vNV (GLuint program, GLint location, GLuint64EXT *params);
+GLAPI void APIENTRY glProgramUniformui64NV (GLuint program, GLint location, GLuint64EXT value);
+GLAPI void APIENTRY glProgramUniformui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLMAKEBUFFERRESIDENTNVPROC) (GLenum target, GLenum access);
typedef void (APIENTRYP PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
typedef GLboolean (APIENTRYP PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
-typedef void (APIENTRYP PFNGLNAMEDMAKEBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
-typedef void (APIENTRYP PFNGLNAMEDMAKEBUFFERNONRESIDENTNVPROC) (GLuint buffer);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERRESIDENTNVPROC) (GLuint buffer, GLenum access);
+typedef void (APIENTRYP PFNGLMAKENAMEDBUFFERNONRESIDENTNVPROC) (GLuint buffer);
typedef GLboolean (APIENTRYP PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
typedef void (APIENTRYP PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT *params);
typedef void (APIENTRYP PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT *params);
@@ -9422,18 +10026,18 @@ typedef void (APIENTRYP PFNGLPROGRAMUNIFORMUI64VNVPROC) (GLuint program, GLint l
#ifndef GL_NV_vertex_buffer_unified_memory
#define GL_NV_vertex_buffer_unified_memory 1
#ifdef GL_GLEXT_PROTOTYPES
-GLAPI void APIENTRY glBufferAddressRangeNV (GLenum, GLuint, GLuint64EXT, GLsizeiptr);
-GLAPI void APIENTRY glVertexFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glNormalFormatNV (GLenum, GLsizei);
-GLAPI void APIENTRY glColorFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glIndexFormatNV (GLenum, GLsizei);
-GLAPI void APIENTRY glTexCoordFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei);
-GLAPI void APIENTRY glSecondaryColorFormatNV (GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glFogCoordFormatNV (GLenum, GLsizei);
-GLAPI void APIENTRY glVertexAttribFormatNV (GLuint, GLint, GLenum, GLboolean, GLsizei);
-GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint, GLint, GLenum, GLsizei);
-GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum, GLuint, GLuint64EXT *);
+GLAPI void APIENTRY glBufferAddressRangeNV (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
+GLAPI void APIENTRY glVertexFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glNormalFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glIndexFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glTexCoordFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glEdgeFlagFormatNV (GLsizei stride);
+GLAPI void APIENTRY glSecondaryColorFormatNV (GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glFogCoordFormatNV (GLenum type, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribFormatNV (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride);
+GLAPI void APIENTRY glVertexAttribIFormatNV (GLuint index, GLint size, GLenum type, GLsizei stride);
+GLAPI void APIENTRY glGetIntegerui64i_vNV (GLenum value, GLuint index, GLuint64EXT *result);
#endif /* GL_GLEXT_PROTOTYPES */
typedef void (APIENTRYP PFNGLBUFFERADDRESSRANGENVPROC) (GLenum pname, GLuint index, GLuint64EXT address, GLsizeiptr length);
typedef void (APIENTRYP PFNGLVERTEXFORMATNVPROC) (GLint size, GLenum type, GLsizei stride);
@@ -9457,6 +10061,18 @@ GLAPI void APIENTRY glTextureBarrierNV (void);
typedef void (APIENTRYP PFNGLTEXTUREBARRIERNVPROC) (void);
#endif
+#ifndef GL_AMD_shader_stencil_export
+#define GL_AMD_shader_stencil_export 1
+#endif
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+#define GL_AMD_seamless_cubemap_per_texture 1
+#endif
+
+#ifndef GL_AMD_conservative_depth
+#define GL_AMD_conservative_depth 1
+#endif
+
#ifdef __cplusplus
}
diff --git a/include/GL/glxext.h b/include/GL/glxext.h
index 44224308f5..407d4f966e 100644
--- a/include/GL/glxext.h
+++ b/include/GL/glxext.h
@@ -124,6 +124,10 @@ extern "C" {
#define GLX_SAMPLES_ARB 100001
#endif
+#ifndef GLX_ARB_vertex_buffer_object
+#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
+#endif
+
#ifndef GLX_ARB_fbconfig_float
#define GLX_RGBA_FLOAT_TYPE_ARB 0x20B9
#define GLX_RGBA_FLOAT_BIT_ARB 0x00000004
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
index 4b9264166f..172669e395 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -824,4 +824,18 @@ struct __DRIimageLookupExtensionRec {
void *loaderPrivate);
};
+/**
+ * This extension allows for common DRI2 options
+ */
+#define __DRI2_CONFIG_QUERY "DRI_CONFIG_QUERY"
+#define __DRI2_CONFIG_QUERY_VERSION 1
+
+typedef struct __DRI2configQueryExtensionRec __DRI2configQueryExtension;
+struct __DRI2configQueryExtensionRec {
+ __DRIextension base;
+
+ int (*configQueryb)(__DRIscreen *screen, const char *var, GLboolean *val);
+ int (*configQueryi)(__DRIscreen *screen, const char *var, GLint *val);
+ int (*configQueryf)(__DRIscreen *screen, const char *var, GLfloat *val);
+};
#endif
diff --git a/progs/demos/rain.cxx b/progs/demos/rain.cxx
index 265d90cd95..60fc4146c8 100644
--- a/progs/demos/rain.cxx
+++ b/progs/demos/rain.cxx
@@ -158,7 +158,7 @@ static void printhelp(void)
glRasterPos2i(60,240);
printstring(GLUT_BITMAP_TIMES_ROMAN_24,"l - Increase rain length");
glRasterPos2i(60,210);
- printstring(GLUT_BITMAP_TIMES_ROMAN_24,"k - Increase rain length");
+ printstring(GLUT_BITMAP_TIMES_ROMAN_24,"k - Decrease rain length");
}
static void drawrain(void)
diff --git a/progs/demos/textures.c b/progs/demos/textures.c
index 1415ef1c43..b668995aac 100644
--- a/progs/demos/textures.c
+++ b/progs/demos/textures.c
@@ -6,11 +6,13 @@
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
+#include <GL/glew.h>
#include <GL/glut.h>
#include "readtex.h"
#define TEST_CLAMP 0
#define TEST_MIPMAPS 0
+#define TEST_GEN_COMPRESSED_MIPMAPS 0
#define MAX_TEXTURES 8
@@ -304,6 +306,69 @@ LoadTextures(GLuint n, const char *files[])
GL_RGBA, GL_UNSIGNED_BYTE, image);
}
}
+#elif TEST_GEN_COMPRESSED_MIPMAPS
+ {
+ GLenum intFormat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
+ int f;
+ GLenum format;
+ GLubyte *img = LoadRGBImage(files[i], &w, &h, &format);
+ GLboolean write_compressed = GL_FALSE;
+ GLboolean read_compressed = GL_FALSE;
+
+ glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
+ glTexImage2D(GL_TEXTURE_2D, 0, intFormat, w, h, 0,
+ format, GL_UNSIGNED_BYTE, img);
+ glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_FALSE);
+ free(img);
+
+ glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
+ GL_TEXTURE_INTERNAL_FORMAT, &f);
+ printf("actual internal format 0x%x\n", f);
+
+ if (write_compressed) {
+ GLint i, sz, w, h;
+ int num_levels = 8;
+ for (i = 0; i < num_levels; i++) {
+ char name[20], *buf;
+ FILE *f;
+ glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w);
+ glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h);
+ glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
+ GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz);
+ printf("Writing level %d: %d x %d bytes: %d\n", i, w, h, sz);
+ buf = malloc(sz);
+ glGetCompressedTexImageARB(GL_TEXTURE_2D, i, buf);
+ sprintf(name, "comp%d", i);
+ f = fopen(name, "w");
+ fwrite(buf, 1, sz, f);
+ fclose(f);
+ free(buf);
+ }
+ }
+
+ if (read_compressed) {
+ GLint i, sz, w, h;
+ int num_levels = 8;
+ for (i = 01; i < num_levels; i++) {
+ char name[20], *buf;
+ FILE *f;
+ glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &w);
+ glGetTexLevelParameteriv(GL_TEXTURE_2D, i, GL_TEXTURE_HEIGHT, &h);
+ glGetTexLevelParameteriv(GL_TEXTURE_2D, i,
+ GL_TEXTURE_COMPRESSED_IMAGE_SIZE, &sz);
+ buf = malloc(sz);
+ sprintf(name, "comp%d", i);
+ printf("Reading level %d: %d x %d bytes: %d from %s\n",
+ i, w, h, sz, name);
+ f = fopen(name, "r");
+ fread(buf, 1, sz, f);
+ fclose(f);
+ glCompressedTexImage2DARB(GL_TEXTURE_2D, i, intFormat,
+ w, h, 0, sz, buf);
+ free(buf);
+ }
+ }
+ }
#else
if (!LoadRGBMipmaps2(files[i], GL_TEXTURE_2D, GL_RGB, &w, &h)) {
printf("Error: couldn't load %s\n", files[i]);
@@ -360,6 +425,7 @@ main(int argc, char *argv[])
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
Win = glutCreateWindow(argv[0]);
+ glewInit();
glutReshapeFunc(Reshape);
glutKeyboardFunc(Key);
glutSpecialFunc(SpecialKey);
diff --git a/progs/demos/vao_demo.c b/progs/demos/vao_demo.c
index 5ce07ecc63..b81004b067 100644
--- a/progs/demos/vao_demo.c
+++ b/progs/demos/vao_demo.c
@@ -272,7 +272,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/egl/eglut/Makefile b/progs/egl/eglut/Makefile
index dec89117bb..364f5b0be3 100644
--- a/progs/egl/eglut/Makefile
+++ b/progs/egl/eglut/Makefile
@@ -7,7 +7,10 @@ INCLUDES = \
-I$(TOP)/include \
$(X11_CFLAGS)
-SOURCES = $(wildcard *.c)
+SOURCES = \
+ eglut.c \
+ eglut_screen.c \
+ eglut_x11.c
EGLUT_X11_OBJECTS = eglut.o eglut_x11.o
EGLUT_SCREEN_OBJECTS = eglut.o eglut_screen.o
diff --git a/progs/egl/opengl/Makefile b/progs/egl/opengl/Makefile
index 20158b1f0b..79cd5fc653 100644
--- a/progs/egl/opengl/Makefile
+++ b/progs/egl/opengl/Makefile
@@ -62,9 +62,6 @@ xeglgears: xeglgears.o $(HEADERS) $(LIB_DEP)
xeglthreads: xeglthreads.o $(HEADERS) $(LIB_DEP)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< $(LIBS) -lpthread -lm $(X11_LIBS)
-$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a:
- @$(MAKE) -C $(EGLUT_DIR)
-
# define the rules for EGLUT demos
define eglut-demo-rule
$(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a $(LIB_DEP)
@@ -80,4 +77,3 @@ $(EGLUT_SCREEN_DEMOS):
clean:
-rm -f *.o *~
-rm -f $(PROGRAMS) $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS)
- @$(MAKE) -C $(EGLUT_DIR) clean
diff --git a/progs/egl/opengles1/Makefile b/progs/egl/opengles1/Makefile
index ba9d1b84d5..593145d4bf 100644
--- a/progs/egl/opengles1/Makefile
+++ b/progs/egl/opengles1/Makefile
@@ -81,9 +81,6 @@ two_win: two_win.o $(ES1_LIB_DEPS)
$(CC) $(CFLAGS) two_win.o $(ES1_LIBS) -o $@
-$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a:
- @$(MAKE) -C $(EGLUT_DIR)
-
# define the rules for EGLUT demos
define eglut-demo-rule
$(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a $(ES1_LIB_DEPS)
@@ -100,4 +97,3 @@ $(EGLUT_SCREEN_DEMOS):
clean:
-rm -f *.o *~
-rm -f $(PROGRAMS) $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS)
- @$(MAKE) -C $(EGLUT_DIR) clean
diff --git a/progs/egl/openvg/Makefile b/progs/egl/openvg/Makefile
index 431341c8a3..3b11933db2 100644
--- a/progs/egl/openvg/Makefile
+++ b/progs/egl/openvg/Makefile
@@ -34,9 +34,6 @@ lion_screen: lion.o lion-render.o $(EGLUT_DIR)/libeglut-screen.a
-L$(EGLUT_DIR) -leglut-screen $(VG_LIBS)
-$(EGLUT_DIR)/libeglut-x11.a $(EGLUT_DIR)/libeglut-screen.a:
- @$(MAKE) -C $(EGLUT_DIR)
-
# define the rules for EGLUT demos
define eglut-demo-rule
$(1)_x11 $(1)_screen: $(1)_%: $(1).o $(EGLUT_DIR)/libeglut-%.a
@@ -52,4 +49,3 @@ $(EGLUT_SCREEN_DEMOS):
clean:
rm -f *.o *~
rm -f $(EGLUT_X11_DEMOS) $(EGLUT_SCREEN_DEMOS)
- @$(MAKE) -C $(EGLUT_DIR) clean
diff --git a/progs/osdemos/Makefile b/progs/osdemos/Makefile
index f53515cb0a..2a0f208083 100644
--- a/progs/osdemos/Makefile
+++ b/progs/osdemos/Makefile
@@ -5,7 +5,7 @@ include $(TOP)/configs/current
INCDIR = $(TOP)/include
-OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS)
+OSMESA_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(OSMESA_LIB) $(APP_LIB_DEPS)
OSMESA16_LIBS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -lOSMesa16 -l$(GLU_LIB) \
-l$(GL_LIB) $(APP_LIB_DEPS)
diff --git a/progs/osdemos/ostest1.c b/progs/osdemos/ostest1.c
index 000b8c4a78..5a00fdb246 100644
--- a/progs/osdemos/ostest1.c
+++ b/progs/osdemos/ostest1.c
@@ -399,7 +399,11 @@ test(GLenum type, GLint bits, const char *filename)
/* sanity checks */
glGetIntegerv(GL_RED_BITS, &cBits);
- assert(cBits == bits);
+ if (cBits != bits) {
+ fprintf(stderr, "Unable to create %d-bit/channel renderbuffer.\n", bits);
+ fprintf(stderr, "May need to recompile Mesa with CHAN_BITS=16 or 32.\n");
+ return 0;
+ }
glGetIntegerv(GL_GREEN_BITS, &cBits);
assert(cBits == bits);
glGetIntegerv(GL_BLUE_BITS, &cBits);
diff --git a/progs/tests/arraytexture.c b/progs/tests/arraytexture.c
index e4e86b9b4c..94adf478d9 100644
--- a/progs/tests/arraytexture.c
+++ b/progs/tests/arraytexture.c
@@ -249,7 +249,7 @@ static void require_extension(const char *ext)
static void Init(void)
{
- const char *const ver_string = (const char *const) glGetString(GL_VERSION);
+ const char *const ver_string = (const char *) glGetString(GL_VERSION);
unsigned i;
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/blendminmax.c b/progs/tests/blendminmax.c
index 7297f41b78..b33839cc87 100644
--- a/progs/tests/blendminmax.c
+++ b/progs/tests/blendminmax.c
@@ -178,7 +178,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/blendsquare.c b/progs/tests/blendsquare.c
index 3ee3ae2230..07806fc758 100644
--- a/progs/tests/blendsquare.c
+++ b/progs/tests/blendsquare.c
@@ -142,7 +142,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
const double version = strtod( ver_string, NULL );
diff --git a/progs/tests/bug_3101.c b/progs/tests/bug_3101.c
index 06a9776155..796377186b 100644
--- a/progs/tests/bug_3101.c
+++ b/progs/tests/bug_3101.c
@@ -100,7 +100,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/bug_3195.c b/progs/tests/bug_3195.c
index 3574c1f717..10481c2232 100644
--- a/progs/tests/bug_3195.c
+++ b/progs/tests/bug_3195.c
@@ -176,7 +176,7 @@ static void SpecialKey( int key, int x, int y )
static void Init( void )
{
GLfloat maxBias;
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/crossbar.c b/progs/tests/crossbar.c
index 2988e20920..ac9a8eae3b 100644
--- a/progs/tests/crossbar.c
+++ b/progs/tests/crossbar.c
@@ -143,7 +143,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
float ver = strtod( ver_string, NULL );
GLint tex_units;
diff --git a/progs/tests/interleave.c b/progs/tests/interleave.c
index acf67d02c1..c60ddde1f1 100644
--- a/progs/tests/interleave.c
+++ b/progs/tests/interleave.c
@@ -352,7 +352,7 @@ static void ModeMenu( int entry )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
const GLubyte tex[16] = {
0xff, 0x00, 0xff, 0x00,
diff --git a/progs/tests/invert.c b/progs/tests/invert.c
index 45001b44d0..be55472656 100644
--- a/progs/tests/invert.c
+++ b/progs/tests/invert.c
@@ -126,7 +126,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
const float ver = strtod( ver_string, NULL );
diff --git a/progs/tests/prog_parameter.c b/progs/tests/prog_parameter.c
index 2de7e2994a..e38c68904d 100644
--- a/progs/tests/prog_parameter.c
+++ b/progs/tests/prog_parameter.c
@@ -186,7 +186,7 @@ static int set_parameter_batch( GLsizei count, GLfloat * param,
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
int pass = 1;
GLfloat * params;
diff --git a/progs/tests/stencil_twoside.c b/progs/tests/stencil_twoside.c
index 1010139a20..dec620023f 100644
--- a/progs/tests/stencil_twoside.c
+++ b/progs/tests/stencil_twoside.c
@@ -311,7 +311,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/stencil_wrap.c b/progs/tests/stencil_wrap.c
index 28307fef4f..2bafd3204f 100644
--- a/progs/tests/stencil_wrap.c
+++ b/progs/tests/stencil_wrap.c
@@ -225,7 +225,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
diff --git a/progs/tests/vao-01.c b/progs/tests/vao-01.c
index ee528d2243..bacae70bb5 100644
--- a/progs/tests/vao-01.c
+++ b/progs/tests/vao-01.c
@@ -109,7 +109,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
GLuint obj;
int pass = 1;
diff --git a/progs/tests/vao-02.c b/progs/tests/vao-02.c
index c23b4ab05a..d085541876 100644
--- a/progs/tests/vao-02.c
+++ b/progs/tests/vao-02.c
@@ -109,7 +109,7 @@ static void Key( unsigned char key, int x, int y )
static void Init( void )
{
- const char * const ver_string = (const char * const)
+ const char * const ver_string = (const char *)
glGetString( GL_VERSION );
GLuint obj;
int pass = 1;
diff --git a/progs/tests/zreaddraw.c b/progs/tests/zreaddraw.c
index 4d27b3a505..0910eaaa79 100644
--- a/progs/tests/zreaddraw.c
+++ b/progs/tests/zreaddraw.c
@@ -11,7 +11,16 @@
#include <GL/glew.h>
#include <GL/glut.h>
-static GLint WinWidth = 500, WinHeight = 500;
+
+#define ZWIDTH 100
+#define ZHEIGHT 100
+
+#define ZOOM 4
+
+#define ZWIDTH2 (ZOOM * ZWIDTH)
+#define ZHEIGHT2 (ZOOM * ZHEIGHT)
+
+static GLint WinWidth = ZWIDTH + ZWIDTH2, WinHeight = ZHEIGHT + ZHEIGHT2;
static GLboolean Invert = GL_FALSE;
static GLboolean TestPacking = GL_FALSE;
static GLboolean TestList = GL_FALSE;
@@ -19,8 +28,8 @@ static GLboolean TestList = GL_FALSE;
static void Display(void)
{
- GLfloat depth[100 * 100 * 2];
- GLfloat depth2[400 * 400]; /* *2 to test pixelstore stuff */
+ GLfloat depth[ZWIDTH * ZHEIGHT * 2];
+ GLfloat depth2[ZWIDTH2 * ZHEIGHT2]; /* *2 to test pixelstore stuff */
GLuint list;
GLenum depthType = GL_FLOAT;
@@ -30,7 +39,7 @@ static void Display(void)
glEnable(GL_DEPTH_TEST);
/* draw a sphere */
- glViewport(0, 0, 100, 100);
+ glViewport(0, 0, ZWIDTH, ZHEIGHT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-1, 1, -1, 1, -1, 0); /* clip away back half of sphere */
@@ -44,12 +53,12 @@ static void Display(void)
}
/* read the depth image */
- glReadPixels(0, 0, 100, 100, GL_DEPTH_COMPONENT, depthType, depth);
+ glReadPixels(0, 0, ZWIDTH, ZHEIGHT, GL_DEPTH_COMPONENT, depthType, depth);
if (depthType == GL_FLOAT) {
GLfloat min, max;
int i;
min = max = depth[0];
- for (i = 1; i < 100 * 100; i++) {
+ for (i = 1; i < ZWIDTH * ZHEIGHT; i++) {
if (depth[i] < min)
min = depth[i];
if (depth[i] > max)
@@ -58,9 +67,22 @@ static void Display(void)
printf("Depth value range: [%f, %f]\n", min, max);
}
+ /* debug */
+ if (0) {
+ int i;
+ float *z = depth + ZWIDTH * 50;
+ printf("z at y=50:\n");
+ for (i = 0; i < ZWIDTH; i++) {
+ printf("%5.3f ", z[i]);
+ if ((i + 1) % 12 == 0)
+ printf("\n");
+ }
+ printf("\n");
+ }
+
/* Draw the Z image as luminance above original rendering */
- glWindowPos2i(0, 100);
- glDrawPixels(100, 100, GL_LUMINANCE, depthType, depth);
+ glWindowPos2i(0, ZHEIGHT);
+ glDrawPixels(ZWIDTH, ZHEIGHT, GL_LUMINANCE, depthType, depth);
if (TestPacking) {
glPixelStorei(GL_PACK_ROW_LENGTH, 0);
@@ -70,9 +92,9 @@ static void Display(void)
}
/* draw depth image with scaling (into z buffer) */
- glPixelZoom(4.0, 4.0);
+ glPixelZoom(ZOOM, ZOOM);
glColor4f(1, 0, 0, 0);
- glWindowPos2i(100, 0);
+ glWindowPos2i(ZWIDTH, 0);
if (Invert) {
glPixelTransferf(GL_DEPTH_SCALE, -1.0);
glPixelTransferf(GL_DEPTH_BIAS, 1.0);
@@ -80,13 +102,13 @@ static void Display(void)
if (TestList) {
list = glGenLists(1);
glNewList(list, GL_COMPILE);
- glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth);
+ glDrawPixels(ZWIDTH, ZHEIGHT, GL_DEPTH_COMPONENT, depthType, depth);
glEndList();
glCallList(list);
glDeleteLists(list, 1);
}
else {
- glDrawPixels(100, 100, GL_DEPTH_COMPONENT, depthType, depth);
+ glDrawPixels(ZWIDTH, ZHEIGHT, GL_DEPTH_COMPONENT, depthType, depth);
}
if (Invert) {
glPixelTransferf(GL_DEPTH_SCALE, 1.0);
@@ -101,24 +123,25 @@ static void Display(void)
glDisable(GL_DEPTH_TEST);
/* read back scaled depth image */
- glReadPixels(100, 0, 400, 400, GL_DEPTH_COMPONENT, GL_FLOAT, depth2);
+ glReadPixels(ZWIDTH, 0, ZWIDTH2, ZHEIGHT2, GL_DEPTH_COMPONENT, GL_FLOAT, depth2);
/* debug */
if (0) {
int i;
- float *z = depth2 + 400 * 200;
+ float *z = depth2 + ZWIDTH2 * 200;
printf("z at y=200:\n");
- for (i = 0; i < 400; i++) {
+ for (i = 0; i < ZWIDTH2; i++) {
printf("%5.3f ", z[i]);
if ((i + 1) % 12 == 0)
printf("\n");
}
+ printf("\n");
}
/* draw as luminance */
glPixelZoom(1.0, 1.0);
- glWindowPos2i(100, 0);
- glDrawPixels(400, 400, GL_LUMINANCE, GL_FLOAT, depth2);
+ glWindowPos2i(ZWIDTH, 0);
+ glDrawPixels(ZWIDTH2, ZHEIGHT2, GL_LUMINANCE, GL_FLOAT, depth2);
glutSwapBuffers();
}
@@ -162,9 +185,13 @@ static void Init(void)
const GLfloat gray[4] = {0.2, 0.2, 0.2, 1.0};
const GLfloat white[4] = {1.0, 1.0, 1.0, 1.0};
const GLfloat pos[4] = {0, 0, 10, 0};
+ GLint z;
+
+ glGetIntegerv(GL_DEPTH_BITS, &z);
printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION));
printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER));
+ printf("GL_DEPTH_BITS = %d\n", z);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, blue);
glLightfv(GL_LIGHT0, GL_AMBIENT, gray);
diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index 583421ac8a..69f3c28c9e 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -710,7 +710,8 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
dri2_dpy->fd = open(dri2_dpy->device_name, O_RDWR);
if (dri2_dpy->fd == -1) {
_eglLog(_EGL_FATAL,
- "DRI2: could not open %s (%s)", path, strerror(errno));
+ "DRI2: could not open %s (%s)", dri2_dpy->device_name,
+ strerror(errno));
goto cleanup_driver;
}
diff --git a/src/gallium/Makefile.template b/src/gallium/Makefile.template
index b5a9938c74..1ba0724949 100644
--- a/src/gallium/Makefile.template
+++ b/src/gallium/Makefile.template
@@ -37,7 +37,7 @@ depend: $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(SYMLINKS) $(GENERATED_SOURC
$(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(C_SOURCES) $(CPP_SOURCES) $(ASM_SOURCES) $(GENERATED_SOURCES) 2> /dev/null
$(PROGS): % : %.o
- $(LD) $(filter %.o,$^) -o $@ -Wl,--start-group $(LIBS) -Wl,--end-group
+ $(LD) $(LDFLAGS) $(filter %.o,$^) -o $@ -Wl,--start-group $(LIBS) -Wl,--end-group
# Emacs tags
tags:
diff --git a/src/gallium/auxiliary/Makefile b/src/gallium/auxiliary/Makefile
index f8e65cf6c6..2daed382cf 100644
--- a/src/gallium/auxiliary/Makefile
+++ b/src/gallium/auxiliary/Makefile
@@ -101,6 +101,7 @@ C_SOURCES = \
util/u_blit.c \
util/u_blitter.c \
util/u_cache.c \
+ util/u_caps.c \
util/u_cpu_detect.c \
util/u_dl.c \
util/u_draw_quad.c \
diff --git a/src/gallium/auxiliary/SConscript b/src/gallium/auxiliary/SConscript
index db3a1e7311..a0673df8a8 100644
--- a/src/gallium/auxiliary/SConscript
+++ b/src/gallium/auxiliary/SConscript
@@ -144,6 +144,7 @@ source = [
'util/u_blit.c',
'util/u_blitter.c',
'util/u_cache.c',
+ 'util/u_caps.c',
'util/u_cpu_detect.c',
'util/u_debug.c',
'util/u_debug_memory.c',
diff --git a/src/gallium/auxiliary/cso_cache/cso_context.c b/src/gallium/auxiliary/cso_cache/cso_context.c
index 6fd4bd3642..c5fe7efa02 100644
--- a/src/gallium/auxiliary/cso_cache/cso_context.c
+++ b/src/gallium/auxiliary/cso_cache/cso_context.c
@@ -313,10 +313,13 @@ void cso_release_all( struct cso_context *ctx )
}
+/**
+ * Free the CSO context. NOTE: the state tracker should have previously called
+ * cso_release_all().
+ */
void cso_destroy_context( struct cso_context *ctx )
{
if (ctx) {
- /*cso_release_all( ctx );*/
FREE( ctx );
}
}
@@ -349,6 +352,7 @@ enum pipe_error cso_set_blend(struct cso_context *ctx,
if (!cso)
return PIPE_ERROR_OUT_OF_MEMORY;
+ memset(&cso->state, 0, sizeof cso->state);
memcpy(&cso->state, templ, key_size);
cso->data = ctx->pipe->create_blend_state(ctx->pipe, &cso->state);
cso->delete_state = (cso_state_callback)ctx->pipe->delete_blend_state;
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c
index 9d11031769..2c234285b5 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_llvm.c
@@ -24,6 +24,8 @@
/* generates the draw jit function */
static void
draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *var);
+static void
+draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *var);
static void
init_globals(struct draw_llvm *llvm)
@@ -205,7 +207,9 @@ draw_llvm_create(struct draw_context *draw)
void
draw_llvm_destroy(struct draw_llvm *llvm)
{
- free(llvm);
+ LLVMDisposePassManager(llvm->pass);
+
+ FREE(llvm);
}
struct draw_llvm_variant *
@@ -218,6 +222,7 @@ draw_llvm_prepare(struct draw_llvm *llvm, int num_inputs)
llvm->vertex_header_ptr_type = create_vertex_header(llvm, num_inputs);
draw_llvm_generate(llvm, variant);
+ draw_llvm_generate_elts(llvm, variant);
return variant;
}
@@ -252,7 +257,8 @@ generate_vs(struct draw_llvm *llvm,
NULL /*pos*/,
inputs,
outputs,
- NULL/*sampler*/);
+ NULL/*sampler*/,
+ &llvm->draw->vs.vertex_shader->info);
}
#if DEBUG_STORE
@@ -285,10 +291,16 @@ generate_fetch(LLVMBuilderRef builder,
LLVMValueRef vbuffer_ptr = LLVMBuildGEP(builder, vbuffers_ptr,
&indices, 1, "");
LLVMValueRef vb_stride = draw_jit_vbuffer_stride(builder, vbuf);
+ LLVMValueRef vb_max_index = draw_jit_vbuffer_max_index(builder, vbuf);
LLVMValueRef vb_buffer_offset = draw_jit_vbuffer_offset(builder, vbuf);
- LLVMValueRef stride = LLVMBuildMul(builder,
- vb_stride,
- index, "");
+ LLVMValueRef cond;
+ LLVMValueRef stride;
+
+ cond = LLVMBuildICmp(builder, LLVMIntULE, index, vb_max_index, "");
+
+ index = LLVMBuildSelect(builder, cond, index, vb_max_index, "");
+
+ stride = LLVMBuildMul(builder, vb_stride, index, "");
vbuffer_ptr = LLVMBuildLoad(builder, vbuffer_ptr, "vbuffer");
@@ -689,6 +701,158 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
lp_disassemble(variant->jit_func);
}
+
+static void
+draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
+{
+ LLVMTypeRef arg_types[7];
+ LLVMTypeRef func_type;
+ LLVMValueRef context_ptr;
+ LLVMBasicBlockRef block;
+ LLVMBuilderRef builder;
+ LLVMValueRef fetch_elts, fetch_count, stride, step, io_itr;
+ LLVMValueRef io_ptr, vbuffers_ptr, vb_ptr;
+ struct draw_context *draw = llvm->draw;
+ unsigned i, j;
+ struct lp_build_context bld;
+ struct lp_build_context bld_int;
+ struct lp_build_loop_state lp_loop;
+ struct lp_type vs_type = lp_type_float_vec(32);
+ const int max_vertices = 4;
+ LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS];
+ LLVMValueRef fetch_max;
+
+ arg_types[0] = llvm->context_ptr_type; /* context */
+ arg_types[1] = llvm->vertex_header_ptr_type; /* vertex_header */
+ arg_types[2] = llvm->buffer_ptr_type; /* vbuffers */
+ arg_types[3] = LLVMPointerType(LLVMInt32Type(), 0); /* fetch_elts * */
+ arg_types[4] = LLVMInt32Type(); /* fetch_count */
+ arg_types[5] = LLVMInt32Type(); /* stride */
+ arg_types[6] = llvm->vb_ptr_type; /* pipe_vertex_buffer's */
+
+ func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0);
+
+ variant->function_elts = LLVMAddFunction(llvm->module, "draw_llvm_shader_elts", func_type);
+ LLVMSetFunctionCallConv(variant->function_elts, LLVMCCallConv);
+ for(i = 0; i < Elements(arg_types); ++i)
+ if(LLVMGetTypeKind(arg_types[i]) == LLVMPointerTypeKind)
+ LLVMAddAttribute(LLVMGetParam(variant->function_elts, i), LLVMNoAliasAttribute);
+
+ context_ptr = LLVMGetParam(variant->function_elts, 0);
+ io_ptr = LLVMGetParam(variant->function_elts, 1);
+ vbuffers_ptr = LLVMGetParam(variant->function_elts, 2);
+ fetch_elts = LLVMGetParam(variant->function_elts, 3);
+ fetch_count = LLVMGetParam(variant->function_elts, 4);
+ stride = LLVMGetParam(variant->function_elts, 5);
+ vb_ptr = LLVMGetParam(variant->function_elts, 6);
+
+ lp_build_name(context_ptr, "context");
+ lp_build_name(io_ptr, "io");
+ lp_build_name(vbuffers_ptr, "vbuffers");
+ lp_build_name(fetch_elts, "fetch_elts");
+ lp_build_name(fetch_count, "fetch_count");
+ lp_build_name(stride, "stride");
+ lp_build_name(vb_ptr, "vb");
+
+ /*
+ * Function body
+ */
+
+ block = LLVMAppendBasicBlock(variant->function_elts, "entry");
+ builder = LLVMCreateBuilder();
+ LLVMPositionBuilderAtEnd(builder, block);
+
+ lp_build_context_init(&bld, builder, vs_type);
+ lp_build_context_init(&bld_int, builder, lp_type_int(32));
+
+ step = LLVMConstInt(LLVMInt32Type(), max_vertices, 0);
+
+ fetch_max = LLVMBuildSub(builder, fetch_count,
+ LLVMConstInt(LLVMInt32Type(), 1, 0),
+ "fetch_max");
+
+ lp_build_loop_begin(builder, LLVMConstInt(LLVMInt32Type(), 0, 0), &lp_loop);
+ {
+ LLVMValueRef inputs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS];
+ LLVMValueRef aos_attribs[PIPE_MAX_SHADER_INPUTS][NUM_CHANNELS] = { { 0 } };
+ LLVMValueRef io;
+ const LLVMValueRef (*ptr_aos)[NUM_CHANNELS];
+
+ io_itr = lp_loop.counter;
+ io = LLVMBuildGEP(builder, io_ptr, &io_itr, 1, "");
+#if DEBUG_STORE
+ lp_build_printf(builder, " --- io %d = %p, loop counter %d\n",
+ io_itr, io, lp_loop.counter);
+#endif
+ for (i = 0; i < NUM_CHANNELS; ++i) {
+ LLVMValueRef true_index = LLVMBuildAdd(
+ builder,
+ lp_loop.counter,
+ LLVMConstInt(LLVMInt32Type(), i, 0), "");
+ LLVMValueRef fetch_ptr;
+
+ /* make sure we're not out of bounds which can happen
+ * if fetch_count % 4 != 0, because on the last iteration
+ * a few of the 4 vertex fetches will be out of bounds */
+ true_index = lp_build_min(&bld_int, true_index, fetch_max);
+
+ fetch_ptr = LLVMBuildGEP(builder, fetch_elts,
+ &true_index, 1, "");
+ true_index = LLVMBuildLoad(builder, fetch_ptr, "fetch_elt");
+ for (j = 0; j < draw->pt.nr_vertex_elements; ++j) {
+ struct pipe_vertex_element *velem = &draw->pt.vertex_element[j];
+ LLVMValueRef vb_index = LLVMConstInt(LLVMInt32Type(),
+ velem->vertex_buffer_index,
+ 0);
+ LLVMValueRef vb = LLVMBuildGEP(builder, vb_ptr,
+ &vb_index, 1, "");
+ generate_fetch(builder, vbuffers_ptr,
+ &aos_attribs[j][i], velem, vb, true_index);
+ }
+ }
+ convert_to_soa(builder, aos_attribs, inputs,
+ draw->pt.nr_vertex_elements);
+
+ ptr_aos = (const LLVMValueRef (*)[NUM_CHANNELS]) inputs;
+ generate_vs(llvm,
+ builder,
+ outputs,
+ ptr_aos,
+ context_ptr);
+
+ convert_to_aos(builder, io, outputs,
+ draw->vs.vertex_shader->info.num_outputs,
+ max_vertices);
+ }
+ lp_build_loop_end_cond(builder, fetch_count, step, LLVMIntUGE, &lp_loop);
+
+ LLVMBuildRetVoid(builder);
+
+ LLVMDisposeBuilder(builder);
+
+ /*
+ * Translate the LLVM IR into machine code.
+ */
+#ifdef DEBUG
+ if(LLVMVerifyFunction(variant->function_elts, LLVMPrintMessageAction)) {
+ LLVMDumpValue(variant->function_elts);
+ assert(0);
+ }
+#endif
+
+ LLVMRunFunctionPassManager(llvm->pass, variant->function_elts);
+
+ if (0) {
+ LLVMDumpValue(variant->function_elts);
+ debug_printf("\n");
+ }
+ variant->jit_func_elts = (draw_jit_vert_func_elts)LLVMGetPointerToGlobal(
+ llvm->draw->engine, variant->function_elts);
+
+ if (0)
+ lp_disassemble(variant->jit_func_elts);
+}
+
void
draw_llvm_make_variant_key(struct draw_llvm *llvm,
struct draw_llvm_variant_key *key)
diff --git a/src/gallium/auxiliary/draw/draw_llvm.h b/src/gallium/auxiliary/draw/draw_llvm.h
index 28b9044a81..58fee7f9d6 100644
--- a/src/gallium/auxiliary/draw/draw_llvm.h
+++ b/src/gallium/auxiliary/draw/draw_llvm.h
@@ -78,7 +78,10 @@ struct draw_jit_context
#define draw_jit_vbuffer_stride(_builder, _ptr) \
lp_build_struct_get(_builder, _ptr, 0, "stride")
-#define draw_jit_vbuffer_offset(_builder, _ptr) \
+#define draw_jit_vbuffer_max_index(_builder, _ptr) \
+ lp_build_struct_get(_builder, _ptr, 1, "max_index")
+
+#define draw_jit_vbuffer_offset(_builder, _ptr) \
lp_build_struct_get(_builder, _ptr, 2, "buffer_offset")
@@ -91,6 +94,16 @@ typedef void
unsigned stride,
struct pipe_vertex_buffer *vertex_buffers);
+
+typedef void
+(*draw_jit_vert_func_elts)(struct draw_jit_context *context,
+ struct vertex_header *io,
+ const char *vbuffers[PIPE_MAX_ATTRIBS],
+ const unsigned *fetch_elts,
+ unsigned fetch_count,
+ unsigned stride,
+ struct pipe_vertex_buffer *vertex_buffers);
+
struct draw_llvm {
struct draw_context *draw;
@@ -119,7 +132,9 @@ struct draw_llvm_variant
{
struct draw_llvm_variant_key key;
LLVMValueRef function;
+ LLVMValueRef function_elts;
draw_jit_vert_func jit_func;
+ draw_jit_vert_func_elts jit_func_elts;
struct draw_llvm_variant *next;
};
diff --git a/src/gallium/auxiliary/draw/draw_pipe_vbuf.c b/src/gallium/auxiliary/draw/draw_pipe_vbuf.c
index ee2b811603..abbf6247ab 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_vbuf.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_vbuf.c
@@ -137,7 +137,7 @@ emit_vertex( struct vbuf_stage *vbuf,
*/
/* Note: we really do want data[0] here, not data[pos]:
*/
- vbuf->translate->set_buffer(vbuf->translate, 0, vertex->data[0], 0);
+ vbuf->translate->set_buffer(vbuf->translate, 0, vertex->data[0], 0, ~0);
vbuf->translate->run(vbuf->translate, 0, 1, 0, vbuf->vertex_ptr);
if (0) draw_dump_emitted_vertex(vbuf->vinfo, (uint8_t *)vbuf->vertex_ptr);
@@ -271,7 +271,7 @@ vbuf_start_prim( struct vbuf_stage *vbuf, uint prim )
translate_key_sanitize(&hw_key);
vbuf->translate = translate_cache_find(vbuf->cache, &hw_key);
- vbuf->translate->set_buffer(vbuf->translate, 1, &vbuf->point_size, 0);
+ vbuf->translate->set_buffer(vbuf->translate, 1, &vbuf->point_size, 0, ~0);
}
vbuf->point_size = vbuf->stage.draw->rasterizer->point_size;
diff --git a/src/gallium/auxiliary/draw/draw_pipe_wide_line.c b/src/gallium/auxiliary/draw/draw_pipe_wide_line.c
index 265a420d01..ab16706581 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_wide_line.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_wide_line.c
@@ -54,7 +54,6 @@ static INLINE struct wideline_stage *wideline_stage( struct draw_stage *stage )
/**
* Draw a wide line by drawing a quad (two triangles).
- * XXX need to disable polygon stipple.
*/
static void wideline_line( struct draw_stage *stage,
struct prim_header *header )
diff --git a/src/gallium/auxiliary/draw/draw_private.h b/src/gallium/auxiliary/draw/draw_private.h
index 4bb3282f62..a2bfb693c0 100644
--- a/src/gallium/auxiliary/draw/draw_private.h
+++ b/src/gallium/auxiliary/draw/draw_private.h
@@ -132,6 +132,7 @@ struct draw_context
struct draw_pt_middle_end *fetch_emit;
struct draw_pt_middle_end *fetch_shade_emit;
struct draw_pt_middle_end *general;
+ struct draw_pt_middle_end *llvm;
} middle;
struct {
@@ -253,8 +254,8 @@ struct draw_context
#ifdef HAVE_LLVM
LLVMExecutionEngineRef engine;
- boolean use_llvm;
#endif
+
void *driver_private;
};
diff --git a/src/gallium/auxiliary/draw/draw_pt.c b/src/gallium/auxiliary/draw/draw_pt.c
index b5876bb1bd..b853f3a89f 100644
--- a/src/gallium/auxiliary/draw/draw_pt.c
+++ b/src/gallium/auxiliary/draw/draw_pt.c
@@ -37,6 +37,13 @@
#include "util/u_math.h"
#include "util/u_prim.h"
+
+DEBUG_GET_ONCE_BOOL_OPTION(draw_fse, "DRAW_FSE", FALSE)
+DEBUG_GET_ONCE_BOOL_OPTION(draw_no_fse, "DRAW_NO_FSE", FALSE)
+#ifdef HAVE_LLVM
+DEBUG_GET_ONCE_BOOL_OPTION(draw_use_llvm, "DRAW_USE_LLVM", TRUE)
+#endif
+
static unsigned trim( unsigned count, unsigned first, unsigned incr )
{
if (count < first)
@@ -90,12 +97,16 @@ draw_pt_arrays(struct draw_context *draw,
opt |= PT_SHADE;
}
- if (opt == 0)
- middle = draw->pt.middle.fetch_emit;
- else if (opt == PT_SHADE && !draw->pt.no_fse)
- middle = draw->pt.middle.fetch_shade_emit;
- else
- middle = draw->pt.middle.general;
+ if (draw->pt.middle.llvm) {
+ middle = draw->pt.middle.llvm;
+ } else {
+ if (opt == 0)
+ middle = draw->pt.middle.fetch_emit;
+ else if (opt == PT_SHADE && !draw->pt.no_fse)
+ middle = draw->pt.middle.fetch_shade_emit;
+ else
+ middle = draw->pt.middle.general;
+ }
/* Pick the right frontend
@@ -122,8 +133,8 @@ draw_pt_arrays(struct draw_context *draw,
boolean draw_pt_init( struct draw_context *draw )
{
- draw->pt.test_fse = debug_get_bool_option("DRAW_FSE", FALSE);
- draw->pt.no_fse = debug_get_bool_option("DRAW_NO_FSE", FALSE);
+ draw->pt.test_fse = debug_get_option_draw_fse();
+ draw->pt.no_fse = debug_get_option_draw_no_fse();
draw->pt.front.vcache = draw_pt_vcache( draw );
if (!draw->pt.front.vcache)
@@ -141,25 +152,26 @@ boolean draw_pt_init( struct draw_context *draw )
if (!draw->pt.middle.fetch_shade_emit)
return FALSE;
-#if HAVE_LLVM
- draw->use_llvm = debug_get_bool_option("DRAW_USE_LLVM", TRUE);
- if (draw->use_llvm)
- draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit_llvm( draw );
-#else
- draw->pt.middle.general = NULL;
-#endif
-
- if (!draw->pt.middle.general)
- draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit( draw );
+ draw->pt.middle.general = draw_pt_fetch_pipeline_or_emit( draw );
if (!draw->pt.middle.general)
return FALSE;
+#if HAVE_LLVM
+ if (debug_get_option_draw_use_llvm())
+ draw->pt.middle.llvm = draw_pt_fetch_pipeline_or_emit_llvm( draw );
+#endif
+
return TRUE;
}
void draw_pt_destroy( struct draw_context *draw )
{
+ if (draw->pt.middle.llvm) {
+ draw->pt.middle.llvm->destroy( draw->pt.middle.llvm );
+ draw->pt.middle.llvm = NULL;
+ }
+
if (draw->pt.middle.general) {
draw->pt.middle.general->destroy( draw->pt.middle.general );
draw->pt.middle.general = NULL;
diff --git a/src/gallium/auxiliary/draw/draw_pt_emit.c b/src/gallium/auxiliary/draw/draw_pt_emit.c
index a7917f54b0..ad48fa39a4 100644
--- a/src/gallium/auxiliary/draw/draw_pt_emit.c
+++ b/src/gallium/auxiliary/draw/draw_pt_emit.c
@@ -171,12 +171,14 @@ void draw_pt_emit( struct pt_emit *emit,
translate->set_buffer(translate,
0,
vertex_data,
- stride );
+ stride,
+ ~0);
translate->set_buffer(translate,
1,
&draw->rasterizer->point_size,
- 0);
+ 0,
+ ~0);
translate->run( translate,
0,
@@ -232,11 +234,11 @@ void draw_pt_emit_linear(struct pt_emit *emit,
goto fail;
translate->set_buffer(translate, 0,
- vertex_data, stride);
+ vertex_data, stride, count - 1);
translate->set_buffer(translate, 1,
&draw->rasterizer->point_size,
- 0);
+ 0, ~0);
translate->run(translate,
0,
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch.c b/src/gallium/auxiliary/draw/draw_pt_fetch.c
index 252be5053e..a1347221b5 100644
--- a/src/gallium/auxiliary/draw/draw_pt_fetch.c
+++ b/src/gallium/auxiliary/draw/draw_pt_fetch.c
@@ -149,7 +149,8 @@ void draw_pt_fetch_prepare( struct pt_fetch *fetch,
fetch->translate->set_buffer(fetch->translate,
draw->pt.nr_vertex_buffers,
&vh,
- 0);
+ 0,
+ ~0);
}
}
@@ -172,7 +173,8 @@ void draw_pt_fetch_run( struct pt_fetch *fetch,
i,
((char *)draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
- draw->pt.vertex_buffer[i].stride );
+ draw->pt.vertex_buffer[i].stride,
+ draw->pt.vertex_buffer[i].max_index);
}
translate->run_elts( translate,
@@ -198,7 +200,8 @@ void draw_pt_fetch_run_linear( struct pt_fetch *fetch,
i,
((char *)draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
- draw->pt.vertex_buffer[i].stride );
+ draw->pt.vertex_buffer[i].stride,
+ draw->pt.vertex_buffer[i].max_index);
}
translate->run( translate,
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c b/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c
index 1994ddf2bc..d7735bf1ac 100644
--- a/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c
+++ b/src/gallium/auxiliary/draw/draw_pt_fetch_emit.c
@@ -168,7 +168,8 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
feme->translate->set_buffer(feme->translate,
draw->pt.nr_vertex_buffers,
&feme->point_size,
- 0);
+ 0,
+ ~0);
}
feme->point_size = draw->rasterizer->point_size;
@@ -178,7 +179,8 @@ static void fetch_emit_prepare( struct draw_pt_middle_end *middle,
i,
((char *)draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
- draw->pt.vertex_buffer[i].stride );
+ draw->pt.vertex_buffer[i].stride,
+ draw->pt.vertex_buffer[i].max_index);
}
*max_vertices = (draw->render->max_vertex_buffer_bytes /
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
index 389e2b105e..cbb5b6c960 100644
--- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
+++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_emit.c
@@ -167,7 +167,8 @@ static void fse_prepare( struct draw_pt_middle_end *middle,
i,
((const ubyte *) draw->pt.user.vbuffer[i] +
draw->pt.vertex_buffer[i].buffer_offset),
- draw->pt.vertex_buffer[i].stride );
+ draw->pt.vertex_buffer[i].stride,
+ draw->pt.vertex_buffer[i].max_index );
}
*max_vertices = (draw->render->max_vertex_buffer_bytes /
diff --git a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
index f71271bd91..35913a5995 100644
--- a/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
+++ b/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c
@@ -167,8 +167,6 @@ static void llvm_middle_end_run( struct draw_pt_middle_end *middle,
{
struct llvm_middle_end *fpme = (struct llvm_middle_end *)middle;
struct draw_context *draw = fpme->draw;
- struct draw_vertex_shader *vshader = draw->vs.vertex_shader;
- struct draw_geometry_shader *gshader = draw->gs.geometry_shader;
unsigned opt = fpme->opt;
unsigned alloc_count = align( fetch_count, 4 );
@@ -182,35 +180,13 @@ static void llvm_middle_end_run( struct draw_pt_middle_end *middle,
return;
}
- /* Fetch into our vertex buffer
- */
- draw_pt_fetch_run( fpme->fetch,
- fetch_elts,
- fetch_count,
- (char *)pipeline_verts );
-
- /* Run the shader, note that this overwrites the data[] parts of
- * the pipeline verts. If there is no shader, eg if
- * bypass_vs_clip_and_viewport, then the inputs == outputs, and are
- * already in the correct place.*/
- if (opt & PT_SHADE)
- {
- vshader->run_linear(vshader,
- (const float (*)[4])pipeline_verts->data,
- ( float (*)[4])pipeline_verts->data,
- draw->pt.user.vs_constants,
- fetch_count,
- fpme->vertex_size,
- fpme->vertex_size);
- if (gshader)
- draw_geometry_shader_run(gshader,
- (const float (*)[4])pipeline_verts->data,
- ( float (*)[4])pipeline_verts->data,
- draw->pt.user.gs_constants,
- fetch_count,
- fpme->vertex_size,
- fpme->vertex_size);
- }
+ fpme->current_variant->jit_func_elts( &fpme->llvm->jit_context,
+ pipeline_verts,
+ (const char **)draw->pt.user.vbuffer,
+ fetch_elts,
+ fetch_count,
+ fpme->vertex_size,
+ draw->pt.vertex_buffer );
if (draw_pt_post_vs_run( fpme->post_vs,
pipeline_verts,
@@ -373,7 +349,31 @@ static void llvm_middle_end_finish( struct draw_pt_middle_end *middle )
static void llvm_middle_end_destroy( struct draw_pt_middle_end *middle )
{
struct llvm_middle_end *fpme = (struct llvm_middle_end *)middle;
+ struct draw_context *draw = fpme->draw;
+ struct draw_llvm_variant *variant = NULL;
+ variant = fpme->variants;
+ while(variant) {
+ struct draw_llvm_variant *next = variant->next;
+
+ if (variant->function_elts) {
+ if (variant->function_elts)
+ LLVMFreeMachineCodeForFunction(draw->engine,
+ variant->function_elts);
+ LLVMDeleteFunction(variant->function_elts);
+ }
+
+ if (variant->function) {
+ if (variant->function)
+ LLVMFreeMachineCodeForFunction(draw->engine,
+ variant->function);
+ LLVMDeleteFunction(variant->function);
+ }
+
+ FREE(variant);
+
+ variant = next;
+ }
if (fpme->fetch)
draw_pt_fetch_destroy( fpme->fetch );
diff --git a/src/gallium/auxiliary/draw/draw_vs.c b/src/gallium/auxiliary/draw/draw_vs.c
index cfd5154024..c2832eefa2 100644
--- a/src/gallium/auxiliary/draw/draw_vs.c
+++ b/src/gallium/auxiliary/draw/draw_vs.c
@@ -46,7 +46,7 @@
#include "tgsi/tgsi_dump.h"
#include "tgsi/tgsi_exec.h"
-
+DEBUG_GET_ONCE_BOOL_OPTION(gallium_dump_vs, "GALLIUM_DUMP_VS", FALSE)
void
draw_vs_set_constants(struct draw_context *draw,
@@ -157,7 +157,7 @@ draw_delete_vertex_shader(struct draw_context *draw,
boolean
draw_vs_init( struct draw_context *draw )
{
- draw->dump_vs = debug_get_bool_option("GALLIUM_DUMP_VS", FALSE);
+ draw->dump_vs = debug_get_option_gallium_dump_vs();
draw->vs.machine = tgsi_exec_machine_create();
if (!draw->vs.machine)
diff --git a/src/gallium/auxiliary/draw/draw_vs.h b/src/gallium/auxiliary/draw/draw_vs.h
index f49332352b..6c7e94db43 100644
--- a/src/gallium/auxiliary/draw/draw_vs.h
+++ b/src/gallium/auxiliary/draw/draw_vs.h
@@ -80,7 +80,8 @@ struct draw_vs_varient {
void (*set_buffer)( struct draw_vs_varient *,
unsigned i,
const void *ptr,
- unsigned stride );
+ unsigned stride,
+ unsigned max_stride );
void (PIPE_CDECL *run_linear)( struct draw_vs_varient *shader,
unsigned start,
@@ -168,8 +169,9 @@ draw_create_vs_ppc(struct draw_context *draw,
struct draw_vs_varient_key;
struct draw_vertex_shader;
-struct draw_vs_varient *draw_vs_varient_aos_sse( struct draw_vertex_shader *vs,
- const struct draw_vs_varient_key *key );
+struct draw_vs_varient *
+draw_vs_create_varient_aos_sse( struct draw_vertex_shader *vs,
+ const struct draw_vs_varient_key *key );
@@ -187,8 +189,9 @@ struct translate *draw_vs_get_fetch( struct draw_context *draw,
struct translate *draw_vs_get_emit( struct draw_context *draw,
struct translate_key *key );
-struct draw_vs_varient *draw_vs_varient_generic( struct draw_vertex_shader *vs,
- const struct draw_vs_varient_key *key );
+struct draw_vs_varient *
+draw_vs_create_varient_generic( struct draw_vertex_shader *vs,
+ const struct draw_vs_varient_key *key );
diff --git a/src/gallium/auxiliary/draw/draw_vs_aos.c b/src/gallium/auxiliary/draw/draw_vs_aos.c
index e7121f3654..19f49e34c8 100644
--- a/src/gallium/auxiliary/draw/draw_vs_aos.c
+++ b/src/gallium/auxiliary/draw/draw_vs_aos.c
@@ -2089,13 +2089,21 @@ static boolean build_vertex_program( struct draw_vs_varient_aos_sse *varient,
}
+/** cast wrapper */
+static INLINE struct draw_vs_varient_aos_sse *
+draw_vs_varient_aos_sse(struct draw_vs_varient *varient)
+{
+ return (struct draw_vs_varient_aos_sse *) varient;
+}
+
static void vaos_set_buffer( struct draw_vs_varient *varient,
unsigned buf,
const void *ptr,
- unsigned stride )
+ unsigned stride,
+ unsigned max_stride)
{
- struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+ struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
if (buf < vaos->nr_vb) {
vaos->buffer[buf].base_ptr = (char *)ptr;
@@ -2112,7 +2120,7 @@ static void PIPE_CDECL vaos_run_elts( struct draw_vs_varient *varient,
unsigned count,
void *output_buffer )
{
- struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+ struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
struct aos_machine *machine = vaos->draw->vs.aos_machine;
unsigned i;
@@ -2136,7 +2144,7 @@ static void PIPE_CDECL vaos_run_linear( struct draw_vs_varient *varient,
unsigned count,
void *output_buffer )
{
- struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+ struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
struct aos_machine *machine = vaos->draw->vs.aos_machine;
unsigned i;
@@ -2165,7 +2173,7 @@ static void PIPE_CDECL vaos_run_linear( struct draw_vs_varient *varient,
static void vaos_destroy( struct draw_vs_varient *varient )
{
- struct draw_vs_varient_aos_sse *vaos = (struct draw_vs_varient_aos_sse *)varient;
+ struct draw_vs_varient_aos_sse *vaos = draw_vs_varient_aos_sse(varient);
FREE( vaos->buffer );
@@ -2241,13 +2249,14 @@ static struct draw_vs_varient *varient_aos_sse( struct draw_vertex_shader *vs,
}
-struct draw_vs_varient *draw_vs_varient_aos_sse( struct draw_vertex_shader *vs,
- const struct draw_vs_varient_key *key )
+struct draw_vs_varient *
+draw_vs_create_varient_aos_sse( struct draw_vertex_shader *vs,
+ const struct draw_vs_varient_key *key )
{
struct draw_vs_varient *varient = varient_aos_sse( vs, key );
if (varient == NULL) {
- varient = draw_vs_varient_generic( vs, key );
+ varient = draw_vs_create_varient_generic( vs, key );
}
return varient;
diff --git a/src/gallium/auxiliary/draw/draw_vs_exec.c b/src/gallium/auxiliary/draw/draw_vs_exec.c
index 7deca2b69d..bc34d390da 100644
--- a/src/gallium/auxiliary/draw/draw_vs_exec.c
+++ b/src/gallium/auxiliary/draw/draw_vs_exec.c
@@ -203,7 +203,7 @@ draw_create_vs_exec(struct draw_context *draw,
vs->base.prepare = vs_exec_prepare;
vs->base.run_linear = vs_exec_run_linear;
vs->base.delete = vs_exec_delete;
- vs->base.create_varient = draw_vs_varient_generic;
+ vs->base.create_varient = draw_vs_create_varient_generic;
vs->machine = draw->vs.machine;
return &vs->base;
diff --git a/src/gallium/auxiliary/draw/draw_vs_ppc.c b/src/gallium/auxiliary/draw/draw_vs_ppc.c
index d869eecec5..5df84916c5 100644
--- a/src/gallium/auxiliary/draw/draw_vs_ppc.c
+++ b/src/gallium/auxiliary/draw/draw_vs_ppc.c
@@ -125,7 +125,7 @@ vs_ppc_run_linear( struct draw_vertex_shader *base,
*/
shader->func(inputs_soa, outputs_soa, temps_soa,
(float (*)[4]) shader->base.immediates,
- (const float (*)[4])constants[0],
+ (float (*)[4])constants[0],
ppc_builtin_constants);
/* convert (up to) four output verts from SoA back to AoS format */
@@ -190,7 +190,7 @@ draw_create_vs_ppc(struct draw_context *draw,
vs->base.create_varient = draw_vs_varient_aos_ppc;
else
#endif
- vs->base.create_varient = draw_vs_varient_generic;
+ vs->base.create_varient = draw_vs_create_varient_generic;
vs->base.prepare = vs_ppc_prepare;
vs->base.run_linear = vs_ppc_run_linear;
vs->base.delete = vs_ppc_delete;
diff --git a/src/gallium/auxiliary/draw/draw_vs_sse.c b/src/gallium/auxiliary/draw/draw_vs_sse.c
index 54e6423388..14c95082a9 100644
--- a/src/gallium/auxiliary/draw/draw_vs_sse.c
+++ b/src/gallium/auxiliary/draw/draw_vs_sse.c
@@ -165,9 +165,9 @@ draw_create_vs_sse(struct draw_context *draw,
vs->base.draw = draw;
if (1)
- vs->base.create_varient = draw_vs_varient_aos_sse;
+ vs->base.create_varient = draw_vs_create_varient_aos_sse;
else
- vs->base.create_varient = draw_vs_varient_generic;
+ vs->base.create_varient = draw_vs_create_varient_generic;
vs->base.prepare = vs_sse_prepare;
vs->base.run_linear = vs_sse_run_linear;
vs->base.delete = vs_sse_delete;
diff --git a/src/gallium/auxiliary/draw/draw_vs_varient.c b/src/gallium/auxiliary/draw/draw_vs_varient.c
index 5ed706cb4f..6eb26927f2 100644
--- a/src/gallium/auxiliary/draw/draw_vs_varient.c
+++ b/src/gallium/auxiliary/draw/draw_vs_varient.c
@@ -66,14 +66,16 @@ struct draw_vs_varient_generic {
static void vsvg_set_buffer( struct draw_vs_varient *varient,
unsigned buffer,
const void *ptr,
- unsigned stride )
+ unsigned stride,
+ unsigned max_index )
{
struct draw_vs_varient_generic *vsvg = (struct draw_vs_varient_generic *)varient;
vsvg->fetch->set_buffer(vsvg->fetch,
buffer,
ptr,
- stride);
+ stride,
+ max_index );
}
@@ -172,12 +174,14 @@ static void PIPE_CDECL vsvg_run_elts( struct draw_vs_varient *varient,
vsvg->emit->set_buffer( vsvg->emit,
0,
temp_buffer,
- temp_vertex_stride );
+ temp_vertex_stride,
+ ~0 );
vsvg->emit->set_buffer( vsvg->emit,
1,
&vsvg->draw->rasterizer->point_size,
- 0);
+ 0,
+ ~0 );
vsvg->emit->run( vsvg->emit,
0, count,
@@ -232,12 +236,14 @@ static void PIPE_CDECL vsvg_run_linear( struct draw_vs_varient *varient,
vsvg->emit->set_buffer( vsvg->emit,
0,
temp_buffer,
- temp_vertex_stride );
+ temp_vertex_stride,
+ ~0 );
vsvg->emit->set_buffer( vsvg->emit,
1,
&vsvg->draw->rasterizer->point_size,
- 0);
+ 0,
+ ~0 );
vsvg->emit->run( vsvg->emit,
0, count,
@@ -257,8 +263,9 @@ static void vsvg_destroy( struct draw_vs_varient *varient )
}
-struct draw_vs_varient *draw_vs_varient_generic( struct draw_vertex_shader *vs,
- const struct draw_vs_varient_key *key )
+struct draw_vs_varient *
+draw_vs_create_varient_generic( struct draw_vertex_shader *vs,
+ const struct draw_vs_varient_key *key )
{
unsigned i;
struct translate_key fetch, emit;
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_arit.c b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
index 8e8fcccf56..20ae958714 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_arit.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_arit.c
@@ -1210,6 +1210,14 @@ LLVMValueRef
lp_build_cos(struct lp_build_context *bld,
LLVMValueRef a)
{
+#ifdef PIPE_OS_WINDOWS
+ /*
+ * FIXME: X86 backend translates llvm.cos.v4f32 to 4 calls to CRT's cosf()
+ * which is neither efficient nor does the CRT linkage work on Windows
+ * causing segmentation fault. So simply disable the code for now.
+ */
+ return bld->one;
+#else
const struct lp_type type = bld->type;
LLVMTypeRef vec_type = lp_build_vec_type(type);
char intrinsic[32];
@@ -1220,6 +1228,7 @@ lp_build_cos(struct lp_build_context *bld,
util_snprintf(intrinsic, sizeof intrinsic, "llvm.cos.v%uf%u", type.length, type.width);
return lp_build_intrinsic_unary(bld->builder, intrinsic, vec_type, a);
+#endif
}
@@ -1230,6 +1239,14 @@ LLVMValueRef
lp_build_sin(struct lp_build_context *bld,
LLVMValueRef a)
{
+#ifdef PIPE_OS_WINDOWS
+ /*
+ * FIXME: X86 backend translates llvm.sin.v4f32 to 4 calls to CRT's sinf()
+ * which is neither efficient nor does the CRT linkage work on Windows
+ * causing segmentation fault. So simply disable the code for now.
+ */
+ return bld->zero;
+#else
const struct lp_type type = bld->type;
LLVMTypeRef vec_type = lp_build_vec_type(type);
char intrinsic[32];
@@ -1240,6 +1257,7 @@ lp_build_sin(struct lp_build_context *bld,
util_snprintf(intrinsic, sizeof intrinsic, "llvm.sin.v%uf%u", type.length, type.width);
return lp_build_intrinsic_unary(bld->builder, intrinsic, vec_type, a);
+#endif
}
@@ -1502,8 +1520,10 @@ lp_build_log2_approx(struct lp_build_context *bld,
res = LLVMBuildAdd(bld->builder, logmant, logexp, "");
}
- if(p_exp)
+ if(p_exp) {
+ exp = LLVMBuildBitCast(bld->builder, exp, vec_type, "");
*p_exp = exp;
+ }
if(p_floor_log2)
*p_floor_log2 = logexp;
@@ -1573,8 +1593,10 @@ lp_build_float_log2_approx(struct lp_build_context *bld,
res = LLVMBuildAdd(bld->builder, logmant, logexp, "");
}
- if(p_exp)
+ if(p_exp) {
+ exp = LLVMBuildBitCast(bld->builder, exp, float_type, "");
*p_exp = exp;
+ }
if(p_floor_log2)
*p_floor_log2 = logexp;
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.c b/src/gallium/auxiliary/gallivm/lp_bld_flow.c
index e60ab4f6ba..8f15b1d287 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_flow.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.c
@@ -792,3 +792,78 @@ lp_build_endif(struct lp_build_if_state *ctx)
/* Resume building code at end of the ifthen->merge_block */
LLVMPositionBuilderAtEnd(ctx->builder, ifthen->merge_block);
}
+
+
+/**
+ * Allocate a scalar (or vector) variable.
+ *
+ * Although not strictly part of control flow, control flow has deep impact in
+ * how variables should be allocated.
+ *
+ * The mem2reg optimization pass is the recommended way to dealing with mutable
+ * variables, and SSA. It looks for allocas and if it can handle them, it
+ * promotes them, but only looks for alloca instructions in the entry block of
+ * the function. Being in the entry block guarantees that the alloca is only
+ * executed once, which makes analysis simpler.
+ *
+ * See also:
+ * - http://www.llvm.org/docs/tutorial/OCamlLangImpl7.html#memory
+ */
+LLVMValueRef
+lp_build_alloca(LLVMBuilderRef builder,
+ LLVMTypeRef type,
+ const char *name)
+{
+ LLVMBasicBlockRef current_block = LLVMGetInsertBlock(builder);
+ LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
+ LLVMBasicBlockRef first_block = LLVMGetEntryBasicBlock(function);
+ LLVMValueRef first_instr = LLVMGetFirstInstruction(first_block);
+ LLVMBuilderRef first_builder = LLVMCreateBuilder();
+ LLVMValueRef res;
+
+ LLVMPositionBuilderAtEnd(first_builder, first_block);
+ LLVMPositionBuilderBefore(first_builder, first_instr);
+
+ res = LLVMBuildAlloca(first_builder, type, name);
+
+ LLVMDisposeBuilder(first_builder);
+
+ return res;
+}
+
+
+/**
+ * Allocate an array of scalars/vectors.
+ *
+ * mem2reg pass is not capable of promoting structs or arrays to registers, but
+ * we still put it in the first block anyway as failure to put allocas in the
+ * first block may prevent the X86 backend from successfully align the stack as
+ * required.
+ *
+ * Also the scalarrepl pass is supossedly more powerful and can promote
+ * arrays in many cases.
+ *
+ * See also:
+ * - http://www.llvm.org/docs/tutorial/OCamlLangImpl7.html#memory
+ */
+LLVMValueRef
+lp_build_array_alloca(LLVMBuilderRef builder,
+ LLVMTypeRef type,
+ LLVMValueRef count,
+ const char *name)
+{
+ LLVMBasicBlockRef current_block = LLVMGetInsertBlock(builder);
+ LLVMValueRef function = LLVMGetBasicBlockParent(current_block);
+ LLVMBasicBlockRef first_block = LLVMGetEntryBasicBlock(function);
+ LLVMValueRef first_instr = LLVMGetFirstInstruction(first_block);
+ LLVMBuilderRef first_builder = LLVMCreateBuilder();
+ LLVMValueRef res;
+
+ LLVMPositionBuilderBefore(first_builder, first_instr);
+
+ res = LLVMBuildArrayAlloca(first_builder, type, count, name);
+
+ LLVMDisposeBuilder(first_builder);
+
+ return res;
+}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_flow.h b/src/gallium/auxiliary/gallivm/lp_bld_flow.h
index 745838570c..fffb493a93 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_flow.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_flow.h
@@ -156,5 +156,15 @@ lp_build_endif(struct lp_build_if_state *ctx);
LLVMBasicBlockRef
lp_build_insert_new_block(LLVMBuilderRef builder, const char *name);
+LLVMValueRef
+lp_build_alloca(LLVMBuilderRef builder,
+ LLVMTypeRef type,
+ const char *name);
+
+LLVMValueRef
+lp_build_array_alloca(LLVMBuilderRef builder,
+ LLVMTypeRef type,
+ LLVMValueRef count,
+ const char *name);
#endif /* !LP_BLD_FLOW_H */
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
index a5a019fa92..6257e9a404 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
@@ -40,6 +40,7 @@
#include "lp_bld_init.h"
#include "lp_bld_type.h"
+#include "lp_bld_flow.h"
#include "lp_bld_format.h"
@@ -370,11 +371,7 @@ lp_build_fetch_rgba_aos(LLVMBuilderRef builder,
LLVMAddGlobalMapping(lp_build_engine, function, format_desc->fetch_rgba_float);
}
- /*
- * XXX: this should better go to the first block in the function
- */
-
- tmp = LLVMBuildAlloca(builder, LLVMVectorType(LLVMFloatType(), 4), "");
+ tmp = lp_build_alloca(builder, LLVMVectorType(LLVMFloatType(), 4), "");
/*
* Invoke format_desc->fetch_rgba_float() for each pixel and insert the result
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_init.c b/src/gallium/auxiliary/gallivm/lp_bld_init.c
index de07c222a3..5067d0a164 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_init.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_init.c
@@ -27,6 +27,7 @@
#include "pipe/p_compiler.h"
+#include "util/u_cpu_detect.h"
#include "util/u_debug.h"
#include "lp_bld_init.h"
@@ -62,6 +63,15 @@ lp_build_init(void)
if (!lp_build_target)
lp_build_target = LLVMGetExecutionEngineTargetData(lp_build_engine);
+
+ util_cpu_detect();
+
+#if 0
+ /* For simulating less capable machines */
+ util_cpu_caps.has_sse3 = 0;
+ util_cpu_caps.has_ssse3 = 0;
+ util_cpu_caps.has_sse4_1 = 0;
+#endif
}
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_logic.c b/src/gallium/auxiliary/gallivm/lp_bld_logic.c
index a3b6970116..d13fa1a5d0 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_logic.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_logic.c
@@ -472,18 +472,6 @@ lp_build_select_aos(struct lp_build_context *bld,
}
}
-LLVMValueRef
-lp_build_alloca(struct lp_build_context *bld)
-{
- const struct lp_type type = bld->type;
-
- if (type.length > 1) { /*vector*/
- return LLVMBuildAlloca(bld->builder, lp_build_vec_type(type), "");
- } else { /*scalar*/
- return LLVMBuildAlloca(bld->builder, lp_build_elem_type(type), "");
- }
-}
-
/** Return (a & ~b) */
LLVMValueRef
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_logic.h b/src/gallium/auxiliary/gallivm/lp_bld_logic.h
index 00a8c75019..29f9fc3b20 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_logic.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_logic.h
@@ -76,9 +76,6 @@ lp_build_select_aos(struct lp_build_context *bld,
LLVMValueRef b,
const boolean cond[4]);
-LLVMValueRef
-lp_build_alloca(struct lp_build_context *bld);
-
LLVMValueRef
lp_build_andc(struct lp_build_context *bld, LLVMValueRef a, LLVMValueRef b);
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.c b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
index eb75b9b393..195a4953ab 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.c
@@ -77,6 +77,11 @@ lp_sampler_static_state(struct lp_sampler_static_state *state,
*/
state->format = view->format;
+ state->swizzle_r = view->swizzle_r;
+ state->swizzle_g = view->swizzle_g;
+ state->swizzle_b = view->swizzle_b;
+ state->swizzle_a = view->swizzle_a;
+
state->target = texture->target;
state->pot_width = util_is_pot(texture->width0);
state->pot_height = util_is_pot(texture->height0);
@@ -181,54 +186,16 @@ lp_build_sample_offset(struct lp_build_context *bld,
LLVMValueRef offset;
x_stride = lp_build_const_vec(bld->type, format_desc->block.bits/8);
+ offset = lp_build_mul(bld, x, x_stride);
- if(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) {
- LLVMValueRef x_lo, x_hi;
- LLVMValueRef y_lo, y_hi;
- LLVMValueRef x_stride_lo, x_stride_hi;
- LLVMValueRef y_stride_lo, y_stride_hi;
- LLVMValueRef x_offset_lo, x_offset_hi;
- LLVMValueRef y_offset_lo, y_offset_hi;
- LLVMValueRef offset_lo, offset_hi;
-
- /* XXX 1D & 3D addressing not done yet */
- assert(!z);
- assert(!z_stride);
-
- x_lo = LLVMBuildAnd(bld->builder, x, bld->one, "");
- y_lo = LLVMBuildAnd(bld->builder, y, bld->one, "");
-
- x_hi = LLVMBuildLShr(bld->builder, x, bld->one, "");
- y_hi = LLVMBuildLShr(bld->builder, y, bld->one, "");
-
- x_stride_lo = x_stride;
- y_stride_lo = lp_build_const_vec(bld->type, 2*format_desc->block.bits/8);
-
- x_stride_hi = lp_build_const_vec(bld->type, 4*format_desc->block.bits/8);
- y_stride_hi = LLVMBuildShl(bld->builder, y_stride, bld->one, "");
-
- x_offset_lo = lp_build_mul(bld, x_lo, x_stride_lo);
- y_offset_lo = lp_build_mul(bld, y_lo, y_stride_lo);
- offset_lo = lp_build_add(bld, x_offset_lo, y_offset_lo);
-
- x_offset_hi = lp_build_mul(bld, x_hi, x_stride_hi);
- y_offset_hi = lp_build_mul(bld, y_hi, y_stride_hi);
- offset_hi = lp_build_add(bld, x_offset_hi, y_offset_hi);
-
- offset = lp_build_add(bld, offset_hi, offset_lo);
+ if (y && y_stride) {
+ LLVMValueRef y_offset = lp_build_mul(bld, y, y_stride);
+ offset = lp_build_add(bld, offset, y_offset);
}
- else {
- offset = lp_build_mul(bld, x, x_stride);
-
- if (y && y_stride) {
- LLVMValueRef y_offset = lp_build_mul(bld, y, y_stride);
- offset = lp_build_add(bld, offset, y_offset);
- }
-
- if (z && z_stride) {
- LLVMValueRef z_offset = lp_build_mul(bld, z, z_stride);
- offset = lp_build_add(bld, offset, z_offset);
- }
+
+ if (z && z_stride) {
+ LLVMValueRef z_offset = lp_build_mul(bld, z, z_stride);
+ offset = lp_build_add(bld, offset, z_offset);
}
return offset;
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample.h b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
index e287376385..8ceb20473d 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample.h
@@ -54,8 +54,14 @@ struct lp_build_context;
*/
struct lp_sampler_static_state
{
- /* pipe_texture's state */
+ /* pipe_sampler_view's state */
enum pipe_format format;
+ unsigned swizzle_r:3;
+ unsigned swizzle_g:3;
+ unsigned swizzle_b:3;
+ unsigned swizzle_a:3;
+
+ /* pipe_texture's state */
unsigned target:3;
unsigned pot_width:1;
unsigned pot_height:1;
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
index c9b613e21c..54c0ad7ce4 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_sample_soa.c
@@ -185,6 +185,53 @@ texture_dims(enum pipe_texture_target tex)
}
+static LLVMValueRef
+lp_build_swizzle_chan_soa(struct lp_type type,
+ const LLVMValueRef *unswizzled,
+ enum util_format_swizzle swizzle)
+{
+ switch (swizzle) {
+ case PIPE_SWIZZLE_RED:
+ case PIPE_SWIZZLE_GREEN:
+ case PIPE_SWIZZLE_BLUE:
+ case PIPE_SWIZZLE_ALPHA:
+ return unswizzled[swizzle];
+ case PIPE_SWIZZLE_ZERO:
+ return lp_build_zero(type);
+ case PIPE_SWIZZLE_ONE:
+ return lp_build_one(type);
+ default:
+ assert(0);
+ return lp_build_undef(type);
+ }
+}
+
+
+static void
+lp_build_swizzle_soa(struct lp_build_sample_context *bld,
+ LLVMValueRef *texel)
+{
+ LLVMValueRef unswizzled[4];
+ unsigned char swizzles[4];
+ unsigned chan;
+
+ for (chan = 0; chan < 4; ++chan) {
+ unswizzled[chan] = texel[chan];
+ }
+
+ swizzles[0] = bld->static_state->swizzle_r;
+ swizzles[1] = bld->static_state->swizzle_g;
+ swizzles[2] = bld->static_state->swizzle_b;
+ swizzles[3] = bld->static_state->swizzle_a;
+
+ for (chan = 0; chan < 4; ++chan) {
+ unsigned swizzle = swizzles[chan];
+ texel[chan] = lp_build_swizzle_chan_soa(bld->texel_type,
+ unswizzled, swizzle);
+ }
+}
+
+
/**
* Generate code to fetch a texel from a texture at int coords (x, y, z).
@@ -278,6 +325,18 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
bld->format_desc,
x, y, z, y_stride, z_stride);
+ if (use_border) {
+ /* If we can sample the border color, it means that texcoords may
+ * lie outside the bounds of the texture image. We need to do
+ * something to prevent reading out of bounds and causing a segfault.
+ *
+ * Simply AND the texture coords with !use_border. This will cause
+ * coords which are out of bounds to become zero. Zero's guaranteed
+ * to be inside the texture image.
+ */
+ offset = lp_build_andc(&bld->uint_coord_bld, offset, use_border);
+ }
+
lp_build_fetch_rgba_soa(bld->builder,
bld->format_desc,
bld->texel_type,
@@ -285,6 +344,8 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
i, j,
texel);
+ lp_build_swizzle_soa(bld, texel);
+
/*
* Note: if we find an app which frequently samples the texture border
* we might want to implement a true conditional here to avoid sampling
@@ -842,6 +903,7 @@ lp_build_minify(struct lp_build_sample_context *bld,
* \param s vector of texcoord s values
* \param t vector of texcoord t values
* \param r vector of texcoord r values
+ * \param shader_lod_bias vector float with the shader lod bias,
* \param width scalar int texture width
* \param height scalar int texture height
* \param depth scalar int texture depth
@@ -851,6 +913,7 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
LLVMValueRef s,
LLVMValueRef t,
LLVMValueRef r,
+ LLVMValueRef shader_lod_bias,
LLVMValueRef width,
LLVMValueRef height,
LLVMValueRef depth)
@@ -865,8 +928,8 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
else {
const int dims = texture_dims(bld->static_state->target);
struct lp_build_context *float_bld = &bld->float_bld;
- LLVMValueRef lod_bias = LLVMConstReal(LLVMFloatType(),
- bld->static_state->lod_bias);
+ LLVMValueRef sampler_lod_bias = LLVMConstReal(LLVMFloatType(),
+ bld->static_state->lod_bias);
LLVMValueRef min_lod = LLVMConstReal(LLVMFloatType(),
bld->static_state->min_lod);
LLVMValueRef max_lod = LLVMConstReal(LLVMFloatType(),
@@ -940,8 +1003,14 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
/* compute lod = log2(rho) */
lod = lp_build_log2(float_bld, rho);
- /* add lod bias */
- lod = LLVMBuildAdd(bld->builder, lod, lod_bias, "LOD bias");
+ /* add sampler lod bias */
+ lod = LLVMBuildAdd(bld->builder, lod, sampler_lod_bias, "sampler LOD bias");
+
+ /* add shader lod bias */
+ /* XXX for now we take only the first element since our lod is scalar */
+ shader_lod_bias = LLVMBuildExtractElement(bld->builder, shader_lod_bias,
+ LLVMConstInt(LLVMInt32Type(), 0, 0), "");
+ lod = LLVMBuildAdd(bld->builder, lod, shader_lod_bias, "shader LOD bias");
/* clamp lod */
lod = lp_build_clamp(float_bld, lod, min_lod, max_lod);
@@ -1527,6 +1596,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
LLVMValueRef s,
LLVMValueRef t,
LLVMValueRef r,
+ LLVMValueRef lodbias,
LLVMValueRef width,
LLVMValueRef height,
LLVMValueRef depth,
@@ -1564,7 +1634,7 @@ lp_build_sample_general(struct lp_build_sample_context *bld,
/* Need to compute lod either to choose mipmap levels or to
* distinguish between minification/magnification with one mipmap level.
*/
- lod = lp_build_lod_selector(bld, s, t, r, width, height, depth);
+ lod = lp_build_lod_selector(bld, s, t, r, lodbias, width, height, depth);
}
/*
@@ -1772,6 +1842,11 @@ lp_build_sample_2d_linear_aos(struct lp_build_sample_context *bld,
LLVMValueRef unswizzled[4];
LLVMValueRef stride;
+ assert(bld->static_state->target == PIPE_TEXTURE_2D);
+ assert(bld->static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR);
+ assert(bld->static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR);
+ assert(bld->static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE);
+
lp_build_context_init(&i32, builder, lp_type_int_vec(32));
lp_build_context_init(&h16, builder, lp_type_ufixed(16));
lp_build_context_init(&u8n, builder, lp_type_unorm(8));
@@ -1945,6 +2020,8 @@ lp_build_sample_2d_linear_aos(struct lp_build_sample_context *bld,
lp_build_format_swizzle_soa(bld->format_desc,
bld->texel_type, unswizzled,
texel);
+
+ lp_build_swizzle_soa(bld, texel);
}
@@ -1984,6 +2061,24 @@ lp_build_sample_compare(struct lp_build_sample_context *bld,
/**
+ * Just set texels to white instead of actually sampling the texture.
+ * For debugging.
+ */
+static void
+lp_build_sample_nop(struct lp_build_sample_context *bld,
+ LLVMValueRef *texel)
+{
+ struct lp_build_context *texel_bld = &bld->texel_bld;
+ unsigned chan;
+
+ for (chan = 0; chan < 4; chan++) {
+ /*lp_bld_mov(texel_bld, texel, texel_bld->one);*/
+ texel[chan] = texel_bld->one;
+ }
+}
+
+
+/**
* Build texture sampling code.
* 'texel' will return a vector of four LLVMValueRefs corresponding to
* R, G, B, A.
@@ -2048,19 +2143,23 @@ lp_build_sample_soa(LLVMBuilderRef builder,
height_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, height);
depth_vec = lp_build_broadcast_scalar(&bld.uint_coord_bld, depth);
- if (util_format_is_rgba8_variant(bld.format_desc) &&
- static_state->target == PIPE_TEXTURE_2D &&
- static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR &&
- static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR &&
- static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE &&
- is_simple_wrap_mode(static_state->wrap_s) &&
- is_simple_wrap_mode(static_state->wrap_t)) {
+ if (0) {
+ /* For debug: no-op texture sampling */
+ lp_build_sample_nop(&bld, texel);
+ }
+ else if (util_format_is_rgba8_variant(bld.format_desc) &&
+ static_state->target == PIPE_TEXTURE_2D &&
+ static_state->min_img_filter == PIPE_TEX_FILTER_LINEAR &&
+ static_state->mag_img_filter == PIPE_TEX_FILTER_LINEAR &&
+ static_state->min_mip_filter == PIPE_TEX_MIPFILTER_NONE &&
+ is_simple_wrap_mode(static_state->wrap_s) &&
+ is_simple_wrap_mode(static_state->wrap_t)) {
/* special case */
lp_build_sample_2d_linear_aos(&bld, s, t, width_vec, height_vec,
row_stride_array, data_array, texel);
}
else {
- lp_build_sample_general(&bld, unit, s, t, r,
+ lp_build_sample_general(&bld, unit, s, t, r, lodbias,
width, height, depth,
width_vec, height_vec, depth_vec,
row_stride_array, img_stride_array,
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
index 63b938bfa9..2eac5da6c6 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
@@ -39,6 +39,7 @@
struct tgsi_token;
+struct tgsi_shader_info;
struct lp_type;
struct lp_build_context;
struct lp_build_mask_context;
@@ -78,7 +79,8 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
const LLVMValueRef *pos,
const LLVMValueRef (*inputs)[4],
LLVMValueRef (*outputs)[4],
- struct lp_build_sampler_soa *sampler);
+ struct lp_build_sampler_soa *sampler,
+ struct tgsi_shader_info *info);
#endif /* LP_BLD_TGSI_H */
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
index 44f8aec1bf..d3c769e28b 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
@@ -46,6 +46,7 @@
#include "tgsi/tgsi_parse.h"
#include "tgsi/tgsi_util.h"
#include "tgsi/tgsi_exec.h"
+#include "tgsi/tgsi_scan.h"
#include "lp_bld_type.h"
#include "lp_bld_const.h"
#include "lp_bld_arit.h"
@@ -125,6 +126,12 @@ struct lp_build_tgsi_soa_context
LLVMValueRef immediates[LP_MAX_IMMEDIATES][NUM_CHANNELS];
LLVMValueRef temps[LP_MAX_TEMPS][NUM_CHANNELS];
+ LLVMValueRef addr[LP_MAX_TEMPS][NUM_CHANNELS];
+
+ /* we allocate an array of temps if we have indirect
+ * addressing and then the temps above is unused */
+ LLVMValueRef temps_array;
+ boolean has_indirect_addressing;
struct lp_build_mask_context *mask;
struct lp_exec_mask exec_mask;
@@ -169,8 +176,7 @@ static void lp_exec_mask_init(struct lp_exec_mask *mask, struct lp_build_context
static void lp_exec_mask_update(struct lp_exec_mask *mask)
{
if (mask->loop_stack_size) {
- /*for loops we need to update the entire mask at
- * runtime */
+ /*for loops we need to update the entire mask at runtime */
LLVMValueRef tmp;
assert(mask->break_mask);
tmp = LLVMBuildAnd(mask->bld->builder,
@@ -232,6 +238,9 @@ static void lp_exec_bgnloop(struct lp_exec_mask *mask)
mask->break_mask = LLVMConstAllOnes(mask->int_vec_type);
if (mask->cond_stack_size == 0)
mask->cond_mask = LLVMConstAllOnes(mask->int_vec_type);
+
+ mask->break_stack[mask->break_stack_size++] = mask->break_mask;
+ mask->cont_stack[mask->cont_stack_size++] = mask->cont_mask;
mask->loop_stack[mask->loop_stack_size++] = mask->loop_block;
mask->loop_block = lp_build_insert_new_block(mask->bld->builder, "bgnloop");
LLVMBuildBr(mask->bld->builder, mask->loop_block);
@@ -246,7 +255,10 @@ static void lp_exec_break(struct lp_exec_mask *mask)
mask->exec_mask,
"break");
- mask->break_stack[mask->break_stack_size++] = mask->break_mask;
+ /* mask->break_stack_size > 1 implies that we encountered a break
+ * statemant already and if that's the case we want to make sure
+ * our mask is a combination of the previous break and the current
+ * execution mask */
if (mask->break_stack_size > 1) {
mask->break_mask = LLVMBuildAnd(mask->bld->builder,
mask->break_mask,
@@ -263,7 +275,6 @@ static void lp_exec_continue(struct lp_exec_mask *mask)
mask->exec_mask,
"");
- mask->cont_stack[mask->cont_stack_size++] = mask->cont_mask;
if (mask->cont_stack_size > 1) {
mask->cont_mask = LLVMBuildAnd(mask->bld->builder,
mask->cont_mask,
@@ -299,17 +310,23 @@ static void lp_exec_endloop(struct lp_exec_mask *mask)
LLVMPositionBuilderAtEnd(mask->bld->builder, endloop);
mask->loop_block = mask->loop_stack[--mask->loop_stack_size];
- /* pop the break mask */
+ /* pop the cont mask */
if (mask->cont_stack_size) {
mask->cont_mask = mask->cont_stack[--mask->cont_stack_size];
}
+ /* pop the break mask */
if (mask->break_stack_size) {
- mask->break_mask = mask->cont_stack[--mask->break_stack_size];
+ mask->break_mask = mask->break_stack[--mask->break_stack_size];
}
lp_exec_mask_update(mask);
}
+/* stores val into an address pointed to by dst.
+ * mask->exec_mask is used to figure out which bits of val
+ * should be stored into the address
+ * (0 means don't store this bit, 1 means do store).
+ */
static void lp_exec_mask_store(struct lp_exec_mask *mask,
LLVMValueRef val,
LLVMValueRef dst)
@@ -347,6 +364,23 @@ emit_ddy(struct lp_build_tgsi_soa_context *bld,
return lp_build_sub(&bld->base, src_top, src_bottom);
}
+static LLVMValueRef
+get_temp_ptr(struct lp_build_tgsi_soa_context *bld,
+ unsigned index,
+ unsigned swizzle,
+ boolean is_indirect,
+ LLVMValueRef addr)
+{
+ if (!bld->has_indirect_addressing) {
+ return bld->temps[index][swizzle];
+ } else {
+ LLVMValueRef lindex =
+ LLVMConstInt(LLVMInt32Type(), index*4 + swizzle, 0);
+ if (is_indirect)
+ lindex = lp_build_add(&bld->base, lindex, addr);
+ return LLVMBuildGEP(bld->base.builder, bld->temps_array, &lindex, 1, "");
+ }
+}
/**
* Register fetch.
@@ -361,6 +395,7 @@ emit_fetch(
const struct tgsi_full_src_register *reg = &inst->Src[index];
unsigned swizzle = tgsi_util_get_full_src_register_swizzle( reg, chan_index );
LLVMValueRef res;
+ LLVMValueRef addr;
switch (swizzle) {
case TGSI_SWIZZLE_X:
@@ -368,11 +403,34 @@ emit_fetch(
case TGSI_SWIZZLE_Z:
case TGSI_SWIZZLE_W:
+ if (reg->Register.Indirect) {
+ LLVMTypeRef int_vec_type = lp_build_int_vec_type(bld->base.type);
+ unsigned swizzle = tgsi_util_get_src_register_swizzle( &reg->Indirect, chan_index );
+ addr = LLVMBuildLoad(bld->base.builder,
+ bld->addr[reg->Indirect.Index][swizzle],
+ "");
+ /* for indexing we want integers */
+ addr = LLVMBuildFPToSI(bld->base.builder, addr,
+ int_vec_type, "");
+ addr = LLVMBuildExtractElement(bld->base.builder,
+ addr, LLVMConstInt(LLVMInt32Type(), 0, 0),
+ "");
+ addr = lp_build_mul(&bld->base, addr, LLVMConstInt(LLVMInt32Type(), 4, 0));
+ }
+
switch (reg->Register.File) {
case TGSI_FILE_CONSTANT: {
LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), reg->Register.Index*4 + swizzle, 0);
- LLVMValueRef scalar_ptr = LLVMBuildGEP(bld->base.builder, bld->consts_ptr, &index, 1, "");
- LLVMValueRef scalar = LLVMBuildLoad(bld->base.builder, scalar_ptr, "");
+ LLVMValueRef scalar, scalar_ptr;
+
+ if (reg->Register.Indirect) {
+ /*lp_build_printf(bld->base.builder,
+ "\taddr = %d\n", addr);*/
+ index = lp_build_add(&bld->base, index, addr);
+ }
+ scalar_ptr = LLVMBuildGEP(bld->base.builder, bld->consts_ptr, &index, 1, "");
+ scalar = LLVMBuildLoad(bld->base.builder, scalar_ptr, "");
+
res = lp_build_broadcast_scalar(&bld->base, scalar);
break;
}
@@ -387,11 +445,16 @@ emit_fetch(
assert(res);
break;
- case TGSI_FILE_TEMPORARY:
- res = LLVMBuildLoad(bld->base.builder, bld->temps[reg->Register.Index][swizzle], "");
+ case TGSI_FILE_TEMPORARY: {
+ LLVMValueRef temp_ptr = get_temp_ptr(bld, reg->Register.Index,
+ swizzle,
+ reg->Register.Indirect,
+ addr);
+ res = LLVMBuildLoad(bld->base.builder, temp_ptr, "");
if(!res)
return bld->base.undef;
break;
+ }
default:
assert( 0 );
@@ -469,6 +532,7 @@ emit_store(
LLVMValueRef value)
{
const struct tgsi_full_dst_register *reg = &inst->Dst[index];
+ LLVMValueRef addr;
switch( inst->Instruction.Saturate ) {
case TGSI_SAT_NONE:
@@ -488,20 +552,39 @@ emit_store(
assert(0);
}
+ if (reg->Register.Indirect) {
+ LLVMTypeRef int_vec_type = lp_build_int_vec_type(bld->base.type);
+ unsigned swizzle = tgsi_util_get_src_register_swizzle( &reg->Indirect, chan_index );
+ addr = LLVMBuildLoad(bld->base.builder,
+ bld->addr[reg->Indirect.Index][swizzle],
+ "");
+ /* for indexing we want integers */
+ addr = LLVMBuildFPToSI(bld->base.builder, addr,
+ int_vec_type, "");
+ addr = LLVMBuildExtractElement(bld->base.builder,
+ addr, LLVMConstInt(LLVMInt32Type(), 0, 0),
+ "");
+ addr = lp_build_mul(&bld->base, addr, LLVMConstInt(LLVMInt32Type(), 4, 0));
+ }
+
switch( reg->Register.File ) {
case TGSI_FILE_OUTPUT:
lp_exec_mask_store(&bld->exec_mask, value,
bld->outputs[reg->Register.Index][chan_index]);
break;
- case TGSI_FILE_TEMPORARY:
- lp_exec_mask_store(&bld->exec_mask, value,
- bld->temps[reg->Register.Index][chan_index]);
+ case TGSI_FILE_TEMPORARY: {
+ LLVMValueRef temp_ptr = get_temp_ptr(bld, reg->Register.Index,
+ chan_index,
+ reg->Register.Indirect,
+ addr);
+ lp_exec_mask_store(&bld->exec_mask, value, temp_ptr);
break;
+ }
case TGSI_FILE_ADDRESS:
- /* FIXME */
- assert(0);
+ lp_exec_mask_store(&bld->exec_mask, value,
+ bld->addr[reg->Indirect.Index][chan_index]);
break;
case TGSI_FILE_PREDICATE:
@@ -656,62 +739,42 @@ emit_kilp(struct lp_build_tgsi_soa_context *bld,
lp_build_mask_update(bld->mask, mask);
}
-
-/**
- * Check if inst src/dest regs use indirect addressing into temporary
- * register file.
- */
-static boolean
-indirect_temp_reference(const struct tgsi_full_instruction *inst)
-{
- uint i;
- for (i = 0; i < inst->Instruction.NumSrcRegs; i++) {
- const struct tgsi_full_src_register *reg = &inst->Src[i];
- if (reg->Register.File == TGSI_FILE_TEMPORARY &&
- reg->Register.Indirect)
- return TRUE;
- }
- for (i = 0; i < inst->Instruction.NumDstRegs; i++) {
- const struct tgsi_full_dst_register *reg = &inst->Dst[i];
- if (reg->Register.File == TGSI_FILE_TEMPORARY &&
- reg->Register.Indirect)
- return TRUE;
- }
- return FALSE;
-}
-
static int
emit_declaration(
struct lp_build_tgsi_soa_context *bld,
const struct tgsi_full_declaration *decl)
{
+ LLVMTypeRef vec_type = lp_build_vec_type(bld->base.type);
+
unsigned first = decl->Range.First;
unsigned last = decl->Range.Last;
unsigned idx, i;
- LLVMBasicBlockRef current_block =
- LLVMGetInsertBlock(bld->base.builder);
- LLVMBasicBlockRef first_block =
- LLVMGetEntryBasicBlock(
- LLVMGetBasicBlockParent(current_block));
- LLVMValueRef first_inst =
- LLVMGetFirstInstruction(first_block);
-
- /* we want alloca's to be the first instruction
- * in the function so we need to rewind the builder
- * to the very beginning */
- LLVMPositionBuilderBefore(bld->base.builder,
- first_inst);
for (idx = first; idx <= last; ++idx) {
switch (decl->Declaration.File) {
case TGSI_FILE_TEMPORARY:
- for (i = 0; i < NUM_CHANNELS; i++)
- bld->temps[idx][i] = lp_build_alloca(&bld->base);
+ if (bld->has_indirect_addressing) {
+ LLVMValueRef val = LLVMConstInt(LLVMInt32Type(),
+ last*4 + 4, 0);
+ bld->temps_array = lp_build_array_alloca(bld->base.builder,
+ vec_type, val, "");
+ } else {
+ for (i = 0; i < NUM_CHANNELS; i++)
+ bld->temps[idx][i] = lp_build_alloca(bld->base.builder,
+ vec_type, "");
+ }
break;
case TGSI_FILE_OUTPUT:
for (i = 0; i < NUM_CHANNELS; i++)
- bld->outputs[idx][i] = lp_build_alloca(&bld->base);
+ bld->outputs[idx][i] = lp_build_alloca(bld->base.builder,
+ vec_type, "");
+ break;
+
+ case TGSI_FILE_ADDRESS:
+ for (i = 0; i < NUM_CHANNELS; i++)
+ bld->addr[idx][i] = lp_build_alloca(bld->base.builder,
+ vec_type, "");
break;
default:
@@ -720,8 +783,6 @@ emit_declaration(
}
}
- LLVMPositionBuilderAtEnd(bld->base.builder,
- current_block);
return TRUE;
}
@@ -747,10 +808,6 @@ emit_instruction(
LLVMValueRef res;
LLVMValueRef dst0[NUM_CHANNELS];
- /* we can't handle indirect addressing into temp register file yet */
- if (indirect_temp_reference(inst))
- return FALSE;
-
/*
* Stores and write masks are handled in a general fashion after the long
* instruction opcode switch statement.
@@ -770,17 +827,13 @@ emit_instruction(
}
switch (inst->Instruction.Opcode) {
-#if 0
case TGSI_OPCODE_ARL:
- /* FIXME */
FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
tmp0 = emit_fetch( bld, inst, 0, chan_index );
- emit_flr(bld, 0, 0);
- emit_f2it( bld, 0 );
+ tmp0 = lp_build_floor(&bld->base, tmp0);
dst0[chan_index] = tmp0;
}
break;
-#endif
case TGSI_OPCODE_MOV:
FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
@@ -1350,17 +1403,13 @@ emit_instruction(
return FALSE;
break;
-#if 0
case TGSI_OPCODE_ARR:
- /* FIXME */
FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
tmp0 = emit_fetch( bld, inst, 0, chan_index );
- emit_rnd( bld, 0, 0 );
- emit_f2it( bld, 0 );
+ tmp0 = lp_build_round(&bld->base, tmp0);
dst0[chan_index] = tmp0;
}
break;
-#endif
case TGSI_OPCODE_BRA:
/* deprecated */
@@ -1540,22 +1589,10 @@ emit_instruction(
lp_exec_mask_cond_push(&bld->exec_mask, tmp0);
break;
- case TGSI_OPCODE_BGNFOR:
- /* deprecated */
- assert(0);
- return FALSE;
- break;
-
case TGSI_OPCODE_BGNLOOP:
lp_exec_bgnloop(&bld->exec_mask);
break;
- case TGSI_OPCODE_REP:
- /* deprecated */
- assert(0);
- return FALSE;
- break;
-
case TGSI_OPCODE_ELSE:
lp_exec_mask_cond_invert(&bld->exec_mask);
break;
@@ -1564,22 +1601,10 @@ emit_instruction(
lp_exec_mask_cond_pop(&bld->exec_mask);
break;
- case TGSI_OPCODE_ENDFOR:
- /* deprecated */
- assert(0);
- return FALSE;
- break;
-
case TGSI_OPCODE_ENDLOOP:
lp_exec_endloop(&bld->exec_mask);
break;
- case TGSI_OPCODE_ENDREP:
- /* deprecated */
- assert(0);
- return FALSE;
- break;
-
case TGSI_OPCODE_PUSHA:
/* deprecated? */
assert(0);
@@ -1710,7 +1735,8 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
const LLVMValueRef *pos,
const LLVMValueRef (*inputs)[NUM_CHANNELS],
LLVMValueRef (*outputs)[NUM_CHANNELS],
- struct lp_build_sampler_soa *sampler)
+ struct lp_build_sampler_soa *sampler,
+ struct tgsi_shader_info *info)
{
struct lp_build_tgsi_soa_context bld;
struct tgsi_parse_context parse;
@@ -1726,6 +1752,8 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
bld.outputs = outputs;
bld.consts_ptr = consts_ptr;
bld.sampler = sampler;
+ bld.has_indirect_addressing = info->opcode_count[TGSI_OPCODE_ARR] > 0 ||
+ info->opcode_count[TGSI_OPCODE_ARL] > 0;
lp_exec_mask_init(&bld.exec_mask, &bld.base);
@@ -1746,10 +1774,10 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
case TGSI_TOKEN_TYPE_INSTRUCTION:
{
unsigned opcode = parse.FullToken.FullInstruction.Instruction.Opcode;
- const struct tgsi_opcode_info *info = tgsi_get_opcode_info(opcode);
- if (!emit_instruction( &bld, &parse.FullToken.FullInstruction, info ))
+ const struct tgsi_opcode_info *opcode_info = tgsi_get_opcode_info(opcode);
+ if (!emit_instruction( &bld, &parse.FullToken.FullInstruction, opcode_info ))
_debug_printf("warning: failed to translate tgsi opcode %s to LLVM\n",
- info ? info->mnemonic : "<invalid>");
+ opcode_info->mnemonic);
}
break;
diff --git a/src/gallium/auxiliary/os/os_thread.h b/src/gallium/auxiliary/os/os_thread.h
index 07a4268fc0..c09e8a7a76 100644
--- a/src/gallium/auxiliary/os/os_thread.h
+++ b/src/gallium/auxiliary/os/os_thread.h
@@ -302,6 +302,7 @@ static INLINE void pipe_barrier_wait(pipe_barrier *barrier)
typedef struct {
unsigned count;
unsigned waiters;
+ uint64_t sequence;
pipe_mutex mutex;
pipe_condvar condvar;
} pipe_barrier;
@@ -310,6 +311,7 @@ static INLINE void pipe_barrier_init(pipe_barrier *barrier, unsigned count)
{
barrier->count = count;
barrier->waiters = 0;
+ barrier->sequence = 0;
pipe_mutex_init(barrier->mutex);
pipe_condvar_init(barrier->condvar);
}
@@ -329,9 +331,14 @@ static INLINE void pipe_barrier_wait(pipe_barrier *barrier)
barrier->waiters++;
if (barrier->waiters < barrier->count) {
- pipe_condvar_wait(barrier->condvar, barrier->mutex);
+ uint64_t sequence = barrier->sequence;
+
+ do {
+ pipe_condvar_wait(barrier->condvar, barrier->mutex);
+ } while (sequence == barrier->sequence);
} else {
barrier->waiters = 0;
+ barrier->sequence++;
pipe_condvar_broadcast(barrier->condvar);
}
diff --git a/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt b/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt
index 080fd4c731..5d9eed9258 100644
--- a/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt
+++ b/src/gallium/auxiliary/tgsi/tgsi-instruction-set.txt
@@ -661,25 +661,6 @@ TGSI Instruction Specification
TBD
-1.9.8 BGNFOR - Begin a For-Loop
-
- dst.x = floor(src.x)
- dst.y = floor(src.y)
- dst.z = floor(src.z)
-
- if (dst.y <= 0)
- pc = [matching ENDFOR] + 1
- endif
-
- Note: The destination must be a loop register.
- The source must be a constant register.
-
-
-1.9.9 REP - Repeat
-
- TBD
-
-
1.9.10 ELSE - Else
TBD
@@ -690,23 +671,6 @@ TGSI Instruction Specification
TBD
-1.9.12 ENDFOR - End a For-Loop
-
- dst.x = dst.x + dst.z
- dst.y = dst.y - 1.0
-
- if (dst.y > 0)
- pc = [matching BGNFOR instruction] + 1
- endif
-
- Note: The destination must be a loop register.
-
-
-1.9.13 ENDREP - End Repeat
-
- TBD
-
-
1.10 GL_NV_vertex_program3
---------------------------
diff --git a/src/gallium/auxiliary/tgsi/tgsi_dump.c b/src/gallium/auxiliary/tgsi/tgsi_dump.c
index 57031419f8..8300020018 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_dump.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_dump.c
@@ -586,7 +586,6 @@ iter_instruction(
/* update indentation */
if (inst->Instruction.Opcode == TGSI_OPCODE_IF ||
inst->Instruction.Opcode == TGSI_OPCODE_ELSE ||
- inst->Instruction.Opcode == TGSI_OPCODE_BGNFOR ||
inst->Instruction.Opcode == TGSI_OPCODE_BGNLOOP) {
ctx->indentation += indent_spaces;
}
diff --git a/src/gallium/auxiliary/tgsi/tgsi_exec.c b/src/gallium/auxiliary/tgsi/tgsi_exec.c
index 11045e4ba2..82eac05dc4 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_exec.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_exec.c
@@ -3186,14 +3186,6 @@ exec_instruction(
*pc = -1;
break;
- case TGSI_OPCODE_REP:
- assert (0);
- break;
-
- case TGSI_OPCODE_ENDREP:
- assert (0);
- break;
-
case TGSI_OPCODE_PUSHA:
assert (0);
break;
@@ -3258,29 +3250,6 @@ exec_instruction(
emit_primitive(mach);
break;
- case TGSI_OPCODE_BGNFOR:
- assert(mach->LoopCounterStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
- for (chan_index = 0; chan_index < 3; chan_index++) {
- FETCH( &mach->LoopCounterStack[mach->LoopCounterStackTop].xyzw[chan_index], 0, chan_index );
- }
- ++mach->LoopCounterStackTop;
- STORE(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X], 0, CHAN_X);
- /* update LoopMask */
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[0] <= 0.0f) {
- mach->LoopMask &= ~0x1;
- }
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[1] <= 0.0f) {
- mach->LoopMask &= ~0x2;
- }
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[2] <= 0.0f) {
- mach->LoopMask &= ~0x4;
- }
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[3] <= 0.0f) {
- mach->LoopMask &= ~0x8;
- }
- /* TODO: if mach->LoopMask == 0, jump to end of loop */
- UPDATE_EXEC_MASK(mach);
- /* fall-through (for now) */
case TGSI_OPCODE_BGNLOOP:
/* push LoopMask and ContMasks */
assert(mach->LoopStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
@@ -3295,56 +3264,6 @@ exec_instruction(
mach->BreakType = TGSI_EXEC_BREAK_INSIDE_LOOP;
break;
- case TGSI_OPCODE_ENDFOR:
- assert(mach->LoopCounterStackTop > 0);
- micro_sub(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y],
- &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y],
- &mach->Temps[TEMP_1_I].xyzw[TEMP_1_C]);
- /* update LoopMask */
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[0] <= 0.0f) {
- mach->LoopMask &= ~0x1;
- }
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[1] <= 0.0f) {
- mach->LoopMask &= ~0x2;
- }
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[2] <= 0.0f) {
- mach->LoopMask &= ~0x4;
- }
- if (mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Y].f[3] <= 0.0f) {
- mach->LoopMask &= ~0x8;
- }
- micro_add(&mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X],
- &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_X],
- &mach->LoopCounterStack[mach->LoopCounterStackTop - 1].xyzw[CHAN_Z]);
- assert(mach->LoopLabelStackTop > 0);
- inst = mach->Instructions + mach->LoopLabelStack[mach->LoopLabelStackTop - 1];
- STORE(&mach->LoopCounterStack[mach->LoopCounterStackTop].xyzw[CHAN_X], 0, CHAN_X);
- /* Restore ContMask, but don't pop */
- assert(mach->ContStackTop > 0);
- mach->ContMask = mach->ContStack[mach->ContStackTop - 1];
- UPDATE_EXEC_MASK(mach);
- if (mach->ExecMask) {
- /* repeat loop: jump to instruction just past BGNLOOP */
- assert(mach->LoopLabelStackTop > 0);
- *pc = mach->LoopLabelStack[mach->LoopLabelStackTop - 1] + 1;
- }
- else {
- /* exit loop: pop LoopMask */
- assert(mach->LoopStackTop > 0);
- mach->LoopMask = mach->LoopStack[--mach->LoopStackTop];
- /* pop ContMask */
- assert(mach->ContStackTop > 0);
- mach->ContMask = mach->ContStack[--mach->ContStackTop];
- assert(mach->LoopLabelStackTop > 0);
- --mach->LoopLabelStackTop;
- assert(mach->LoopCounterStackTop > 0);
- --mach->LoopCounterStackTop;
-
- mach->BreakType = mach->BreakStack[--mach->BreakStackTop];
- }
- UPDATE_EXEC_MASK(mach);
- break;
-
case TGSI_OPCODE_ENDLOOP:
/* Restore ContMask, but don't pop */
assert(mach->ContStackTop > 0);
diff --git a/src/gallium/auxiliary/tgsi/tgsi_info.c b/src/gallium/auxiliary/tgsi/tgsi_info.c
index de0e09cdba..cfa2f631bd 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_info.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_info.c
@@ -106,12 +106,12 @@ static const struct tgsi_opcode_info opcode_info[TGSI_OPCODE_LAST] =
{ 1, 2, 1, 0, 0, 0, "TXL", TGSI_OPCODE_TXL },
{ 0, 0, 0, 0, 0, 0, "BRK", TGSI_OPCODE_BRK },
{ 0, 1, 0, 1, 0, 1, "IF", TGSI_OPCODE_IF },
- { 1, 1, 0, 0, 0, 1, "BGNFOR", TGSI_OPCODE_BGNFOR },
- { 0, 1, 0, 0, 0, 1, "REP", TGSI_OPCODE_REP },
+ { 1, 1, 0, 0, 0, 1, "", 75 }, /* removed */
+ { 0, 1, 0, 0, 0, 1, "", 76 }, /* removed */
{ 0, 0, 0, 1, 1, 1, "ELSE", TGSI_OPCODE_ELSE },
{ 0, 0, 0, 0, 1, 0, "ENDIF", TGSI_OPCODE_ENDIF },
- { 1, 0, 0, 0, 1, 0, "ENDFOR", TGSI_OPCODE_ENDFOR },
- { 0, 0, 0, 0, 1, 0, "ENDREP", TGSI_OPCODE_ENDREP },
+ { 1, 0, 0, 0, 1, 0, "", 79 }, /* removed */
+ { 0, 0, 0, 0, 1, 0, "", 80 }, /* removed */
{ 0, 1, 0, 0, 0, 0, "PUSHA", TGSI_OPCODE_PUSHA },
{ 1, 0, 0, 0, 0, 0, "POPA", TGSI_OPCODE_POPA },
{ 1, 1, 0, 0, 0, 0, "CEIL", TGSI_OPCODE_CEIL },
diff --git a/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h b/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
index e4af15c156..e472947507 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
+++ b/src/gallium/auxiliary/tgsi/tgsi_opcode_tmp.h
@@ -111,12 +111,8 @@ OP12(DP2)
OP12_TEX(TXL)
OP00(BRK)
OP01_LBL(IF)
-OP11(BGNFOR)
-OP01(REP)
OP00_LBL(ELSE)
OP00(ENDIF)
-OP10(ENDFOR)
-OP00(ENDREP)
OP01(PUSHA)
OP10(POPA)
OP11(CEIL)
diff --git a/src/gallium/auxiliary/tgsi/tgsi_sanity.c b/src/gallium/auxiliary/tgsi/tgsi_sanity.c
index 371f690b29..76b7564cc3 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_sanity.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_sanity.c
@@ -346,25 +346,6 @@ iter_instruction(
}
}
- switch (inst->Instruction.Opcode) {
- case TGSI_OPCODE_BGNFOR:
- case TGSI_OPCODE_ENDFOR:
- if (inst->Dst[0].Register.File != TGSI_FILE_LOOP ||
- inst->Dst[0].Register.Index != 0) {
- report_error(ctx, "Destination register must be LOOP[0]");
- }
- break;
- }
-
- switch (inst->Instruction.Opcode) {
- case TGSI_OPCODE_BGNFOR:
- if (inst->Src[0].Register.File != TGSI_FILE_CONSTANT &&
- inst->Src[0].Register.File != TGSI_FILE_IMMEDIATE) {
- report_error(ctx, "Source register file must be either CONST or IMM");
- }
- break;
- }
-
ctx->num_instructions++;
return TRUE;
diff --git a/src/gallium/auxiliary/tgsi/tgsi_sse2.c b/src/gallium/auxiliary/tgsi/tgsi_sse2.c
index a85cc4659e..1071298b49 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_sse2.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_sse2.c
@@ -2533,14 +2533,6 @@ emit_instruction(
return 0;
break;
- case TGSI_OPCODE_BGNFOR:
- return 0;
- break;
-
- case TGSI_OPCODE_REP:
- return 0;
- break;
-
case TGSI_OPCODE_ELSE:
return 0;
break;
@@ -2549,14 +2541,6 @@ emit_instruction(
return 0;
break;
- case TGSI_OPCODE_ENDFOR:
- return 0;
- break;
-
- case TGSI_OPCODE_ENDREP:
- return 0;
- break;
-
case TGSI_OPCODE_PUSHA:
return 0;
break;
diff --git a/src/gallium/auxiliary/translate/translate.h b/src/gallium/auxiliary/translate/translate.h
index 54ed2c1a4b..edd95e0788 100644
--- a/src/gallium/auxiliary/translate/translate.h
+++ b/src/gallium/auxiliary/translate/translate.h
@@ -76,7 +76,8 @@ struct translate {
void (*set_buffer)( struct translate *,
unsigned i,
const void *ptr,
- unsigned stride );
+ unsigned stride,
+ unsigned max_index );
void (PIPE_CDECL *run_elts)( struct translate *,
const unsigned *elts,
diff --git a/src/gallium/auxiliary/translate/translate_generic.c b/src/gallium/auxiliary/translate/translate_generic.c
index c3ec9ae3f4..a9272fbb49 100644
--- a/src/gallium/auxiliary/translate/translate_generic.c
+++ b/src/gallium/auxiliary/translate/translate_generic.c
@@ -31,6 +31,7 @@
*/
#include "util/u_memory.h"
+#include "util/u_math.h"
#include "pipe/p_state.h"
#include "translate.h"
@@ -58,6 +59,7 @@ struct translate_generic {
char *input_ptr;
unsigned input_stride;
+ unsigned max_index;
} attrib[PIPE_MAX_ATTRIBS];
@@ -588,19 +590,22 @@ static void PIPE_CDECL generic_run_elts( struct translate *translate,
for (attr = 0; attr < nr_attrs; attr++) {
float data[4];
const char *src;
+ unsigned index;
char *dst = (vert +
tg->attrib[attr].output_offset);
if (tg->attrib[attr].instance_divisor) {
- src = tg->attrib[attr].input_ptr +
- tg->attrib[attr].input_stride *
- (instance_id / tg->attrib[attr].instance_divisor);
+ index = instance_id / tg->attrib[attr].instance_divisor;
} else {
- src = tg->attrib[attr].input_ptr +
- tg->attrib[attr].input_stride * elt;
+ index = elt;
}
+ index = MIN2(index, tg->attrib[attr].max_index);
+
+ src = tg->attrib[attr].input_ptr +
+ tg->attrib[attr].input_stride * index;
+
tg->attrib[attr].fetch( src, data );
if (0) debug_printf("vert %d/%d attr %d: %f %f %f %f\n",
@@ -670,7 +675,8 @@ static void PIPE_CDECL generic_run( struct translate *translate,
static void generic_set_buffer( struct translate *translate,
unsigned buf,
const void *ptr,
- unsigned stride )
+ unsigned stride,
+ unsigned max_index )
{
struct translate_generic *tg = translate_generic(translate);
unsigned i;
@@ -680,6 +686,7 @@ static void generic_set_buffer( struct translate *translate,
tg->attrib[i].input_ptr = ((char *)ptr +
tg->attrib[i].input_offset);
tg->attrib[i].input_stride = stride;
+ tg->attrib[i].max_index = max_index;
}
}
}
diff --git a/src/gallium/auxiliary/translate/translate_sse.c b/src/gallium/auxiliary/translate/translate_sse.c
index c13e742738..ef3aa674a3 100644
--- a/src/gallium/auxiliary/translate/translate_sse.c
+++ b/src/gallium/auxiliary/translate/translate_sse.c
@@ -61,6 +61,7 @@ typedef void (PIPE_CDECL *run_elts_func)( struct translate *translate,
struct translate_buffer {
const void *base_ptr;
unsigned stride;
+ unsigned max_index;
};
struct translate_buffer_varient {
@@ -423,6 +424,11 @@ static boolean init_inputs( struct translate_sse *p,
} else {
x86_mov(p->func, tmp_EAX, elt);
}
+
+ /*
+ * TODO: Respect translate_buffer::max_index.
+ */
+
x86_imul(p->func, tmp_EAX, buf_stride);
x86_add(p->func, tmp_EAX, buf_base_ptr);
@@ -666,13 +672,15 @@ static boolean build_vertex_emit( struct translate_sse *p,
static void translate_sse_set_buffer( struct translate *translate,
unsigned buf,
const void *ptr,
- unsigned stride )
+ unsigned stride,
+ unsigned max_index )
{
struct translate_sse *p = (struct translate_sse *)translate;
if (buf < p->nr_buffers) {
p->buffer[buf].base_ptr = (char *)ptr;
p->buffer[buf].stride = stride;
+ p->buffer[buf].max_index = max_index;
}
if (0) debug_printf("%s %d/%d: %p %d\n",
diff --git a/src/gallium/auxiliary/util/u_caps.c b/src/gallium/auxiliary/util/u_caps.c
new file mode 100644
index 0000000000..c7c1e830e0
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_caps.c
@@ -0,0 +1,245 @@
+/**************************************************************************
+ *
+ * Copyright 2010 Vmware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#include "pipe/p_screen.h"
+#include "util/u_format.h"
+#include "util/u_debug.h"
+#include "u_caps.h"
+
+/**
+ * Iterates over a list of caps checks as defined in u_caps.h. Should
+ * all checks pass returns TRUE and out is set to the last element of
+ * the list (TERMINATE). Should any check fail returns FALSE and set
+ * out to the index of the start of the first failing check.
+ */
+boolean
+util_check_caps_out(struct pipe_screen *screen, const unsigned *list, int *out)
+{
+ int i, tmpi;
+ float tmpf;
+
+ for (i = 0; list[i];) {
+ switch(list[i++]) {
+ case UTIL_CAPS_CHECK_CAP:
+ if (!screen->get_param(screen, list[i++])) {
+ *out = i - 2;
+ return FALSE;
+ }
+ break;
+ case UTIL_CAPS_CHECK_INT:
+ tmpi = screen->get_param(screen, list[i++]);
+ if (tmpi < (int)list[i++]) {
+ *out = i - 3;
+ return FALSE;
+ }
+ break;
+ case UTIL_CAPS_CHECK_FLOAT:
+ tmpf = screen->get_paramf(screen, list[i++]);
+ if (tmpf < (float)list[i++]) {
+ *out = i - 3;
+ return FALSE;
+ }
+ break;
+ case UTIL_CAPS_CHECK_FORMAT:
+ if (!screen->is_format_supported(screen,
+ list[i++],
+ PIPE_TEXTURE_2D,
+ PIPE_BIND_SAMPLER_VIEW,
+ 0)) {
+ *out = i - 2;
+ return FALSE;
+ }
+ break;
+ case UTIL_CAPS_CHECK_UNIMPLEMENTED:
+ *out = i - 1;
+ return FALSE;
+ default:
+ assert(!"Unsupported check");
+ return FALSE;
+ }
+ }
+
+ *out = i;
+ return TRUE;
+}
+
+/**
+ * Iterates over a list of caps checks as defined in u_caps.h.
+ * Returns TRUE if all caps checks pass returns FALSE otherwise.
+ */
+boolean
+util_check_caps(struct pipe_screen *screen, const unsigned *list)
+{
+ int out;
+ return util_check_caps_out(screen, list, &out);
+}
+
+
+/*
+ * Below follows some demo lists.
+ *
+ * None of these lists are exhausting lists of what is
+ * actually needed to support said API and more here for
+ * as example on how to uses the above functions. Especially
+ * for DX10 and DX11 where Gallium is missing features.
+ */
+
+/* DX 9_1 */
+static unsigned caps_dx_9_1[] = {
+ UTIL_CHECK_INT(MAX_RENDER_TARGETS, 1),
+ UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 12), /* 2048 */
+ UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 9), /* 256 */
+ UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 10), /* 512 */
+ UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 2),
+ UTIL_CHECK_TERMINATE
+};
+
+/* DX 9_2 */
+static unsigned caps_dx_9_2[] = {
+ UTIL_CHECK_CAP(OCCLUSION_QUERY),
+ UTIL_CHECK_CAP(BLEND_EQUATION_SEPARATE),
+ UTIL_CHECK_INT(MAX_RENDER_TARGETS, 1),
+ UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 12), /* 2048 */
+ UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 9), /* 256 */
+ UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 10), /* 512 */
+ UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+ UTIL_CHECK_TERMINATE
+};
+
+/* DX 9_3 */
+static unsigned caps_dx_9_3[] = {
+ UTIL_CHECK_CAP(SM3),
+ //UTIL_CHECK_CAP(INSTANCING),
+ UTIL_CHECK_CAP(OCCLUSION_QUERY),
+ UTIL_CHECK_INT(MAX_RENDER_TARGETS, 4),
+ UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 13), /* 4096 */
+ UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 9), /* 256 */
+ UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 10), /* 512 */
+ UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+ UTIL_CHECK_TERMINATE
+};
+
+/* DX 10 */
+static unsigned caps_dx_10[] = {
+ UTIL_CHECK_CAP(SM3),
+ //UTIL_CHECK_CAP(INSTANCING),
+ UTIL_CHECK_CAP(OCCLUSION_QUERY),
+ UTIL_CHECK_INT(MAX_RENDER_TARGETS, 8),
+ UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 14), /* 8192 */
+ UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 12), /* 2048 */
+ UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 14), /* 8192 */
+ UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+ UTIL_CHECK_UNIMPLEMENTED, /* XXX Unimplemented features in Gallium */
+ UTIL_CHECK_TERMINATE
+};
+
+/* DX11 */
+static unsigned caps_dx_11[] = {
+ UTIL_CHECK_CAP(SM3),
+ //UTIL_CHECK_CAP(INSTANCING),
+ UTIL_CHECK_CAP(OCCLUSION_QUERY),
+ UTIL_CHECK_INT(MAX_RENDER_TARGETS, 8),
+ UTIL_CHECK_INT(MAX_TEXTURE_2D_LEVELS, 14), /* 16384 */
+ UTIL_CHECK_INT(MAX_TEXTURE_3D_LEVELS, 12), /* 2048 */
+ UTIL_CHECK_INT(MAX_TEXTURE_CUBE_LEVELS, 14), /* 16384 */
+ UTIL_CHECK_FLOAT(MAX_TEXTURE_ANISOTROPY, 16),
+ UTIL_CHECK_FORMAT(B8G8R8A8_UNORM),
+ UTIL_CHECK_UNIMPLEMENTED, /* XXX Unimplemented features in Gallium */
+ UTIL_CHECK_TERMINATE
+};
+
+/* OpenGL 2.1 */
+static unsigned caps_opengl_2_1[] = {
+ UTIL_CHECK_CAP(GLSL),
+ UTIL_CHECK_CAP(OCCLUSION_QUERY),
+ UTIL_CHECK_CAP(TWO_SIDED_STENCIL),
+ UTIL_CHECK_CAP(BLEND_EQUATION_SEPARATE),
+ UTIL_CHECK_INT(MAX_RENDER_TARGETS, 2),
+ UTIL_CHECK_TERMINATE
+};
+
+/* OpenGL 3.0 */
+/* UTIL_CHECK_INT(MAX_RENDER_TARGETS, 8), */
+
+
+/**
+ * Demo function which checks against theoretical caps needed for different APIs.
+ */
+void util_caps_demo_print(struct pipe_screen *screen)
+{
+ struct {
+ char* name;
+ unsigned *list;
+ } list[] = {
+ {"DX 9.1", caps_dx_9_1},
+ {"DX 9.2", caps_dx_9_2},
+ {"DX 9.3", caps_dx_9_3},
+ {"DX 10", caps_dx_10},
+ {"DX 11", caps_dx_11},
+ {"OpenGL 2.1", caps_opengl_2_1},
+/* {"OpenGL 3.0", caps_opengl_3_0},*/
+ {NULL, NULL}
+ };
+ int i, out = 0;
+
+ for (i = 0; list[i].name; i++) {
+ if (util_check_caps_out(screen, list[i].list, &out)) {
+ debug_printf("%s: %s yes\n", __FUNCTION__, list[i].name);
+ continue;
+ }
+ switch (list[i].list[out]) {
+ case UTIL_CAPS_CHECK_CAP:
+ debug_printf("%s: %s no (cap %u not supported)\n", __FUNCTION__,
+ list[i].name,
+ list[i].list[out + 1]);
+ break;
+ case UTIL_CAPS_CHECK_INT:
+ debug_printf("%s: %s no (cap %u less then %u)\n", __FUNCTION__,
+ list[i].name,
+ list[i].list[out + 1],
+ list[i].list[out + 2]);
+ break;
+ case UTIL_CAPS_CHECK_FLOAT:
+ debug_printf("%s: %s no (cap %u less then %f)\n", __FUNCTION__,
+ list[i].name,
+ list[i].list[out + 1],
+ (double)(int)list[i].list[out + 2]);
+ break;
+ case UTIL_CAPS_CHECK_FORMAT:
+ debug_printf("%s: %s no (format %s not supported)\n", __FUNCTION__,
+ list[i].name,
+ util_format_name(list[i].list[out + 1]) + 12);
+ break;
+ case UTIL_CAPS_CHECK_UNIMPLEMENTED:
+ debug_printf("%s: %s no (not implemented in gallium or state tracker)\n",
+ __FUNCTION__, list[i].name);
+ break;
+ default:
+ assert(!"Unsupported check");
+ }
+ }
+}
diff --git a/src/gallium/auxiliary/util/u_caps.h b/src/gallium/auxiliary/util/u_caps.h
new file mode 100644
index 0000000000..b1074f9eb2
--- /dev/null
+++ b/src/gallium/auxiliary/util/u_caps.h
@@ -0,0 +1,67 @@
+/**************************************************************************
+ *
+ * Copyright 2010 Vmware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL VMWARE AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#ifndef U_CAPS_H
+#define U_CAPS_H
+
+#include "pipe/p_compiler.h"
+
+struct pipe_screen;
+
+enum u_caps_check_enum {
+ UTIL_CAPS_CHECK_TERMINATE = 0,
+ UTIL_CAPS_CHECK_CAP,
+ UTIL_CAPS_CHECK_INT,
+ UTIL_CAPS_CHECK_FLOAT,
+ UTIL_CAPS_CHECK_FORMAT,
+ UTIL_CAPS_CHECK_UNIMPLEMENTED,
+};
+
+#define UTIL_CHECK_CAP(cap) \
+ UTIL_CAPS_CHECK_CAP, PIPE_CAP_##cap
+
+#define UTIL_CHECK_INT(cap, higher) \
+ UTIL_CAPS_CHECK_INT, PIPE_CAP_##cap, (unsigned)(higher)
+
+/* Floats currently lose precision */
+#define UTIL_CHECK_FLOAT(cap, higher) \
+ UTIL_CAPS_CHECK_FLOAT, PIPE_CAP_##cap, (unsigned)(int)(higher)
+
+#define UTIL_CHECK_FORMAT(format) \
+ UTIL_CAPS_CHECK_FORMAT, PIPE_FORMAT_##format
+
+#define UTIL_CHECK_UNIMPLEMENTED \
+ UTIL_CAPS_CHECK_UNIMPLEMENTED
+
+#define UTIL_CHECK_TERMINATE \
+ UTIL_CAPS_CHECK_TERMINATE
+
+boolean util_check_caps(struct pipe_screen *screen, const unsigned *list);
+boolean util_check_caps_out(struct pipe_screen *screen, const unsigned *list, int *out);
+void util_caps_demo_print(struct pipe_screen *screen);
+
+#endif
diff --git a/src/gallium/auxiliary/util/u_debug.c b/src/gallium/auxiliary/util/u_debug.c
index dd044973f9..0de38e791d 100644
--- a/src/gallium/auxiliary/util/u_debug.c
+++ b/src/gallium/auxiliary/util/u_debug.c
@@ -74,6 +74,24 @@ void debug_print_blob( const char *name,
#endif
+static boolean
+debug_get_option_should_print(void)
+{
+ static boolean first = TRUE;
+ static boolean value = FALSE;
+
+ if (!first)
+ return value;
+
+ /* Oh hey this will call into this function,
+ * but its cool since we set first to false
+ */
+ first = FALSE;
+ value = debug_get_bool_option("GALLIUM_PRINT_OPTIONS", TRUE);
+ /* XXX should we print this option? Currently it wont */
+ return value;
+}
+
const char *
debug_get_option(const char *name, const char *dfault)
{
@@ -82,8 +100,9 @@ debug_get_option(const char *name, const char *dfault)
result = os_get_option(name);
if(!result)
result = dfault;
-
- debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? result : "(null)");
+
+ if (debug_get_option_should_print())
+ debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? result : "(null)");
return result;
}
@@ -109,7 +128,8 @@ debug_get_bool_option(const char *name, boolean dfault)
else
result = TRUE;
- debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? "TRUE" : "FALSE");
+ if (debug_get_option_should_print())
+ debug_printf("%s: %s = %s\n", __FUNCTION__, name, result ? "TRUE" : "FALSE");
return result;
}
@@ -142,8 +162,9 @@ debug_get_num_option(const char *name, long dfault)
}
result *= sign;
}
-
- debug_printf("%s: %s = %li\n", __FUNCTION__, name, result);
+
+ if (debug_get_option_should_print())
+ debug_printf("%s: %s = %li\n", __FUNCTION__, name, result);
return result;
}
@@ -176,11 +197,12 @@ debug_get_flags_option(const char *name,
}
}
- if (str) {
- debug_printf("%s: %s = 0x%lx (%s)\n", __FUNCTION__, name, result, str);
- }
- else {
- debug_printf("%s: %s = 0x%lx\n", __FUNCTION__, name, result);
+ if (debug_get_option_should_print()) {
+ if (str) {
+ debug_printf("%s: %s = 0x%lx (%s)\n", __FUNCTION__, name, result, str);
+ } else {
+ debug_printf("%s: %s = 0x%lx\n", __FUNCTION__, name, result);
+ }
}
return result;
diff --git a/src/gallium/auxiliary/util/u_debug.h b/src/gallium/auxiliary/util/u_debug.h
index b6d0b508e3..e8ff2773e6 100644
--- a/src/gallium/auxiliary/util/u_debug.h
+++ b/src/gallium/auxiliary/util/u_debug.h
@@ -303,6 +303,45 @@ debug_get_flags_option(const char *name,
const struct debug_named_value *flags,
unsigned long dfault);
+#define DEBUG_GET_ONCE_BOOL_OPTION(sufix, name, dfault) \
+static boolean \
+debug_get_option_ ## sufix (void) \
+{ \
+ static boolean first = TRUE; \
+ static boolean value; \
+ if (first) { \
+ first = FALSE; \
+ value = debug_get_bool_option(name, dfault); \
+ } \
+ return value; \
+}
+
+#define DEBUG_GET_ONCE_NUM_OPTION(sufix, name, dfault) \
+static long \
+debug_get_option_ ## sufix (void) \
+{ \
+ static boolean first = TRUE; \
+ static long value; \
+ if (first) { \
+ first = FALSE; \
+ value = debug_get_num_option(name, dfault); \
+ } \
+ return value; \
+}
+
+#define DEBUG_GET_ONCE_FLAGS_OPTION(sufix, name, flags, dfault) \
+static unsigned long \
+debug_get_option_ ## sufix (void) \
+{ \
+ static boolean first = TRUE; \
+ static unsigned long value; \
+ if (first) { \
+ first = FALSE; \
+ value = debug_get_flags_option(name, flags, dfault); \
+ } \
+ return value; \
+}
+
unsigned long
debug_memory_begin(void);
diff --git a/src/gallium/auxiliary/util/u_dump_state.c b/src/gallium/auxiliary/util/u_dump_state.c
index c134f13e90..2ce643e90c 100644
--- a/src/gallium/auxiliary/util/u_dump_state.c
+++ b/src/gallium/auxiliary/util/u_dump_state.c
@@ -656,12 +656,12 @@ util_dump_transfer(struct os_stream *stream, const struct pipe_transfer *state)
util_dump_struct_begin(stream, "pipe_transfer");
util_dump_member(stream, ptr, state, resource);
-// util_dump_member(stream, uint, state, box);
+ /*util_dump_member(stream, uint, state, box);*/
util_dump_member(stream, uint, state, stride);
util_dump_member(stream, uint, state, slice_stride);
-// util_dump_member(stream, ptr, state, data);
+ /*util_dump_member(stream, ptr, state, data);*/
util_dump_struct_end(stream);
}
diff --git a/src/gallium/auxiliary/util/u_format.h b/src/gallium/auxiliary/util/u_format.h
index 5e3dc694be..fb6ade5c06 100644
--- a/src/gallium/auxiliary/util/u_format.h
+++ b/src/gallium/auxiliary/util/u_format.h
@@ -192,6 +192,7 @@ struct util_format_description
/**
* Unpack pixel blocks to R8G8B8A8_UNORM.
+ * Note: strides are in bytes.
*
* Only defined for non-depth-stencil formats.
*/
@@ -202,6 +203,7 @@ struct util_format_description
/**
* Pack pixel blocks from R8G8B8A8_UNORM.
+ * Note: strides are in bytes.
*
* Only defined for non-depth-stencil formats.
*/
@@ -212,6 +214,7 @@ struct util_format_description
/**
* Unpack pixel blocks to R32G32B32A32_FLOAT.
+ * Note: strides are in bytes.
*
* Only defined for non-depth-stencil formats.
*/
@@ -222,6 +225,7 @@ struct util_format_description
/**
* Pack pixel blocks from R32G32B32A32_FLOAT.
+ * Note: strides are in bytes.
*
* Only defined for non-depth-stencil formats.
*/
@@ -242,6 +246,7 @@ struct util_format_description
/**
* Unpack pixels to Z32_UNORM.
+ * Note: strides are in bytes.
*
* Only defined for depth formats.
*/
@@ -252,6 +257,7 @@ struct util_format_description
/**
* Pack pixels from Z32_FLOAT.
+ * Note: strides are in bytes.
*
* Only defined for depth formats.
*/
@@ -262,6 +268,7 @@ struct util_format_description
/**
* Unpack pixels to Z32_FLOAT.
+ * Note: strides are in bytes.
*
* Only defined for depth formats.
*/
@@ -272,6 +279,7 @@ struct util_format_description
/**
* Pack pixels from Z32_FLOAT.
+ * Note: strides are in bytes.
*
* Only defined for depth formats.
*/
@@ -282,6 +290,7 @@ struct util_format_description
/**
* Unpack pixels to S8_USCALED.
+ * Note: strides are in bytes.
*
* Only defined for stencil formats.
*/
@@ -292,6 +301,7 @@ struct util_format_description
/**
* Pack pixels from S8_USCALED.
+ * Note: strides are in bytes.
*
* Only defined for stencil formats.
*/
@@ -322,7 +332,7 @@ util_format_name(enum pipe_format format)
assert(desc);
if (!desc) {
- return "???";
+ return "PIPE_FORMAT_???";
}
return desc->name;
diff --git a/src/gallium/auxiliary/util/u_format_s3tc.c b/src/gallium/auxiliary/util/u_format_s3tc.c
index 79dee2b423..5b279b8fe2 100644
--- a/src/gallium/auxiliary/util/u_format_s3tc.c
+++ b/src/gallium/auxiliary/util/u_format_s3tc.c
@@ -233,108 +233,80 @@ util_format_dxt5_rgba_fetch_rgba_float(float *dst, const uint8_t *src, unsigned
* Block decompression.
*/
-void
-util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
-{
+static INLINE void
+util_format_dxtn_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height,
+ util_format_dxtn_fetch_t fetch,
+ unsigned block_size)
+{
+ const unsigned bw = 4, bh = 4, comps = 4;
unsigned x, y, i, j;
- for(y = 0; y < height; y += 4) {
+ for(y = 0; y < height; y += bh) {
const uint8_t *src = src_row;
- for(x = 0; x < width; x += 4) {
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
- util_format_dxt1_rgb_fetch(0, src, i, j, dst);
+ for(x = 0; x < width; x += bw) {
+ for(j = 0; j < bh; ++j) {
+ for(i = 0; i < bw; ++i) {
+ uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*comps;
+ fetch(0, src, i, j, dst);
}
}
- src += 8;
+ src += block_size;
}
src_row += src_stride;
}
}
void
-util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
{
- unsigned x, y, i, j;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 4) {
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
- util_format_dxt1_rgba_fetch(0, src, i, j, dst);
- }
- }
- src += 8;
- }
- src_row += src_stride;
- }
+ util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt1_rgb_fetch, 8);
}
void
-util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
{
- unsigned x, y, i, j;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 4) {
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
- util_format_dxt3_rgba_fetch(0, src, i, j, dst);
- }
- }
- src += 16;
- }
- src_row += src_stride;
- }
+ util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt1_rgba_fetch, 8);
}
void
-util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt3_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
{
- unsigned x, y, i, j;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 4) {
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- uint8_t *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
- util_format_dxt5_rgba_fetch(0, src, i, j, dst);
- }
- }
- src += 16;
- }
- src_row += src_stride;
- }
+ util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt3_rgba_fetch, 16);
}
void
-util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt5_rgba_unpack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
{
- unsigned x, y, i, j;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 4) {
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
- uint8_t tmp[4];
- util_format_dxt1_rgb_fetch(0, src, i, j, tmp);
- dst[0] = ubyte_to_float(tmp[0]);
- dst[1] = ubyte_to_float(tmp[1]);
- dst[2] = ubyte_to_float(tmp[2]);
- dst[3] = 1.0;
- }
- }
- src += 8;
- }
- src_row += src_stride;
- }
+ util_format_dxtn_rgb_unpack_rgba_8unorm(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt5_rgba_fetch, 16);
}
-void
-util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+static INLINE void
+util_format_dxtn_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height,
+ util_format_dxtn_fetch_t fetch,
+ unsigned block_size)
{
unsigned x, y, i, j;
for(y = 0; y < height; y += 4) {
@@ -344,65 +316,61 @@ util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, con
for(i = 0; i < 4; ++i) {
float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
uint8_t tmp[4];
- util_format_dxt1_rgba_fetch(0, src, i, j, tmp);
+ fetch(0, src, i, j, tmp);
dst[0] = ubyte_to_float(tmp[0]);
dst[1] = ubyte_to_float(tmp[1]);
dst[2] = ubyte_to_float(tmp[2]);
dst[3] = ubyte_to_float(tmp[3]);
}
}
- src += 8;
+ src += block_size;
}
src_row += src_stride;
}
}
void
-util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
{
- unsigned x, y, i, j;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 4) {
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
- uint8_t tmp[4];
- util_format_dxt3_rgba_fetch(0, src, i, j, tmp);
- dst[0] = ubyte_to_float(tmp[0]);
- dst[1] = ubyte_to_float(tmp[1]);
- dst[2] = ubyte_to_float(tmp[2]);
- dst[3] = ubyte_to_float(tmp[3]);
- }
- }
- src += 16;
- }
- src_row += src_stride;
- }
+ util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt1_rgb_fetch, 8);
}
void
-util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
{
- unsigned x, y, i, j;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
- for(x = 0; x < width; x += 4) {
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- float *dst = dst_row + (y + j)*dst_stride/sizeof(*dst_row) + (x + i)*4;
- uint8_t tmp[4];
- util_format_dxt5_rgba_fetch(0, src, i, j, tmp);
- dst[0] = ubyte_to_float(tmp[0]);
- dst[1] = ubyte_to_float(tmp[1]);
- dst[2] = ubyte_to_float(tmp[2]);
- dst[3] = ubyte_to_float(tmp[3]);
- }
- }
- src += 16;
- }
- src_row += src_stride;
- }
+ util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt1_rgba_fetch, 8);
+}
+
+void
+util_format_dxt3_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt3_rgba_fetch, 16);
+}
+
+void
+util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride,
+ const uint8_t *src_row, unsigned src_stride,
+ unsigned width, unsigned height)
+{
+ util_format_dxtn_rgb_unpack_rgba_float(dst_row, dst_stride,
+ src_row, src_stride,
+ width, height,
+ util_format_dxt5_rgba_fetch, 16);
}
@@ -411,201 +379,198 @@ util_format_dxt5_rgba_unpack_rgba_float(float *dst_row, unsigned dst_stride, con
*/
void
-util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
+ const unsigned bw = 4, bh = 4, bytes_per_block = 8;
unsigned x, y, i, j, k;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
+ for(y = 0; y < height; y += bh) {
uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 4) {
- uint8_t tmp[4][4][3];
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
+ for(x = 0; x < width; x += bw) {
+ uint8_t tmp[4][4][3]; /* [bh][bw][comps] */
+ for(j = 0; j < bh; ++j) {
+ for(i = 0; i < bw; ++i) {
for(k = 0; k < 3; ++k) {
- tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+ tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*4 + k];
}
}
}
- util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, dst_stride);
- src += 4*4;
- dst += 8;
+ util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, 0);
+ dst += bytes_per_block;
}
- src_row += src_stride;
- dst_row += 4*dst_stride/sizeof(*dst_row);
+ dst_row += dst_stride / sizeof(*dst_row);
}
}
void
-util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
+ const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 8;
unsigned x, y, i, j, k;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
+ for(y = 0; y < height; y += bh) {
uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 4) {
- uint8_t tmp[4][4][4];
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- for(k = 0; k < 4; ++k) {
- tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+ for(x = 0; x < width; x += bw) {
+ uint8_t tmp[4][4][4]; /* [bh][bw][comps] */
+ for(j = 0; j < bh; ++j) {
+ for(i = 0; i < bw; ++i) {
+ for(k = 0; k < comps; ++k) {
+ tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
}
}
}
- util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, dst_stride);
- src += 4*4;
- dst += 8;
+ util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, 0);
+ dst += bytes_per_block;
}
- src_row += src_stride;
- dst_row += 4*dst_stride/sizeof(*dst_row);
+ dst_row += dst_stride / sizeof(*dst_row);
}
}
void
-util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt3_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
+ const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16;
unsigned x, y, i, j, k;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
+ for(y = 0; y < height; y += bh) {
uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 4) {
- uint8_t tmp[4][4][4];
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- for(k = 0; k < 4; ++k) {
- tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+ for(x = 0; x < width; x += bw) {
+ uint8_t tmp[4][4][4]; /* [bh][bw][comps] */
+ for(j = 0; j < bh; ++j) {
+ for(i = 0; i < bw; ++i) {
+ for(k = 0; k < comps; ++k) {
+ tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
}
}
}
- util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, dst_stride);
- src += 4*4;
- dst += 16;
+ util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, 0);
+ dst += bytes_per_block;
}
- src_row += src_stride;
- dst_row += 4*dst_stride/sizeof(*dst_row);
+ dst_row += dst_stride / sizeof(*dst_row);
}
}
void
-util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride, const uint8_t *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt5_rgba_pack_rgba_8unorm(uint8_t *dst_row, unsigned dst_stride,
+ const uint8_t *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
+ const unsigned bw = 4, bh = 4, comps = 4, bytes_per_block = 16;
unsigned x, y, i, j, k;
- for(y = 0; y < height; y += 4) {
- const uint8_t *src = src_row;
+
+ for(y = 0; y < height; y += bh) {
uint8_t *dst = dst_row;
- for(x = 0; x < width; x += 4) {
- uint8_t tmp[4][4][4];
- for(j = 0; j < 4; ++j) {
- for(i = 0; i < 4; ++i) {
- for(k = 0; k < 4; ++k) {
- tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + i*4 + k];
+ for(x = 0; x < width; x += bw) {
+ uint8_t tmp[4][4][4]; /* [bh][bw][comps] */
+ for(j = 0; j < bh; ++j) {
+ for(i = 0; i < bw; ++i) {
+ for(k = 0; k < comps; ++k) {
+ tmp[j][i][k] = src[(y + j)*src_stride/sizeof(*src) + (x + i)*comps + k];
}
}
}
- util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, dst_stride);
- src += 4*4;
- dst += 16;
+ util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, 0);
+ dst += bytes_per_block;
}
- src_row += src_stride;
- dst_row += 4*dst_stride/sizeof(*dst_row);
+ dst_row += dst_stride / sizeof(*dst_row);
}
}
void
-util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgb_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
unsigned x, y, i, j, k;
for(y = 0; y < height; y += 4) {
- const float *src = src_row;
uint8_t *dst = dst_row;
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][3];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 3; ++k) {
- tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+ tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
- util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, dst_stride);
- src += 4*4;
+ util_format_dxtn_pack(3, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGB, dst, 0);
dst += 8;
}
- src_row += src_stride;
dst_row += 4*dst_stride/sizeof(*dst_row);
}
}
void
-util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt1_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
unsigned x, y, i, j, k;
for(y = 0; y < height; y += 4) {
- const float *src = src_row;
uint8_t *dst = dst_row;
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][4];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 4; ++k) {
- tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+ tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
- util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, dst_stride);
- src += 4*4;
+ util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT1_RGBA, dst, 0);
dst += 8;
}
- src_row += src_stride;
dst_row += 4*dst_stride/sizeof(*dst_row);
}
}
void
-util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt3_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
unsigned x, y, i, j, k;
for(y = 0; y < height; y += 4) {
- const float *src = src_row;
uint8_t *dst = dst_row;
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][4];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 4; ++k) {
- tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+ tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
- util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, dst_stride);
- src += 4*4;
+ util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT3_RGBA, dst, 0);
dst += 16;
}
- src_row += src_stride;
dst_row += 4*dst_stride/sizeof(*dst_row);
}
}
void
-util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride, const float *src_row, unsigned src_stride, unsigned width, unsigned height)
+util_format_dxt5_rgba_pack_rgba_float(uint8_t *dst_row, unsigned dst_stride,
+ const float *src, unsigned src_stride,
+ unsigned width, unsigned height)
{
unsigned x, y, i, j, k;
for(y = 0; y < height; y += 4) {
- const float *src = src_row;
uint8_t *dst = dst_row;
for(x = 0; x < width; x += 4) {
uint8_t tmp[4][4][4];
for(j = 0; j < 4; ++j) {
for(i = 0; i < 4; ++i) {
for(k = 0; k < 4; ++k) {
- tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + i*4 + k]);
+ tmp[j][i][k] = float_to_ubyte(src[(y + j)*src_stride/sizeof(*src) + (x+i)*4 + k]);
}
}
}
- util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, dst_stride);
- src += 4*4;
+ util_format_dxtn_pack(4, 4, 4, &tmp[0][0][0], UTIL_FORMAT_DXT5_RGBA, dst, 0);
dst += 16;
}
- src_row += src_stride;
dst_row += 4*dst_stride/sizeof(*dst_row);
}
}
diff --git a/src/gallium/auxiliary/util/u_surfaces.c b/src/gallium/auxiliary/util/u_surfaces.c
index 0be4609a20..668da8c5c2 100644
--- a/src/gallium/auxiliary/util/u_surfaces.c
+++ b/src/gallium/auxiliary/util/u_surfaces.c
@@ -9,13 +9,13 @@
static unsigned
hash(void *key)
{
- return (unsigned)key;
+ return (unsigned)(uintptr_t)key;
}
static int
compare(void *key1, void *key2)
{
- return (unsigned)key1 - (unsigned)key2;
+ return (unsigned)(uintptr_t)key1 - (unsigned)(uintptr_t)key2;
}
struct pipe_surface *
@@ -67,7 +67,7 @@ util_surfaces_do_detach(struct util_surfaces *us, struct pipe_surface *ps)
struct pipe_resource *pt = ps->texture;
if(pt->target == PIPE_TEXTURE_3D || pt->target == PIPE_TEXTURE_CUBE)
{ /* or 2D array */
- void* key = (void*)(((ps->zslice + ps->face) << 8) | ps->level);
+ void* key = (void*)(uintptr_t)(((ps->zslice + ps->face) << 8) | ps->level);
util_hash_table_remove(us->u.table, key);
}
else
@@ -105,7 +105,7 @@ util_surfaces_destroy(struct util_surfaces *us, struct pipe_resource *pt, void (
if(ps)
destroy_surface(ps);
}
- free(us->u.array);
+ FREE(us->u.array);
us->u.array = NULL;
}
}
diff --git a/src/gallium/auxiliary/util/u_tile.c b/src/gallium/auxiliary/util/u_tile.c
index fe327c302b..f7aa1403d0 100644
--- a/src/gallium/auxiliary/util/u_tile.c
+++ b/src/gallium/auxiliary/util/u_tile.c
@@ -544,7 +544,7 @@ pipe_put_tile_z(struct pipe_context *pipe,
case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
{
uint *pDest = (uint *) (map + y * pt->stride + x*4);
- //assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);
+ /*assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);*/
for (i = 0; i < h; i++) {
for (j = 0; j < w; j++) {
/* convert 32-bit Z to 24-bit Z, preserve stencil */
@@ -571,7 +571,7 @@ pipe_put_tile_z(struct pipe_context *pipe,
case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
{
uint *pDest = (uint *) (map + y * pt->stride + x*4);
- //assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);
+ /*assert((pt->usage & PIPE_TRANSFER_READ_WRITE) == PIPE_TRANSFER_READ_WRITE);*/
for (i = 0; i < h; i++) {
for (j = 0; j < w; j++) {
/* convert 32-bit Z to 24-bit Z, preserve stencil */
diff --git a/src/gallium/docs/source/conf.py b/src/gallium/docs/source/conf.py
index 59c19ed98d..ccc84405c4 100644
--- a/src/gallium/docs/source/conf.py
+++ b/src/gallium/docs/source/conf.py
@@ -45,9 +45,9 @@ copyright = u'2009, VMWare, X.org, Nouveau'
# built documents.
#
# The short X.Y version.
-version = '0.3'
+version = '0.4'
# The full version, including alpha/beta/rc tags.
-release = '0.3'
+release = '0.4'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
diff --git a/src/gallium/docs/source/screen.rst b/src/gallium/docs/source/screen.rst
index b6efd1d40c..c5815f8939 100644
--- a/src/gallium/docs/source/screen.rst
+++ b/src/gallium/docs/source/screen.rst
@@ -3,16 +3,19 @@ Screen
A screen is an object representing the context-independent part of a device.
-Useful Flags
-------------
+Flags and enumerations
+----------------------
+
+XXX some of these don't belong in this section.
+
.. _pipe_cap:
-PIPE_CAP
-^^^^^^^^
+PIPE_CAP_*
+^^^^^^^^^^
-Pipe capabilities help expose hardware functionality not explicitly required
-by Gallium. For floating-point values, use :ref:`get_paramf`, and for boolean
+Capability queries return information about the features and limits of the
+driver/GPU. For floating-point values, use :ref:`get_paramf`, and for boolean
or integer values, use :ref:`get_param`.
The integer capabilities:
@@ -56,6 +59,19 @@ The integer capabilities:
to any shader stage using ``set_constant_buffer``. If 0 or 1, the pipe will
only permit binding one constant buffer per shader, and the shaders will
not permit two-dimensional access to constants.
+
+If a value greater than 0 is returned, the driver can have multiple
+constant buffers bound to shader stages. The CONST register file can
+be accessed with two-dimensional indices, like in the example below.
+
+DCL CONST[0][0..7] # declare first 8 vectors of constbuf 0
+DCL CONST[3][0] # declare first vector of constbuf 3
+MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0
+
+For backwards compatibility, one-dimensional access to CONST register
+file is still supported. In that case, the constbuf index is assumed
+to be 0.
+
* ``MAX_CONST_BUFFER_SIZE``: Maximum byte size of a single constant buffer.
* ``INDEP_BLEND_ENABLE``: Whether per-rendertarget blend enabling and channel
masks are supported. If 0, then the first rendertarget's blend mask is
@@ -85,64 +101,55 @@ The floating-point capabilities:
* ``GUARD_BAND_LEFT``, ``GUARD_BAND_TOP``, ``GUARD_BAND_RIGHT``,
``GUARD_BAND_BOTTOM``: XXX
-XXX Is there a better home for this? vvv
-
-If 0 is returned, the driver is not aware of multiple constant buffers,
-supports binding of only one constant buffer, and does not support
-two-dimensional CONST register file access in TGSI shaders.
-
-If a value greater than 0 is returned, the driver can have multiple
-constant buffers bound to shader stages. The CONST register file can
-be accessed with two-dimensional indices, like in the example below.
-
-DCL CONST[0][0..7] # declare first 8 vectors of constbuf 0
-DCL CONST[3][0] # declare first vector of constbuf 3
-MOV OUT[0], CONST[0][3] # copy vector 3 of constbuf 0
-For backwards compatibility, one-dimensional access to CONST register
-file is still supported. In that case, the constbuf index is assumed
-to be 0.
.. _pipe_bind:
-PIPE_BIND
-^^^^^^^^^
+PIPE_BIND_*
+^^^^^^^^^^^
-These flags control resource creation. Resources may be used in different roles
+These flags indicate how a resource will be used and are specified at resource
+creation time. Resources may be used in different roles
during their lifecycle. Bind flags are cumulative and may be combined to create
-a resource which can be used as multiple things.
-Depending on the pipe driver's memory management, depending on these bind flags
+a resource which can be used for multiple things.
+Depending on the pipe driver's memory management and these bind flags,
resources might be created and handled quite differently.
-* ``RENDER_TARGET``: A color buffer or pixel buffer which will be rendered to.
-* ``DISPLAY_TARGET``: A sharable buffer that can be given to another process.
-* ``DEPTH_STENCIL``: A depth (Z) buffer or stencil buffer. Gallium does
- not explicitly provide for stencil-only buffers, so any stencil buffer
- validated here is implicitly also a depth buffer.
-* ``SAMPLER_VIEW``: A texture that may be sampled from in a fragment or vertex
- shader.
-* ``VERTEX_BUFFER``: A vertex buffer.
-* ``INDEX_BUFFER``: An element buffer.
-* ``CONSTANT_BUFFER``: A buffer of shader constants.
-* ``BLIT_SOURCE``: A blit source, as given to surface_copy.
-* ``BLIT_DESTINATION``: A blit destination, as given to surface_copy and surface_fill.
-* ``TRANSFER_WRITE``: A transfer object which will be written to.
-* ``TRANSFER_READ``: A transfer object which will be read from.
-* ``CUSTOM``:
-* ``SCANOUT``: A front color buffer or scanout buffer.
-* ``SHARED``:
+* ``PIPE_BIND_RENDER_TARGET``: A color buffer or pixel buffer which will be
+ rendered to. Any surface/resource attached to pipe_framebuffer_state::cbufs
+ must have this flag set.
+* ``PIPE_BIND_DEPTH_STENCIL``: A depth (Z) buffer and/or stencil buffer. Any
+ depth/stencil surface/resource attached to pipe_framebuffer_state::zsbuf must
+ have this flag set.
+* ``PIPE_BIND_DISPLAY_TARGET``: A surface that can be presented to screen. Arguments to
+ pipe_screen::flush_front_buffer must have this flag set.
+* ``PIPE_BIND_SAMPLER_VIEW``: A texture that may be sampled from in a fragment
+ or vertex shader.
+* ``PIPE_BIND_VERTEX_BUFFER``: A vertex buffer.
+* ``PIPE_BIND_INDEX_BUFFER``: An vertex index/element buffer.
+* ``PIPE_BIND_CONSTANT_BUFFER``: A buffer of shader constants.
+* ``PIPE_BIND_BLIT_SOURCE``: A blit source, as given to surface_copy.
+* ``PIPE_BIND_BLIT_DESTINATION``: A blit destination, as given to surface_copy
+ and surface_fill.
+* ``PIPE_BIND_TRANSFER_WRITE``: A transfer object which will be written to.
+* ``PIPE_BIND_TRANSFER_READ``: A transfer object which will be read from.
+* ``PIPE_BIND_CUSTOM``:
+* ``PIPE_BIND_SCANOUT``: A front color buffer or scanout buffer.
+* ``PIPE_BIND_SHARED``: A sharable buffer that can be given to another
+ process.
.. _pipe_usage:
-PIPE_USAGE
-^^^^^^^^^^
+PIPE_USAGE_*
+^^^^^^^^^^^^
+
+The PIPE_USAGE enums are hints about the expected usage pattern of a resource.
-The PIPE_USAGE enums are hints about the expected lifecycle of a resource.
-* ``DEFAULT``: Expect many uploads to the resource, intermixed with draws.
-* ``DYNAMIC``: Expect many uploads to the resource, intermixed with draws.
-* ``STATIC``: Same as immutable (?)
-* ``IMMUTABLE``: Resource will not be changed after first upload.
-* ``STREAM``: Upload will be followed by draw, followed by upload, ...
+* ``PIPE_USAGE_DEFAULT``: Expect many uploads to the resource, intermixed with draws.
+* ``PIPE_USAGE_DYNAMIC``: Expect many uploads to the resource, intermixed with draws.
+* ``PIPE_USAGE_STATIC``: Same as immutable (?)
+* ``PIPE_USAGE_IMMUTABLE``: Resource will not be changed after first upload.
+* ``PIPE_USAGE_STREAM``: Upload will be followed by draw, followed by upload, ...
@@ -162,7 +169,7 @@ For example, a compressed format might only be used for POT textures.
Methods
-------
-XXX moar; got bored
+XXX to-do
get_name
^^^^^^^^
@@ -204,9 +211,15 @@ and/or front-buffer rendering.
is_format_supported
^^^^^^^^^^^^^^^^^^^
-See if a format can be used in a specific manner.
+Determine if a resource in the given format can be used in a specific manner.
-**tex_usage** is a bitmask of :ref:`PIPE_BIND` flags.
+**format** the resource format
+
+**target** one of the PIPE_TEXTURE_x flags
+
+**bindings** is a bitmask of :ref:`PIPE_BIND` flags.
+
+**geom_flags** is a bitmask of PIPE_TEXTURE_GEOM_x flags.
Returns TRUE if all usages can be satisfied.
@@ -214,15 +227,35 @@ Returns TRUE if all usages can be satisfied.
.. _resource_create:
resource_create
-^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^
+
+Create a new resource from a template.
+The following fields of the pipe_resource must be specified in the template:
+
+target
+
+format
+
+width0
+
+height0
+
+depth0
+
+last_level
+
+nr_samples
+
+usage
+
+bind
+
+flags
+
-Given a template of texture setup, create a resource.
-The way a resource may be used is specifed by bind flags, :ref:`pipe_bind`.
-and hints are used to indicate to the driver what access pattern might be
-likely, :ref:`pipe_usage`.
resource_destroy
-^^^^^^^^^^^^^^^
+^^^^^^^^^^^^^^^^
Destroy a resource. A resource is destroyed if it has no more references.
diff --git a/src/gallium/docs/source/tgsi.rst b/src/gallium/docs/source/tgsi.rst
index c292cd37d5..e2c8602da0 100644
--- a/src/gallium/docs/source/tgsi.rst
+++ b/src/gallium/docs/source/tgsi.rst
@@ -786,33 +786,6 @@ This instruction replicates its result.
TBD
-.. opcode:: BGNFOR - Begin a For-Loop
-
- dst.x = floor(src.x)
- dst.y = floor(src.y)
- dst.z = floor(src.z)
-
- if (dst.y <= 0)
- pc = [matching ENDFOR] + 1
- endif
-
- Note: The destination must be a loop register.
- The source must be a constant register.
-
-.. note::
-
- Considered for cleanup.
-
-.. note::
-
- Considered for removal.
-
-
-.. opcode:: REP - Repeat
-
- TBD
-
-
.. opcode:: ELSE - Else
TBD
@@ -823,30 +796,6 @@ This instruction replicates its result.
TBD
-.. opcode:: ENDFOR - End a For-Loop
-
- dst.x = dst.x + dst.z
- dst.y = dst.y - 1.0
-
- if (dst.y > 0)
- pc = [matching BGNFOR instruction] + 1
- endif
-
- Note: The destination must be a loop register.
-
-.. note::
-
- Considered for cleanup.
-
-.. note::
-
- Considered for removal.
-
-.. opcode:: ENDREP - End Repeat
-
- TBD
-
-
.. opcode:: PUSHA - Push Address Register On Stack
push(src.x)
diff --git a/src/gallium/drivers/cell/spu/spu_exec.c b/src/gallium/drivers/cell/spu/spu_exec.c
index d2166a4901..d7788bd9bb 100644
--- a/src/gallium/drivers/cell/spu/spu_exec.c
+++ b/src/gallium/drivers/cell/spu/spu_exec.c
@@ -1622,14 +1622,6 @@ exec_instruction(
*pc = -1;
break;
- case TGSI_OPCODE_REP:
- ASSERT (0);
- break;
-
- case TGSI_OPCODE_ENDREP:
- ASSERT (0);
- break;
-
case TGSI_OPCODE_PUSHA:
ASSERT (0);
break;
@@ -1743,8 +1735,6 @@ exec_instruction(
mach->Primitives[mach->Temps[TEMP_PRIMITIVE_I].xyzw[TEMP_PRIMITIVE_C].u[0]] = 0;
break;
- case TGSI_OPCODE_BGNFOR:
- /* fall-through (for now) */
case TGSI_OPCODE_BGNLOOP:
/* push LoopMask and ContMasks */
ASSERT(mach->LoopStackTop < TGSI_EXEC_MAX_LOOP_NESTING);
@@ -1753,8 +1743,6 @@ exec_instruction(
mach->ContStack[mach->ContStackTop++] = mach->ContMask;
break;
- case TGSI_OPCODE_ENDFOR:
- /* fall-through (for now at least) */
case TGSI_OPCODE_ENDLOOP:
/* Restore ContMask, but don't pop */
ASSERT(mach->ContStackTop > 0);
diff --git a/src/gallium/drivers/failover/fo_context.c b/src/gallium/drivers/failover/fo_context.c
index 236c50f4d9..9515cd8938 100644
--- a/src/gallium/drivers/failover/fo_context.c
+++ b/src/gallium/drivers/failover/fo_context.c
@@ -39,7 +39,7 @@ static void failover_destroy( struct pipe_context *pipe )
{
struct failover_context *failover = failover_context( pipe );
- free( failover );
+ FREE( failover );
}
diff --git a/src/gallium/drivers/failover/fo_state.c b/src/gallium/drivers/failover/fo_state.c
index b682ce6750..272e683067 100644
--- a/src/gallium/drivers/failover/fo_state.c
+++ b/src/gallium/drivers/failover/fo_state.c
@@ -29,6 +29,7 @@
*/
#include "util/u_inlines.h"
+#include "util/u_memory.h"
#include "fo_context.h"
@@ -53,7 +54,7 @@ static void *
failover_create_blend_state( struct pipe_context *pipe,
const struct pipe_blend_state *blend )
{
- struct fo_state *state = malloc(sizeof(struct fo_state));
+ struct fo_state *state = MALLOC(sizeof(struct fo_state));
struct failover_context *failover = failover_context(pipe);
state->sw_state = failover->sw->create_blend_state(failover->sw, blend);
@@ -85,7 +86,7 @@ failover_delete_blend_state( struct pipe_context *pipe,
failover->hw->delete_blend_state(failover->hw, state->hw_state);
state->sw_state = 0;
state->hw_state = 0;
- free(state);
+ FREE(state);
}
static void
@@ -129,7 +130,7 @@ static void *
failover_create_depth_stencil_state(struct pipe_context *pipe,
const struct pipe_depth_stencil_alpha_state *templ)
{
- struct fo_state *state = malloc(sizeof(struct fo_state));
+ struct fo_state *state = MALLOC(sizeof(struct fo_state));
struct failover_context *failover = failover_context(pipe);
state->sw_state = failover->sw->create_depth_stencil_alpha_state(failover->sw, templ);
@@ -161,7 +162,7 @@ failover_delete_depth_stencil_state(struct pipe_context *pipe,
failover->hw->delete_depth_stencil_alpha_state(failover->hw, state->hw_state);
state->sw_state = 0;
state->hw_state = 0;
- free(state);
+ FREE(state);
}
static void
@@ -181,7 +182,7 @@ static void *
failover_create_fs_state(struct pipe_context *pipe,
const struct pipe_shader_state *templ)
{
- struct fo_state *state = malloc(sizeof(struct fo_state));
+ struct fo_state *state = MALLOC(sizeof(struct fo_state));
struct failover_context *failover = failover_context(pipe);
state->sw_state = failover->sw->create_fs_state(failover->sw, templ);
@@ -212,14 +213,14 @@ failover_delete_fs_state(struct pipe_context *pipe,
failover->hw->delete_fs_state(failover->hw, state->hw_state);
state->sw_state = 0;
state->hw_state = 0;
- free(state);
+ FREE(state);
}
static void *
failover_create_vs_state(struct pipe_context *pipe,
const struct pipe_shader_state *templ)
{
- struct fo_state *state = malloc(sizeof(struct fo_state));
+ struct fo_state *state = MALLOC(sizeof(struct fo_state));
struct failover_context *failover = failover_context(pipe);
state->sw_state = failover->sw->create_vs_state(failover->sw, templ);
@@ -252,7 +253,7 @@ failover_delete_vs_state(struct pipe_context *pipe,
failover->hw->delete_vs_state(failover->hw, state->hw_state);
state->sw_state = 0;
state->hw_state = 0;
- free(state);
+ FREE(state);
}
@@ -262,7 +263,7 @@ failover_create_vertex_elements_state( struct pipe_context *pipe,
unsigned count,
const struct pipe_vertex_element *velems )
{
- struct fo_state *state = malloc(sizeof(struct fo_state));
+ struct fo_state *state = MALLOC(sizeof(struct fo_state));
struct failover_context *failover = failover_context(pipe);
state->sw_state = failover->sw->create_vertex_elements_state(failover->sw, count, velems);
@@ -295,7 +296,7 @@ failover_delete_vertex_elements_state( struct pipe_context *pipe,
failover->hw->delete_vertex_elements_state(failover->hw, state->hw_state);
state->sw_state = 0;
state->hw_state = 0;
- free(state);
+ FREE(state);
}
static void
@@ -315,7 +316,7 @@ static void *
failover_create_rasterizer_state(struct pipe_context *pipe,
const struct pipe_rasterizer_state *templ)
{
- struct fo_state *state = malloc(sizeof(struct fo_state));
+ struct fo_state *state = MALLOC(sizeof(struct fo_state));
struct failover_context *failover = failover_context(pipe);
state->sw_state = failover->sw->create_rasterizer_state(failover->sw, templ);
@@ -348,7 +349,7 @@ failover_delete_rasterizer_state(struct pipe_context *pipe,
failover->hw->delete_rasterizer_state(failover->hw, state->hw_state);
state->sw_state = 0;
state->hw_state = 0;
- free(state);
+ FREE(state);
}
@@ -369,7 +370,7 @@ static void *
failover_create_sampler_state(struct pipe_context *pipe,
const struct pipe_sampler_state *templ)
{
- struct fo_state *state = malloc(sizeof(struct fo_state));
+ struct fo_state *state = MALLOC(sizeof(struct fo_state));
struct failover_context *failover = failover_context(pipe);
state->sw_state = failover->sw->create_sampler_state(failover->sw, templ);
@@ -443,7 +444,7 @@ failover_delete_sampler_state(struct pipe_context *pipe, void *sampler)
failover->hw->delete_sampler_state(failover->hw, state->hw_state);
state->sw_state = 0;
state->hw_state = 0;
- free(state);
+ FREE(state);
}
@@ -452,7 +453,7 @@ failover_create_sampler_view(struct pipe_context *pipe,
struct pipe_resource *texture,
const struct pipe_sampler_view *templ)
{
- struct fo_sampler_view *view = malloc(sizeof(struct fo_sampler_view));
+ struct fo_sampler_view *view = MALLOC(sizeof(struct fo_sampler_view));
struct failover_context *failover = failover_context(pipe);
view->sw = failover->sw->create_sampler_view(failover->sw, texture, templ);
@@ -478,7 +479,7 @@ failover_sampler_view_destroy(struct pipe_context *pipe,
failover->hw->sampler_view_destroy(failover->hw, fo_view->hw);
pipe_resource_reference(&fo_view->base.texture, NULL);
- free(fo_view);
+ FREE(fo_view);
}
static void
diff --git a/src/gallium/drivers/i965/brw_curbe.c b/src/gallium/drivers/i965/brw_curbe.c
index 323af16b14..a701de33f5 100644
--- a/src/gallium/drivers/i965/brw_curbe.c
+++ b/src/gallium/drivers/i965/brw_curbe.c
@@ -168,7 +168,7 @@ static enum pipe_error prepare_curbe_buffer(struct brw_context *brw)
if (sz == 0) {
if (brw->curbe.last_buf) {
- free(brw->curbe.last_buf);
+ FREE(brw->curbe.last_buf);
brw->curbe.last_buf = NULL;
brw->curbe.last_bufsz = 0;
}
diff --git a/src/gallium/drivers/i965/brw_state_batch.c b/src/gallium/drivers/i965/brw_state_batch.c
index 7d212e5c24..ce5ed0a9ed 100644
--- a/src/gallium/drivers/i965/brw_state_batch.c
+++ b/src/gallium/drivers/i965/brw_state_batch.c
@@ -84,8 +84,8 @@ void brw_clear_batch_cache( struct brw_context *brw )
while (item) {
struct brw_cached_batch_item *next = item->next;
- free((void *)item->header);
- free(item);
+ FREE((void *)item->header);
+ FREE(item);
item = next;
}
diff --git a/src/gallium/drivers/i965/intel_decode.c b/src/gallium/drivers/i965/intel_decode.c
index 6c47415cac..bd8b9174a8 100644
--- a/src/gallium/drivers/i965/intel_decode.c
+++ b/src/gallium/drivers/i965/intel_decode.c
@@ -40,6 +40,7 @@
#include <stdint.h>
#include <string.h>
+#include "util/u_string.h"
#include "intel_decode.h"
/*#include "intel_chipset.h"*/
@@ -478,7 +479,7 @@ i915_get_instruction_src0(const uint32_t *data, int i, char *srcname)
char swizzle[100];
i915_get_instruction_src_name((a0 >> 7) & 0x7, src_nr, srcname);
- sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
+ util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
if (strcmp(swizzle, ".xyzw") != 0)
strcat(srcname, swizzle);
}
@@ -496,7 +497,7 @@ i915_get_instruction_src1(const uint32_t *data, int i, char *srcname)
char swizzle[100];
i915_get_instruction_src_name((a1 >> 13) & 0x7, src_nr, srcname);
- sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
+ util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
if (strcmp(swizzle, ".xyzw") != 0)
strcat(srcname, swizzle);
}
@@ -513,7 +514,7 @@ i915_get_instruction_src2(const uint32_t *data, int i, char *srcname)
char swizzle[100];
i915_get_instruction_src_name((a2 >> 21) & 0x7, src_nr, srcname);
- sprintf(swizzle, ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
+ util_snprintf(swizzle, sizeof(swizzle), ".%s%s%s%s", swizzle_x, swizzle_y, swizzle_z, swizzle_w);
if (strcmp(swizzle, ".xyzw") != 0)
strcat(srcname, swizzle);
}
@@ -642,7 +643,7 @@ i915_decode_dcl(const uint32_t *data, uint32_t hw_offset, int i, char *instr_pre
switch ((d0 >> 19) & 0x3) {
case 1:
- sprintf(dcl_mask, ".%s%s%s%s", dcl_x, dcl_y, dcl_z, dcl_w);
+ util_snprintf(dcl_mask, sizeof(dcl_mask), ".%s%s%s%s", dcl_x, dcl_y, dcl_z, dcl_w);
if (strcmp(dcl_mask, ".") == 0)
fprintf(out, "bad (empty) dcl mask\n");
@@ -976,7 +977,7 @@ decode_3d_1d(const uint32_t *data, int count, uint32_t hw_offset, int *failures,
if (i + 3 >= count)
BUFFER_FAIL(count, len, "3DSTATE_PIXEL_SHADER_PROGRAM");
- sprintf(instr_prefix, "PS%03d", instr);
+ util_snprintf(instr_prefix, sizeof(instr_prefix), "PS%03d", instr);
i915_decode_instruction(data, hw_offset, i, instr_prefix);
i += 3;
}
diff --git a/src/gallium/drivers/identity/id_context.c b/src/gallium/drivers/identity/id_context.c
index 630cdb5e49..0bc8bf2196 100644
--- a/src/gallium/drivers/identity/id_context.c
+++ b/src/gallium/drivers/identity/id_context.c
@@ -42,7 +42,7 @@ identity_destroy(struct pipe_context *_pipe)
pipe->destroy(pipe);
- free(id_pipe);
+ FREE(id_pipe);
}
static void
@@ -708,7 +708,7 @@ identity_create_sampler_view(struct pipe_context *pipe,
struct identity_resource *id_resource = identity_resource(texture);
struct pipe_context *pipe_unwrapped = id_pipe->pipe;
struct pipe_resource *texture_unwrapped = id_resource->resource;
- struct identity_sampler_view *view = malloc(sizeof(struct identity_sampler_view));
+ struct identity_sampler_view *view = MALLOC(sizeof(struct identity_sampler_view));
view->sampler_view = pipe_unwrapped->create_sampler_view(pipe_unwrapped,
texture_unwrapped,
@@ -736,7 +736,7 @@ identity_sampler_view_destroy(struct pipe_context *pipe,
view_unwrapped);
pipe_resource_reference(&view->texture, NULL);
- free(view);
+ FREE(view);
}
static struct pipe_transfer *
diff --git a/src/gallium/drivers/identity/id_drm.c b/src/gallium/drivers/identity/id_drm.c
index d332c36af2..a9d41af18c 100644
--- a/src/gallium/drivers/identity/id_drm.c
+++ b/src/gallium/drivers/identity/id_drm.c
@@ -68,7 +68,7 @@ identity_drm_destroy(struct drm_api *_api)
struct drm_api *api = id_api->api;
api->destroy(api);
- free(id_api);
+ FREE(id_api);
}
struct drm_api *
diff --git a/src/gallium/drivers/llvmpipe/Makefile b/src/gallium/drivers/llvmpipe/Makefile
index 4a3fc036c4..4ea367597e 100644
--- a/src/gallium/drivers/llvmpipe/Makefile
+++ b/src/gallium/drivers/llvmpipe/Makefile
@@ -40,7 +40,7 @@ C_SOURCES = \
lp_state_vertex.c \
lp_state_vs.c \
lp_surface.c \
- lp_tex_sample_llvm.c \
+ lp_tex_sample.c \
lp_texture.c \
lp_tile_image.c \
lp_tile_soa.c
@@ -58,8 +58,9 @@ include ../../Makefile.template
lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxiliary/util/u_format_pack.py ../../auxiliary/util/u_format.csv
python lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@
-
-LIBS += $(GL_LIB_DEPS) -L../../auxiliary/ -lgallium libllvmpipe.a
+LDFLAGS += $(LLVM_LDFLAGS)
+LIBS += $(GL_LIB_DEPS) -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS)
+LD=g++
$(PROGS): lp_test_main.o libllvmpipe.a
diff --git a/src/gallium/drivers/llvmpipe/SConscript b/src/gallium/drivers/llvmpipe/SConscript
index b9e9826e2a..2911cf2179 100644
--- a/src/gallium/drivers/llvmpipe/SConscript
+++ b/src/gallium/drivers/llvmpipe/SConscript
@@ -60,7 +60,7 @@ llvmpipe = env.ConvenienceLibrary(
'lp_state_vertex.c',
'lp_state_vs.c',
'lp_surface.c',
- 'lp_tex_sample_llvm.c',
+ 'lp_tex_sample.c',
'lp_texture.c',
'lp_tile_image.c',
'lp_tile_soa.c',
diff --git a/src/gallium/drivers/llvmpipe/lp_context.c b/src/gallium/drivers/llvmpipe/lp_context.c
index f7cf06d8d4..32b80d3a9f 100644
--- a/src/gallium/drivers/llvmpipe/lp_context.c
+++ b/src/gallium/drivers/llvmpipe/lp_context.c
@@ -97,63 +97,24 @@ llvmpipe_create_context( struct pipe_screen *screen, void *priv )
llvmpipe->pipe.winsys = screen->winsys;
llvmpipe->pipe.screen = screen;
llvmpipe->pipe.priv = priv;
- llvmpipe->pipe.destroy = llvmpipe_destroy;
-
- /* state setters */
- llvmpipe->pipe.create_blend_state = llvmpipe_create_blend_state;
- llvmpipe->pipe.bind_blend_state = llvmpipe_bind_blend_state;
- llvmpipe->pipe.delete_blend_state = llvmpipe_delete_blend_state;
-
- llvmpipe->pipe.create_sampler_state = llvmpipe_create_sampler_state;
- llvmpipe->pipe.bind_fragment_sampler_states = llvmpipe_bind_sampler_states;
- llvmpipe->pipe.bind_vertex_sampler_states = llvmpipe_bind_vertex_sampler_states;
- llvmpipe->pipe.delete_sampler_state = llvmpipe_delete_sampler_state;
-
- llvmpipe->pipe.create_depth_stencil_alpha_state = llvmpipe_create_depth_stencil_state;
- llvmpipe->pipe.bind_depth_stencil_alpha_state = llvmpipe_bind_depth_stencil_state;
- llvmpipe->pipe.delete_depth_stencil_alpha_state = llvmpipe_delete_depth_stencil_state;
-
- llvmpipe->pipe.create_rasterizer_state = llvmpipe_create_rasterizer_state;
- llvmpipe->pipe.bind_rasterizer_state = llvmpipe_bind_rasterizer_state;
- llvmpipe->pipe.delete_rasterizer_state = llvmpipe_delete_rasterizer_state;
-
- llvmpipe->pipe.create_fs_state = llvmpipe_create_fs_state;
- llvmpipe->pipe.bind_fs_state = llvmpipe_bind_fs_state;
- llvmpipe->pipe.delete_fs_state = llvmpipe_delete_fs_state;
-
- llvmpipe->pipe.create_vs_state = llvmpipe_create_vs_state;
- llvmpipe->pipe.bind_vs_state = llvmpipe_bind_vs_state;
- llvmpipe->pipe.delete_vs_state = llvmpipe_delete_vs_state;
- llvmpipe->pipe.create_vertex_elements_state = llvmpipe_create_vertex_elements_state;
- llvmpipe->pipe.bind_vertex_elements_state = llvmpipe_bind_vertex_elements_state;
- llvmpipe->pipe.delete_vertex_elements_state = llvmpipe_delete_vertex_elements_state;
-
- llvmpipe->pipe.set_blend_color = llvmpipe_set_blend_color;
- llvmpipe->pipe.set_stencil_ref = llvmpipe_set_stencil_ref;
- llvmpipe->pipe.set_clip_state = llvmpipe_set_clip_state;
- llvmpipe->pipe.set_constant_buffer = llvmpipe_set_constant_buffer;
+ /* Init the pipe context methods */
+ llvmpipe->pipe.destroy = llvmpipe_destroy;
llvmpipe->pipe.set_framebuffer_state = llvmpipe_set_framebuffer_state;
- llvmpipe->pipe.set_polygon_stipple = llvmpipe_set_polygon_stipple;
- llvmpipe->pipe.set_scissor_state = llvmpipe_set_scissor_state;
- llvmpipe->pipe.set_fragment_sampler_views = llvmpipe_set_fragment_sampler_views;
- llvmpipe->pipe.set_vertex_sampler_views = llvmpipe_set_vertex_sampler_views;
- llvmpipe->pipe.create_sampler_view = llvmpipe_create_sampler_view;
- llvmpipe->pipe.sampler_view_destroy = llvmpipe_sampler_view_destroy;
- llvmpipe->pipe.set_viewport_state = llvmpipe_set_viewport_state;
-
- llvmpipe->pipe.set_vertex_buffers = llvmpipe_set_vertex_buffers;
-
- llvmpipe->pipe.draw_arrays = llvmpipe_draw_arrays;
- llvmpipe->pipe.draw_elements = llvmpipe_draw_elements;
- llvmpipe->pipe.draw_range_elements = llvmpipe_draw_range_elements;
-
llvmpipe->pipe.clear = llvmpipe_clear;
llvmpipe->pipe.flush = llvmpipe_flush;
-
+ llvmpipe_init_blend_funcs(llvmpipe);
+ llvmpipe_init_clip_funcs(llvmpipe);
+ llvmpipe_init_draw_funcs(llvmpipe);
+ llvmpipe_init_sampler_funcs(llvmpipe);
llvmpipe_init_query_funcs( llvmpipe );
+ llvmpipe_init_vertex_funcs(llvmpipe);
+ llvmpipe_init_fs_funcs(llvmpipe);
+ llvmpipe_init_vs_funcs(llvmpipe);
+ llvmpipe_init_rasterizer_funcs(llvmpipe);
llvmpipe_init_context_resource_funcs( &llvmpipe->pipe );
+ llvmpipe_init_surface_functions(llvmpipe);
/*
* Create drawing context and plug our rendering stage into it.
@@ -186,8 +147,6 @@ llvmpipe_create_context( struct pipe_screen *screen, void *priv )
draw_install_pstipple_stage(llvmpipe->draw, &llvmpipe->pipe);
#endif
- lp_init_surface_functions(llvmpipe);
-
lp_reset_counters();
return &llvmpipe->pipe;
diff --git a/src/gallium/drivers/llvmpipe/lp_context.h b/src/gallium/drivers/llvmpipe/lp_context.h
index 4848101ffb..4e597b2479 100644
--- a/src/gallium/drivers/llvmpipe/lp_context.h
+++ b/src/gallium/drivers/llvmpipe/lp_context.h
@@ -94,9 +94,6 @@ struct llvmpipe_context {
/** Vertex format */
struct vertex_info vertex_info;
- /** Which vertex shader output slot contains point size */
- int psize_slot;
-
/** The tiling engine */
struct lp_setup_context *setup;
diff --git a/src/gallium/drivers/llvmpipe/lp_draw_arrays.c b/src/gallium/drivers/llvmpipe/lp_draw_arrays.c
index 0b63e1c889..98780d7631 100644
--- a/src/gallium/drivers/llvmpipe/lp_draw_arrays.c
+++ b/src/gallium/drivers/llvmpipe/lp_draw_arrays.c
@@ -42,20 +42,12 @@
-void
-llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
- unsigned start, unsigned count)
-{
- llvmpipe_draw_elements(pipe, NULL, 0, 0, mode, start, count);
-}
-
-
/**
* Draw vertex arrays, with optional indexing.
* Basically, map the vertex buffers (and drawing surfaces), then hand off
* the drawing to the 'draw' module.
*/
-void
+static void
llvmpipe_draw_range_elements(struct pipe_context *pipe,
struct pipe_resource *indexBuffer,
unsigned indexSize,
@@ -115,7 +107,7 @@ llvmpipe_draw_range_elements(struct pipe_context *pipe,
}
-void
+static void
llvmpipe_draw_elements(struct pipe_context *pipe,
struct pipe_resource *indexBuffer,
unsigned indexSize,
@@ -128,3 +120,19 @@ llvmpipe_draw_elements(struct pipe_context *pipe,
mode, start, count );
}
+
+static void
+llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
+ unsigned start, unsigned count)
+{
+ llvmpipe_draw_elements(pipe, NULL, 0, 0, mode, start, count);
+}
+
+
+void
+llvmpipe_init_draw_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.draw_arrays = llvmpipe_draw_arrays;
+ llvmpipe->pipe.draw_elements = llvmpipe_draw_elements;
+ llvmpipe->pipe.draw_range_elements = llvmpipe_draw_range_elements;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_flush.c b/src/gallium/drivers/llvmpipe/lp_flush.c
index 3627dbd759..644b821957 100644
--- a/src/gallium/drivers/llvmpipe/lp_flush.c
+++ b/src/gallium/drivers/llvmpipe/lp_flush.c
@@ -96,41 +96,40 @@ llvmpipe_flush( struct pipe_context *pipe,
/**
* Flush context if necessary.
*
- * TODO: move this logic to an auxiliary library?
+ * Returns FALSE if it would have block, but do_not_block was set, TRUE
+ * otherwise.
*
- * FIXME: We must implement DISCARD/DONTBLOCK/UNSYNCHRONIZED/etc for
- * textures to avoid blocking.
+ * TODO: move this logic to an auxiliary library?
*/
boolean
-llvmpipe_flush_texture(struct pipe_context *pipe,
- struct pipe_resource *texture,
- unsigned face,
- unsigned level,
- unsigned flush_flags,
- boolean read_only,
- boolean cpu_access,
- boolean do_not_flush)
+llvmpipe_flush_resource(struct pipe_context *pipe,
+ struct pipe_resource *resource,
+ unsigned face,
+ unsigned level,
+ unsigned flush_flags,
+ boolean read_only,
+ boolean cpu_access,
+ boolean do_not_block)
{
unsigned referenced;
- referenced = pipe->is_resource_referenced(pipe, texture, face, level);
+ referenced = pipe->is_resource_referenced(pipe, resource, face, level);
if ((referenced & PIPE_REFERENCED_FOR_WRITE) ||
((referenced & PIPE_REFERENCED_FOR_READ) && !read_only)) {
- if (do_not_flush)
- return FALSE;
-
- /*
- * TODO: The semantics of these flush flags are too obtuse. They should
- * disappear and the pipe driver should just ensure that all visible
- * side-effects happen when they need to happen.
- */
- if (referenced & PIPE_REFERENCED_FOR_WRITE)
- flush_flags |= PIPE_FLUSH_RENDER_CACHE;
+ if (resource->target != PIPE_BUFFER) {
+ /*
+ * TODO: The semantics of these flush flags are too obtuse. They should
+ * disappear and the pipe driver should just ensure that all visible
+ * side-effects happen when they need to happen.
+ */
+ if (referenced & PIPE_REFERENCED_FOR_WRITE)
+ flush_flags |= PIPE_FLUSH_RENDER_CACHE;
- if (referenced & PIPE_REFERENCED_FOR_READ)
- flush_flags |= PIPE_FLUSH_TEXTURE_CACHE;
+ if (referenced & PIPE_REFERENCED_FOR_READ)
+ flush_flags |= PIPE_FLUSH_TEXTURE_CACHE;
+ }
if (cpu_access) {
/*
@@ -139,6 +138,9 @@ llvmpipe_flush_texture(struct pipe_context *pipe,
struct pipe_fence_handle *fence = NULL;
+ if (do_not_block)
+ return FALSE;
+
pipe->flush(pipe, flush_flags, &fence);
if (fence) {
diff --git a/src/gallium/drivers/llvmpipe/lp_flush.h b/src/gallium/drivers/llvmpipe/lp_flush.h
index 2375d22b85..7b605681a9 100644
--- a/src/gallium/drivers/llvmpipe/lp_flush.h
+++ b/src/gallium/drivers/llvmpipe/lp_flush.h
@@ -33,17 +33,18 @@
struct pipe_context;
struct pipe_fence_handle;
-void llvmpipe_flush(struct pipe_context *pipe, unsigned flags,
- struct pipe_fence_handle **fence);
+void
+llvmpipe_flush(struct pipe_context *pipe, unsigned flags,
+ struct pipe_fence_handle **fence);
boolean
-llvmpipe_flush_texture(struct pipe_context *pipe,
- struct pipe_resource *texture,
- unsigned face,
- unsigned level,
- unsigned flush_flags,
- boolean read_only,
- boolean cpu_access,
- boolean do_not_flush);
+llvmpipe_flush_resource(struct pipe_context *pipe,
+ struct pipe_resource *resource,
+ unsigned face,
+ unsigned level,
+ unsigned flush_flags,
+ boolean read_only,
+ boolean cpu_access,
+ boolean do_not_block);
#endif
diff --git a/src/gallium/drivers/llvmpipe/lp_jit.c b/src/gallium/drivers/llvmpipe/lp_jit.c
index 8690941a50..466a2f54fb 100644
--- a/src/gallium/drivers/llvmpipe/lp_jit.c
+++ b/src/gallium/drivers/llvmpipe/lp_jit.c
@@ -171,15 +171,6 @@ lp_jit_screen_cleanup(struct llvmpipe_screen *screen)
void
lp_jit_screen_init(struct llvmpipe_screen *screen)
{
- util_cpu_detect();
-
-#if 0
- /* For simulating less capable machines */
- util_cpu_caps.has_sse3 = 0;
- util_cpu_caps.has_ssse3 = 0;
- util_cpu_caps.has_sse4_1 = 0;
-#endif
-
lp_build_init();
screen->module = lp_build_module;
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_size.h b/src/gallium/drivers/llvmpipe/lp_limits.h
index f0b983c063..4102a9df67 100644
--- a/src/gallium/drivers/llvmpipe/lp_tile_size.h
+++ b/src/gallium/drivers/llvmpipe/lp_limits.h
@@ -25,8 +25,12 @@
*
**************************************************************************/
-#ifndef LP_TILE_SIZE_H
-#define LP_TILE_SIZE_H
+/**
+ * Implementation limits for LLVMpipe driver.
+ */
+
+#ifndef LP_LIMITS_H
+#define LP_LIMITS_H
/**
@@ -36,4 +40,31 @@
#define TILE_SIZE (1 << TILE_ORDER)
-#endif
+/**
+ * Max texture sizes
+ */
+#define LP_MAX_TEXTURE_2D_LEVELS 13 /* 4K x 4K for now */
+#define LP_MAX_TEXTURE_3D_LEVELS 10 /* 512 x 512 x 512 for now */
+
+
+/** This must be the larger of LP_MAX_TEXTURE_2D/3D_LEVELS */
+#define LP_MAX_TEXTURE_LEVELS LP_MAX_TEXTURE_2D_LEVELS
+
+
+/**
+ * Max drawing surface size is the max texture size
+ */
+#define LP_MAX_HEIGHT (1 << (LP_MAX_TEXTURE_LEVELS - 1))
+#define LP_MAX_WIDTH (1 << (LP_MAX_TEXTURE_LEVELS - 1))
+
+
+#define LP_MAX_THREADS 8
+
+
+/**
+ * Max bytes per scene. This may be replaced by a runtime parameter.
+ */
+#define LP_MAX_SCENE_SIZE (512 * 1024 * 1024)
+
+
+#endif /* LP_LIMITS_H */
diff --git a/src/gallium/drivers/llvmpipe/lp_rast.c b/src/gallium/drivers/llvmpipe/lp_rast.c
index 4046701b85..a00a592f2f 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.c
+++ b/src/gallium/drivers/llvmpipe/lp_rast.c
@@ -28,7 +28,6 @@
#include <limits.h>
#include "util/u_memory.h"
#include "util/u_math.h"
-#include "util/u_cpu_detect.h"
#include "util/u_surface.h"
#include "lp_scene_queue.h"
@@ -122,9 +121,11 @@ lp_rast_end( struct lp_rasterizer *rast )
rast->curr_scene = NULL;
+#ifdef DEBUG
if (0)
- printf("Post render scene: tile read: %d tile write: %d\n",
- tile_read_count, tile_write_count);
+ debug_printf("Post render scene: tile unswizzle: %u tile swizzle: %u\n",
+ lp_tile_unswizzle_count, lp_tile_swizzle_count);
+#endif
}
@@ -869,20 +870,6 @@ create_rast_threads(struct lp_rasterizer *rast)
{
unsigned i;
-#ifdef PIPE_OS_WINDOWS
- /* Multithreading not supported on windows until conditions and barriers are
- * properly implemented. */
- rast->num_threads = 0;
-#else
-#ifdef PIPE_OS_EMBEDDED
- rast->num_threads = 0;
-#else
- rast->num_threads = util_cpu_caps.nr_cpus;
-#endif
- rast->num_threads = debug_get_num_option("LP_NUM_THREADS", rast->num_threads);
- rast->num_threads = MIN2(rast->num_threads, MAX_THREADS);
-#endif
-
/* NOTE: if num_threads is zero, we won't use any threads */
for (i = 0; i < rast->num_threads; i++) {
pipe_semaphore_init(&rast->tasks[i].work_ready, 0);
@@ -895,12 +882,12 @@ create_rast_threads(struct lp_rasterizer *rast)
/**
- * Create new lp_rasterizer.
- * \param empty the queue to put empty scenes on after we've finished
- * processing them.
+ * Create new lp_rasterizer. If num_threads is zero, don't create any
+ * new threads, do rendering synchronously.
+ * \param num_threads number of rasterizer threads to create
*/
struct lp_rasterizer *
-lp_rast_create( void )
+lp_rast_create( unsigned num_threads )
{
struct lp_rasterizer *rast;
unsigned i;
@@ -917,6 +904,8 @@ lp_rast_create( void )
task->thread_index = i;
}
+ rast->num_threads = num_threads;
+
create_rast_threads(rast);
/* for synchronizing rasterization threads */
@@ -955,6 +944,8 @@ void lp_rast_destroy( struct lp_rasterizer *rast )
/* for synchronizing rasterization threads */
pipe_barrier_destroy( &rast->barrier );
+ lp_scene_queue_destroy(rast->full_scenes);
+
FREE(rast);
}
diff --git a/src/gallium/drivers/llvmpipe/lp_rast.h b/src/gallium/drivers/llvmpipe/lp_rast.h
index a0ecb2fc47..e2f6f92677 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast.h
+++ b/src/gallium/drivers/llvmpipe/lp_rast.h
@@ -134,7 +134,7 @@ struct lp_rast_triangle {
struct lp_rasterizer *
-lp_rast_create( void );
+lp_rast_create( unsigned num_threads );
void
lp_rast_destroy( struct lp_rasterizer * );
diff --git a/src/gallium/drivers/llvmpipe/lp_rast_priv.h b/src/gallium/drivers/llvmpipe/lp_rast_priv.h
index 8bf2b92a6a..5884d12721 100644
--- a/src/gallium/drivers/llvmpipe/lp_rast_priv.h
+++ b/src/gallium/drivers/llvmpipe/lp_rast_priv.h
@@ -35,9 +35,7 @@
#include "lp_scene.h"
#include "lp_texture.h"
#include "lp_tile_soa.h"
-
-
-#define MAX_THREADS 8 /* XXX probably temporary here */
+#include "lp_limits.h"
struct lp_rasterizer;
@@ -107,16 +105,16 @@ struct lp_rasterizer
* (potentially) shared, these empty scenes should be returned to
* the context which created them rather than retained here.
*/
- struct lp_scene_queue *empty_scenes;
+ /* struct lp_scene_queue *empty_scenes; */
/** The scene currently being rasterized by the threads */
struct lp_scene *curr_scene;
/** A task object for each rasterization thread */
- struct lp_rasterizer_task tasks[MAX_THREADS];
+ struct lp_rasterizer_task tasks[LP_MAX_THREADS];
unsigned num_threads;
- pipe_thread threads[MAX_THREADS];
+ pipe_thread threads[LP_MAX_THREADS];
/** For synchronizing the rasterization threads */
pipe_barrier barrier;
diff --git a/src/gallium/drivers/llvmpipe/lp_scene.c b/src/gallium/drivers/llvmpipe/lp_scene.c
index 182e7cb230..1482a777ff 100644
--- a/src/gallium/drivers/llvmpipe/lp_scene.c
+++ b/src/gallium/drivers/llvmpipe/lp_scene.c
@@ -32,9 +32,20 @@
#include "util/u_surface.h"
#include "lp_scene.h"
#include "lp_scene_queue.h"
-#include "lp_debug.h"
+/** List of texture references */
+struct texture_ref {
+ struct pipe_resource *texture;
+ struct texture_ref *prev, *next; /**< linked list w/ u_simple_list.h */
+};
+
+
+
+/**
+ * Create a new scene object.
+ * \param queue the queue to put newly rendered/emptied scenes into
+ */
struct lp_scene *
lp_scene_create( struct pipe_context *pipe,
struct lp_scene_queue *queue )
@@ -57,7 +68,7 @@ lp_scene_create( struct pipe_context *pipe,
scene->data.head =
scene->data.tail = CALLOC_STRUCT(data_block);
- make_empty_list(&scene->textures);
+ make_empty_list(&scene->resources);
pipe_mutex_init(scene->mutex);
@@ -66,7 +77,7 @@ lp_scene_create( struct pipe_context *pipe,
/**
- * Free all data associated with the given scene, and free(scene).
+ * Free all data associated with the given scene, and the scene itself.
*/
void
lp_scene_destroy(struct lp_scene *scene)
@@ -178,15 +189,17 @@ lp_scene_reset(struct lp_scene *scene )
/* Release texture refs
*/
{
- struct texture_ref *ref, *next, *ref_list = &scene->textures;
+ struct resource_ref *ref, *next, *ref_list = &scene->resources;
for (ref = ref_list->next; ref != ref_list; ref = next) {
next = next_elem(ref);
- pipe_resource_reference(&ref->texture, NULL);
+ pipe_resource_reference(&ref->resource, NULL);
FREE(ref);
}
make_empty_list(ref_list);
}
+ scene->scene_size = 0;
+
scene->has_color_clear = FALSE;
scene->has_depth_clear = FALSE;
}
@@ -218,7 +231,10 @@ lp_bin_new_data_block( struct data_block_list *list )
}
-/** Return number of bytes used for all bin data within a scene */
+/**
+ * Return number of bytes used for all bin data within a scene.
+ * This does not include resources (textures) referenced by the scene.
+ */
unsigned
lp_scene_data_size( const struct lp_scene *scene )
{
@@ -247,32 +263,34 @@ lp_scene_bin_size( const struct lp_scene *scene, unsigned x, unsigned y )
/**
- * Add a reference to a texture by the scene.
+ * Add a reference to a resource by the scene.
*/
void
-lp_scene_texture_reference( struct lp_scene *scene,
- struct pipe_resource *texture )
+lp_scene_add_resource_reference(struct lp_scene *scene,
+ struct pipe_resource *resource)
{
- struct texture_ref *ref = CALLOC_STRUCT(texture_ref);
+ struct resource_ref *ref = CALLOC_STRUCT(resource_ref);
if (ref) {
- struct texture_ref *ref_list = &scene->textures;
- pipe_resource_reference(&ref->texture, texture);
+ struct resource_ref *ref_list = &scene->resources;
+ pipe_resource_reference(&ref->resource, resource);
insert_at_tail(ref_list, ref);
}
+
+ scene->scene_size += llvmpipe_resource_size(resource);
}
/**
- * Does this scene have a reference to the given texture?
+ * Does this scene have a reference to the given resource?
*/
boolean
-lp_scene_is_resource_referenced( const struct lp_scene *scene,
- const struct pipe_resource *texture )
+lp_scene_is_resource_referenced(const struct lp_scene *scene,
+ const struct pipe_resource *resource)
{
- const struct texture_ref *ref_list = &scene->textures;
- const struct texture_ref *ref;
+ const struct resource_ref *ref_list = &scene->resources;
+ const struct resource_ref *ref;
foreach (ref, ref_list) {
- if (ref->texture == texture)
+ if (ref->resource == resource)
return TRUE;
}
return FALSE;
@@ -393,61 +411,6 @@ end:
}
-
-/**
- * Prepare this scene for the rasterizer.
- * Map the framebuffer surfaces. Initialize the 'rast' state.
- */
-static boolean
-lp_scene_map_buffers( struct lp_scene *scene )
-{
- LP_DBG(DEBUG_RAST, "%s\n", __FUNCTION__);
-
- /* XXX framebuffer surfaces are no longer mapped here */
- /* XXX move all map/unmap stuff into rast module... */
-
- return TRUE;
-}
-
-
-
-/**
- * Called after rasterizer as finished rasterizing a scene.
- *
- * We want to call this from the pipe_context's current thread to
- * avoid having to have mutexes on the transfer functions.
- */
-static void
-lp_scene_unmap_buffers( struct lp_scene *scene )
-{
-#if 0
- unsigned i;
-
- for (i = 0; i < scene->fb.nr_cbufs; i++) {
- if (scene->cbuf_map[i]) {
- struct pipe_surface *cbuf = scene->fb.cbufs[i];
- llvmpipe_resource_unmap(cbuf->texture,
- cbuf->face,
- cbuf->level,
- cbuf->zslice);
- scene->cbuf_map[i] = NULL;
- }
- }
-
- if (scene->zsbuf_map) {
- struct pipe_surface *zsbuf = scene->fb.zsbuf;
- llvmpipe_resource_unmap(zsbuf->texture,
- zsbuf->face,
- zsbuf->level,
- zsbuf->zslice);
- scene->zsbuf_map = NULL;
- }
-#endif
-
- util_unreference_framebuffer_state( &scene->fb );
-}
-
-
void lp_scene_begin_binning( struct lp_scene *scene,
struct pipe_framebuffer_state *fb )
{
@@ -464,8 +427,7 @@ void lp_scene_begin_binning( struct lp_scene *scene,
void lp_scene_rasterize( struct lp_scene *scene,
- struct lp_rasterizer *rast,
- boolean write_depth )
+ struct lp_rasterizer *rast )
{
if (0) {
unsigned x, y;
@@ -479,11 +441,6 @@ void lp_scene_rasterize( struct lp_scene *scene,
}
}
- scene->write_depth = (scene->fb.zsbuf != NULL &&
- write_depth);
-
- lp_scene_map_buffers( scene );
-
/* Enqueue the scene for rasterization, then immediately wait for
* it to finish.
*/
@@ -494,6 +451,9 @@ void lp_scene_rasterize( struct lp_scene *scene,
* transfers become per-context:
*/
lp_rast_finish( rast );
- lp_scene_unmap_buffers( scene );
+
+ util_unreference_framebuffer_state( &scene->fb );
+
+ /* put scene into the empty list */
lp_scene_enqueue( scene->empty_queue, scene );
}
diff --git a/src/gallium/drivers/llvmpipe/lp_scene.h b/src/gallium/drivers/llvmpipe/lp_scene.h
index ac0717db6a..9467cd6f16 100644
--- a/src/gallium/drivers/llvmpipe/lp_scene.h
+++ b/src/gallium/drivers/llvmpipe/lp_scene.h
@@ -44,10 +44,8 @@ struct lp_scene_queue;
/* We're limited to 2K by 2K for 32bit fixed point rasterization.
* Will need a 64-bit version for larger framebuffers.
*/
-#define MAXHEIGHT 2048
-#define MAXWIDTH 2048
-#define TILES_X (MAXWIDTH / TILE_SIZE)
-#define TILES_Y (MAXHEIGHT / TILE_SIZE)
+#define TILES_X (LP_MAX_WIDTH / TILE_SIZE)
+#define TILES_Y (LP_MAX_HEIGHT / TILE_SIZE)
#define CMD_BLOCK_MAX 128
@@ -97,10 +95,10 @@ struct data_block_list {
};
-/** List of texture references */
-struct texture_ref {
- struct pipe_resource *texture;
- struct texture_ref *prev, *next; /**< linked list w/ u_simple_list.h */
+/** List of resource references */
+struct resource_ref {
+ struct pipe_resource *resource;
+ struct resource_ref *prev, *next; /**< linked list w/ u_simple_list.h */
};
@@ -118,10 +116,14 @@ struct lp_scene {
/** the framebuffer to render the scene into */
struct pipe_framebuffer_state fb;
- /** list of textures referenced by the scene commands */
- struct texture_ref textures;
+ /** list of resources referenced by the scene commands */
+ struct resource_ref resources;
+
+ /** Approx memory used by the scene (in bytes). This includes the
+ * shared and per-tile bins plus any referenced resources/textures.
+ */
+ unsigned scene_size;
- boolean write_depth;
boolean has_color_clear;
boolean has_depth_clear;
@@ -164,11 +166,11 @@ unsigned lp_scene_data_size( const struct lp_scene *scene );
unsigned lp_scene_bin_size( const struct lp_scene *scene, unsigned x, unsigned y );
-void lp_scene_texture_reference( struct lp_scene *scene,
- struct pipe_resource *texture );
+void lp_scene_add_resource_reference(struct lp_scene *scene,
+ struct pipe_resource *resource);
-boolean lp_scene_is_resource_referenced( const struct lp_scene *scene,
- const struct pipe_resource *texture );
+boolean lp_scene_is_resource_referenced(const struct lp_scene *scene,
+ const struct pipe_resource *resource );
/**
@@ -184,6 +186,8 @@ lp_scene_alloc( struct lp_scene *scene, unsigned size)
lp_bin_new_data_block( list );
}
+ scene->scene_size += size;
+
{
struct data_block *tail = list->tail;
ubyte *data = tail->data + tail->used;
@@ -206,6 +210,8 @@ lp_scene_alloc_aligned( struct lp_scene *scene, unsigned size,
lp_bin_new_data_block( list );
}
+ scene->scene_size += size;
+
{
struct data_block *tail = list->tail;
ubyte *data = tail->data + tail->used;
@@ -222,6 +228,7 @@ static INLINE void
lp_scene_putback_data( struct lp_scene *scene, unsigned size)
{
struct data_block_list *list = &scene->data;
+ scene->scene_size -= size;
assert(list->tail->used >= size);
list->tail->used -= size;
}
@@ -304,11 +311,18 @@ lp_scene_bin_iter_next( struct lp_scene *scene, int *bin_x, int *bin_y );
void
lp_scene_rasterize( struct lp_scene *scene,
- struct lp_rasterizer *rast,
- boolean write_depth );
+ struct lp_rasterizer *rast );
void
lp_scene_begin_binning( struct lp_scene *scene,
struct pipe_framebuffer_state *fb );
+
+static INLINE unsigned
+lp_scene_get_size(const struct lp_scene *scene)
+{
+ return scene->scene_size;
+}
+
+
#endif /* LP_BIN_H */
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.c b/src/gallium/drivers/llvmpipe/lp_screen.c
index 6d309c6b64..111eedc4f2 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.c
+++ b/src/gallium/drivers/llvmpipe/lp_screen.c
@@ -27,6 +27,8 @@
#include "util/u_memory.h"
+#include "util/u_math.h"
+#include "util/u_cpu_detect.h"
#include "util/u_format.h"
#include "util/u_format_s3tc.h"
#include "pipe/p_defines.h"
@@ -39,6 +41,7 @@
#include "lp_context.h"
#include "lp_debug.h"
#include "lp_public.h"
+#include "lp_limits.h"
#include "state_tracker/sw_winsys.h"
@@ -94,6 +97,8 @@ llvmpipe_get_param(struct pipe_screen *screen, int param)
return 1;
case PIPE_CAP_GLSL:
return 1;
+ case PIPE_CAP_SM3:
+ return 1;
case PIPE_CAP_ANISOTROPIC_FILTER:
return 0;
case PIPE_CAP_POINT_SPRITE:
@@ -165,7 +170,7 @@ static boolean
llvmpipe_is_format_supported( struct pipe_screen *_screen,
enum pipe_format format,
enum pipe_texture_target target,
- unsigned tex_usage,
+ unsigned bind,
unsigned geom_flags )
{
struct llvmpipe_screen *screen = llvmpipe_screen(_screen);
@@ -173,7 +178,7 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
const struct util_format_description *format_desc;
format_desc = util_format_description(format);
- if(!format_desc)
+ if (!format_desc)
return FALSE;
assert(target == PIPE_TEXTURE_1D ||
@@ -181,45 +186,42 @@ llvmpipe_is_format_supported( struct pipe_screen *_screen,
target == PIPE_TEXTURE_3D ||
target == PIPE_TEXTURE_CUBE);
- switch(format) {
- case PIPE_FORMAT_DXT1_RGB:
- case PIPE_FORMAT_DXT1_RGBA:
- case PIPE_FORMAT_DXT3_RGBA:
- case PIPE_FORMAT_DXT5_RGBA:
- return util_format_s3tc_enabled;
- default:
- break;
- }
-
- if(tex_usage & PIPE_BIND_RENDER_TARGET) {
- if(format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
+ if (bind & PIPE_BIND_RENDER_TARGET) {
+ if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)
return FALSE;
- if(format_desc->block.width != 1 ||
- format_desc->block.height != 1)
+ if (format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
return FALSE;
- if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_RGB &&
- format_desc->colorspace != UTIL_FORMAT_COLORSPACE_SRGB)
+ if (format_desc->block.width != 1 ||
+ format_desc->block.height != 1)
return FALSE;
}
- if(tex_usage & (PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_SCANOUT |
- PIPE_BIND_SHARED)) {
- if(!winsys->is_displaytarget_format_supported(winsys, tex_usage, format))
+ if (bind & PIPE_BIND_DISPLAY_TARGET) {
+ if(!winsys->is_displaytarget_format_supported(winsys, bind, format))
return FALSE;
}
- if(tex_usage & PIPE_BIND_DEPTH_STENCIL) {
- if(format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
+ if (bind & PIPE_BIND_DEPTH_STENCIL) {
+ if (format_desc->layout != UTIL_FORMAT_LAYOUT_PLAIN)
+ return FALSE;
+
+ if (format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
return FALSE;
/* FIXME: Temporary restriction. See lp_state_fs.c. */
- if(format_desc->block.bits != 32)
+ if (format_desc->block.bits != 32)
return FALSE;
}
+ if (format_desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
+ return util_format_s3tc_enabled;
+ }
+
+ /*
+ * Everything else should be supported by u_format.
+ */
return TRUE;
}
@@ -286,12 +288,26 @@ llvmpipe_create_screen(struct sw_winsys *winsys)
screen->base.context_create = llvmpipe_create_context;
screen->base.flush_frontbuffer = llvmpipe_flush_frontbuffer;
- util_format_s3tc_init();
-
llvmpipe_init_screen_resource_funcs(&screen->base);
llvmpipe_init_screen_fence_funcs(&screen->base);
lp_jit_screen_init(screen);
+#ifdef PIPE_OS_WINDOWS
+ /* Multithreading not supported on windows until conditions and barriers are
+ * properly implemented. */
+ screen->num_threads = 0;
+#else
+#ifdef PIPE_OS_EMBEDDED
+ screen->num_threads = 0;
+#else
+ screen->num_threads = util_cpu_caps.nr_cpus;
+#endif
+ screen->num_threads = debug_get_num_option("LP_NUM_THREADS", screen->num_threads);
+ screen->num_threads = MIN2(screen->num_threads, LP_MAX_THREADS);
+#endif
+
+ util_format_s3tc_init();
+
return &screen->base;
}
diff --git a/src/gallium/drivers/llvmpipe/lp_screen.h b/src/gallium/drivers/llvmpipe/lp_screen.h
index af25e043cc..4f39432610 100644
--- a/src/gallium/drivers/llvmpipe/lp_screen.h
+++ b/src/gallium/drivers/llvmpipe/lp_screen.h
@@ -58,6 +58,8 @@ struct llvmpipe_screen
LLVMTypeRef context_ptr_type;
+ unsigned num_threads;
+
/* Increments whenever textures are modified. Contexts can track
* this.
*/
diff --git a/src/gallium/drivers/llvmpipe/lp_setup.c b/src/gallium/drivers/llvmpipe/lp_setup.c
index 6be13c60a5..2150956008 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup.c
@@ -74,6 +74,26 @@ lp_setup_get_current_scene(struct lp_setup_context *setup)
}
+/**
+ * Check if the size of the current scene has exceeded the limit.
+ * If so, flush/render it.
+ */
+static void
+setup_check_scene_size_and_flush(struct lp_setup_context *setup)
+{
+ if (setup->scene) {
+ struct lp_scene *scene = lp_setup_get_current_scene(setup);
+ unsigned size = lp_scene_get_size(scene);
+
+ if (size > LP_MAX_SCENE_SIZE) {
+ /*printf("LLVMPIPE: scene size = %u, flushing.\n", size);*/
+ set_scene_state( setup, SETUP_FLUSHED );
+ /*assert(lp_scene_get_size(scene) == 0);*/
+ }
+ }
+}
+
+
static void
first_triangle( struct lp_setup_context *setup,
const float (*v0)[4],
@@ -132,14 +152,11 @@ static void reset_context( struct lp_setup_context *setup )
/** Rasterize all scene's bins */
static void
-lp_setup_rasterize_scene( struct lp_setup_context *setup,
- boolean write_depth )
+lp_setup_rasterize_scene( struct lp_setup_context *setup )
{
struct lp_scene *scene = lp_setup_get_current_scene(setup);
- lp_scene_rasterize(scene,
- setup->rast,
- write_depth);
+ lp_scene_rasterize(scene, setup->rast);
reset_context( setup );
@@ -190,7 +207,7 @@ execute_clears( struct lp_setup_context *setup )
LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
begin_binning( setup );
- lp_setup_rasterize_scene( setup, TRUE );
+ lp_setup_rasterize_scene( setup );
}
@@ -221,7 +238,7 @@ set_scene_state( struct lp_setup_context *setup,
if (old_state == SETUP_CLEARED)
execute_clears( setup );
else
- lp_setup_rasterize_scene( setup, TRUE );
+ lp_setup_rasterize_scene( setup );
break;
default:
@@ -243,7 +260,7 @@ lp_setup_flush( struct lp_setup_context *setup,
if (setup->scene) {
struct lp_scene *scene = lp_setup_get_current_scene(setup);
- union lp_rast_cmd_arg dummy;
+ union lp_rast_cmd_arg dummy = {0};
if (flags & (PIPE_FLUSH_SWAPBUFFERS |
PIPE_FLUSH_FRAME)) {
@@ -343,20 +360,25 @@ lp_setup_clear( struct lp_setup_context *setup,
struct pipe_fence_handle *
lp_setup_fence( struct lp_setup_context *setup )
{
- struct lp_scene *scene = lp_setup_get_current_scene(setup);
- const unsigned rank = lp_scene_get_num_bins( scene ); /* xxx */
- struct lp_fence *fence = lp_fence_create(rank);
+ if (setup->num_threads == 0) {
+ return NULL;
+ }
+ else {
+ struct lp_scene *scene = lp_setup_get_current_scene(setup);
+ const unsigned rank = lp_scene_get_num_bins( scene ); /* xxx */
+ struct lp_fence *fence = lp_fence_create(rank);
- LP_DBG(DEBUG_SETUP, "%s rank %u\n", __FUNCTION__, rank);
+ LP_DBG(DEBUG_SETUP, "%s rank %u\n", __FUNCTION__, rank);
- set_scene_state( setup, SETUP_ACTIVE );
+ set_scene_state( setup, SETUP_ACTIVE );
- /* insert the fence into all command bins */
- lp_scene_bin_everywhere( scene,
- lp_rast_fence,
- lp_rast_arg_fence(fence) );
+ /* insert the fence into all command bins */
+ lp_scene_bin_everywhere( scene,
+ lp_rast_fence,
+ lp_rast_arg_fence(fence) );
- return (struct pipe_fence_handle *) fence;
+ return (struct pipe_fence_handle *) fence;
+ }
}
@@ -591,10 +613,14 @@ lp_setup_is_resource_referenced( const struct lp_setup_context *setup,
void
lp_setup_update_state( struct lp_setup_context *setup )
{
- struct lp_scene *scene = lp_setup_get_current_scene(setup);
+ struct lp_scene *scene;
LP_DBG(DEBUG_SETUP, "%s\n", __FUNCTION__);
+ setup_check_scene_size_and_flush(setup);
+
+ scene = lp_setup_get_current_scene(setup);
+
assert(setup->fs.current.jit_function);
/* Some of the 'draw' pipeline stages may have changed some driver state.
@@ -715,7 +741,7 @@ lp_setup_update_state( struct lp_setup_context *setup )
*/
for (i = 0; i < Elements(setup->fs.current_tex); i++) {
if (setup->fs.current_tex[i])
- lp_scene_texture_reference(scene, setup->fs.current_tex[i]);
+ lp_scene_add_resource_reference(scene, setup->fs.current_tex[i]);
}
}
}
@@ -736,6 +762,8 @@ lp_setup_destroy( struct lp_setup_context *setup )
reset_context( setup );
+ util_unreference_framebuffer_state(&setup->fb);
+
for (i = 0; i < Elements(setup->fs.current_tex); i++) {
pipe_resource_reference(&setup->fs.current_tex[i], NULL);
}
@@ -750,6 +778,8 @@ lp_setup_destroy( struct lp_setup_context *setup )
lp_scene_destroy(scene);
}
+ lp_scene_queue_destroy(setup->empty_scenes);
+
lp_rast_destroy( setup->rast );
FREE( setup );
@@ -765,8 +795,9 @@ struct lp_setup_context *
lp_setup_create( struct pipe_context *pipe,
struct draw_context *draw )
{
- unsigned i;
+ struct llvmpipe_screen *screen = llvmpipe_screen(pipe->screen);
struct lp_setup_context *setup = CALLOC_STRUCT(lp_setup_context);
+ unsigned i;
if (!setup)
return NULL;
@@ -779,7 +810,8 @@ lp_setup_create( struct pipe_context *pipe,
/* XXX: move this to the screen and share between contexts:
*/
- setup->rast = lp_rast_create();
+ setup->num_threads = screen->num_threads;
+ setup->rast = lp_rast_create(screen->num_threads);
if (!setup->rast)
goto fail;
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_context.h b/src/gallium/drivers/llvmpipe/lp_setup_context.h
index 4594f7597d..584764ce8a 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_context.h
+++ b/src/gallium/drivers/llvmpipe/lp_setup_context.h
@@ -80,6 +80,7 @@ struct lp_setup_context
* create/install this itself now.
*/
struct draw_stage *vbuf;
+ unsigned num_threads;
struct lp_rasterizer *rast;
struct lp_scene *scenes[MAX_SCENES]; /**< all the scenes */
struct lp_scene *scene; /**< current scene being built */
diff --git a/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c b/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
index a401275478..5d3122e8ba 100644
--- a/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
+++ b/src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
@@ -440,7 +440,12 @@ lp_setup_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
static void
lp_setup_vbuf_destroy(struct vbuf_render *vbr)
{
- lp_setup_destroy(lp_setup_context(vbr));
+ struct lp_setup_context *setup = lp_setup_context(vbr);
+ if (setup->vertex_buffer) {
+ align_free(setup->vertex_buffer);
+ setup->vertex_buffer = NULL;
+ }
+ lp_setup_destroy(setup);
}
diff --git a/src/gallium/drivers/llvmpipe/lp_state.h b/src/gallium/drivers/llvmpipe/lp_state.h
index dcbff190b6..18143807c9 100644
--- a/src/gallium/drivers/llvmpipe/lp_state.h
+++ b/src/gallium/drivers/llvmpipe/lp_state.h
@@ -31,11 +31,10 @@
#ifndef LP_STATE_H
#define LP_STATE_H
-#include "gallivm/lp_bld.h"
-
#include "pipe/p_state.h"
#include "tgsi/tgsi_scan.h"
#include "lp_jit.h"
+#include "gallivm/lp_bld.h"
#include "gallivm/lp_bld_sample.h" /* for struct lp_sampler_static_state */
@@ -85,8 +84,6 @@ struct lp_fragment_shader_variant_key
struct lp_fragment_shader_variant
{
- struct lp_fragment_shader *shader;
-
struct lp_fragment_shader_variant_key key;
LLVMValueRef function[2];
@@ -97,11 +94,7 @@ struct lp_fragment_shader_variant
};
-/**
- * Subclass of pipe_shader_state (though it doesn't really need to be).
- *
- * This is starting to look an awful lot like a quad pipeline stage...
- */
+/** Subclass of pipe_shader_state */
struct lp_fragment_shader
{
struct pipe_shader_state base;
@@ -109,140 +102,58 @@ struct lp_fragment_shader
struct tgsi_shader_info info;
struct lp_fragment_shader_variant *variants;
-
- struct lp_fragment_shader_variant *current;
};
/** Subclass of pipe_shader_state */
-struct lp_vertex_shader {
+struct lp_vertex_shader
+{
struct pipe_shader_state shader;
struct draw_vertex_shader *draw_data;
};
-struct lp_velems_state {
+
+/** Vertex element state */
+struct lp_velems_state
+{
unsigned count;
struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS];
};
-void *
-llvmpipe_create_blend_state(struct pipe_context *,
- const struct pipe_blend_state *);
-void llvmpipe_bind_blend_state(struct pipe_context *,
- void *);
-void llvmpipe_delete_blend_state(struct pipe_context *,
- void *);
-
-void *
-llvmpipe_create_sampler_state(struct pipe_context *,
- const struct pipe_sampler_state *);
-void llvmpipe_bind_sampler_states(struct pipe_context *, unsigned, void **);
void
-llvmpipe_bind_vertex_sampler_states(struct pipe_context *,
- unsigned num_samplers,
- void **samplers);
-void llvmpipe_delete_sampler_state(struct pipe_context *, void *);
-
-void *
-llvmpipe_create_depth_stencil_state(struct pipe_context *,
- const struct pipe_depth_stencil_alpha_state *);
-void llvmpipe_bind_depth_stencil_state(struct pipe_context *, void *);
-void llvmpipe_delete_depth_stencil_state(struct pipe_context *, void *);
-
-void *
-llvmpipe_create_rasterizer_state(struct pipe_context *,
- const struct pipe_rasterizer_state *);
-void llvmpipe_bind_rasterizer_state(struct pipe_context *, void *);
-void llvmpipe_delete_rasterizer_state(struct pipe_context *, void *);
-
-void llvmpipe_set_framebuffer_state( struct pipe_context *,
- const struct pipe_framebuffer_state * );
-
-void llvmpipe_set_blend_color( struct pipe_context *pipe,
- const struct pipe_blend_color *blend_color );
-
-void llvmpipe_set_stencil_ref( struct pipe_context *pipe,
- const struct pipe_stencil_ref *stencil_ref );
-
-void llvmpipe_set_clip_state( struct pipe_context *,
- const struct pipe_clip_state * );
-
-void llvmpipe_set_constant_buffer(struct pipe_context *,
- uint shader, uint index,
- struct pipe_resource *buf);
-
-void *llvmpipe_create_fs_state(struct pipe_context *,
- const struct pipe_shader_state *);
-void llvmpipe_bind_fs_state(struct pipe_context *, void *);
-void llvmpipe_delete_fs_state(struct pipe_context *, void *);
-void *llvmpipe_create_vs_state(struct pipe_context *,
- const struct pipe_shader_state *);
-void llvmpipe_bind_vs_state(struct pipe_context *, void *);
-void llvmpipe_delete_vs_state(struct pipe_context *, void *);
-
-void *llvmpipe_create_vertex_elements_state(struct pipe_context *,
- unsigned count,
- const struct pipe_vertex_element *);
-void llvmpipe_bind_vertex_elements_state(struct pipe_context *, void *);
-void llvmpipe_delete_vertex_elements_state(struct pipe_context *, void *);
-
-void llvmpipe_set_polygon_stipple( struct pipe_context *,
- const struct pipe_poly_stipple * );
-
-void llvmpipe_set_scissor_state( struct pipe_context *,
- const struct pipe_scissor_state * );
-
-void llvmpipe_set_fragment_sampler_views(struct pipe_context *,
- unsigned num,
- struct pipe_sampler_view **);
+llvmpipe_set_framebuffer_state(struct pipe_context *,
+ const struct pipe_framebuffer_state *);
void
-llvmpipe_set_vertex_sampler_views(struct pipe_context *,
- unsigned num,
- struct pipe_sampler_view **);
-
-struct pipe_sampler_view *
-llvmpipe_create_sampler_view(struct pipe_context *pipe,
- struct pipe_resource *texture,
- const struct pipe_sampler_view *templ);
+llvmpipe_update_fs(struct llvmpipe_context *lp);
void
-llvmpipe_sampler_view_destroy(struct pipe_context *pipe,
- struct pipe_sampler_view *view);
+llvmpipe_update_derived(struct llvmpipe_context *llvmpipe);
-void llvmpipe_set_viewport_state( struct pipe_context *,
- const struct pipe_viewport_state * );
-
-void llvmpipe_set_vertex_buffers(struct pipe_context *,
- unsigned count,
- const struct pipe_vertex_buffer *);
+void
+llvmpipe_init_sampler_funcs(struct llvmpipe_context *llvmpipe);
-void llvmpipe_update_fs(struct llvmpipe_context *lp);
+void
+llvmpipe_init_blend_funcs(struct llvmpipe_context *llvmpipe);
-void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe );
+void
+llvmpipe_init_vertex_funcs(struct llvmpipe_context *llvmpipe);
+void
+llvmpipe_init_draw_funcs(struct llvmpipe_context *llvmpipe);
-void llvmpipe_draw_arrays(struct pipe_context *pipe, unsigned mode,
- unsigned start, unsigned count);
+void
+llvmpipe_init_clip_funcs(struct llvmpipe_context *llvmpipe);
-void llvmpipe_draw_elements(struct pipe_context *pipe,
- struct pipe_resource *indexBuffer,
- unsigned indexSize, int indexBias,
- unsigned mode, unsigned start, unsigned count);
void
-llvmpipe_draw_range_elements(struct pipe_context *pipe,
- struct pipe_resource *indexBuffer,
- unsigned indexSize, int indexBias,
- unsigned min_index,
- unsigned max_index,
- unsigned mode, unsigned start, unsigned count);
+llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe);
void
-llvmpipe_map_texture_surfaces(struct llvmpipe_context *lp);
+llvmpipe_init_vs_funcs(struct llvmpipe_context *llvmpipe);
void
-llvmpipe_unmap_texture_surfaces(struct llvmpipe_context *lp);
+llvmpipe_init_rasterizer_funcs(struct llvmpipe_context *llvmpipe);
#endif
diff --git a/src/gallium/drivers/llvmpipe/lp_state_blend.c b/src/gallium/drivers/llvmpipe/lp_state_blend.c
index 4ee28473e8..8569507f4e 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_blend.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_blend.c
@@ -40,15 +40,16 @@
#include "lp_state.h"
-void *
+static void *
llvmpipe_create_blend_state(struct pipe_context *pipe,
const struct pipe_blend_state *blend)
{
return mem_dup(blend, sizeof(*blend));
}
-void llvmpipe_bind_blend_state( struct pipe_context *pipe,
- void *blend )
+
+static void
+llvmpipe_bind_blend_state(struct pipe_context *pipe, void *blend)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -62,15 +63,17 @@ void llvmpipe_bind_blend_state( struct pipe_context *pipe,
llvmpipe->dirty |= LP_NEW_BLEND;
}
-void llvmpipe_delete_blend_state(struct pipe_context *pipe,
- void *blend)
+
+static void
+llvmpipe_delete_blend_state(struct pipe_context *pipe, void *blend)
{
FREE( blend );
}
-void llvmpipe_set_blend_color( struct pipe_context *pipe,
- const struct pipe_blend_color *blend_color )
+static void
+llvmpipe_set_blend_color(struct pipe_context *pipe,
+ const struct pipe_blend_color *blend_color)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -93,14 +96,15 @@ void llvmpipe_set_blend_color( struct pipe_context *pipe,
*/
-void *
+static void *
llvmpipe_create_depth_stencil_state(struct pipe_context *pipe,
const struct pipe_depth_stencil_alpha_state *depth_stencil)
{
return mem_dup(depth_stencil, sizeof(*depth_stencil));
}
-void
+
+static void
llvmpipe_bind_depth_stencil_state(struct pipe_context *pipe,
void *depth_stencil)
{
@@ -116,14 +120,17 @@ llvmpipe_bind_depth_stencil_state(struct pipe_context *pipe,
llvmpipe->dirty |= LP_NEW_DEPTH_STENCIL_ALPHA;
}
-void
+
+static void
llvmpipe_delete_depth_stencil_state(struct pipe_context *pipe, void *depth)
{
FREE( depth );
}
-void llvmpipe_set_stencil_ref( struct pipe_context *pipe,
- const struct pipe_stencil_ref *stencil_ref )
+
+static void
+llvmpipe_set_stencil_ref(struct pipe_context *pipe,
+ const struct pipe_stencil_ref *stencil_ref)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -142,3 +149,18 @@ void llvmpipe_set_stencil_ref( struct pipe_context *pipe,
}
+void
+llvmpipe_init_blend_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.create_blend_state = llvmpipe_create_blend_state;
+ llvmpipe->pipe.bind_blend_state = llvmpipe_bind_blend_state;
+ llvmpipe->pipe.delete_blend_state = llvmpipe_delete_blend_state;
+
+ llvmpipe->pipe.create_depth_stencil_alpha_state = llvmpipe_create_depth_stencil_state;
+ llvmpipe->pipe.bind_depth_stencil_alpha_state = llvmpipe_bind_depth_stencil_state;
+ llvmpipe->pipe.delete_depth_stencil_alpha_state = llvmpipe_delete_depth_stencil_state;
+
+ llvmpipe->pipe.set_blend_color = llvmpipe_set_blend_color;
+
+ llvmpipe->pipe.set_stencil_ref = llvmpipe_set_stencil_ref;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_clip.c b/src/gallium/drivers/llvmpipe/lp_state_clip.c
index df68f27acc..32ae079cc1 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_clip.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_clip.c
@@ -32,8 +32,9 @@
#include "draw/draw_context.h"
-void llvmpipe_set_clip_state( struct pipe_context *pipe,
- const struct pipe_clip_state *clip )
+static void
+llvmpipe_set_clip_state(struct pipe_context *pipe,
+ const struct pipe_clip_state *clip)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -42,8 +43,9 @@ void llvmpipe_set_clip_state( struct pipe_context *pipe,
}
-void llvmpipe_set_viewport_state( struct pipe_context *pipe,
- const struct pipe_viewport_state *viewport )
+static void
+llvmpipe_set_viewport_state(struct pipe_context *pipe,
+ const struct pipe_viewport_state *viewport)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -55,8 +57,9 @@ void llvmpipe_set_viewport_state( struct pipe_context *pipe,
}
-void llvmpipe_set_scissor_state( struct pipe_context *pipe,
- const struct pipe_scissor_state *scissor )
+static void
+llvmpipe_set_scissor_state(struct pipe_context *pipe,
+ const struct pipe_scissor_state *scissor)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -67,8 +70,9 @@ void llvmpipe_set_scissor_state( struct pipe_context *pipe,
}
-void llvmpipe_set_polygon_stipple( struct pipe_context *pipe,
- const struct pipe_poly_stipple *stipple )
+static void
+llvmpipe_set_polygon_stipple(struct pipe_context *pipe,
+ const struct pipe_poly_stipple *stipple)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -77,3 +81,14 @@ void llvmpipe_set_polygon_stipple( struct pipe_context *pipe,
llvmpipe->poly_stipple = *stipple; /* struct copy */
llvmpipe->dirty |= LP_NEW_STIPPLE;
}
+
+
+
+void
+llvmpipe_init_clip_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.set_clip_state = llvmpipe_set_clip_state;
+ llvmpipe->pipe.set_polygon_stipple = llvmpipe_set_polygon_stipple;
+ llvmpipe->pipe.set_scissor_state = llvmpipe_set_scissor_state;
+ llvmpipe->pipe.set_viewport_state = llvmpipe_set_viewport_state;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index 59d5a440c0..513e62e39e 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -403,9 +403,7 @@ generate_fs(struct llvmpipe_context *lp,
LLVMValueRef step2_ptr)
{
const struct tgsi_token *tokens = shader->base.tokens;
- LLVMTypeRef elem_type;
LLVMTypeRef vec_type;
- LLVMTypeRef int_vec_type;
LLVMValueRef consts_ptr;
LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS];
LLVMValueRef z = interp->pos[2];
@@ -422,9 +420,7 @@ generate_fs(struct llvmpipe_context *lp,
stencil_refs[0] = lp_jit_context_stencil_ref_front_value(builder, context_ptr);
stencil_refs[1] = lp_jit_context_stencil_ref_back_value(builder, context_ptr);
- elem_type = lp_build_elem_type(type);
vec_type = lp_build_vec_type(type);
- int_vec_type = lp_build_int_vec_type(type);
consts_ptr = lp_jit_context_constants(builder, context_ptr);
@@ -474,7 +470,7 @@ generate_fs(struct llvmpipe_context *lp,
lp_build_tgsi_soa(builder, tokens, type, &mask,
consts_ptr, interp->pos, interp->inputs,
- outputs, sampler);
+ outputs, sampler, &shader->info);
for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) {
for(chan = 0; chan < NUM_CHANNELS; ++chan) {
@@ -546,7 +542,6 @@ generate_blend(const struct pipe_blend_state *blend,
struct lp_build_flow_context *flow;
struct lp_build_mask_context mask_ctx;
LLVMTypeRef vec_type;
- LLVMTypeRef int_vec_type;
LLVMValueRef const_ptr;
LLVMValueRef con[4];
LLVMValueRef dst[4];
@@ -561,7 +556,6 @@ generate_blend(const struct pipe_blend_state *blend,
lp_build_mask_begin(&mask_ctx, flow, type, mask);
vec_type = lp_build_vec_type(type);
- int_vec_type = lp_build_int_vec_type(type);
const_ptr = lp_jit_context_blend_color(builder, context_ptr);
const_ptr = LLVMBuildBitCast(builder, const_ptr,
@@ -624,10 +618,8 @@ generate_fragment(struct llvmpipe_context *lp,
struct lp_type fs_type;
struct lp_type blend_type;
LLVMTypeRef fs_elem_type;
- LLVMTypeRef fs_vec_type;
LLVMTypeRef fs_int_vec_type;
LLVMTypeRef blend_vec_type;
- LLVMTypeRef blend_int_vec_type;
LLVMTypeRef arg_types[15];
LLVMTypeRef func_type;
LLVMTypeRef int32_vec4_type = lp_build_int32_vec4_type();
@@ -682,11 +674,9 @@ generate_fragment(struct llvmpipe_context *lp,
*/
fs_elem_type = lp_build_elem_type(fs_type);
- fs_vec_type = lp_build_vec_type(fs_type);
fs_int_vec_type = lp_build_int_vec_type(fs_type);
blend_vec_type = lp_build_vec_type(blend_type);
- blend_int_vec_type = lp_build_int_vec_type(blend_type);
arg_types[0] = screen->context_ptr_type; /* context */
arg_types[1] = LLVMInt32Type(); /* x */
@@ -945,7 +935,6 @@ generate_variant(struct llvmpipe_context *lp,
if(!variant)
return NULL;
- variant->shader = shader;
memcpy(&variant->key, key, sizeof *key);
generate_fragment(lp, shader, variant, 0);
@@ -959,7 +948,7 @@ generate_variant(struct llvmpipe_context *lp,
}
-void *
+static void *
llvmpipe_create_fs_state(struct pipe_context *pipe,
const struct pipe_shader_state *templ)
{
@@ -975,11 +964,16 @@ llvmpipe_create_fs_state(struct pipe_context *pipe,
/* we need to keep a local copy of the tokens */
shader->base.tokens = tgsi_dup_tokens(templ->tokens);
+ if (LP_DEBUG & DEBUG_TGSI) {
+ debug_printf("llvmpipe: Create fragment shader %p:\n", (void *) shader);
+ tgsi_dump(templ->tokens, 0);
+ }
+
return shader;
}
-void
+static void
llvmpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -995,7 +989,7 @@ llvmpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
}
-void
+static void
llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -1038,7 +1032,7 @@ llvmpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
-void
+static void
llvmpipe_set_constant_buffer(struct pipe_context *pipe,
uint shader, uint index,
struct pipe_resource *constants)
@@ -1112,8 +1106,8 @@ make_variant_key(struct llvmpipe_context *lp,
unsigned chan;
format_desc = util_format_description(lp->framebuffer.cbufs[i]->format);
- assert(format_desc->layout == UTIL_FORMAT_COLORSPACE_RGB ||
- format_desc->layout == UTIL_FORMAT_COLORSPACE_SRGB);
+ assert(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_RGB ||
+ format_desc->colorspace == UTIL_FORMAT_COLORSPACE_SRGB);
key->blend.rt[i].colormask = lp->blend->rt[i].colormask;
@@ -1169,8 +1163,6 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
LP_COUNT_ADD(nr_llvm_compiles, 2); /* emit vs. omit in/out test */
}
- shader->current = variant;
-
/* TODO: put this in the variant */
/* TODO: most of these can be relaxed, in particular the colormask */
opaque = !key.blend.logicop_enable &&
@@ -1184,7 +1176,19 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
? TRUE : FALSE;
lp_setup_set_fs_functions(lp->setup,
- shader->current->jit_function[RAST_WHOLE],
- shader->current->jit_function[RAST_EDGE_TEST],
+ variant->jit_function[RAST_WHOLE],
+ variant->jit_function[RAST_EDGE_TEST],
opaque);
}
+
+
+
+void
+llvmpipe_init_fs_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.create_fs_state = llvmpipe_create_fs_state;
+ llvmpipe->pipe.bind_fs_state = llvmpipe_bind_fs_state;
+ llvmpipe->pipe.delete_fs_state = llvmpipe_delete_fs_state;
+
+ llvmpipe->pipe.set_constant_buffer = llvmpipe_set_constant_buffer;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
index 47f65fe72d..622eb47ff4 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
@@ -34,7 +34,7 @@
-void *
+static void *
llvmpipe_create_rasterizer_state(struct pipe_context *pipe,
const struct pipe_rasterizer_state *rast)
{
@@ -46,7 +46,7 @@ llvmpipe_create_rasterizer_state(struct pipe_context *pipe,
-void
+static void
llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -71,16 +71,27 @@ llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle)
llvmpipe->rasterizer->front_winding == PIPE_WINDING_CCW,
llvmpipe->rasterizer->scissor,
llvmpipe->rasterizer->gl_rasterization_rules);
+ lp_setup_set_flatshade_first( llvmpipe->setup,
+ llvmpipe->rasterizer->flatshade_first);
}
llvmpipe->dirty |= LP_NEW_RASTERIZER;
}
-void llvmpipe_delete_rasterizer_state(struct pipe_context *pipe,
- void *rasterizer)
+static void
+llvmpipe_delete_rasterizer_state(struct pipe_context *pipe,
+ void *rasterizer)
{
FREE( rasterizer );
}
+
+void
+llvmpipe_init_rasterizer_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.create_rasterizer_state = llvmpipe_create_rasterizer_state;
+ llvmpipe->pipe.bind_rasterizer_state = llvmpipe_bind_rasterizer_state;
+ llvmpipe->pipe.delete_rasterizer_state = llvmpipe_delete_rasterizer_state;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_sampler.c b/src/gallium/drivers/llvmpipe/lp_state_sampler.c
index 3552ff50ce..55d43368a3 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_sampler.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_sampler.c
@@ -41,7 +41,7 @@
-void *
+static void *
llvmpipe_create_sampler_state(struct pipe_context *pipe,
const struct pipe_sampler_state *sampler)
{
@@ -49,7 +49,7 @@ llvmpipe_create_sampler_state(struct pipe_context *pipe,
}
-void
+static void
llvmpipe_bind_sampler_states(struct pipe_context *pipe,
unsigned num, void **sampler)
{
@@ -76,7 +76,7 @@ llvmpipe_bind_sampler_states(struct pipe_context *pipe,
}
-void
+static void
llvmpipe_bind_vertex_sampler_states(struct pipe_context *pipe,
unsigned num_samplers,
void **samplers)
@@ -104,7 +104,7 @@ llvmpipe_bind_vertex_sampler_states(struct pipe_context *pipe,
}
-void
+static void
llvmpipe_set_fragment_sampler_views(struct pipe_context *pipe,
unsigned num,
struct pipe_sampler_view **views)
@@ -133,7 +133,7 @@ llvmpipe_set_fragment_sampler_views(struct pipe_context *pipe,
}
-void
+static void
llvmpipe_set_vertex_sampler_views(struct pipe_context *pipe,
unsigned num,
struct pipe_sampler_view **views)
@@ -163,7 +163,7 @@ llvmpipe_set_vertex_sampler_views(struct pipe_context *pipe,
}
-struct pipe_sampler_view *
+static struct pipe_sampler_view *
llvmpipe_create_sampler_view(struct pipe_context *pipe,
struct pipe_resource *texture,
const struct pipe_sampler_view *templ)
@@ -182,7 +182,7 @@ llvmpipe_create_sampler_view(struct pipe_context *pipe,
}
-void
+static void
llvmpipe_sampler_view_destroy(struct pipe_context *pipe,
struct pipe_sampler_view *view)
{
@@ -191,7 +191,7 @@ llvmpipe_sampler_view_destroy(struct pipe_context *pipe,
}
-void
+static void
llvmpipe_delete_sampler_state(struct pipe_context *pipe,
void *sampler)
{
@@ -199,4 +199,16 @@ llvmpipe_delete_sampler_state(struct pipe_context *pipe,
}
-
+void
+llvmpipe_init_sampler_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.create_sampler_state = llvmpipe_create_sampler_state;
+
+ llvmpipe->pipe.bind_fragment_sampler_states = llvmpipe_bind_sampler_states;
+ llvmpipe->pipe.bind_vertex_sampler_states = llvmpipe_bind_vertex_sampler_states;
+ llvmpipe->pipe.set_fragment_sampler_views = llvmpipe_set_fragment_sampler_views;
+ llvmpipe->pipe.set_vertex_sampler_views = llvmpipe_set_vertex_sampler_views;
+ llvmpipe->pipe.create_sampler_view = llvmpipe_create_sampler_view;
+ llvmpipe->pipe.sampler_view_destroy = llvmpipe_sampler_view_destroy;
+ llvmpipe->pipe.delete_sampler_state = llvmpipe_delete_sampler_state;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_surface.c b/src/gallium/drivers/llvmpipe/lp_state_surface.c
index 7d86c5750c..63b8f27b39 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_surface.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_surface.c
@@ -52,8 +52,8 @@ llvmpipe_set_framebuffer_state(struct pipe_context *pipe,
boolean changed = !util_framebuffer_state_equal(&lp->framebuffer, fb);
- assert(fb->width <= MAXWIDTH);
- assert(fb->height <= MAXHEIGHT);
+ assert(fb->width <= LP_MAX_WIDTH);
+ assert(fb->height <= LP_MAX_HEIGHT);
if (changed) {
diff --git a/src/gallium/drivers/llvmpipe/lp_state_vertex.c b/src/gallium/drivers/llvmpipe/lp_state_vertex.c
index f6427aa908..113f13db01 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_vertex.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_vertex.c
@@ -35,7 +35,7 @@
#include "draw/draw_context.h"
-void *
+static void *
llvmpipe_create_vertex_elements_state(struct pipe_context *pipe,
unsigned count,
const struct pipe_vertex_element *attribs)
@@ -50,7 +50,7 @@ llvmpipe_create_vertex_elements_state(struct pipe_context *pipe,
return velems;
}
-void
+static void
llvmpipe_bind_vertex_elements_state(struct pipe_context *pipe,
void *velems)
{
@@ -65,13 +65,13 @@ llvmpipe_bind_vertex_elements_state(struct pipe_context *pipe,
draw_set_vertex_elements(llvmpipe->draw, lp_velems->count, lp_velems->velem);
}
-void
+static void
llvmpipe_delete_vertex_elements_state(struct pipe_context *pipe, void *velems)
{
FREE( velems );
}
-void
+static void
llvmpipe_set_vertex_buffers(struct pipe_context *pipe,
unsigned count,
const struct pipe_vertex_buffer *buffers)
@@ -87,3 +87,15 @@ llvmpipe_set_vertex_buffers(struct pipe_context *pipe,
draw_set_vertex_buffers(llvmpipe->draw, count, buffers);
}
+
+
+
+void
+llvmpipe_init_vertex_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.create_vertex_elements_state = llvmpipe_create_vertex_elements_state;
+ llvmpipe->pipe.bind_vertex_elements_state = llvmpipe_bind_vertex_elements_state;
+ llvmpipe->pipe.delete_vertex_elements_state = llvmpipe_delete_vertex_elements_state;
+
+ llvmpipe->pipe.set_vertex_buffers = llvmpipe_set_vertex_buffers;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_state_vs.c b/src/gallium/drivers/llvmpipe/lp_state_vs.c
index 884e3878e6..f2d8808990 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_vs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_vs.c
@@ -28,15 +28,17 @@
#include "pipe/p_defines.h"
+#include "tgsi/tgsi_dump.h"
#include "tgsi/tgsi_parse.h"
#include "util/u_memory.h"
#include "draw/draw_context.h"
#include "lp_context.h"
+#include "lp_debug.h"
#include "lp_state.h"
-void *
+static void *
llvmpipe_create_vs_state(struct pipe_context *pipe,
const struct pipe_shader_state *templ)
{
@@ -57,6 +59,11 @@ llvmpipe_create_vs_state(struct pipe_context *pipe,
if (state->draw_data == NULL)
goto fail;
+ if (LP_DEBUG & DEBUG_TGSI) {
+ debug_printf("llvmpipe: Create vertex shader %p:\n", (void *) state);
+ tgsi_dump(templ->tokens, 0);
+ }
+
return state;
fail:
@@ -69,7 +76,7 @@ fail:
}
-void
+static void
llvmpipe_bind_vs_state(struct pipe_context *pipe, void *_vs)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -87,7 +94,7 @@ llvmpipe_bind_vs_state(struct pipe_context *pipe, void *_vs)
}
-void
+static void
llvmpipe_delete_vs_state(struct pipe_context *pipe, void *vs)
{
struct llvmpipe_context *llvmpipe = llvmpipe_context(pipe);
@@ -99,3 +106,13 @@ llvmpipe_delete_vs_state(struct pipe_context *pipe, void *vs)
FREE( (void *)state->shader.tokens );
FREE( state );
}
+
+
+
+void
+llvmpipe_init_vs_funcs(struct llvmpipe_context *llvmpipe)
+{
+ llvmpipe->pipe.create_vs_state = llvmpipe_create_vs_state;
+ llvmpipe->pipe.bind_vs_state = llvmpipe_bind_vs_state;
+ llvmpipe->pipe.delete_vs_state = llvmpipe_delete_vs_state;
+}
diff --git a/src/gallium/drivers/llvmpipe/lp_surface.c b/src/gallium/drivers/llvmpipe/lp_surface.c
index 1a116989d4..8bd83f576f 100644
--- a/src/gallium/drivers/llvmpipe/lp_surface.c
+++ b/src/gallium/drivers/llvmpipe/lp_surface.c
@@ -28,9 +28,9 @@
#include "util/u_rect.h"
#include "lp_context.h"
#include "lp_flush.h"
+#include "lp_limits.h"
#include "lp_surface.h"
#include "lp_texture.h"
-#include "lp_tile_size.h"
/**
@@ -59,19 +59,19 @@ lp_surface_copy(struct pipe_context *pipe,
struct llvmpipe_resource *dst_tex = llvmpipe_resource(dst->texture);
const enum pipe_format format = src_tex->base.format;
- llvmpipe_flush_texture(pipe,
- dst->texture, dst->face, dst->level,
- 0, /* flush_flags */
- FALSE, /* read_only */
- FALSE, /* cpu_access */
- FALSE); /* do_not_flush */
+ llvmpipe_flush_resource(pipe,
+ dst->texture, dst->face, dst->level,
+ 0, /* flush_flags */
+ FALSE, /* read_only */
+ FALSE, /* cpu_access */
+ FALSE); /* do_not_block */
- llvmpipe_flush_texture(pipe,
- src->texture, src->face, src->level,
- 0, /* flush_flags */
- TRUE, /* read_only */
- FALSE, /* cpu_access */
- FALSE); /* do_not_flush */
+ llvmpipe_flush_resource(pipe,
+ src->texture, src->face, src->level,
+ 0, /* flush_flags */
+ TRUE, /* read_only */
+ FALSE, /* cpu_access */
+ FALSE); /* do_not_block */
/*
printf("surface copy from %u to %u: %u,%u to %u,%u %u x %u\n",
@@ -146,7 +146,7 @@ lp_surface_copy(struct pipe_context *pipe,
void
-lp_init_surface_functions(struct llvmpipe_context *lp)
+llvmpipe_init_surface_functions(struct llvmpipe_context *lp)
{
lp->pipe.surface_copy = lp_surface_copy;
lp->pipe.surface_fill = util_surface_fill;
diff --git a/src/gallium/drivers/llvmpipe/lp_surface.h b/src/gallium/drivers/llvmpipe/lp_surface.h
index 4d78a53c4f..b1b896ebd9 100644
--- a/src/gallium/drivers/llvmpipe/lp_surface.h
+++ b/src/gallium/drivers/llvmpipe/lp_surface.h
@@ -36,7 +36,7 @@ struct llvmpipe_context;
extern void
-lp_init_surface_functions(struct llvmpipe_context *lp);
+llvmpipe_init_surface_functions(struct llvmpipe_context *lp);
#endif /* LP_SURFACE_H */
diff --git a/src/gallium/drivers/llvmpipe/lp_test_blend.c b/src/gallium/drivers/llvmpipe/lp_test_blend.c
index 818f7a9a56..fae7bf3fcf 100644
--- a/src/gallium/drivers/llvmpipe/lp_test_blend.c
+++ b/src/gallium/drivers/llvmpipe/lp_test_blend.c
@@ -154,7 +154,6 @@ add_blend_test(LLVMModuleRef module,
enum vector_mode mode,
struct lp_type type)
{
- LLVMTypeRef ret_type;
LLVMTypeRef vec_type;
LLVMTypeRef args[4];
LLVMValueRef func;
@@ -165,7 +164,6 @@ add_blend_test(LLVMModuleRef module,
LLVMBasicBlockRef block;
LLVMBuilderRef builder;
- ret_type = LLVMInt64Type();
vec_type = lp_build_vec_type(type);
args[3] = args[2] = args[1] = args[0] = LLVMPointerType(vec_type, 0);
diff --git a/src/gallium/drivers/llvmpipe/lp_tex_sample_llvm.c b/src/gallium/drivers/llvmpipe/lp_tex_sample.c
index 74b7393e4e..74b7393e4e 100644
--- a/src/gallium/drivers/llvmpipe/lp_tex_sample_llvm.c
+++ b/src/gallium/drivers/llvmpipe/lp_tex_sample.c
diff --git a/src/gallium/drivers/llvmpipe/lp_texture.c b/src/gallium/drivers/llvmpipe/lp_texture.c
index cee170ec83..2f41d620c8 100644
--- a/src/gallium/drivers/llvmpipe/lp_texture.c
+++ b/src/gallium/drivers/llvmpipe/lp_texture.c
@@ -47,7 +47,6 @@
#include "lp_tile_image.h"
#include "lp_texture.h"
#include "lp_setup.h"
-#include "lp_tile_size.h"
#include "state_tracker/sw_winsys.h"
@@ -55,14 +54,18 @@
static INLINE boolean
resource_is_texture(const struct pipe_resource *resource)
{
- const unsigned tex_binds = (PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_SCANOUT |
- PIPE_BIND_SHARED |
- PIPE_BIND_DEPTH_STENCIL |
- PIPE_BIND_SAMPLER_VIEW);
- const struct llvmpipe_resource *lpr = llvmpipe_resource_const(resource);
-
- return (lpr->base.bind & tex_binds) ? TRUE : FALSE;
+ switch (resource->target) {
+ case PIPE_BUFFER:
+ return FALSE;
+ case PIPE_TEXTURE_1D:
+ case PIPE_TEXTURE_2D:
+ case PIPE_TEXTURE_3D:
+ case PIPE_TEXTURE_CUBE:
+ return TRUE;
+ default:
+ assert(0);
+ return FALSE;
+ }
}
@@ -81,7 +84,7 @@ alloc_layout_array(unsigned num_slices, unsigned width, unsigned height)
assert(LP_TEX_LAYOUT_NONE == 0); /* calloc'ing LP_TEX_LAYOUT_NONE here */
return (enum lp_texture_layout *)
- calloc(num_slices * tx * ty, sizeof(enum lp_texture_layout));
+ CALLOC(num_slices * tx * ty, sizeof(enum lp_texture_layout));
}
@@ -189,20 +192,20 @@ llvmpipe_resource_create(struct pipe_screen *_screen,
assert(lpr->base.bind);
- if (lpr->base.bind & (PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_SCANOUT |
- PIPE_BIND_SHARED)) {
- /* displayable surface */
- if (!llvmpipe_displaytarget_layout(screen, lpr))
- goto fail;
- assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
- }
- else if (lpr->base.bind & (PIPE_BIND_SAMPLER_VIEW |
- PIPE_BIND_DEPTH_STENCIL)) {
- /* texture map */
- if (!llvmpipe_texture_layout(screen, lpr))
- goto fail;
- assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
+ if (resource_is_texture(&lpr->base)) {
+ if (lpr->base.bind & PIPE_BIND_DISPLAY_TARGET) {
+ /* displayable surface */
+ if (!llvmpipe_displaytarget_layout(screen, lpr))
+ goto fail;
+ assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
+ }
+ else {
+ /* texture map */
+ if (!llvmpipe_texture_layout(screen, lpr))
+ goto fail;
+ assert(lpr->layout[0][0] == LP_TEX_LAYOUT_NONE);
+ }
+ assert(lpr->layout[0]);
}
else {
/* other data (vertex buffer, const buffer, etc) */
@@ -217,10 +220,6 @@ llvmpipe_resource_create(struct pipe_screen *_screen,
goto fail;
}
- if (resource_is_texture(&lpr->base)) {
- assert(lpr->layout[0]);
- }
-
lpr->id = id_counter++;
return &lpr->base;
@@ -242,6 +241,13 @@ llvmpipe_resource_destroy(struct pipe_screen *pscreen,
/* display target */
struct sw_winsys *winsys = screen->winsys;
winsys->displaytarget_destroy(winsys, lpr->dt);
+
+ if (lpr->tiled[0].data) {
+ align_free(lpr->tiled[0].data);
+ lpr->tiled[0].data = NULL;
+ }
+
+ FREE(lpr->layout[0]);
}
else if (resource_is_texture(pt)) {
/* regular texture */
@@ -265,7 +271,7 @@ llvmpipe_resource_destroy(struct pipe_screen *pscreen,
/* free layout flag arrays */
for (level = 0; level < Elements(lpr->tiled); level++) {
- free(lpr->layout[level]);
+ FREE(lpr->layout[level]);
lpr->layout[level] = NULL;
}
}
@@ -389,10 +395,7 @@ llvmpipe_resource_data(struct pipe_resource *resource)
{
struct llvmpipe_resource *lpr = llvmpipe_resource(resource);
- assert((lpr->base.bind & (PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_SCANOUT |
- PIPE_BIND_SHARED |
- PIPE_BIND_SAMPLER_VIEW)) == 0);
+ assert(!resource_is_texture(resource));
return lpr->data;
}
@@ -496,6 +499,27 @@ llvmpipe_get_transfer(struct pipe_context *pipe,
assert(resource);
assert(sr.level <= resource->last_level);
+ /*
+ * Transfers, like other pipe operations, must happen in order, so flush the
+ * context if necessary.
+ */
+ if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
+ boolean read_only = !(usage & PIPE_TRANSFER_WRITE);
+ boolean do_not_block = !!(usage & PIPE_TRANSFER_DONTBLOCK);
+ if (!llvmpipe_flush_resource(pipe, resource,
+ sr.face, sr.level,
+ 0, /* flush_flags */
+ read_only,
+ TRUE, /* cpu_access */
+ do_not_block)) {
+ /*
+ * It would have blocked, but state tracker requested no to.
+ */
+ assert(do_not_block);
+ return NULL;
+ }
+ }
+
lpr = CALLOC_STRUCT(llvmpipe_transfer);
if (lpr) {
struct pipe_transfer *pt = &lpr->base;
@@ -566,19 +590,6 @@ llvmpipe_transfer_map( struct pipe_context *pipe,
lpr = llvmpipe_resource(transfer->resource);
format = lpr->base.format;
- /*
- * Transfers, like other pipe operations, must happen in order, so flush the
- * context if necessary.
- */
- llvmpipe_flush_texture(pipe,
- transfer->resource,
- transfer->sr.face,
- transfer->sr.level,
- 0, /* flush_flags */
- !(transfer->usage & PIPE_TRANSFER_WRITE), /* read_only */
- TRUE, /* cpu_access */
- FALSE); /* do_not_flush */
-
map = llvmpipe_resource_map(transfer->resource,
transfer->sr.face,
transfer->sr.level,
@@ -994,14 +1005,16 @@ llvmpipe_get_texture_image(struct llvmpipe_resource *lpr,
x * TILE_SIZE, y * TILE_SIZE,
TILE_SIZE, TILE_SIZE,
lpr->base.format,
- lpr->row_stride[level]);
+ lpr->row_stride[level],
+ lpr->tiles_per_row[level]);
}
else {
lp_tiled_to_linear(other_data, target_data,
x * TILE_SIZE, y * TILE_SIZE,
TILE_SIZE, TILE_SIZE,
lpr->base.format,
- lpr->row_stride[level]);
+ lpr->row_stride[level],
+ lpr->tiles_per_row[level]);
}
}
@@ -1090,7 +1103,8 @@ llvmpipe_get_texture_tile_linear(struct llvmpipe_resource *lpr,
if (convert) {
lp_tiled_to_linear(tiled_image, linear_image,
x, y, TILE_SIZE, TILE_SIZE, lpr->base.format,
- lpr->row_stride[level]);
+ lpr->row_stride[level],
+ lpr->tiles_per_row[level]);
}
if (new_layout != cur_layout)
@@ -1138,7 +1152,8 @@ llvmpipe_get_texture_tile(struct llvmpipe_resource *lpr,
if (convert) {
lp_linear_to_tiled(linear_image, tiled_image,
x, y, TILE_SIZE, TILE_SIZE, lpr->base.format,
- lpr->row_stride[level]);
+ lpr->row_stride[level],
+ lpr->tiles_per_row[level]);
}
if (new_layout != cur_layout)
@@ -1152,6 +1167,27 @@ llvmpipe_get_texture_tile(struct llvmpipe_resource *lpr,
}
+/**
+ * Return size of resource in bytes
+ */
+unsigned
+llvmpipe_resource_size(const struct pipe_resource *resource)
+{
+ const struct llvmpipe_resource *lpr = llvmpipe_resource_const(resource);
+ unsigned lvl, size = 0;
+
+ for (lvl = 0; lvl <= lpr->base.last_level; lvl++) {
+ if (lpr->linear[lvl].data)
+ size += tex_image_size(lpr, lvl, LP_TEX_LAYOUT_LINEAR);
+
+ if (lpr->tiled[lvl].data)
+ size += tex_image_size(lpr, lvl, LP_TEX_LAYOUT_TILED);
+ }
+
+ return size;
+}
+
+
void
llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen)
{
diff --git a/src/gallium/drivers/llvmpipe/lp_texture.h b/src/gallium/drivers/llvmpipe/lp_texture.h
index 858975bcee..a8d08d6247 100644
--- a/src/gallium/drivers/llvmpipe/lp_texture.h
+++ b/src/gallium/drivers/llvmpipe/lp_texture.h
@@ -31,12 +31,7 @@
#include "pipe/p_state.h"
#include "util/u_debug.h"
-
-
-#define LP_MAX_TEXTURE_2D_LEVELS 12 /* 2K x 2K for now */
-#define LP_MAX_TEXTURE_3D_LEVELS 10 /* 512 x 512 x 512 for now */
-
-#define LP_MAX_TEXTURE_LEVELS LP_MAX_TEXTURE_2D_LEVELS
+#include "lp_limits.h"
enum lp_texture_usage
@@ -189,6 +184,10 @@ void *
llvmpipe_resource_data(struct pipe_resource *resource);
+unsigned
+llvmpipe_resource_size(const struct pipe_resource *resource);
+
+
ubyte *
llvmpipe_get_texture_image_address(struct llvmpipe_resource *lpr,
unsigned face_slice, unsigned level,
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_image.c b/src/gallium/drivers/llvmpipe/lp_tile_image.c
index 0852150ba7..2b63992dd7 100644
--- a/src/gallium/drivers/llvmpipe/lp_tile_image.c
+++ b/src/gallium/drivers/llvmpipe/lp_tile_image.c
@@ -122,14 +122,15 @@ tile_4_4_uint16(const uint16_t *src, uint16_t *dst, unsigned src_stride)
/**
* Convert a tiled image into a linear image.
- * \param src_stride source row stride in bytes (bytes per row of tiles)
* \param dst_stride dest row stride in bytes
*/
void
lp_tiled_to_linear(const void *src, void *dst,
unsigned x, unsigned y,
unsigned width, unsigned height,
- enum pipe_format format, unsigned dst_stride)
+ enum pipe_format format,
+ unsigned dst_stride,
+ unsigned tiles_per_row)
{
assert(x % TILE_SIZE == 0);
assert(y % TILE_SIZE == 0);
@@ -191,8 +192,6 @@ lp_tiled_to_linear(const void *src, void *dst,
const uint bpp = 4;
const uint tile_w = TILE_SIZE, tile_h = TILE_SIZE;
const uint bytes_per_tile = tile_w * tile_h * bpp;
- const uint src_stride = dst_stride * tile_w;
- const uint tiles_per_row = src_stride / bytes_per_tile;
uint i, j;
for (j = 0; j < height; j += tile_h) {
@@ -202,7 +201,7 @@ lp_tiled_to_linear(const void *src, void *dst,
uint byte_offset = tile_offset * bytes_per_tile;
const uint8_t *src_tile = (uint8_t *) src + byte_offset;
- lp_tile_write_4ub(format,
+ lp_tile_unswizzle_4ub(format,
src_tile,
dst, dst_stride,
ii, jj, tile_w, tile_h);
@@ -215,13 +214,14 @@ lp_tiled_to_linear(const void *src, void *dst,
/**
* Convert a linear image into a tiled image.
* \param src_stride source row stride in bytes
- * \param dst_stride dest row stride in bytes (bytes per row of tiles)
*/
void
lp_linear_to_tiled(const void *src, void *dst,
unsigned x, unsigned y,
unsigned width, unsigned height,
- enum pipe_format format, unsigned src_stride)
+ enum pipe_format format,
+ unsigned src_stride,
+ unsigned tiles_per_row)
{
assert(x % TILE_SIZE == 0);
assert(y % TILE_SIZE == 0);
@@ -281,8 +281,6 @@ lp_linear_to_tiled(const void *src, void *dst,
const uint bpp = 4;
const uint tile_w = TILE_SIZE, tile_h = TILE_SIZE;
const uint bytes_per_tile = tile_w * tile_h * bpp;
- const uint dst_stride = src_stride * tile_w;
- const uint tiles_per_row = dst_stride / bytes_per_tile;
uint i, j;
for (j = 0; j < height; j += TILE_SIZE) {
@@ -292,7 +290,7 @@ lp_linear_to_tiled(const void *src, void *dst,
uint byte_offset = tile_offset * bytes_per_tile;
uint8_t *dst_tile = (uint8_t *) dst + byte_offset;
- lp_tile_read_4ub(format,
+ lp_tile_swizzle_4ub(format,
dst_tile,
src, src_stride,
ii, jj, tile_w, tile_h);
@@ -320,10 +318,10 @@ test_tiled_linear_conversion(void *data,
/*unsigned tiled_stride = wt * TILE_SIZE * TILE_SIZE * 4;*/
lp_linear_to_tiled(data, tiled, 0, 0, width, height, format,
- stride);
+ stride, wt);
lp_tiled_to_linear(tiled, data, 0, 0, width, height, format,
- stride);
+ stride, wt);
free(tiled);
}
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_image.h b/src/gallium/drivers/llvmpipe/lp_tile_image.h
index d74621925d..8de8efc6c1 100644
--- a/src/gallium/drivers/llvmpipe/lp_tile_image.h
+++ b/src/gallium/drivers/llvmpipe/lp_tile_image.h
@@ -33,14 +33,18 @@ void
lp_tiled_to_linear(const void *src, void *dst,
unsigned x, unsigned y,
unsigned width, unsigned height,
- enum pipe_format format, unsigned dst_stride);
+ enum pipe_format format,
+ unsigned dst_stride,
+ unsigned tiles_per_row);
void
lp_linear_to_tiled(const void *src, void *dst,
unsigned x, unsigned y,
unsigned width, unsigned height,
- enum pipe_format format, unsigned src_stride);
+ enum pipe_format format,
+ unsigned src_stride,
+ unsigned tiles_per_row);
void
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_soa.h b/src/gallium/drivers/llvmpipe/lp_tile_soa.h
index 9d6a88afec..07f71b8411 100644
--- a/src/gallium/drivers/llvmpipe/lp_tile_soa.h
+++ b/src/gallium/drivers/llvmpipe/lp_tile_soa.h
@@ -30,7 +30,7 @@
#include "pipe/p_compiler.h"
#include "tgsi/tgsi_exec.h" /* for NUM_CHANNELS */
-#include "lp_tile_size.h"
+#include "lp_limits.h"
#ifdef __cplusplus
extern "C" {
@@ -51,7 +51,10 @@ tile_offset[TILE_VECTOR_HEIGHT][TILE_VECTOR_WIDTH];
#define TILE_Y_STRIDE (TILE_VECTOR_HEIGHT * TILE_SIZE * NUM_CHANNELS) //1024
-extern int tile_write_count, tile_read_count;
+#ifdef DEBUG
+extern unsigned lp_tile_unswizzle_count;
+extern unsigned lp_tile_swizzle_count;
+#endif
/**
@@ -73,14 +76,14 @@ tile_pixel_offset(unsigned x, unsigned y, unsigned c)
void
-lp_tile_read_4ub(enum pipe_format format,
+lp_tile_swizzle_4ub(enum pipe_format format,
uint8_t *dst,
const void *src, unsigned src_stride,
unsigned x, unsigned y, unsigned w, unsigned h);
void
-lp_tile_write_4ub(enum pipe_format format,
+lp_tile_unswizzle_4ub(enum pipe_format format,
const uint8_t *src,
void *dst, unsigned dst_stride,
unsigned x, unsigned y, unsigned w, unsigned h);
diff --git a/src/gallium/drivers/llvmpipe/lp_tile_soa.py b/src/gallium/drivers/llvmpipe/lp_tile_soa.py
index 65810b6f8f..5ab63cbac6 100644
--- a/src/gallium/drivers/llvmpipe/lp_tile_soa.py
+++ b/src/gallium/drivers/llvmpipe/lp_tile_soa.py
@@ -58,7 +58,7 @@ def is_format_supported(format):
channel = format.channels[i]
if channel.type not in (VOID, UNSIGNED, SIGNED, FLOAT):
return False
- if channel.type == FLOAT and channel.size not in (32 ,64):
+ if channel.type == FLOAT and channel.size not in (16, 32 ,64):
return False
if format.colorspace not in ('rgb', 'srgb'):
@@ -75,7 +75,7 @@ def generate_format_read(format, dst_channel, dst_native_type, dst_suffix):
src_native_type = native_type(format)
print 'static void'
- print 'lp_tile_%s_read_%s(%s *dst, const uint8_t *src, unsigned src_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, dst_suffix, dst_native_type)
+ print 'lp_tile_%s_swizzle_%s(%s *dst, const uint8_t *src, unsigned src_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, dst_suffix, dst_native_type)
print '{'
print ' unsigned x, y;'
print ' const uint8_t *src_row = src + y0*src_stride;'
@@ -193,7 +193,7 @@ def pack_rgba(format, src_channel, r, g, b, a):
return expr
-def emit_unrolled_write_code(format, src_channel):
+def emit_unrolled_unswizzle_code(format, src_channel):
'''Emit code for writing a block based on unrolled loops.
This is considerably faster than the TILE_PIXEL-based code below.
'''
@@ -223,7 +223,7 @@ def emit_unrolled_write_code(format, src_channel):
print ' }'
-def emit_tile_pixel_write_code(format, src_channel):
+def emit_tile_pixel_unswizzle_code(format, src_channel):
'''Emit code for writing a block based on the TILE_PIXEL macro.'''
dst_native_type = native_type(format)
@@ -257,7 +257,7 @@ def emit_tile_pixel_write_code(format, src_channel):
value = 'TILE_PIXEL(src, x, y, %u)' % inv_swizzle[i]
value = conversion_expr(src_channel, dst_channel, dst_native_type, value, clamp=False)
print ' *dst_pixel++ = %s;' % value
- else:
+ elif dst_channel.size:
print ' ++dst_pixel;'
else:
assert False
@@ -273,7 +273,7 @@ def generate_format_write(format, src_channel, src_native_type, src_suffix):
name = format.short_name()
print 'static void'
- print 'lp_tile_%s_write_%s(const %s *src, uint8_t *dst, unsigned dst_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, src_suffix, src_native_type)
+ print 'lp_tile_%s_unswizzle_%s(const %s *src, uint8_t *dst, unsigned dst_stride, unsigned x0, unsigned y0, unsigned w, unsigned h)' % (name, src_suffix, src_native_type)
print '{'
if format.layout == PLAIN \
and format.colorspace == 'rgb' \
@@ -282,14 +282,14 @@ def generate_format_write(format, src_channel, src_native_type, src_suffix):
and not format.is_mixed() \
and (format.channels[0].type == UNSIGNED \
or format.channels[1].type == UNSIGNED):
- emit_unrolled_write_code(format, src_channel)
+ emit_unrolled_unswizzle_code(format, src_channel)
else:
- emit_tile_pixel_write_code(format, src_channel)
+ emit_tile_pixel_unswizzle_code(format, src_channel)
print '}'
print
-def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
+def generate_swizzle(formats, dst_channel, dst_native_type, dst_suffix):
'''Generate the dispatch function to read pixels from any format'''
for format in formats:
@@ -297,15 +297,17 @@ def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
generate_format_read(format, dst_channel, dst_native_type, dst_suffix)
print 'void'
- print 'lp_tile_read_%s(enum pipe_format format, %s *dst, const void *src, unsigned src_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (dst_suffix, dst_native_type)
+ print 'lp_tile_swizzle_%s(enum pipe_format format, %s *dst, const void *src, unsigned src_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (dst_suffix, dst_native_type)
print '{'
print ' void (*func)(%s *dst, const uint8_t *src, unsigned src_stride, unsigned x0, unsigned y0, unsigned w, unsigned h);' % dst_native_type
- print ' tile_read_count += 1;'
+ print '#ifdef DEBUG'
+ print ' lp_tile_swizzle_count += 1;'
+ print '#endif'
print ' switch(format) {'
for format in formats:
if is_format_supported(format):
print ' case %s:' % format.name
- print ' func = &lp_tile_%s_read_%s;' % (format.short_name(), dst_suffix)
+ print ' func = &lp_tile_%s_swizzle_%s;' % (format.short_name(), dst_suffix)
print ' break;'
print ' default:'
print ' debug_printf("%s: unsupported format %s\\n", __FUNCTION__, util_format_name(format));'
@@ -316,7 +318,7 @@ def generate_read(formats, dst_channel, dst_native_type, dst_suffix):
print
-def generate_write(formats, src_channel, src_native_type, src_suffix):
+def generate_unswizzle(formats, src_channel, src_native_type, src_suffix):
'''Generate the dispatch function to write pixels to any format'''
for format in formats:
@@ -324,16 +326,18 @@ def generate_write(formats, src_channel, src_native_type, src_suffix):
generate_format_write(format, src_channel, src_native_type, src_suffix)
print 'void'
- print 'lp_tile_write_%s(enum pipe_format format, const %s *src, void *dst, unsigned dst_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (src_suffix, src_native_type)
+ print 'lp_tile_unswizzle_%s(enum pipe_format format, const %s *src, void *dst, unsigned dst_stride, unsigned x, unsigned y, unsigned w, unsigned h)' % (src_suffix, src_native_type)
print '{'
print ' void (*func)(const %s *src, uint8_t *dst, unsigned dst_stride, unsigned x0, unsigned y0, unsigned w, unsigned h);' % src_native_type
- print ' tile_write_count += 1;'
+ print '#ifdef DEBUG'
+ print ' lp_tile_unswizzle_count += 1;'
+ print '#endif'
print ' switch(format) {'
for format in formats:
if is_format_supported(format):
print ' case %s:' % format.name
- print ' func = &lp_tile_%s_write_%s;' % (format.short_name(), src_suffix)
+ print ' func = &lp_tile_%s_unswizzle_%s;' % (format.short_name(), src_suffix)
print ' break;'
print ' default:'
print ' debug_printf("%s: unsupported format %s\\n", __FUNCTION__, util_format_name(format));'
@@ -360,7 +364,10 @@ def main():
print '#include "util/u_half.h"'
print '#include "lp_tile_soa.h"'
print
- print 'int tile_write_count=0, tile_read_count=0;'
+ print '#ifdef DEBUG'
+ print 'unsigned lp_tile_unswizzle_count = 0;'
+ print 'unsigned lp_tile_swizzle_count = 0;'
+ print '#endif'
print
print 'const unsigned char'
print 'tile_offset[TILE_VECTOR_HEIGHT][TILE_VECTOR_WIDTH] = {'
@@ -388,8 +395,8 @@ def main():
native_type = 'uint8_t'
suffix = '4ub'
- generate_read(formats, channel, native_type, suffix)
- generate_write(formats, channel, native_type, suffix)
+ generate_swizzle(formats, channel, native_type, suffix)
+ generate_unswizzle(formats, channel, native_type, suffix)
if __name__ == '__main__':
diff --git a/src/gallium/drivers/llvmpipe/sp2lp.sh b/src/gallium/drivers/llvmpipe/sp2lp.sh
deleted file mode 100755
index c45a81ce3c..0000000000
--- a/src/gallium/drivers/llvmpipe/sp2lp.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-#
-# Port changes from softpipe to llvmpipe. Invoke as
-#
-# sp2lp.sh <commit>
-#
-# Note that this will only affect llvmpipe -- you still need to actually
-# cherry-pick/merge the softpipe changes themselves if they affect directories
-# outside src/gallium/drivers/softpipe
-
-git format-patch \
- --keep-subject \
- --relative=src/gallium/drivers/softpipe \
- --src-prefix=a/src/gallium/drivers/llvmpipe/ \
- --dst-prefix=b/src/gallium/drivers/llvmpipe/ \
- --stdout "$1^1..$1" \
-| sed \
- -e 's/\<softpipe\>/llvmpipe/g' \
- -e 's/\<sp\>/lp/g' \
- -e 's/\<softpipe_/llvmpipe_/g' \
- -e 's/\<sp_/lp_/g' \
- -e 's/\<SP_/LP_/g' \
- -e 's/\<SOFTPIPE_/LLVMPIPE_/g' \
- -e 's/\<spt\>/lpt/g' \
- -e 's/\<sps\>/lps/g' \
- -e 's/\<spfs\>/lpfs/g' \
- -e 's/\<sptex\>/lptex/g' \
- -e 's/\<setup_\(point\|line\|tri\)\>/llvmpipe_\0/g' \
- -e 's/\<llvmpipe_cached_tile\>/llvmpipe_cached_tex_tile/g' \
- -e 's/_get_cached_tile_tex\>/_get_cached_tex_tile/g' \
- -e 's/\<TILE_SIZE\>/TEX_TILE_SIZE/g' \
- -e 's/\<tile_address\>/tex_tile_address/g' \
- -e 's/\<tile->data\.color\>/tile->color/g' \
-| patch -p1
diff --git a/src/gallium/drivers/nouveau/SConscript b/src/gallium/drivers/nouveau/SConscript
new file mode 100644
index 0000000000..fe7af4d2ae
--- /dev/null
+++ b/src/gallium/drivers/nouveau/SConscript
@@ -0,0 +1,11 @@
+Import('*')
+
+env = env.Clone()
+
+nouveau = env.ConvenienceLibrary(
+ target = 'nouveau',
+ source = [
+ 'nouveau_screen.c',
+ ])
+
+Export('nouveau')
diff --git a/src/gallium/drivers/nv50/SConscript b/src/gallium/drivers/nv50/SConscript
new file mode 100644
index 0000000000..8625f92622
--- /dev/null
+++ b/src/gallium/drivers/nv50/SConscript
@@ -0,0 +1,26 @@
+Import('*')
+
+env = env.Clone()
+
+nv50 = env.ConvenienceLibrary(
+ target = 'nv50',
+ source = [
+ 'nv50_buffer.c',
+ 'nv50_clear.c',
+ 'nv50_context.c',
+ 'nv50_draw.c',
+ 'nv50_miptree.c',
+ 'nv50_query.c',
+ 'nv50_program.c',
+ 'nv50_resource.c',
+ 'nv50_screen.c',
+ 'nv50_state.c',
+ 'nv50_state_validate.c',
+ 'nv50_surface.c',
+ 'nv50_tex.c',
+ 'nv50_transfer.c',
+ 'nv50_vbo.c',
+ 'nv50_push.c',
+ ])
+
+Export('nv50')
diff --git a/src/gallium/drivers/nv50/nv50_program.c b/src/gallium/drivers/nv50/nv50_program.c
index b8b6b12120..0156ff95ff 100644
--- a/src/gallium/drivers/nv50/nv50_program.c
+++ b/src/gallium/drivers/nv50/nv50_program.c
@@ -3169,15 +3169,16 @@ nv50_program_tx_insn(struct nv50_pc *pc,
if (pc->p->type == PIPE_SHADER_FRAGMENT)
nv50_fp_move_results(pc);
- /* last insn must be long so it can have the exit bit set */
- if (!is_long(pc->p->exec_tail))
- convert_to_long(pc, pc->p->exec_tail);
- else
- if (is_immd(pc->p->exec_tail) ||
+ if (!pc->p->exec_tail ||
+ is_immd(pc->p->exec_tail) ||
is_join(pc->p->exec_tail) ||
is_control_flow(pc->p->exec_tail))
emit_nop(pc);
+ /* last insn must be long so it can have the exit bit set */
+ if (!is_long(pc->p->exec_tail))
+ convert_to_long(pc, pc->p->exec_tail);
+
pc->p->exec_tail->inst[1] |= 1; /* set exit bit */
terminate_mbb(pc);
@@ -4162,7 +4163,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
struct pipe_transfer *transfer;
if (!p->data[0] && p->immd_nr) {
- struct nouveau_resource *heap = nv50->screen->immd_heap[0];
+ struct nouveau_resource *heap = nv50->screen->immd_heap;
if (nouveau_resource_alloc(heap, p->immd_nr, p, &p->data[0])) {
while (heap->next && heap->size < p->immd_nr) {
@@ -4180,7 +4181,7 @@ nv50_program_validate_data(struct nv50_context *nv50, struct nv50_program *p)
p->immd_nr, NV50_CB_PMISC);
}
- assert(p->param_nr <= 512);
+ assert(p->param_nr <= 16384);
if (p->param_nr) {
unsigned cb;
diff --git a/src/gallium/drivers/nv50/nv50_screen.c b/src/gallium/drivers/nv50/nv50_screen.c
index ad17991be9..2dd1042424 100644
--- a/src/gallium/drivers/nv50/nv50_screen.c
+++ b/src/gallium/drivers/nv50/nv50_screen.c
@@ -190,9 +190,7 @@ nv50_screen_destroy(struct pipe_screen *pscreen)
nouveau_grobj_free(&screen->tesla);
nouveau_grobj_free(&screen->eng2d);
nouveau_grobj_free(&screen->m2mf);
- nouveau_resource_destroy(&screen->immd_heap[0]);
- nouveau_resource_destroy(&screen->parm_heap[0]);
- nouveau_resource_destroy(&screen->parm_heap[1]);
+ nouveau_resource_destroy(&screen->immd_heap);
nouveau_screen_fini(&screen->base);
FREE(screen);
}
@@ -242,7 +240,7 @@ nv50_screen_relocs(struct nv50_screen *screen)
OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl);
OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl);
OUT_RELOC (chan, screen->constbuf_parm[i],
- ((NV50_CB_PVP + i) << 16) | 0x0800, rl, 0, 0);
+ ((NV50_CB_PVP + i) << 16) | 0x0000, rl, 0, 0);
}
}
@@ -411,7 +409,7 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
OUT_RING (chan, (NV50_CB_AUX << 16) | 0x0200);
for (i = 0; i < 3; i++) {
- ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (256 * 4) * 4,
+ ret = nouveau_bo_new(dev, NOUVEAU_BO_VRAM, 0, (4096 * 4) * 4,
&screen->constbuf_parm[i]);
if (ret) {
nv50_screen_destroy(pscreen);
@@ -420,14 +418,12 @@ nv50_screen_create(struct pipe_winsys *ws, struct nouveau_device *dev)
BEGIN_RING(chan, screen->tesla, NV50TCL_CB_DEF_ADDRESS_HIGH, 3);
OUT_RELOCh(chan, screen->constbuf_parm[i], 0, rl);
OUT_RELOCl(chan, screen->constbuf_parm[i], 0, rl);
- OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0800);
+ /* CB_DEF_SET_SIZE value of 0x0000 means 65536 */
+ OUT_RING (chan, ((NV50_CB_PVP + i) << 16) | 0x0000);
}
- if (nouveau_resource_init(&screen->immd_heap[0], 0, 128) ||
- nouveau_resource_init(&screen->parm_heap[0], 0, 512) ||
- nouveau_resource_init(&screen->parm_heap[1], 0, 512))
- {
- NOUVEAU_ERR("Error initialising constant buffers.\n");
+ if (nouveau_resource_init(&screen->immd_heap, 0, 128)) {
+ NOUVEAU_ERR("Error initialising shader immediates heap.\n");
nv50_screen_destroy(pscreen);
return NULL;
}
diff --git a/src/gallium/drivers/nv50/nv50_screen.h b/src/gallium/drivers/nv50/nv50_screen.h
index 40ebbee72e..fbf15a7596 100644
--- a/src/gallium/drivers/nv50/nv50_screen.h
+++ b/src/gallium/drivers/nv50/nv50_screen.h
@@ -20,8 +20,7 @@ struct nv50_screen {
struct nouveau_bo *constbuf_misc[1];
struct nouveau_bo *constbuf_parm[PIPE_SHADER_TYPES];
- struct nouveau_resource *immd_heap[1];
- struct nouveau_resource *parm_heap[PIPE_SHADER_TYPES];
+ struct nouveau_resource *immd_heap;
struct pipe_resource *strm_vbuf[16];
diff --git a/src/gallium/drivers/nv50/nv50_surface.c b/src/gallium/drivers/nv50/nv50_surface.c
index c2d9e83526..d905d95354 100644
--- a/src/gallium/drivers/nv50/nv50_surface.c
+++ b/src/gallium/drivers/nv50/nv50_surface.c
@@ -31,6 +31,27 @@
#include "util/u_tile.h"
#include "util/u_format.h"
+/* return TRUE for formats that can be converted among each other by NV50_2D */
+static INLINE boolean
+nv50_2d_format_faithful(enum pipe_format format)
+{
+ switch (format) {
+ case PIPE_FORMAT_B8G8R8A8_UNORM:
+ case PIPE_FORMAT_B8G8R8X8_UNORM:
+ case PIPE_FORMAT_B8G8R8A8_SRGB:
+ case PIPE_FORMAT_B8G8R8X8_SRGB:
+ case PIPE_FORMAT_B5G6R5_UNORM:
+ case PIPE_FORMAT_B5G5R5A1_UNORM:
+ case PIPE_FORMAT_B10G10R10A2_UNORM:
+ case PIPE_FORMAT_R8_UNORM:
+ case PIPE_FORMAT_R32G32B32A32_FLOAT:
+ case PIPE_FORMAT_R32G32B32_FLOAT:
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
static INLINE int
nv50_format(enum pipe_format format)
{
@@ -47,9 +68,12 @@ nv50_format(enum pipe_format format)
return NV50_2D_DST_FORMAT_R5G6B5_UNORM;
case PIPE_FORMAT_B5G5R5A1_UNORM:
return NV50_2D_DST_FORMAT_A1R5G5B5_UNORM;
+ case PIPE_FORMAT_B10G10R10A2_UNORM:
+ return NV50_2D_DST_FORMAT_A2R10G10B10_UNORM;
case PIPE_FORMAT_A8_UNORM:
case PIPE_FORMAT_I8_UNORM:
case PIPE_FORMAT_L8_UNORM:
+ case PIPE_FORMAT_R8_UNORM:
return NV50_2D_DST_FORMAT_R8_UNORM;
case PIPE_FORMAT_R32G32B32A32_FLOAT:
return NV50_2D_DST_FORMAT_R32G32B32A32_FLOAT;
@@ -178,7 +202,9 @@ nv50_surface_copy(struct pipe_context *pipe,
struct nv50_context *nv50 = nv50_context(pipe);
struct nv50_screen *screen = nv50->screen;
- assert(src->format == dest->format);
+ assert((src->format == dest->format) ||
+ (nv50_2d_format_faithful(src->format) &&
+ nv50_2d_format_faithful(dest->format)));
nv50_surface_do_copy(screen, dest, destx, desty, src, srcx,
srcy, width, height);
diff --git a/src/gallium/drivers/nvfx/SConscript b/src/gallium/drivers/nvfx/SConscript
new file mode 100644
index 0000000000..02d931b10e
--- /dev/null
+++ b/src/gallium/drivers/nvfx/SConscript
@@ -0,0 +1,40 @@
+Import('*')
+
+env = env.Clone()
+
+env.PrependUnique(delete_existing=1, CPPPATH = [
+ '#/src/gallium/drivers',
+])
+
+nvfx = env.ConvenienceLibrary(
+ target = 'nvfx',
+ source = [
+ 'nv04_surface_2d.c',
+ 'nvfx_buffer.c',
+ 'nvfx_context.c',
+ 'nvfx_clear.c',
+ 'nvfx_draw.c',
+ 'nvfx_fragprog.c',
+ 'nvfx_fragtex.c',
+ 'nv30_fragtex.c',
+ 'nv40_fragtex.c',
+ 'nvfx_miptree.c',
+ 'nvfx_query.c',
+ 'nvfx_resource.c',
+ 'nvfx_screen.c',
+ 'nvfx_state.c',
+ 'nvfx_state_blend.c',
+ 'nvfx_state_emit.c',
+ 'nvfx_state_fb.c',
+ 'nvfx_state_rasterizer.c',
+ 'nvfx_state_scissor.c',
+ 'nvfx_state_stipple.c',
+ 'nvfx_state_viewport.c',
+ 'nvfx_state_zsa.c',
+ 'nvfx_surface.c',
+ 'nvfx_transfer.c',
+ 'nvfx_vbo.c',
+ 'nvfx_vertprog.c',
+ ])
+
+Export('nvfx')
diff --git a/src/gallium/drivers/nvfx/nvfx_vbo.c b/src/gallium/drivers/nvfx/nvfx_vbo.c
index 4d7b7f181d..520bae5aed 100644
--- a/src/gallium/drivers/nvfx/nvfx_vbo.c
+++ b/src/gallium/drivers/nvfx/nvfx_vbo.c
@@ -8,6 +8,7 @@
#include "nvfx_resource.h"
#include "nouveau/nouveau_channel.h"
+#include "nouveau/nouveau_class.h"
#include "nouveau/nouveau_pushbuf.h"
#include "nouveau/nouveau_util.h"
diff --git a/src/gallium/drivers/r300/Makefile b/src/gallium/drivers/r300/Makefile
index 5a8e00f15a..d3cd6bef96 100644
--- a/src/gallium/drivers/r300/Makefile
+++ b/src/gallium/drivers/r300/Makefile
@@ -11,6 +11,7 @@ C_SOURCES = \
r300_emit.c \
r300_flush.c \
r300_fs.c \
+ r300_hyperz.c \
r300_query.c \
r300_render.c \
r300_resource.c \
diff --git a/src/gallium/drivers/r300/SConscript b/src/gallium/drivers/r300/SConscript
index 08aec427a1..3921085d76 100644
--- a/src/gallium/drivers/r300/SConscript
+++ b/src/gallium/drivers/r300/SConscript
@@ -21,6 +21,7 @@ r300 = env.ConvenienceLibrary(
'r300_emit.c',
'r300_flush.c',
'r300_fs.c',
+ 'r300_hyperz.c',
'r300_query.c',
'r300_render.c',
'r300_resource.c',
diff --git a/src/gallium/drivers/r300/r300_context.c b/src/gallium/drivers/r300/r300_context.c
index deaa03e1f6..e84bce0010 100644
--- a/src/gallium/drivers/r300/r300_context.c
+++ b/src/gallium/drivers/r300/r300_context.c
@@ -37,14 +37,27 @@
#include "r300_state_invariant.h"
#include "r300_winsys.h"
+#include <inttypes.h>
+
static void r300_destroy_context(struct pipe_context* context)
{
struct r300_context* r300 = r300_context(context);
struct r300_query* query, * temp;
+ struct r300_atom *atom;
util_blitter_destroy(r300->blitter);
draw_destroy(r300->draw);
+ /* Print stats, if enabled. */
+ if (SCREEN_DBG_ON(r300->screen, DBG_STATS)) {
+ fprintf(stderr, "r300: Stats for context %p:\n", r300);
+ fprintf(stderr, " : Flushes: %" PRIu64 "\n", r300->flush_counter);
+ foreach(atom, &r300->atom_list) {
+ fprintf(stderr, " : %s: %" PRIu64 " emits\n",
+ atom->name, atom->counter);
+ }
+ }
+
/* Free the OQ BO. */
context->screen->resource_destroy(context->screen, r300->oqbo);
@@ -63,7 +76,6 @@ static void r300_destroy_context(struct pipe_context* context)
FREE(r300->rs_block_state.state);
FREE(r300->scissor_state.state);
FREE(r300->textures_state.state);
- FREE(r300->vap_output_state.state);
FREE(r300->viewport_state.state);
FREE(r300->ztop_state.state);
FREE(r300->fs_constants.state);
@@ -112,7 +124,6 @@ static void r300_setup_atoms(struct r300_context* r300)
R300_INIT_ATOM(viewport_state, 9);
R300_INIT_ATOM(rs_block_state, 0);
R300_INIT_ATOM(vertex_stream_state, 0);
- R300_INIT_ATOM(vap_output_state, 6);
R300_INIT_ATOM(pvs_flush, 2);
R300_INIT_ATOM(vs_state, 0);
R300_INIT_ATOM(vs_constants, 0);
@@ -136,7 +147,6 @@ static void r300_setup_atoms(struct r300_context* r300)
r300->rs_block_state.state = CALLOC_STRUCT(r300_rs_block);
r300->scissor_state.state = CALLOC_STRUCT(pipe_scissor_state);
r300->textures_state.state = CALLOC_STRUCT(r300_textures_state);
- r300->vap_output_state.state = CALLOC_STRUCT(r300_vap_output_state);
r300->viewport_state.state = CALLOC_STRUCT(r300_viewport_state);
r300->ztop_state.state = CALLOC_STRUCT(r300_ztop_state);
r300->fs_constants.state = CALLOC_STRUCT(r300_constant_buffer);
diff --git a/src/gallium/drivers/r300/r300_context.h b/src/gallium/drivers/r300/r300_context.h
index 1e4fd9e5ed..e9c8fcdc15 100644
--- a/src/gallium/drivers/r300/r300_context.h
+++ b/src/gallium/drivers/r300/r300_context.h
@@ -45,6 +45,8 @@ struct r300_atom {
struct r300_atom *prev, *next;
/* Name, for debugging. */
const char* name;
+ /* Stat counter. */
+ uint64_t counter;
/* Opaque state. */
void* state;
/* Emit the state to the context. */
@@ -117,6 +119,10 @@ struct r300_rs_state {
};
struct r300_rs_block {
+ uint32_t vap_vtx_state_cntl; /* R300_VAP_VTX_STATE_CNTL: 0x2180 */
+ uint32_t vap_vsm_vtx_assm; /* R300_VAP_VSM_VTX_ASSM: 0x2184 */
+ uint32_t vap_out_vtx_fmt[2]; /* R300_VAP_OUTPUT_VTX_FMT_[0-1]: 0x2090 */
+
uint32_t ip[8]; /* R300_RS_IP_[0-7], R500_RS_IP_[0-7] */
uint32_t count; /* R300_RS_COUNT */
uint32_t inst_count; /* R300_RS_INST_COUNT */
@@ -188,12 +194,6 @@ struct r300_vertex_stream_state {
unsigned count;
};
-struct r300_vap_output_state {
- uint32_t vap_vtx_state_cntl; /* R300_VAP_VTX_STATE_CNTL: 0x2180 */
- uint32_t vap_vsm_vtx_assm; /* R300_VAP_VSM_VTX_ASSM: 0x2184 */
- uint32_t vap_out_vtx_fmt[2]; /* R300_VAP_OUTPUT_VTX_FMT_[0-1]: 0x2090 */
-};
-
struct r300_viewport_state {
float xscale; /* R300_VAP_VPORT_XSCALE: 0x2098 */
float xoffset; /* R300_VAP_VPORT_XOFFSET: 0x209c */
@@ -255,6 +255,10 @@ struct r300_texture {
/* A pitch for each mip-level */
unsigned pitch[R300_MAX_TEXTURE_LEVELS];
+ /* A pitch multiplied by blockwidth as hardware wants
+ * the number of pixels instead of the number of blocks. */
+ unsigned hwpitch[R300_MAX_TEXTURE_LEVELS];
+
/* Size of one zslice or face based on the texture target */
unsigned layer_size[R300_MAX_TEXTURE_LEVELS];
@@ -375,7 +379,7 @@ struct r300_context {
struct r300_atom query_start;
/* Rasterizer state. */
struct r300_atom rs_state;
- /* RS block state. */
+ /* RS block state + VAP (vertex shader) output mapping state. */
struct r300_atom rs_block_state;
/* Scissor state. */
struct r300_atom scissor_state;
@@ -383,8 +387,6 @@ struct r300_context {
struct r300_atom textures_state;
/* Vertex stream formatting state. */
struct r300_atom vertex_stream_state;
- /* VAP (vertex shader) output mapping state. */
- struct r300_atom vap_output_state;
/* Vertex shader. */
struct r300_atom vs_state;
/* Vertex shader constant buffer. */
@@ -418,6 +420,9 @@ struct r300_context {
struct pipe_viewport_state viewport;
+ /* Stream locations for SWTCL. */
+ int stream_loc_notcl[16];
+
/* Flag indicating whether or not the HW is dirty. */
uint32_t dirty_hw;
/* Whether polygon offset is enabled. */
@@ -435,6 +440,9 @@ struct r300_context {
/* upload managers */
struct u_upload_mgr *upload_vb;
struct u_upload_mgr *upload_ib;
+
+ /* Stat counter. */
+ uint64_t flush_counter;
};
/* Convenience cast wrapper. */
diff --git a/src/gallium/drivers/r300/r300_cs.h b/src/gallium/drivers/r300/r300_cs.h
index 456b2ec7b9..996a4f491e 100644
--- a/src/gallium/drivers/r300/r300_cs.h
+++ b/src/gallium/drivers/r300/r300_cs.h
@@ -104,6 +104,13 @@
cs_count--; \
} while (0)
+#define OUT_CS_TABLE(values, count) do { \
+ if (VERY_VERBOSE_REGISTERS) \
+ DBG(cs_context_copy, DBG_CS, "r300: writing table of %d dwords\n", count); \
+ cs_winsys->write_cs_table(cs_winsys, values, count); \
+ cs_count -= count; \
+} while (0)
+
#define OUT_CS_BUF_RELOC(bo, offset, rd, wd, flags) do { \
DBG(cs_context_copy, DBG_CS, "r300: writing relocation for buffer %p, offset %d, " \
"domains (%d, %d, %d)\n", \
@@ -150,6 +157,9 @@
DBG(cs_context_copy, DBG_CS, "r300: FLUSH_CS in %s (%s:%d)\n\n", __FUNCTION__, \
__FILE__, __LINE__); \
} \
+ if (SCREEN_DBG_ON(r300->screen, DBG_STATS)) { \
+ r300->flush_counter++; \
+ } \
cs_winsys->flush_cs(cs_winsys); \
} while (0)
diff --git a/src/gallium/drivers/r300/r300_debug.c b/src/gallium/drivers/r300/r300_debug.c
index 6e84bf8246..4c2836f36a 100644
--- a/src/gallium/drivers/r300/r300_debug.c
+++ b/src/gallium/drivers/r300/r300_debug.c
@@ -38,9 +38,11 @@ static struct debug_option debug_options[] = {
{ "draw", DBG_DRAW, "Draw and emit (for debugging)" },
{ "tex", DBG_TEX, "Textures (for debugging)" },
{ "fall", DBG_FALL, "Fallbacks (for debugging)" },
+ { "rs", DBG_RS, "Rasterizer (for debugging)" },
{ "anisohq", DBG_ANISOHQ, "High quality anisotropic filtering (for benchmarking)" },
{ "notiling", DBG_NO_TILING, "Disable tiling (for benchmarking)" },
{ "noimmd", DBG_NO_IMMD, "Disable immediate mode (for benchmarking)" },
+ { "stats", DBG_STATS, "Gather statistics (for lulz)" },
{ "all", ~0, "Convenience option that enables all debug flags" },
diff --git a/src/gallium/drivers/r300/r300_emit.c b/src/gallium/drivers/r300/r300_emit.c
index 19acdaba62..23bbc6a99c 100644
--- a/src/gallium/drivers/r300/r300_emit.c
+++ b/src/gallium/drivers/r300/r300_emit.c
@@ -83,7 +83,6 @@ void r300_emit_clip_state(struct r300_context* r300,
unsigned size, void* state)
{
struct pipe_clip_state* clip = (struct pipe_clip_state*)state;
- int i;
CS_LOCALS(r300);
if (r300->screen->caps.has_tcl) {
@@ -92,12 +91,7 @@ void r300_emit_clip_state(struct r300_context* r300,
(r300->screen->caps.is_r500 ?
R500_PVS_UCP_START : R300_PVS_UCP_START));
OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, 6 * 4);
- for (i = 0; i < 6; i++) {
- OUT_CS_32F(clip->ucp[i][0]);
- OUT_CS_32F(clip->ucp[i][1]);
- OUT_CS_32F(clip->ucp[i][2]);
- OUT_CS_32F(clip->ucp[i][3]);
- }
+ OUT_CS_TABLE(clip->ucp, 6 * 4);
OUT_CS_REG(R300_VAP_CLIP_CNTL, ((1 << clip->nr) - 1) |
R300_PS_UCP_MODE_CLIP_AS_TRIFAN);
END_CS;
@@ -106,7 +100,6 @@ void r300_emit_clip_state(struct r300_context* r300,
OUT_CS_REG(R300_VAP_CLIP_CNTL, R300_CLIP_DISABLE);
END_CS;
}
-
}
void r300_emit_dsa_state(struct r300_context* r300, unsigned size, void* state)
@@ -244,8 +237,7 @@ void r300_emit_fs(struct r300_context* r300, unsigned size, void *state)
OUT_CS_REG(R300_US_CODE_OFFSET, code->code_offset);
OUT_CS_REG_SEQ(R300_US_CODE_ADDR_0, 4);
- for(i = 0; i < 4; ++i)
- OUT_CS(code->code_addr[i]);
+ OUT_CS_TABLE(code->code_addr, 4);
OUT_CS_REG_SEQ(R300_US_ALU_RGB_INST_0, code->alu.length);
for (i = 0; i < code->alu.length; i++)
@@ -265,8 +257,7 @@ void r300_emit_fs(struct r300_context* r300, unsigned size, void *state)
if (code->tex.length) {
OUT_CS_REG_SEQ(R300_US_TEX_INST_0, code->tex.length);
- for(i = 0; i < code->tex.length; ++i)
- OUT_CS(code->tex.inst[i]);
+ OUT_CS_TABLE(code->tex.inst, code->tex.length);
}
/* Emit immediates. */
@@ -396,10 +387,7 @@ void r500_emit_fs(struct r300_context* r300, unsigned size, void *state)
R500_GA_US_VECTOR_INDEX_TYPE_CONST |
(i & R500_GA_US_VECTOR_INDEX_MASK));
OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, 4);
- OUT_CS_32F(data[0]);
- OUT_CS_32F(data[1]);
- OUT_CS_32F(data[2]);
- OUT_CS_32F(data[3]);
+ OUT_CS_TABLE(data, 4);
}
}
}
@@ -424,15 +412,9 @@ void r500_emit_fs_constants(struct r300_context* r300, unsigned size, void *stat
OUT_CS_REG(R500_GA_US_VECTOR_INDEX, R500_GA_US_VECTOR_INDEX_TYPE_CONST);
OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, count * 4);
for(i = 0; i < count; ++i) {
- const float *data;
assert(constants->Constants[i].Type == RC_CONSTANT_EXTERNAL);
- data = buf->constants[i];
-
- OUT_CS_32F(data[0]);
- OUT_CS_32F(data[1]);
- OUT_CS_32F(data[2]);
- OUT_CS_32F(data[3]);
}
+ OUT_CS_TABLE(buf->constants, count * 4);
END_CS;
}
@@ -459,10 +441,7 @@ void r500_emit_fs_rc_constant_state(struct r300_context* r300, unsigned size, vo
R500_GA_US_VECTOR_INDEX_TYPE_CONST |
(i & R500_GA_US_VECTOR_INDEX_MASK));
OUT_CS_ONE_REG(R500_GA_US_VECTOR_DATA, 4);
- OUT_CS_32F(data[0]);
- OUT_CS_32F(data[1]);
- OUT_CS_32F(data[2]);
- OUT_CS_32F(data[3]);
+ OUT_CS_TABLE(data, 4);
}
}
END_CS;
@@ -738,13 +717,20 @@ void r300_emit_rs_block_state(struct r300_context* r300,
DBG(r300, DBG_DRAW, "r300: RS emit:\n");
BEGIN_CS(size);
+ OUT_CS_REG_SEQ(R300_VAP_VTX_STATE_CNTL, 2);
+ OUT_CS(rs->vap_vtx_state_cntl);
+ OUT_CS(rs->vap_vsm_vtx_assm);
+ OUT_CS_REG_SEQ(R300_VAP_OUTPUT_VTX_FMT_0, 2);
+ OUT_CS(rs->vap_out_vtx_fmt[0]);
+ OUT_CS(rs->vap_out_vtx_fmt[1]);
+
if (r300->screen->caps.is_r500) {
OUT_CS_REG_SEQ(R500_RS_IP_0, count);
} else {
OUT_CS_REG_SEQ(R300_RS_IP_0, count);
}
+ OUT_CS_TABLE(rs->ip, count);
for (i = 0; i < count; i++) {
- OUT_CS(rs->ip[i]);
DBG(r300, DBG_DRAW, " : ip %d: 0x%08x\n", i, rs->ip[i]);
}
@@ -757,8 +743,8 @@ void r300_emit_rs_block_state(struct r300_context* r300,
} else {
OUT_CS_REG_SEQ(R300_RS_INST_0, count);
}
+ OUT_CS_TABLE(rs->inst, count);
for (i = 0; i < count; i++) {
- OUT_CS(rs->inst[i]);
DBG(r300, DBG_DRAW, " : inst %d: 0x%08x\n", i, rs->inst[i]);
}
@@ -823,7 +809,7 @@ void r300_emit_textures_state(struct r300_context *r300,
END_CS;
}
-void r300_emit_aos(struct r300_context* r300, unsigned offset)
+void r300_emit_aos(struct r300_context* r300, unsigned offset, boolean indexed)
{
struct pipe_vertex_buffer *vb1, *vb2, *vbuf = r300->vertex_buffer;
struct pipe_vertex_element *velem = r300->velems->velem;
@@ -832,9 +818,18 @@ void r300_emit_aos(struct r300_context* r300, unsigned offset)
unsigned packet_size = (aos_count * 3 + 1) / 2;
CS_LOCALS(r300);
+ for (i = 0; i < aos_count; i++) {
+ if ((vbuf[velem[i].vertex_buffer_index].buffer_offset + velem[i].src_offset) % 4 != 0) {
+ /* XXX We must align the buffer. */
+ assert(0);
+ fprintf(stderr, "r300: Unaligned vertex buffer offsets aren't supported, aborting..\n");
+ abort();
+ }
+ }
+
BEGIN_CS(2 + packet_size + aos_count * 2);
OUT_CS_PKT3(R300_PACKET3_3D_LOAD_VBPNTR, packet_size);
- OUT_CS(aos_count);
+ OUT_CS(aos_count | (!indexed ? R300_VC_FORCE_PREFETCH : 0));
for (i = 0; i < aos_count - 1; i += 2) {
vb1 = &vbuf[velem[i].vertex_buffer_index];
@@ -899,39 +894,20 @@ void r300_emit_vertex_stream_state(struct r300_context* r300,
BEGIN_CS(size);
OUT_CS_REG_SEQ(R300_VAP_PROG_STREAM_CNTL_0, streams->count);
+ OUT_CS_TABLE(streams->vap_prog_stream_cntl, streams->count);
for (i = 0; i < streams->count; i++) {
- OUT_CS(streams->vap_prog_stream_cntl[i]);
DBG(r300, DBG_DRAW, " : prog_stream_cntl%d: 0x%08x\n", i,
streams->vap_prog_stream_cntl[i]);
}
OUT_CS_REG_SEQ(R300_VAP_PROG_STREAM_CNTL_EXT_0, streams->count);
+ OUT_CS_TABLE(streams->vap_prog_stream_cntl_ext, streams->count);
for (i = 0; i < streams->count; i++) {
- OUT_CS(streams->vap_prog_stream_cntl_ext[i]);
DBG(r300, DBG_DRAW, " : prog_stream_cntl_ext%d: 0x%08x\n", i,
streams->vap_prog_stream_cntl_ext[i]);
}
END_CS;
}
-void r300_emit_vap_output_state(struct r300_context* r300,
- unsigned size, void* state)
-{
- struct r300_vap_output_state *vap_out_state =
- (struct r300_vap_output_state*)state;
- CS_LOCALS(r300);
-
- DBG(r300, DBG_DRAW, "r300: VAP emit:\n");
-
- BEGIN_CS(size);
- OUT_CS_REG_SEQ(R300_VAP_VTX_STATE_CNTL, 2);
- OUT_CS(vap_out_state->vap_vtx_state_cntl);
- OUT_CS(vap_out_state->vap_vsm_vtx_assm);
- OUT_CS_REG_SEQ(R300_VAP_OUTPUT_VTX_FMT_0, 2);
- OUT_CS(vap_out_state->vap_out_vtx_fmt[0]);
- OUT_CS(vap_out_state->vap_out_vtx_fmt[1]);
- END_CS;
-}
-
void r300_emit_pvs_flush(struct r300_context* r300, unsigned size, void* state)
{
CS_LOCALS(r300);
@@ -978,9 +954,7 @@ void r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state)
OUT_CS_REG(R300_VAP_PVS_VECTOR_INDX_REG, 0);
OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, code->length);
- for (i = 0; i < code->length; i++) {
- OUT_CS(code->body.d[i]);
- }
+ OUT_CS_TABLE(code->body.d, code->length);
OUT_CS_REG(R300_VAP_CNTL, R300_PVS_NUM_SLOTS(pvs_num_slots) |
R300_PVS_NUM_CNTLRS(pvs_num_controllers) |
@@ -997,10 +971,7 @@ void r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state)
OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, imm_count * 4);
for (i = imm_first; i < imm_end; i++) {
const float *data = vs->code.constants.Constants[i].u.Immediate;
- OUT_CS_32F(data[0]);
- OUT_CS_32F(data[1]);
- OUT_CS_32F(data[2]);
- OUT_CS_32F(data[3]);
+ OUT_CS_TABLE(data, 4);
}
}
END_CS;
@@ -1009,7 +980,6 @@ void r300_emit_vs_state(struct r300_context* r300, unsigned size, void* state)
void r300_emit_vs_constants(struct r300_context* r300,
unsigned size, void *state)
{
- unsigned i;
unsigned count =
((struct r300_vertex_shader*)r300->vs_state.state)->externals_count;
struct r300_constant_buffer *buf = (struct r300_constant_buffer*)state;
@@ -1023,13 +993,7 @@ void r300_emit_vs_constants(struct r300_context* r300,
(r300->screen->caps.is_r500 ?
R500_PVS_CONST_START : R300_PVS_CONST_START));
OUT_CS_ONE_REG(R300_VAP_PVS_UPLOAD_DATA, count * 4);
- for (i = 0; i < count; i++) {
- const float *data = buf->constants[i];
- OUT_CS_32F(data[0]);
- OUT_CS_32F(data[1]);
- OUT_CS_32F(data[2]);
- OUT_CS_32F(data[3]);
- }
+ OUT_CS_TABLE(buf->constants, count * 4);
END_CS;
}
@@ -1188,6 +1152,11 @@ unsigned r300_get_num_dirty_dwords(struct r300_context *r300)
}
}
+ /* emit_query_end is not atomized. */
+ dwords += 26;
+ /* let's reserve some more, just in case */
+ dwords += 32;
+
return dwords;
}
@@ -1200,6 +1169,9 @@ void r300_emit_dirty_state(struct r300_context* r300)
foreach(atom, &r300->atom_list) {
if (atom->dirty) {
atom->emit(r300, atom->size, atom->state);
+ if (SCREEN_DBG_ON(r300->screen, DBG_STATS)) {
+ atom->counter++;
+ }
atom->dirty = FALSE;
}
}
diff --git a/src/gallium/drivers/r300/r300_emit.h b/src/gallium/drivers/r300/r300_emit.h
index 56f7318cdb..3c0edf6fdc 100644
--- a/src/gallium/drivers/r300/r300_emit.h
+++ b/src/gallium/drivers/r300/r300_emit.h
@@ -29,7 +29,7 @@
struct rX00_fragment_program_code;
struct r300_vertex_program_code;
-void r300_emit_aos(struct r300_context* r300, unsigned offset);
+void r300_emit_aos(struct r300_context* r300, unsigned offset, boolean indexed);
void r300_emit_blend_state(struct r300_context* r300,
unsigned size, void* state);
@@ -81,9 +81,6 @@ void r300_emit_vertex_buffer(struct r300_context* r300);
void r300_emit_vertex_stream_state(struct r300_context* r300,
unsigned size, void* state);
-void r300_emit_vap_output_state(struct r300_context* r300,
- unsigned size, void* state);
-
void r300_emit_vs_constants(struct r300_context* r300,
unsigned size, void *state);
diff --git a/src/gallium/drivers/r300/r300_fs.c b/src/gallium/drivers/r300/r300_fs.c
index 4d61f63853..88303f074c 100644
--- a/src/gallium/drivers/r300/r300_fs.c
+++ b/src/gallium/drivers/r300/r300_fs.c
@@ -275,6 +275,14 @@ static void r300_translate_fragment_shader(
/* Invoke the compiler */
r3xx_compile_fragment_program(&compiler);
+ /* Shaders with zero instructions are invalid,
+ * use the dummy shader instead. */
+ if (shader->code.code.r500.inst_end == -1) {
+ rc_destroy(&compiler.Base);
+ r300_dummy_fragment_shader(r300, shader);
+ return;
+ }
+
if (compiler.Base.Error) {
fprintf(stderr, "r300 FP: Compiler Error:\n%sUsing a dummy shader"
" instead.\n", compiler.Base.ErrorMsg);
diff --git a/src/gallium/drivers/r300/r300_hyperz.c b/src/gallium/drivers/r300/r300_hyperz.c
new file mode 100644
index 0000000000..b41b6b1508
--- /dev/null
+++ b/src/gallium/drivers/r300/r300_hyperz.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
+ * Copyright 2009 Marek Olšák <maraeo@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
+
+#include "r300_hyperz.h"
+#include "r300_context.h"
+#include "r300_reg.h"
+#include "r300_fs.h"
+
+/*****************************************************************************/
+/* The ZTOP state */
+/*****************************************************************************/
+
+static boolean r300_dsa_writes_depth_stencil(struct r300_dsa_state* dsa)
+{
+ /* We are interested only in the cases when a new depth or stencil value
+ * can be written and changed. */
+
+ /* We might optionally check for [Z func: never] and inspect the stencil
+ * state in a similar fashion, but it's not terribly important. */
+ return (dsa->z_buffer_control & R300_Z_WRITE_ENABLE) ||
+ (dsa->stencil_ref_mask & R300_STENCILWRITEMASK_MASK) ||
+ ((dsa->z_buffer_control & R500_STENCIL_REFMASK_FRONT_BACK) &&
+ (dsa->stencil_ref_bf & R300_STENCILWRITEMASK_MASK));
+}
+
+static boolean r300_dsa_alpha_test_enabled(struct r300_dsa_state* dsa)
+{
+ /* We are interested only in the cases when alpha testing can kill
+ * a fragment. */
+ uint32_t af = dsa->alpha_function;
+
+ return (af & R300_FG_ALPHA_FUNC_ENABLE) &&
+ (af & R300_FG_ALPHA_FUNC_ALWAYS) != R300_FG_ALPHA_FUNC_ALWAYS;
+}
+
+static void r300_update_ztop(struct r300_context* r300)
+{
+ struct r300_ztop_state* ztop_state =
+ (struct r300_ztop_state*)r300->ztop_state.state;
+
+ /* This is important enough that I felt it warranted a comment.
+ *
+ * According to the docs, these are the conditions where ZTOP must be
+ * disabled:
+ * 1) Alpha testing enabled
+ * 2) Texture kill instructions in fragment shader
+ * 3) Chroma key culling enabled
+ * 4) W-buffering enabled
+ *
+ * The docs claim that for the first three cases, if no ZS writes happen,
+ * then ZTOP can be used.
+ *
+ * (3) will never apply since we do not support chroma-keyed operations.
+ * (4) will need to be re-examined (and this comment updated) if/when
+ * Hyper-Z becomes supported.
+ *
+ * Additionally, the following conditions require disabled ZTOP:
+ * 5) Depth writes in fragment shader
+ * 6) Outstanding occlusion queries
+ *
+ * This register causes stalls all the way from SC to CB when changed,
+ * but it is buffered on-chip so it does not hurt to write it if it has
+ * not changed.
+ *
+ * ~C.
+ */
+
+ /* ZS writes */
+ if (r300_dsa_writes_depth_stencil(r300->dsa_state.state) &&
+ (r300_dsa_alpha_test_enabled(r300->dsa_state.state) || /* (1) */
+ r300_fs(r300)->shader->info.uses_kill)) { /* (2) */
+ ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
+ } else if (r300_fragment_shader_writes_depth(r300_fs(r300))) { /* (5) */
+ ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
+ } else if (r300->query_current) { /* (6) */
+ ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
+ } else {
+ ztop_state->z_buffer_top = R300_ZTOP_ENABLE;
+ }
+
+ r300->ztop_state.dirty = TRUE;
+}
+
+void r300_update_hyperz_state(struct r300_context* r300)
+{
+ r300_update_ztop(r300);
+}
diff --git a/src/gallium/drivers/r300/r300_hyperz.h b/src/gallium/drivers/r300/r300_hyperz.h
new file mode 100644
index 0000000000..3df5053b89
--- /dev/null
+++ b/src/gallium/drivers/r300/r300_hyperz.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2010 Marek Olšák <maraeo@gmail.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * on the rights to use, copy, modify, merge, publish, distribute, sub
+ * license, and/or sell copies of the Software, and to permit persons to whom
+ * the Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHOR(S) AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE. */
+
+#ifndef R300_HYPERZ_H
+#define R300_HYPERZ_H
+
+struct r300_context;
+
+void r300_update_hyperz_state(struct r300_context* r300);
+
+#endif
diff --git a/src/gallium/drivers/r300/r300_reg.h b/src/gallium/drivers/r300/r300_reg.h
index 239f91443f..675a9317f9 100644
--- a/src/gallium/drivers/r300/r300_reg.h
+++ b/src/gallium/drivers/r300/r300_reg.h
@@ -3377,7 +3377,7 @@ enum {
* the last block is omitted.
*/
#define R300_PACKET3_3D_LOAD_VBPNTR 0x00002F00
-
+# define R300_VC_FORCE_PREFETCH (1 << 5)
# define R300_VBPNTR_SIZE0(x) ((x) >> 2)
# define R300_VBPNTR_STRIDE0(x) (((x) >> 2) << 8)
# define R300_VBPNTR_SIZE1(x) (((x) >> 2) << 16)
diff --git a/src/gallium/drivers/r300/r300_render.c b/src/gallium/drivers/r300/r300_render.c
index 23b61df89c..7c3a7902a4 100644
--- a/src/gallium/drivers/r300/r300_render.c
+++ b/src/gallium/drivers/r300/r300_render.c
@@ -41,9 +41,6 @@
#include "r300_render.h"
#include "r300_state_derived.h"
-/* XXX The DRM rejects VAP_ALT_NUM_VERTICES.. */
-//#define ENABLE_ALT_NUM_VERTS
-
static uint32_t r300_translate_primitive(unsigned prim)
{
switch (prim) {
@@ -169,6 +166,24 @@ static boolean immd_is_good_idea(struct r300_context *r300,
* after resolving fallback issues (e.g. stencil ref two-sided). *
****************************************************************************/
+static boolean r500_emit_index_offset(struct r300_context *r300, int indexBias)
+{
+ CS_LOCALS(r300);
+
+ if (r300->screen->caps.is_r500 &&
+ r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0)) {
+ BEGIN_CS(2);
+ OUT_CS_REG(R500_VAP_INDEX_OFFSET,
+ (indexBias & 0xFFFFFF) | (indexBias < 0 ? 1<<24 : 0));
+ END_CS;
+ } else {
+ if (indexBias)
+ return FALSE; /* Can't do anything :( */
+ }
+
+ return TRUE;
+}
+
void r500_emit_draw_arrays_immediate(struct r300_context *r300,
unsigned mode,
unsigned start,
@@ -220,10 +235,12 @@ void r500_emit_draw_arrays_immediate(struct r300_context *r300,
dwords = 9 + count * vertex_size;
- r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + dwords);
+ r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + 2 + dwords);
r300_emit_buffer_validate(r300, FALSE, NULL);
r300_emit_dirty_state(r300);
+ r500_emit_index_offset(r300, 0);
+
BEGIN_CS(dwords);
OUT_CS_REG(R300_GA_COLOR_CONTROL,
r300_provoking_vertex_fixes(r300, mode));
@@ -265,23 +282,20 @@ void r500_emit_draw_arrays(struct r300_context *r300,
unsigned mode,
unsigned count)
{
-#if defined(ENABLE_ALT_NUM_VERTS)
boolean alt_num_verts = count > 65535;
-#else
- boolean alt_num_verts = FALSE;
-#endif
CS_LOCALS(r300);
+ if (count >= (1 << 24)) {
+ fprintf(stderr, "r300: Got a huge number of vertices: %i, "
+ "refusing to render.\n", count);
+ return;
+ }
+
+ r500_emit_index_offset(r300, 0);
+
+ BEGIN_CS(7 + (alt_num_verts ? 2 : 0));
if (alt_num_verts) {
- if (count >= (1 << 24)) {
- fprintf(stderr, "r300: Got a huge number of vertices: %i, "
- "refusing to render.\n", count);
- return;
- }
- BEGIN_CS(9);
OUT_CS_REG(R500_VAP_ALT_NUM_VERTICES, count);
- } else {
- BEGIN_CS(7);
}
OUT_CS_REG(R300_GA_COLOR_CONTROL,
r300_provoking_vertex_fixes(r300, mode));
@@ -307,11 +321,7 @@ void r500_emit_draw_elements(struct r300_context *r300,
{
uint32_t count_dwords;
uint32_t offset_dwords = indexSize * start / sizeof(uint32_t);
-#if defined(ENABLE_ALT_NUM_VERTS)
boolean alt_num_verts = count > 65535;
-#else
- boolean alt_num_verts = FALSE;
-#endif
CS_LOCALS(r300);
if (count >= (1 << 24)) {
@@ -320,18 +330,20 @@ void r500_emit_draw_elements(struct r300_context *r300,
return;
}
- assert(indexBias == 0);
-
maxIndex = MIN2(maxIndex, r300->vertex_buffer_max_index);
DBG(r300, DBG_DRAW, "r300: Indexbuf of %u indices, min %u max %u\n",
count, minIndex, maxIndex);
+ if (!r500_emit_index_offset(r300, indexBias)) {
+ fprintf(stderr, "r300: Got a non-zero index bias, "
+ "refusing to render.\n");
+ return;
+ }
+
+ BEGIN_CS(13 + (alt_num_verts ? 2 : 0));
if (alt_num_verts) {
- BEGIN_CS(15);
OUT_CS_REG(R500_VAP_ALT_NUM_VERTICES, count);
- } else {
- BEGIN_CS(13);
}
OUT_CS_REG(R300_GA_COLOR_CONTROL,
r300_provoking_vertex_fixes(r300, mode));
@@ -541,12 +553,9 @@ void r300_draw_range_elements(struct pipe_context* pipe,
{
struct r300_context* r300 = r300_context(pipe);
struct pipe_resource* orgIndexBuffer = indexBuffer;
-#if defined(ENABLE_ALT_NUM_VERTS)
boolean alt_num_verts = r300->screen->caps.is_r500 &&
- count > 65536;
-#else
- boolean alt_num_verts = FALSE;
-#endif
+ count > 65536 &&
+ r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
unsigned short_count;
if (r300->skip_rendering) {
@@ -574,7 +583,7 @@ void r300_draw_range_elements(struct pipe_context* pipe,
r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + 128);
r300_emit_buffer_validate(r300, TRUE, indexBuffer);
r300_emit_dirty_state(r300);
- r300_emit_aos(r300, 0);
+ r300_emit_aos(r300, 0, TRUE);
u_upload_flush(r300->upload_vb);
u_upload_flush(r300->upload_ib);
@@ -591,11 +600,12 @@ void r300_draw_range_elements(struct pipe_context* pipe,
start += short_count;
count -= short_count;
- /* 16 spare dwords are enough for emit_draw_elements. */
- if (count && r300_reserve_cs_space(r300, 16)) {
+ /* 16 spare dwords are enough for emit_draw_elements.
+ * Also reserve some space for emit_query_end. */
+ if (count && r300_reserve_cs_space(r300, 74)) {
r300_emit_buffer_validate(r300, TRUE, indexBuffer);
r300_emit_dirty_state(r300);
- r300_emit_aos(r300, 0);
+ r300_emit_aos(r300, 0, TRUE);
}
} while (count);
}
@@ -622,12 +632,9 @@ void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
unsigned start, unsigned count)
{
struct r300_context* r300 = r300_context(pipe);
-#if defined(ENABLE_ALT_NUM_VERTS)
boolean alt_num_verts = r300->screen->caps.is_r500 &&
- count > 65536;
-#else
- boolean alt_num_verts = FALSE;
-#endif
+ count > 65536 &&
+ r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0);
unsigned short_count;
if (r300->skip_rendering) {
@@ -650,20 +657,21 @@ void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
r300_emit_dirty_state(r300);
if (alt_num_verts || count <= 65535) {
- r300_emit_aos(r300, start);
+ r300_emit_aos(r300, start, FALSE);
r300->emit_draw_arrays(r300, mode, count);
} else {
do {
short_count = MIN2(count, 65535);
- r300_emit_aos(r300, start);
+ r300_emit_aos(r300, start, FALSE);
r300->emit_draw_arrays(r300, mode, short_count);
start += short_count;
count -= short_count;
/* Again, we emit both AOS and draw_arrays so there should be
- * at least 128 spare dwords. */
- if (count && r300_reserve_cs_space(r300, 128)) {
+ * at least 128 spare dwords.
+ * Also reserve some space for emit_query_end. */
+ if (count && r300_reserve_cs_space(r300, 186)) {
r300_emit_buffer_validate(r300, TRUE, NULL);
r300_emit_dirty_state(r300);
}
@@ -896,6 +904,8 @@ static void r500_render_draw_arrays(struct vbuf_render* render,
DBG(r300, DBG_DRAW, "r300: Doing vbuf render, count %d\n", count);
+ r500_emit_index_offset(r300, 0);
+
BEGIN_CS(2);
OUT_CS_PKT3(R300_PACKET3_3D_DRAW_VBUF_2, 0);
OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (count << 16) |
@@ -918,6 +928,8 @@ static void r500_render_draw(struct vbuf_render* render,
r300_emit_buffer_validate(r300, FALSE, NULL);
r300_emit_dirty_state(r300);
+ r500_emit_index_offset(r300, 0);
+
BEGIN_CS(dwords);
OUT_CS_PKT3(R300_PACKET3_3D_DRAW_INDX_2, (count+1)/2);
OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (count << 16) |
diff --git a/src/gallium/drivers/r300/r300_screen.c b/src/gallium/drivers/r300/r300_screen.c
index 8fc1d5aa00..c039126703 100644
--- a/src/gallium/drivers/r300/r300_screen.c
+++ b/src/gallium/drivers/r300/r300_screen.c
@@ -22,6 +22,7 @@
* USE OR OTHER DEALINGS IN THE SOFTWARE. */
#include "util/u_format.h"
+#include "util/u_format_s3tc.h"
#include "util/u_memory.h"
#include "r300_context.h"
@@ -319,6 +320,8 @@ struct pipe_screen* r300_create_screen(struct r300_winsys_screen *rws)
r300_init_screen_resource_functions(r300screen);
+ util_format_s3tc_init();
+
return &r300screen->screen;
}
diff --git a/src/gallium/drivers/r300/r300_screen.h b/src/gallium/drivers/r300/r300_screen.h
index 330bd9b36b..735c233c9e 100644
--- a/src/gallium/drivers/r300/r300_screen.h
+++ b/src/gallium/drivers/r300/r300_screen.h
@@ -71,6 +71,8 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
#define DBG_ANISOHQ 0x0000080
#define DBG_NO_TILING 0x0000100
#define DBG_NO_IMMD 0x0000200
+#define DBG_STATS 0x0000400
+#define DBG_RS 0x0000800
/*@}*/
static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags)
diff --git a/src/gallium/drivers/r300/r300_state.c b/src/gallium/drivers/r300/r300_state.c
index 9eb8539a65..d31e7c53f7 100644
--- a/src/gallium/drivers/r300/r300_state.c
+++ b/src/gallium/drivers/r300/r300_state.c
@@ -538,46 +538,12 @@ static void r300_set_stencil_ref(struct pipe_context* pipe,
}
/* This switcheroo is needed just because of goddamned MACRO_SWITCH. */
-static void r300_fb_update_tiling_flags(struct r300_context *r300,
+static void r300_fb_set_tiling_flags(struct r300_context *r300,
const struct pipe_framebuffer_state *old_state,
const struct pipe_framebuffer_state *new_state)
{
struct r300_texture *tex;
- unsigned i, j, level;
-
- /* Reset tiling flags for old surfaces to default values. */
- for (i = 0; i < old_state->nr_cbufs; i++) {
- for (j = 0; j < new_state->nr_cbufs; j++) {
- if (old_state->cbufs[i]->texture == new_state->cbufs[j]->texture) {
- break;
- }
- }
- /* If not binding the surface again... */
- if (j != new_state->nr_cbufs) {
- continue;
- }
-
- tex = r300_texture(old_state->cbufs[i]->texture);
-
- if (tex) {
- r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[0],
- tex->microtile,
- tex->macrotile);
- }
- }
- if (old_state->zsbuf &&
- (!new_state->zsbuf ||
- old_state->zsbuf->texture != new_state->zsbuf->texture)) {
- tex = r300_texture(old_state->zsbuf->texture);
-
- if (tex) {
- r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[0],
- tex->microtile,
- tex->macrotile);
- }
- }
+ unsigned i, level;
/* Set tiling flags for new surfaces. */
for (i = 0; i < new_state->nr_cbufs; i++) {
@@ -585,7 +551,7 @@ static void r300_fb_update_tiling_flags(struct r300_context *r300,
level = new_state->cbufs[i]->level;
r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[level],
+ tex->pitch[0],
tex->microtile,
tex->mip_macrotile[level]);
}
@@ -594,7 +560,7 @@ static void r300_fb_update_tiling_flags(struct r300_context *r300,
level = new_state->zsbuf->level;
r300->rws->buffer_set_tiling(r300->rws, tex->buffer,
- tex->pitch[level],
+ tex->pitch[0],
tex->microtile,
tex->mip_macrotile[level]);
}
@@ -644,7 +610,8 @@ static void
r300->dsa_state.dirty = TRUE;
}
- r300_fb_update_tiling_flags(r300, r300->fb_state.state, state);
+ /* The tiling flags are dependent on the surface miplevel, unfortunately. */
+ r300_fb_set_tiling_flags(r300, r300->fb_state.state, state);
memcpy(r300->fb_state.state, state, sizeof(struct pipe_framebuffer_state));
@@ -719,10 +686,6 @@ static void r300_bind_fs_state(struct pipe_context* pipe, void* shader)
r300_mark_fs_code_dirty(r300);
r300->rs_block_state.dirty = TRUE; /* Will be updated before the emission. */
-
- if (r300->vs_state.state && r300_vertex_shader_setup_wpos(r300)) {
- r300->vap_output_state.dirty = TRUE;
- }
}
/* Delete fragment shader state. */
@@ -1072,11 +1035,9 @@ r300_create_sampler_view(struct pipe_context *pipe,
swizzle[2] = templ->swizzle_b;
swizzle[3] = templ->swizzle_a;
- /* XXX Enable swizzles when they become supported. Now we get RGBA
- * everywhere. And do testing! */
view->format = tex->tx_format;
view->format.format1 |= r300_translate_texformat(templ->format,
- 0); /*swizzle);*/
+ swizzle);
if (r300_screen(pipe->screen)->caps.is_r500) {
view->format.format2 |= r500_tx_format_msb_bit(templ->format);
}
@@ -1271,6 +1232,7 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
{
struct r300_vertex_element_state *velems;
unsigned i, size;
+ enum pipe_format *format;
assert(count <= PIPE_MAX_ATTRIBS);
velems = CALLOC_STRUCT(r300_vertex_element_state);
@@ -1279,21 +1241,88 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
memcpy(velems->velem, attribs, sizeof(struct pipe_vertex_element) * count);
if (r300_screen(pipe->screen)->caps.has_tcl) {
- /* Check if the format is aligned to the size of DWORD. */
+ r300_vertex_psc(velems);
+
+ /* Check if the format is aligned to the size of DWORD.
+ * We only care about the blocksizes of the formats since
+ * swizzles are already set up. */
for (i = 0; i < count; i++) {
- size = util_format_get_blocksize(attribs[i].src_format);
+ format = &velems->velem[i].src_format;
+
+ /* Replace some formats with their aligned counterparts,
+ * this is OK because we check for aligned strides too. */
+ switch (*format) {
+ /* Align to RGBA8. */
+ case PIPE_FORMAT_R8_UNORM:
+ case PIPE_FORMAT_R8G8_UNORM:
+ case PIPE_FORMAT_R8G8B8_UNORM:
+ *format = PIPE_FORMAT_R8G8B8A8_UNORM;
+ continue;
+ case PIPE_FORMAT_R8_SNORM:
+ case PIPE_FORMAT_R8G8_SNORM:
+ case PIPE_FORMAT_R8G8B8_SNORM:
+ *format = PIPE_FORMAT_R8G8B8A8_SNORM;
+ continue;
+ case PIPE_FORMAT_R8_USCALED:
+ case PIPE_FORMAT_R8G8_USCALED:
+ case PIPE_FORMAT_R8G8B8_USCALED:
+ *format = PIPE_FORMAT_R8G8B8A8_USCALED;
+ continue;
+ case PIPE_FORMAT_R8_SSCALED:
+ case PIPE_FORMAT_R8G8_SSCALED:
+ case PIPE_FORMAT_R8G8B8_SSCALED:
+ *format = PIPE_FORMAT_R8G8B8A8_SSCALED;
+ continue;
+
+ /* Align to RG16. */
+ case PIPE_FORMAT_R16_UNORM:
+ *format = PIPE_FORMAT_R16G16_UNORM;
+ continue;
+ case PIPE_FORMAT_R16_SNORM:
+ *format = PIPE_FORMAT_R16G16_SNORM;
+ continue;
+ case PIPE_FORMAT_R16_USCALED:
+ *format = PIPE_FORMAT_R16G16_USCALED;
+ continue;
+ case PIPE_FORMAT_R16_SSCALED:
+ *format = PIPE_FORMAT_R16G16_SSCALED;
+ continue;
+ case PIPE_FORMAT_R16_FLOAT:
+ *format = PIPE_FORMAT_R16G16_FLOAT;
+ continue;
+
+ /* Align to RGBA16. */
+ case PIPE_FORMAT_R16G16B16_UNORM:
+ *format = PIPE_FORMAT_R16G16B16A16_UNORM;
+ continue;
+ case PIPE_FORMAT_R16G16B16_SNORM:
+ *format = PIPE_FORMAT_R16G16B16A16_SNORM;
+ continue;
+ case PIPE_FORMAT_R16G16B16_USCALED:
+ *format = PIPE_FORMAT_R16G16B16A16_USCALED;
+ continue;
+ case PIPE_FORMAT_R16G16B16_SSCALED:
+ *format = PIPE_FORMAT_R16G16B16A16_SSCALED;
+ continue;
+ case PIPE_FORMAT_R16G16B16_FLOAT:
+ *format = PIPE_FORMAT_R16G16B16A16_FLOAT;
+ continue;
+
+ default:;
+ }
+
+ size = util_format_get_blocksize(*format);
if (size % 4 != 0) {
/* XXX Shouldn't we align the format? */
fprintf(stderr, "r300_create_vertex_elements_state: "
"Unaligned format %s:%i isn't supported\n",
- util_format_name(attribs[i].src_format), size);
+ util_format_name(*format), size);
assert(0);
abort();
}
}
- r300_vertex_psc(velems);
}
}
return velems;
@@ -1359,14 +1388,6 @@ static void r300_bind_vs_state(struct pipe_context* pipe, void* shader)
}
r300->vs_state.state = vs;
- // VS output mapping for HWTCL or stream mapping for SWTCL to the RS block
- if (r300->fs.state) {
- r300_vertex_shader_setup_wpos(r300);
- }
- memcpy(r300->vap_output_state.state, &vs->vap_out,
- sizeof(struct r300_vap_output_state));
- r300->vap_output_state.dirty = TRUE;
-
/* The majority of the RS block bits is dependent on the vertex shader. */
r300->rs_block_state.dirty = TRUE; /* Will be updated before the emission. */
diff --git a/src/gallium/drivers/r300/r300_state_derived.c b/src/gallium/drivers/r300/r300_state_derived.c
index 46c192eae1..e3adace0fa 100644
--- a/src/gallium/drivers/r300/r300_state_derived.c
+++ b/src/gallium/drivers/r300/r300_state_derived.c
@@ -28,6 +28,7 @@
#include "r300_context.h"
#include "r300_fs.h"
+#include "r300_hyperz.h"
#include "r300_screen.h"
#include "r300_shader_semantics.h"
#include "r300_state.h"
@@ -42,6 +43,7 @@ enum r300_rs_swizzle {
SWIZ_XYZW = 0,
SWIZ_X001,
SWIZ_XY01,
+ SWIZ_0001,
};
static void r300_draw_emit_attrib(struct r300_context* r300,
@@ -113,12 +115,11 @@ static void r300_draw_emit_all_attribs(struct r300_context* r300)
static void r300_swtcl_vertex_psc(struct r300_context *r300)
{
struct r300_vertex_stream_state *vstream = r300->vertex_stream_state.state;
- struct r300_vertex_shader* vs = r300->vs_state.state;
- struct vertex_info* vinfo = &r300->vertex_info;
+ struct vertex_info* vinfo = &r300->vertex_info;
uint16_t type, swizzle;
enum pipe_format format;
unsigned i, attrib_count;
- int* vs_output_tab = vs->stream_loc_notcl;
+ int* vs_output_tab = r300->stream_loc_notcl;
/* XXX hax */
memset(vstream, 0, sizeof(struct r300_vertex_stream_state));
@@ -169,10 +170,10 @@ static void r300_swtcl_vertex_psc(struct r300_context *r300)
}
static void r300_rs_col(struct r300_rs_block* rs, int id, int ptr,
- boolean swizzle_0001)
+ enum r300_rs_swizzle swiz)
{
rs->ip[id] |= R300_RS_COL_PTR(ptr);
- if (swizzle_0001) {
+ if (swiz == SWIZ_0001) {
rs->ip[id] |= R300_RS_COL_FMT(R300_RS_COL_FMT_0001);
} else {
rs->ip[id] |= R300_RS_COL_FMT(R300_RS_COL_FMT_RGBA);
@@ -218,10 +219,10 @@ static void r300_rs_tex_write(struct r300_rs_block* rs, int id, int fp_offset)
}
static void r500_rs_col(struct r300_rs_block* rs, int id, int ptr,
- boolean swizzle_0001)
+ enum r300_rs_swizzle swiz)
{
rs->ip[id] |= R500_RS_COL_PTR(ptr);
- if (swizzle_0001) {
+ if (swiz == SWIZ_0001) {
rs->ip[id] |= R500_RS_COL_FMT(R300_RS_COL_FMT_0001);
} else {
rs->ip[id] |= R500_RS_COL_FMT(R300_RS_COL_FMT_RGBA);
@@ -267,21 +268,29 @@ static void r500_rs_tex_write(struct r300_rs_block* rs, int id, int fp_offset)
/* Set up the RS block.
*
- * This is the part of the chipset that actually does the rasterization
- * of vertices into fragments. This is also the part of the chipset that
- * locks up if any part of it is even slightly wrong. */
-static void r300_update_rs_block(struct r300_context* r300,
- struct r300_shader_semantics* vs_outputs,
- struct r300_shader_semantics* fs_inputs)
+ * This is the part of the chipset that is responsible for linking vertex
+ * and fragment shaders and stuffed texture coordinates.
+ *
+ * The rasterizer reads data from VAP, which produces vertex shader outputs,
+ * and GA, which produces stuffed texture coordinates. VAP outputs have
+ * precedence over GA. All outputs must be rasterized otherwise it locks up.
+ * If there are more outputs rasterized than is set in VAP/GA, it locks up
+ * too. The funky part is that this info has been pretty much obtained by trial
+ * and error. */
+static void r300_update_rs_block(struct r300_context *r300)
{
- struct r300_rs_block rs = { { 0 } };
- int i, col_count = 0, tex_count = 0, fp_offset = 0, count;
- void (*rX00_rs_col)(struct r300_rs_block*, int, int, boolean);
+ struct r300_vertex_shader *vs = r300->vs_state.state;
+ struct r300_shader_semantics *vs_outputs = &vs->outputs;
+ struct r300_shader_semantics *fs_inputs = &r300_fs(r300)->shader->inputs;
+ struct r300_rs_block rs = {0};
+ int i, col_count = 0, tex_count = 0, fp_offset = 0, count, loc = 0;
+ void (*rX00_rs_col)(struct r300_rs_block*, int, int, enum r300_rs_swizzle);
void (*rX00_rs_col_write)(struct r300_rs_block*, int, int);
void (*rX00_rs_tex)(struct r300_rs_block*, int, int, enum r300_rs_swizzle);
void (*rX00_rs_tex_write)(struct r300_rs_block*, int, int);
boolean any_bcolor_used = vs_outputs->bcolor[0] != ATTR_UNUSED ||
vs_outputs->bcolor[1] != ATTR_UNUSED;
+ int *stream_loc_notcl = r300->stream_loc_notcl;
if (r300->screen->caps.is_r500) {
rX00_rs_col = r500_rs_col;
@@ -295,18 +304,39 @@ static void r300_update_rs_block(struct r300_context* r300,
rX00_rs_tex_write = r300_rs_tex_write;
}
- /* Rasterize colors. */
+ /* The position is always present in VAP. */
+ rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_POS;
+ rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT;
+ stream_loc_notcl[loc++] = 0;
+
+ /* Set up the point size in VAP. */
+ if (vs_outputs->psize != ATTR_UNUSED) {
+ rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT;
+ stream_loc_notcl[loc++] = 1;
+ }
+
+ /* Set up and rasterize colors. */
for (i = 0; i < ATTR_COLOR_COUNT; i++) {
if (vs_outputs->color[i] != ATTR_UNUSED || any_bcolor_used ||
vs_outputs->color[1] != ATTR_UNUSED) {
- /* Always rasterize if it's written by the VS,
- * otherwise it locks up. */
- rX00_rs_col(&rs, col_count, i, FALSE);
+ /* Set up the color in VAP. */
+ rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
+ rs.vap_out_vtx_fmt[0] |=
+ R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << i;
+ stream_loc_notcl[loc++] = 2 + i;
+
+ /* Rasterize it. */
+ rX00_rs_col(&rs, col_count, col_count, SWIZ_XYZW);
- /* Write it to the FS input register if it's used by the FS. */
+ /* Write it to the FS input register if it's needed by the FS. */
if (fs_inputs->color[i] != ATTR_UNUSED) {
rX00_rs_col_write(&rs, col_count, fp_offset);
fp_offset++;
+
+ DBG(r300, DBG_RS,
+ "r300: Rasterized color %i written to FS.\n", i);
+ } else {
+ DBG(r300, DBG_RS, "r300: Rasterized color %i unused.\n", i);
}
col_count++;
} else {
@@ -314,26 +344,51 @@ static void r300_update_rs_block(struct r300_context* r300,
/* If we try to set it to (0,0,0,1), it will lock up. */
if (fs_inputs->color[i] != ATTR_UNUSED) {
fp_offset++;
+
+ DBG(r300, DBG_RS, "r300: FS input color %i unassigned%s.\n",
+ i);
}
}
}
+ /* Set up back-face colors. The rasterizer will do the color selection
+ * automatically. */
+ if (any_bcolor_used) {
+ for (i = 0; i < ATTR_COLOR_COUNT; i++) {
+ rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
+ rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << (2+i);
+ stream_loc_notcl[loc++] = 4 + i;
+ }
+ }
+
/* Rasterize texture coordinates. */
- for (i = 0; i < ATTR_GENERIC_COUNT; i++) {
+ for (i = 0; i < ATTR_GENERIC_COUNT && tex_count < 8; i++) {
bool sprite_coord = !!(r300->sprite_coord_enable & (1 << i));
if (vs_outputs->generic[i] != ATTR_UNUSED || sprite_coord) {
- /* Always rasterize if it's written by the VS,
- * otherwise it locks up. */
+ if (!sprite_coord) {
+ /* Set up the texture coordinates in VAP. */
+ rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count);
+ rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count));
+ stream_loc_notcl[loc++] = 6 + tex_count;
+ }
+
+ /* Rasterize it. */
rX00_rs_tex(&rs, tex_count, tex_count,
sprite_coord ? SWIZ_XY01 : SWIZ_XYZW);
- /* Write it to the FS input register if it's used by the FS. */
+ /* Write it to the FS input register if it's needed by the FS. */
if (fs_inputs->generic[i] != ATTR_UNUSED) {
rX00_rs_tex_write(&rs, tex_count, fp_offset);
- if (sprite_coord)
- debug_printf("r300: SpriteCoord (generic index %i) is being written to reg %i\n", i, fp_offset);
fp_offset++;
+
+ DBG(r300, DBG_RS,
+ "r300: Rasterized generic %i written to FS%s.\n",
+ i, sprite_coord ? " (sprite coord)" : "");
+ } else {
+ DBG(r300, DBG_RS,
+ "r300: Rasterized generic %i unused%s.\n",
+ i, sprite_coord ? " (sprite coord)" : "");
}
tex_count++;
} else {
@@ -341,20 +396,31 @@ static void r300_update_rs_block(struct r300_context* r300,
/* If we try to set it to (0,0,0,1), it will lock up. */
if (fs_inputs->generic[i] != ATTR_UNUSED) {
fp_offset++;
+
+ DBG(r300, DBG_RS, "r300: FS input generic %i unassigned%s.\n",
+ i, sprite_coord ? " (sprite coord)" : "");
}
}
}
/* Rasterize fog coordinates. */
- if (vs_outputs->fog != ATTR_UNUSED) {
- /* Always rasterize if it's written by the VS,
- * otherwise it locks up. */
+ if (vs_outputs->fog != ATTR_UNUSED && tex_count < 8) {
+ /* Set up the fog coordinates in VAP. */
+ rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count);
+ rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count));
+ stream_loc_notcl[loc++] = 6 + tex_count;
+
+ /* Rasterize it. */
rX00_rs_tex(&rs, tex_count, tex_count, SWIZ_X001);
- /* Write it to the FS input register if it's used by the FS. */
+ /* Write it to the FS input register if it's needed by the FS. */
if (fs_inputs->fog != ATTR_UNUSED) {
rX00_rs_tex_write(&rs, tex_count, fp_offset);
fp_offset++;
+
+ DBG(r300, DBG_RS, "r300: Rasterized fog written to FS.\n");
+ } else {
+ DBG(r300, DBG_RS, "r300: Rasterized fog unused.\n");
}
tex_count++;
} else {
@@ -362,25 +428,47 @@ static void r300_update_rs_block(struct r300_context* r300,
/* If we try to set it to (0,0,0,1), it will lock up. */
if (fs_inputs->fog != ATTR_UNUSED) {
fp_offset++;
+
+ DBG(r300, DBG_RS, "r300: FS input fog unassigned.\n");
}
}
/* Rasterize WPOS. */
- /* If the FS doesn't need it, it's not written by the VS. */
- if (vs_outputs->wpos != ATTR_UNUSED && fs_inputs->wpos != ATTR_UNUSED) {
+ /* Don't set it in VAP if the FS doesn't need it. */
+ if (fs_inputs->wpos != ATTR_UNUSED && tex_count < 8) {
+ /* Set up the WPOS coordinates in VAP. */
+ rs.vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << tex_count);
+ rs.vap_out_vtx_fmt[1] |= (4 << (3 * tex_count));
+ stream_loc_notcl[loc++] = 6 + tex_count;
+
+ /* Rasterize it. */
rX00_rs_tex(&rs, tex_count, tex_count, SWIZ_XYZW);
+
+ /* Write it to the FS input register. */
rX00_rs_tex_write(&rs, tex_count, fp_offset);
+ DBG(r300, DBG_RS, "r300: Rasterized WPOS written to FS.\n");
+
fp_offset++;
tex_count++;
}
+ /* Invalidate the rest of the no-TCL (GA) stream locations. */
+ for (; loc < 16;) {
+ stream_loc_notcl[loc++] = -1;
+ }
+
/* Rasterize at least one color, or bad things happen. */
if (col_count == 0 && tex_count == 0) {
- rX00_rs_col(&rs, 0, 0, TRUE);
+ rX00_rs_col(&rs, 0, 0, SWIZ_0001);
col_count++;
+
+ DBG(r300, DBG_RS, "r300: Rasterized color 0 to prevent lockups.\n");
}
+ DBG(r300, DBG_RS, "r300: --- Rasterizer status ---: colors: %i, "
+ "generics: %i.\n", col_count, tex_count);
+
rs.count = (tex_count*4) | (col_count << R300_IC_COUNT_SHIFT) |
R300_HIRES_EN;
@@ -390,87 +478,8 @@ static void r300_update_rs_block(struct r300_context* r300,
/* Now, after all that, see if we actually need to update the state. */
if (memcmp(r300->rs_block_state.state, &rs, sizeof(struct r300_rs_block))) {
memcpy(r300->rs_block_state.state, &rs, sizeof(struct r300_rs_block));
- r300->rs_block_state.size = 5 + count*2;
- }
-}
-
-/* Update the shader-dependant states. */
-static void r300_update_derived_shader_state(struct r300_context* r300)
-{
- struct r300_vertex_shader* vs = r300->vs_state.state;
-
- r300_update_rs_block(r300, &vs->outputs, &r300_fs(r300)->shader->inputs);
-}
-
-static boolean r300_dsa_writes_depth_stencil(struct r300_dsa_state* dsa)
-{
- /* We are interested only in the cases when a new depth or stencil value
- * can be written and changed. */
-
- /* We might optionally check for [Z func: never] and inspect the stencil
- * state in a similar fashion, but it's not terribly important. */
- return (dsa->z_buffer_control & R300_Z_WRITE_ENABLE) ||
- (dsa->stencil_ref_mask & R300_STENCILWRITEMASK_MASK) ||
- ((dsa->z_buffer_control & R500_STENCIL_REFMASK_FRONT_BACK) &&
- (dsa->stencil_ref_bf & R300_STENCILWRITEMASK_MASK));
-}
-
-static boolean r300_dsa_alpha_test_enabled(struct r300_dsa_state* dsa)
-{
- /* We are interested only in the cases when alpha testing can kill
- * a fragment. */
- uint32_t af = dsa->alpha_function;
-
- return (af & R300_FG_ALPHA_FUNC_ENABLE) &&
- (af & R300_FG_ALPHA_FUNC_ALWAYS) != R300_FG_ALPHA_FUNC_ALWAYS;
-}
-
-static void r300_update_ztop(struct r300_context* r300)
-{
- struct r300_ztop_state* ztop_state =
- (struct r300_ztop_state*)r300->ztop_state.state;
-
- /* This is important enough that I felt it warranted a comment.
- *
- * According to the docs, these are the conditions where ZTOP must be
- * disabled:
- * 1) Alpha testing enabled
- * 2) Texture kill instructions in fragment shader
- * 3) Chroma key culling enabled
- * 4) W-buffering enabled
- *
- * The docs claim that for the first three cases, if no ZS writes happen,
- * then ZTOP can be used.
- *
- * (3) will never apply since we do not support chroma-keyed operations.
- * (4) will need to be re-examined (and this comment updated) if/when
- * Hyper-Z becomes supported.
- *
- * Additionally, the following conditions require disabled ZTOP:
- * 5) Depth writes in fragment shader
- * 6) Outstanding occlusion queries
- *
- * This register causes stalls all the way from SC to CB when changed,
- * but it is buffered on-chip so it does not hurt to write it if it has
- * not changed.
- *
- * ~C.
- */
-
- /* ZS writes */
- if (r300_dsa_writes_depth_stencil(r300->dsa_state.state) &&
- (r300_dsa_alpha_test_enabled(r300->dsa_state.state) || /* (1) */
- r300_fs(r300)->shader->info.uses_kill)) { /* (2) */
- ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
- } else if (r300_fragment_shader_writes_depth(r300_fs(r300))) { /* (5) */
- ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
- } else if (r300->query_current) { /* (6) */
- ztop_state->z_buffer_top = R300_ZTOP_DISABLE;
- } else {
- ztop_state->z_buffer_top = R300_ZTOP_ENABLE;
+ r300->rs_block_state.size = 11 + count*2;
}
-
- r300->ztop_state.dirty = TRUE;
}
static void r300_merge_textures_and_samplers(struct r300_context* r300)
@@ -568,7 +577,7 @@ void r300_update_derived_state(struct r300_context* r300)
}
if (r300->rs_block_state.dirty) {
- r300_update_derived_shader_state(r300);
+ r300_update_rs_block(r300);
}
if (r300->draw) {
@@ -578,5 +587,5 @@ void r300_update_derived_state(struct r300_context* r300)
r300_swtcl_vertex_psc(r300);
}
- r300_update_ztop(r300);
+ r300_update_hyperz_state(r300);
}
diff --git a/src/gallium/drivers/r300/r300_state_inlines.h b/src/gallium/drivers/r300/r300_state_inlines.h
index 480d0f7c4a..fcbdb91b67 100644
--- a/src/gallium/drivers/r300/r300_state_inlines.h
+++ b/src/gallium/drivers/r300/r300_state_inlines.h
@@ -374,6 +374,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
fprintf(stderr, "r300: Bad format %s in %s:%d\n", util_format_name(format),
__FUNCTION__, __LINE__);
assert(0);
+ abort();
}
switch (desc->channel[0].type) {
@@ -395,6 +396,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
fprintf(stderr, "r300: Bad format %s in %s:%d\n",
util_format_name(format), __FUNCTION__, __LINE__);
assert(0);
+ abort();
}
break;
/* Unsigned ints */
@@ -418,12 +420,14 @@ r300_translate_vertex_data_type(enum pipe_format format) {
fprintf(stderr, "r300: desc->channel[0].size == %d\n",
desc->channel[0].size);
assert(0);
+ abort();
}
break;
default:
fprintf(stderr, "r300: Bad format %s in %s:%d\n",
util_format_name(format), __FUNCTION__, __LINE__);
assert(0);
+ abort();
}
if (desc->channel[0].type == UTIL_FORMAT_TYPE_SIGNED) {
@@ -439,6 +443,7 @@ r300_translate_vertex_data_type(enum pipe_format format) {
static INLINE uint16_t
r300_translate_vertex_data_swizzle(enum pipe_format format) {
const struct util_format_description *desc = util_format_description(format);
+ unsigned i, swizzle = 0;
assert(format);
@@ -448,11 +453,19 @@ r300_translate_vertex_data_swizzle(enum pipe_format format) {
return 0;
}
- return ((desc->swizzle[0] << R300_SWIZZLE_SELECT_X_SHIFT) |
- (desc->swizzle[1] << R300_SWIZZLE_SELECT_Y_SHIFT) |
- (desc->swizzle[2] << R300_SWIZZLE_SELECT_Z_SHIFT) |
- (desc->swizzle[3] << R300_SWIZZLE_SELECT_W_SHIFT) |
- (0xf << R300_WRITE_ENA_SHIFT));
+ for (i = 0; i < desc->nr_channels; i++) {
+ swizzle |=
+ MIN2(desc->swizzle[i], R300_SWIZZLE_SELECT_FP_ONE) << (3*i);
+ }
+ /* Set (0,0,0,1) in unused components. */
+ for (; i < 3; i++) {
+ swizzle |= R300_SWIZZLE_SELECT_FP_ZERO << (3*i);
+ }
+ for (; i < 4; i++) {
+ swizzle |= R300_SWIZZLE_SELECT_FP_ONE << (3*i);
+ }
+
+ return swizzle | (0xf << R300_WRITE_ENA_SHIFT);
}
#endif /* R300_STATE_INLINES_H */
diff --git a/src/gallium/drivers/r300/r300_state_invariant.c b/src/gallium/drivers/r300/r300_state_invariant.c
index 64d1d18b45..cd9443fa26 100644
--- a/src/gallium/drivers/r300/r300_state_invariant.c
+++ b/src/gallium/drivers/r300/r300_state_invariant.c
@@ -43,15 +43,17 @@ void r300_emit_invariant_state(struct r300_context* r300,
{
CS_LOCALS(r300);
+ if (r300->rws->get_value(r300->rws, R300_VID_DRM_2_3_0)) {
+ /* Subpixel multisampling for AA. */
+ BEGIN_CS(4);
+ OUT_CS_REG(R300_GB_MSPOS0, 0x66666666);
+ OUT_CS_REG(R300_GB_MSPOS1, 0x6666666);
+ END_CS;
+ }
+
BEGIN_CS(12 + (r300->screen->caps.has_tcl ? 2 : 0));
/*** Graphics Backend (GB) ***/
- /* Subpixel multisampling for AA
- * These are commented out because glisse's CS checker doesn't like them.
- * I presume these will be re-enabled later.
- * OUT_CS_REG(R300_GB_MSPOS0, 0x66666666);
- * OUT_CS_REG(R300_GB_MSPOS1, 0x6666666);
- */
/* Source of fog depth */
OUT_CS_REG(R300_GB_SELECT, R300_GB_FOG_SELECT_1_1_W);
diff --git a/src/gallium/drivers/r300/r300_texture.c b/src/gallium/drivers/r300/r300_texture.c
index 8bebeacf86..69e6a12445 100644
--- a/src/gallium/drivers/r300/r300_texture.c
+++ b/src/gallium/drivers/r300/r300_texture.c
@@ -34,9 +34,6 @@
#include "r300_screen.h"
#include "r300_winsys.h"
-/* XXX Enable float textures here. */
-/*#define ENABLE_FLOAT_TEXTURES*/
-
#define TILE_WIDTH 0
#define TILE_HEIGHT 1
@@ -74,7 +71,7 @@ static boolean r300_format_is_plain(enum pipe_format format)
* The FORMAT specifies how the texture sampler will treat the texture, and
* makes available X, Y, Z, W, ZERO, and ONE for swizzling. */
uint32_t r300_translate_texformat(enum pipe_format format,
- const unsigned char *swizzle)
+ const unsigned char *swizzle_view)
{
uint32_t result = 0;
const struct util_format_description *desc;
@@ -98,6 +95,7 @@ uint32_t r300_translate_texformat(enum pipe_format format,
R300_TX_FORMAT_SIGNED_Z,
R300_TX_FORMAT_SIGNED_W,
};
+ unsigned char swizzle[4];
desc = util_format_description(format);
@@ -144,25 +142,18 @@ uint32_t r300_translate_texformat(enum pipe_format format,
}
}
- /* Add swizzle. */
- if (!swizzle) {
- swizzle = desc->swizzle;
- } /*else {
- if (swizzle[0] != desc->swizzle[0] ||
- swizzle[1] != desc->swizzle[1] ||
- swizzle[2] != desc->swizzle[2] ||
- swizzle[3] != desc->swizzle[3])
- {
- const char n[6] = "RGBA01";
- fprintf(stderr, "Got different swizzling! Format: %c%c%c%c, "
- "View: %c%c%c%c\n",
- n[desc->swizzle[0]], n[desc->swizzle[1]],
- n[desc->swizzle[2]], n[desc->swizzle[3]],
- n[swizzle[0]], n[swizzle[1]], n[swizzle[2]],
- n[swizzle[3]]);
+ /* Get swizzle. */
+ if (swizzle_view) {
+ /* Compose two sets of swizzles. */
+ for (i = 0; i < 4; i++) {
+ swizzle[i] = swizzle_view[i] <= UTIL_FORMAT_SWIZZLE_W ?
+ desc->swizzle[swizzle_view[i]] : swizzle_view[i];
}
- }*/
+ } else {
+ memcpy(swizzle, desc->swizzle, sizeof(swizzle));
+ }
+ /* Add swizzle. */
for (i = 0; i < 4; i++) {
switch (swizzle[i]) {
case UTIL_FORMAT_SWIZZLE_X:
@@ -316,7 +307,6 @@ uint32_t r300_translate_texformat(enum pipe_format format,
}
return ~0;
-#if defined(ENABLE_FLOAT_TEXTURES)
case UTIL_FORMAT_TYPE_FLOAT:
switch (desc->channel[0].size) {
case 16:
@@ -340,7 +330,6 @@ uint32_t r300_translate_texformat(enum pipe_format format,
return R300_TX_FORMAT_32F_32F_32F_32F | result;
}
}
-#endif
}
return ~0; /* Unsupported/unknown. */
@@ -405,16 +394,12 @@ static uint32_t r300_translate_colorformat(enum pipe_format format)
/* 64-bit buffers. */
case PIPE_FORMAT_R16G16B16A16_UNORM:
case PIPE_FORMAT_R16G16B16A16_SNORM:
-#if defined(ENABLE_FLOAT_TEXTURES)
case PIPE_FORMAT_R16G16B16A16_FLOAT:
-#endif
return R300_COLOR_FORMAT_ARGB16161616;
/* 128-bit buffers. */
-#if defined(ENABLE_FLOAT_TEXTURES)
case PIPE_FORMAT_R32G32B32A32_FLOAT:
return R300_COLOR_FORMAT_ARGB32323232;
-#endif
/* YUV buffers. */
case PIPE_FORMAT_UYVY:
@@ -532,7 +517,7 @@ static uint32_t r300_translate_out_fmt(enum pipe_format format)
case PIPE_FORMAT_R10SG10SB10SA2U_NORM:
case PIPE_FORMAT_R16G16B16A16_UNORM:
case PIPE_FORMAT_R16G16B16A16_SNORM:
- //case PIPE_FORMAT_R16G16B16A16_FLOAT: /* not in pipe_format */
+ case PIPE_FORMAT_R16G16B16A16_FLOAT:
case PIPE_FORMAT_R32G32B32A32_FLOAT:
return modifier |
R300_C0_SEL_R | R300_C1_SEL_G |
@@ -573,7 +558,7 @@ static void r300_texture_setup_immutable_state(struct r300_screen* screen,
if (tex->uses_pitch) {
/* rectangles love this */
f->format0 |= R300_TX_PITCH_EN;
- f->format2 = (tex->pitch[0] - 1) & 0x1fff;
+ f->format2 = (tex->hwpitch[0] - 1) & 0x1fff;
} else {
/* power of two textures (3D, mipmaps, and no pitch) */
f->format0 |= R300_TX_DEPTH(util_logbase2(pt->depth0) & 0xf);
@@ -614,7 +599,7 @@ static void r300_texture_setup_fb_state(struct r300_screen* screen,
if (util_format_is_depth_or_stencil(tex->b.b.format)) {
for (i = 0; i <= tex->b.b.last_level; i++) {
tex->fb_state.depthpitch[i] =
- tex->pitch[i] |
+ tex->hwpitch[i] |
R300_DEPTHMACROTILE(tex->mip_macrotile[i]) |
R300_DEPTHMICROTILE(tex->microtile);
}
@@ -622,7 +607,7 @@ static void r300_texture_setup_fb_state(struct r300_screen* screen,
} else {
for (i = 0; i <= tex->b.b.last_level; i++) {
tex->fb_state.colorpitch[i] =
- tex->pitch[i] |
+ tex->hwpitch[i] |
r300_translate_colorformat(tex->b.b.format) |
R300_COLOR_TILE(tex->mip_macrotile[i]) |
R300_COLOR_MICROTILE(tex->microtile);
@@ -762,12 +747,12 @@ static unsigned r300_texture_get_nblocksy(struct r300_texture* tex,
static void r300_texture_3d_fix_mipmapping(struct r300_screen *screen,
struct r300_texture *tex)
{
- /* The kernels <= 2.6.34-rc3 compute the size of mipmapped 3D textures
+ /* The kernels <= 2.6.34-rc4 compute the size of mipmapped 3D textures
* incorrectly. This is a workaround to prevent CS from being rejected. */
unsigned i, size;
- if (screen->rws->get_value(screen->rws, R300_VID_TEX3D_MIP_BUG) &&
+ if (!screen->rws->get_value(screen->rws, R300_VID_DRM_2_3_0) &&
tex->b.b.target == PIPE_TEXTURE_3D &&
tex->b.b.last_level > 0) {
size = 0;
@@ -813,6 +798,8 @@ static void r300_setup_miptree(struct r300_screen* screen,
tex->size = tex->offset[i] + size;
tex->layer_size[i] = layer_size;
tex->pitch[i] = stride / util_format_get_blocksize(base->format);
+ tex->hwpitch[i] =
+ tex->pitch[i] * util_format_get_blockwidth(base->format);
SCREEN_DBG(screen, DBG_TEX, "r300: Texture miptree: Level %d "
"(%dx%dx%d px, pitch %d bytes) %d bytes total, macrotiled %s\n",
diff --git a/src/gallium/drivers/r300/r300_texture.h b/src/gallium/drivers/r300/r300_texture.h
index 453d42b188..ba79ec068a 100644
--- a/src/gallium/drivers/r300/r300_texture.h
+++ b/src/gallium/drivers/r300/r300_texture.h
@@ -28,7 +28,7 @@
struct r300_texture;
uint32_t r300_translate_texformat(enum pipe_format format,
- const unsigned char *swizzle);
+ const unsigned char *swizzle_view);
uint32_t r500_tx_format_msb_bit(enum pipe_format format);
diff --git a/src/gallium/drivers/r300/r300_tgsi_to_rc.c b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
index f6428ed760..89f39af976 100644
--- a/src/gallium/drivers/r300/r300_tgsi_to_rc.c
+++ b/src/gallium/drivers/r300/r300_tgsi_to_rc.c
@@ -108,11 +108,9 @@ static unsigned translate_opcode(unsigned opcode)
/* case TGSI_OPCODE_BRK: return RC_OPCODE_BRK; */
case TGSI_OPCODE_IF: return RC_OPCODE_IF;
/* case TGSI_OPCODE_LOOP: return RC_OPCODE_LOOP; */
- /* case TGSI_OPCODE_REP: return RC_OPCODE_REP; */
case TGSI_OPCODE_ELSE: return RC_OPCODE_ELSE;
case TGSI_OPCODE_ENDIF: return RC_OPCODE_ENDIF;
/* case TGSI_OPCODE_ENDLOOP: return RC_OPCODE_ENDLOOP; */
- /* case TGSI_OPCODE_ENDREP: return RC_OPCODE_ENDREP; */
/* case TGSI_OPCODE_PUSHA: return RC_OPCODE_PUSHA; */
/* case TGSI_OPCODE_POPA: return RC_OPCODE_POPA; */
case TGSI_OPCODE_CEIL: return RC_OPCODE_CEIL;
diff --git a/src/gallium/drivers/r300/r300_vs.c b/src/gallium/drivers/r300/r300_vs.c
index bfab9c3b01..b7609bad81 100644
--- a/src/gallium/drivers/r300/r300_vs.c
+++ b/src/gallium/drivers/r300/r300_vs.c
@@ -94,94 +94,6 @@ static void r300_shader_read_vs_outputs(
vs_outputs->wpos = i;
}
-/* This function sets up:
- * - VAP mapping, which maps VS registers to output semantics and
- * at the same time it indicates which attributes are enabled and should
- * be rasterized.
- * - Stream mapping to VS outputs if TCL is not present. */
-static void r300_init_vs_output_mapping(struct r300_vertex_shader* vs)
-{
- struct r300_shader_semantics* vs_outputs = &vs->outputs;
- struct r300_vap_output_state *vap_out = &vs->vap_out;
- int *stream_loc = vs->stream_loc_notcl;
- int i, gen_count, tabi = 0;
- boolean any_bcolor_used = vs_outputs->bcolor[0] != ATTR_UNUSED ||
- vs_outputs->bcolor[1] != ATTR_UNUSED;
-
- vap_out->vap_vtx_state_cntl = 0x5555; /* XXX this is classic Mesa bonghits */
-
- /* Position. */
- if (vs_outputs->pos != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_POS;
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT;
-
- stream_loc[tabi++] = 0;
- } else {
- assert(0);
- }
-
- /* Point size. */
- if (vs_outputs->psize != ATTR_UNUSED) {
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT;
-
- stream_loc[tabi++] = 1;
- }
-
- /* Colors. */
- for (i = 0; i < ATTR_COLOR_COUNT; i++) {
- if (vs_outputs->color[i] != ATTR_UNUSED || any_bcolor_used ||
- vs_outputs->color[1] != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << i;
-
- stream_loc[tabi++] = 2 + i;
- }
- }
-
- /* Back-face colors. */
- if (any_bcolor_used) {
- for (i = 0; i < ATTR_COLOR_COUNT; i++) {
- vap_out->vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
- vap_out->vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << (2+i);
-
- stream_loc[tabi++] = 4 + i;
- }
- }
-
- /* Texture coordinates. */
- gen_count = 0;
- for (i = 0; i < ATTR_GENERIC_COUNT && gen_count < 8; i++) {
- if (vs_outputs->generic[i] != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << gen_count);
- vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * gen_count));
-
- stream_loc[tabi++] = 6 + gen_count;
- gen_count++;
- }
- }
-
- /* Fog coordinates. */
- if (gen_count < 8 && vs_outputs->fog != ATTR_UNUSED) {
- vap_out->vap_vsm_vtx_assm |= (R300_INPUT_CNTL_TC0 << gen_count);
- vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * gen_count));
-
- stream_loc[tabi++] = 6 + gen_count;
- gen_count++;
- }
-
- /* WPOS. */
- if (gen_count < 8) {
- vs->wpos_tex_output = gen_count;
- stream_loc[tabi++] = 6 + gen_count;
- } else {
- vs_outputs->wpos = ATTR_UNUSED;
- }
-
- for (; tabi < 16;) {
- stream_loc[tabi++] = -1;
- }
-}
-
static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c)
{
struct r300_vertex_shader * vs = c->UserData;
@@ -246,9 +158,7 @@ static void set_vertex_inputs_outputs(struct r300_vertex_program_compiler * c)
}
/* WPOS. */
- if (outputs->wpos != ATTR_UNUSED) {
- c->code->outputs[outputs->wpos] = reg++;
- }
+ c->code->outputs[outputs->wpos] = reg++;
}
static void r300_dummy_vertex_shader(
@@ -286,7 +196,6 @@ void r300_translate_vertex_shader(struct r300_context* r300,
tgsi_scan_shader(tokens, &vs->info);
r300_shader_read_vs_outputs(&vs->info, &vs->outputs);
- r300_init_vs_output_mapping(vs);
/* Setup the compiler */
rc_init(&compiler.Base);
@@ -307,16 +216,11 @@ void r300_translate_vertex_shader(struct r300_context* r300,
r300_tgsi_to_rc(&ttr, tokens);
- compiler.RequiredOutputs =
- ~(~0 << (vs->info.num_outputs +
- (vs->outputs.wpos != ATTR_UNUSED ? 1 : 0)));
-
+ compiler.RequiredOutputs = ~(~0 << (vs->info.num_outputs + 1));
compiler.SetHwInputOutput = &set_vertex_inputs_outputs;
/* Insert the WPOS output. */
- if (vs->outputs.wpos != ATTR_UNUSED) {
- rc_copy_output(&compiler.Base, 0, vs->outputs.wpos);
- }
+ rc_copy_output(&compiler.Base, 0, vs->outputs.wpos);
/* Invoke the compiler */
r3xx_compile_vertex_program(&compiler);
@@ -343,32 +247,3 @@ void r300_translate_vertex_shader(struct r300_context* r300,
/* And, finally... */
rc_destroy(&compiler.Base);
}
-
-boolean r300_vertex_shader_setup_wpos(struct r300_context* r300)
-{
- struct r300_vertex_shader* vs = r300->vs_state.state;
- struct r300_vap_output_state *vap_out = &vs->vap_out;
- int tex_output = vs->wpos_tex_output;
- uint32_t tex_fmt = R300_INPUT_CNTL_TC0 << tex_output;
-
- if (vs->outputs.wpos == ATTR_UNUSED) {
- return FALSE;
- }
-
- if (r300_fs(r300)->shader->inputs.wpos != ATTR_UNUSED) {
- /* Enable WPOS in VAP. */
- if (!(vap_out->vap_vsm_vtx_assm & tex_fmt)) {
- vap_out->vap_vsm_vtx_assm |= tex_fmt;
- vap_out->vap_out_vtx_fmt[1] |= (4 << (3 * tex_output));
- return TRUE;
- }
- } else {
- /* Disable WPOS in VAP. */
- if (vap_out->vap_vsm_vtx_assm & tex_fmt) {
- vap_out->vap_vsm_vtx_assm &= ~tex_fmt;
- vap_out->vap_out_vtx_fmt[1] &= ~(4 << (3 * tex_output));
- return TRUE;
- }
- }
- return FALSE;
-}
diff --git a/src/gallium/drivers/r300/r300_vs.h b/src/gallium/drivers/r300/r300_vs.h
index 56bcc3b70b..57b3fbca0b 100644
--- a/src/gallium/drivers/r300/r300_vs.h
+++ b/src/gallium/drivers/r300/r300_vs.h
@@ -39,7 +39,6 @@ struct r300_vertex_shader {
struct tgsi_shader_info info;
struct r300_shader_semantics outputs;
- struct r300_vap_output_state vap_out;
/* Whether the shader was replaced by a dummy one due to a shader
* compilation failure. */
@@ -49,12 +48,6 @@ struct r300_vertex_shader {
unsigned externals_count;
unsigned immediates_count;
- /* Stream locations for SWTCL or if TCL is bypassed. */
- int stream_loc_notcl[16];
-
- /* Output stream location for WPOS. */
- int wpos_tex_output;
-
/* HWTCL-specific. */
/* Machine code (if translated) */
struct r300_vertex_program_code code;
@@ -67,7 +60,4 @@ void r300_translate_vertex_shader(struct r300_context* r300,
struct r300_vertex_shader* vs,
const struct tgsi_token *tokens);
-/* Return TRUE if VAP (hwfmt) needs to be re-emitted. */
-boolean r300_vertex_shader_setup_wpos(struct r300_context* r300);
-
#endif /* R300_VS_H */
diff --git a/src/gallium/drivers/r300/r300_winsys.h b/src/gallium/drivers/r300/r300_winsys.h
index 2bd40176d1..1642981eaa 100644
--- a/src/gallium/drivers/r300/r300_winsys.h
+++ b/src/gallium/drivers/r300/r300_winsys.h
@@ -39,7 +39,7 @@ enum r300_value_id {
R300_VID_GB_PIPES,
R300_VID_Z_PIPES,
R300_VID_SQUARE_TILING_SUPPORT,
- R300_VID_TEX3D_MIP_BUG,
+ R300_VID_DRM_2_3_0,
};
enum r300_reference_domain { /* bitfield */
@@ -119,6 +119,10 @@ struct r300_winsys_screen {
/* Write a dword to the command buffer. */
void (*write_cs_dword)(struct r300_winsys_screen* winsys, uint32_t dword);
+ /* Write a table of dwords to the command buffer. */
+ void (*write_cs_table)(struct r300_winsys_screen* winsys,
+ const void *dwords, unsigned count);
+
/* Write a relocated dword to the command buffer. */
void (*write_cs_reloc)(struct r300_winsys_screen *winsys,
struct r300_winsys_buffer *buf,
diff --git a/src/gallium/drivers/softpipe/sp_clear.c b/src/gallium/drivers/softpipe/sp_clear.c
index 5f130453c3..ae3f00f338 100644
--- a/src/gallium/drivers/softpipe/sp_clear.c
+++ b/src/gallium/drivers/softpipe/sp_clear.c
@@ -69,11 +69,6 @@ softpipe_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
util_pack_color(rgba, ps->format, &uc);
sp_tile_cache_clear(softpipe->cbuf_cache[i], rgba, uc.ui);
-
-#if !TILE_CLEAR_OPTIMIZATION
- /* non-cached surface */
- pipe->surface_fill(pipe, ps, 0, 0, ps->width, ps->height, uc.ui);
-#endif
}
}
@@ -83,11 +78,6 @@ softpipe_clear(struct pipe_context *pipe, unsigned buffers, const float *rgba,
cv = util_pack_z_stencil(ps->format, depth, stencil);
sp_tile_cache_clear(softpipe->zsbuf_cache, zero, cv);
-
-#if !TILE_CLEAR_OPTIMIZATION
- /* non-cached surface */
- pipe->surface_fill(pipe, ps, 0, 0, ps->width, ps->height, cv);
-#endif
}
softpipe->dirty_render_cache = TRUE;
diff --git a/src/gallium/drivers/softpipe/sp_flush.c b/src/gallium/drivers/softpipe/sp_flush.c
index 508fe8f764..5024fc8a81 100644
--- a/src/gallium/drivers/softpipe/sp_flush.c
+++ b/src/gallium/drivers/softpipe/sp_flush.c
@@ -104,3 +104,71 @@ softpipe_flush( struct pipe_context *pipe,
*fence = NULL;
}
+
+/**
+ * Flush context if necessary.
+ *
+ * Returns FALSE if it would have block, but do_not_block was set, TRUE
+ * otherwise.
+ *
+ * TODO: move this logic to an auxiliary library?
+ */
+boolean
+softpipe_flush_resource(struct pipe_context *pipe,
+ struct pipe_resource *texture,
+ unsigned face,
+ unsigned level,
+ unsigned flush_flags,
+ boolean read_only,
+ boolean cpu_access,
+ boolean do_not_block)
+{
+ unsigned referenced;
+
+ referenced = pipe->is_resource_referenced(pipe, texture, face, level);
+
+ if ((referenced & PIPE_REFERENCED_FOR_WRITE) ||
+ ((referenced & PIPE_REFERENCED_FOR_READ) && !read_only)) {
+
+ /*
+ * TODO: The semantics of these flush flags are too obtuse. They should
+ * disappear and the pipe driver should just ensure that all visible
+ * side-effects happen when they need to happen.
+ */
+ if (referenced & PIPE_REFERENCED_FOR_WRITE)
+ flush_flags |= PIPE_FLUSH_RENDER_CACHE;
+
+ if (referenced & PIPE_REFERENCED_FOR_READ)
+ flush_flags |= PIPE_FLUSH_TEXTURE_CACHE;
+
+ if (cpu_access) {
+ /*
+ * Flush and wait.
+ */
+
+ struct pipe_fence_handle *fence = NULL;
+
+ if (do_not_block)
+ return FALSE;
+
+ pipe->flush(pipe, flush_flags, &fence);
+
+ if (fence) {
+ /*
+ * This is for illustrative purposes only, as softpipe does not
+ * have fences.
+ */
+ pipe->screen->fence_finish(pipe->screen, fence, 0);
+ pipe->screen->fence_reference(pipe->screen, &fence, NULL);
+ }
+ } else {
+ /*
+ * Just flush.
+ */
+
+ pipe->flush(pipe, flush_flags, NULL);
+ }
+ }
+
+ return TRUE;
+}
diff --git a/src/gallium/drivers/softpipe/sp_flush.h b/src/gallium/drivers/softpipe/sp_flush.h
index 68d9b5fa83..cb97482a71 100644
--- a/src/gallium/drivers/softpipe/sp_flush.h
+++ b/src/gallium/drivers/softpipe/sp_flush.h
@@ -28,10 +28,23 @@
#ifndef SP_FLUSH_H
#define SP_FLUSH_H
+#include "pipe/p_compiler.h"
+
struct pipe_context;
struct pipe_fence_handle;
-void softpipe_flush(struct pipe_context *pipe, unsigned flags,
- struct pipe_fence_handle **fence);
+void
+softpipe_flush(struct pipe_context *pipe, unsigned flags,
+ struct pipe_fence_handle **fence);
+
+boolean
+softpipe_flush_resource(struct pipe_context *pipe,
+ struct pipe_resource *texture,
+ unsigned face,
+ unsigned level,
+ unsigned flush_flags,
+ boolean read_only,
+ boolean cpu_access,
+ boolean do_not_block);
#endif
diff --git a/src/gallium/drivers/softpipe/sp_screen.c b/src/gallium/drivers/softpipe/sp_screen.c
index 7b1e058ac8..8bb0294238 100644
--- a/src/gallium/drivers/softpipe/sp_screen.c
+++ b/src/gallium/drivers/softpipe/sp_screen.c
@@ -27,6 +27,7 @@
#include "util/u_memory.h"
+#include "util/u_format.h"
#include "util/u_format_s3tc.h"
#include "pipe/p_defines.h"
#include "pipe/p_screen.h"
@@ -70,6 +71,8 @@ softpipe_get_param(struct pipe_screen *screen, int param)
return 1;
case PIPE_CAP_GLSL:
return 1;
+ case PIPE_CAP_SM3:
+ return 1;
case PIPE_CAP_ANISOTROPIC_FILTER:
return 0;
case PIPE_CAP_POINT_SPRITE:
@@ -144,43 +147,77 @@ static boolean
softpipe_is_format_supported( struct pipe_screen *screen,
enum pipe_format format,
enum pipe_texture_target target,
- unsigned tex_usage,
+ unsigned bind,
unsigned geom_flags )
{
struct sw_winsys *winsys = softpipe_screen(screen)->winsys;
+ const struct util_format_description *format_desc;
assert(target == PIPE_TEXTURE_1D ||
target == PIPE_TEXTURE_2D ||
target == PIPE_TEXTURE_3D ||
target == PIPE_TEXTURE_CUBE);
- switch(format) {
- case PIPE_FORMAT_YUYV:
- case PIPE_FORMAT_UYVY:
+ format_desc = util_format_description(format);
+ if (!format_desc)
return FALSE;
- case PIPE_FORMAT_DXT1_RGB:
- case PIPE_FORMAT_DXT1_RGBA:
- case PIPE_FORMAT_DXT3_RGBA:
- case PIPE_FORMAT_DXT5_RGBA:
- return util_format_s3tc_enabled;
+ if (bind & (PIPE_BIND_DISPLAY_TARGET |
+ PIPE_BIND_SCANOUT |
+ PIPE_BIND_SHARED)) {
+ if(!winsys->is_displaytarget_format_supported(winsys, bind, format))
+ return FALSE;
+ }
- case PIPE_FORMAT_Z32_FLOAT:
- case PIPE_FORMAT_NONE:
- return FALSE;
+ if (bind & PIPE_BIND_RENDER_TARGET) {
+ if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS)
+ return FALSE;
- default:
- break;
+ /*
+ * Although possible, it is unnatural to render into compressed or YUV
+ * surfaces. So disable these here to avoid going into weird paths
+ * inside the state trackers.
+ */
+ if (format_desc->block.width != 1 ||
+ format_desc->block.height != 1)
+ return FALSE;
+
+ /*
+ * TODO: Unfortunately we cannot render into anything more than 32 bits
+ * because we encode color clear values into a 32bit word.
+ */
+ if (format_desc->block.bits > 32)
+ return FALSE;
}
- if(tex_usage & (PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_SCANOUT |
- PIPE_BIND_SHARED)) {
- if(!winsys->is_displaytarget_format_supported(winsys, tex_usage, format))
+ if (bind & PIPE_BIND_DEPTH_STENCIL) {
+ if (format_desc->colorspace != UTIL_FORMAT_COLORSPACE_ZS)
return FALSE;
+
+ /*
+ * TODO: Unfortunately we cannot render into anything more than 32 bits
+ * because we encode depth and stencil clear values into a 32bit word.
+ */
+ if (format_desc->block.bits > 32)
+ return FALSE;
+
+ /*
+ * TODO: eliminate this restriction
+ */
+ if (format == PIPE_FORMAT_Z32_FLOAT)
+ return FALSE;
+ }
+
+ /*
+ * All other operations (sampling, transfer, etc).
+ */
+
+ if (format_desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
+ return util_format_s3tc_enabled;
}
- /* XXX: this is often a lie. Pull in logic from llvmpipe to fix.
+ /*
+ * Everything else should be supported by u_format.
*/
return TRUE;
}
diff --git a/src/gallium/drivers/softpipe/sp_tex_tile_cache.c b/src/gallium/drivers/softpipe/sp_tex_tile_cache.c
index c79f5fb05a..fbce9e042b 100644
--- a/src/gallium/drivers/softpipe/sp_tex_tile_cache.c
+++ b/src/gallium/drivers/softpipe/sp_tex_tile_cache.c
@@ -248,7 +248,8 @@ sp_find_cached_tile_tex(struct softpipe_tex_tile_cache *tc,
addr.bits.face,
addr.bits.level,
addr.bits.z,
- PIPE_TRANSFER_READ, 0, 0,
+ PIPE_TRANSFER_READ | PIPE_TRANSFER_UNSYNCHRONIZED,
+ 0, 0,
u_minify(tc->texture->width0, addr.bits.level),
u_minify(tc->texture->height0, addr.bits.level));
diff --git a/src/gallium/drivers/softpipe/sp_texture.c b/src/gallium/drivers/softpipe/sp_texture.c
index 167b6b1161..7aa85559b2 100644
--- a/src/gallium/drivers/softpipe/sp_texture.c
+++ b/src/gallium/drivers/softpipe/sp_texture.c
@@ -39,6 +39,7 @@
#include "util/u_transfer.h"
#include "sp_context.h"
+#include "sp_flush.h"
#include "sp_texture.h"
#include "sp_screen.h"
@@ -214,6 +215,35 @@ softpipe_resource_get_handle(struct pipe_screen *screen,
/**
+ * Helper function to compute offset (in bytes) for a particular
+ * texture level/face/slice from the start of the buffer.
+ */
+static unsigned
+sp_get_tex_image_offset(const struct softpipe_resource *spr,
+ unsigned level, unsigned face, unsigned zslice)
+{
+ const unsigned hgt = u_minify(spr->base.height0, level);
+ const unsigned nblocksy = util_format_get_nblocksy(spr->base.format, hgt);
+ unsigned offset = spr->level_offset[level];
+
+ if (spr->base.target == PIPE_TEXTURE_CUBE) {
+ assert(zslice == 0);
+ offset += face * nblocksy * spr->stride[level];
+ }
+ else if (spr->base.target == PIPE_TEXTURE_3D) {
+ assert(face == 0);
+ offset += zslice * nblocksy * spr->stride[level];
+ }
+ else {
+ assert(face == 0);
+ assert(zslice == 0);
+ }
+
+ return offset;
+}
+
+
+/**
* Get a pipe_surface "view" into a texture resource.
*/
static struct pipe_surface *
@@ -234,25 +264,12 @@ softpipe_get_tex_surface(struct pipe_screen *screen,
ps->format = pt->format;
ps->width = u_minify(pt->width0, level);
ps->height = u_minify(pt->height0, level);
- ps->offset = spr->level_offset[level];
+ ps->offset = sp_get_tex_image_offset(spr, level, face, zslice);
ps->usage = usage;
ps->face = face;
ps->level = level;
ps->zslice = zslice;
-
- if (pt->target == PIPE_TEXTURE_CUBE) {
- ps->offset += face * util_format_get_nblocksy(pt->format, u_minify(pt->height0, level)) *
- spr->stride[level];
- }
- else if (pt->target == PIPE_TEXTURE_3D) {
- ps->offset += zslice * util_format_get_nblocksy(pt->format, u_minify(pt->height0, level)) *
- spr->stride[level];
- }
- else {
- assert(face == 0);
- assert(zslice == 0);
- }
}
return ps;
}
@@ -290,8 +307,8 @@ softpipe_get_transfer(struct pipe_context *pipe,
unsigned usage,
const struct pipe_box *box)
{
- struct softpipe_resource *sprex = softpipe_resource(resource);
- struct softpipe_transfer *spr;
+ struct softpipe_resource *spr = softpipe_resource(resource);
+ struct softpipe_transfer *spt;
assert(resource);
assert(sr.level <= resource->last_level);
@@ -301,33 +318,41 @@ softpipe_get_transfer(struct pipe_context *pipe,
assert(box->y + box->height <= u_minify(resource->height0, sr.level));
assert(box->z + box->depth <= u_minify(resource->depth0, sr.level));
- spr = CALLOC_STRUCT(softpipe_transfer);
- if (spr) {
- struct pipe_transfer *pt = &spr->base;
+ /*
+ * Transfers, like other pipe operations, must happen in order, so flush the
+ * context if necessary.
+ */
+ if (!(usage & PIPE_TRANSFER_UNSYNCHRONIZED)) {
+ boolean read_only = !(usage & PIPE_TRANSFER_WRITE);
+ boolean do_not_block = !!(usage & PIPE_TRANSFER_DONTBLOCK);
+ if (!softpipe_flush_resource(pipe, resource,
+ sr.face, sr.level,
+ 0, /* flush_flags */
+ read_only,
+ TRUE, /* cpu_access */
+ do_not_block)) {
+ /*
+ * It would have blocked, but state tracker requested no to.
+ */
+ assert(do_not_block);
+ return NULL;
+ }
+ }
+
+ spt = CALLOC_STRUCT(softpipe_transfer);
+ if (spt) {
+ struct pipe_transfer *pt = &spt->base;
enum pipe_format format = resource->format;
- int nblocksy = util_format_get_nblocksy(resource->format,
- u_minify(resource->height0, sr.level));
pipe_resource_reference(&pt->resource, resource);
pt->sr = sr;
pt->usage = usage;
pt->box = *box;
- pt->stride = sprex->stride[sr.level];
+ pt->stride = spr->stride[sr.level];
- spr->offset = sprex->level_offset[sr.level];
-
- if (resource->target == PIPE_TEXTURE_CUBE) {
- spr->offset += sr.face * nblocksy * pt->stride;
- }
- else if (resource->target == PIPE_TEXTURE_3D) {
- spr->offset += box->z * nblocksy * pt->stride;
- }
- else {
- assert(sr.face == 0);
- assert(box->z == 0);
- }
-
- spr->offset +=
- box->y / util_format_get_blockheight(format) * spr->base.stride +
+ spt->offset = sp_get_tex_image_offset(spr, sr.level, sr.face, box->z);
+
+ spt->offset +=
+ box->y / util_format_get_blockheight(format) * spt->base.stride +
box->x / util_format_get_blockwidth(format) * util_format_get_blocksize(format);
return pt;
@@ -356,26 +381,24 @@ static void *
softpipe_transfer_map(struct pipe_context *pipe,
struct pipe_transfer *transfer)
{
- struct softpipe_transfer *sp_transfer = softpipe_transfer(transfer);
- struct softpipe_resource *sp_resource = softpipe_resource(transfer->resource);
+ struct softpipe_transfer *spt = softpipe_transfer(transfer);
+ struct softpipe_resource *spr = softpipe_resource(transfer->resource);
struct sw_winsys *winsys = softpipe_screen(pipe->screen)->winsys;
uint8_t *map;
/* resources backed by display target treated specially:
*/
- if (sp_resource->dt) {
- map = winsys->displaytarget_map(winsys,
- sp_resource->dt,
- transfer->usage);
+ if (spr->dt) {
+ map = winsys->displaytarget_map(winsys, spr->dt, transfer->usage);
}
else {
- map = sp_resource->data;
+ map = spr->data;
}
if (map == NULL)
return NULL;
else
- return map + sp_transfer->offset;
+ return map + spt->offset;
}
@@ -412,26 +435,25 @@ softpipe_user_buffer_create(struct pipe_screen *screen,
unsigned bytes,
unsigned bind_flags)
{
- struct softpipe_resource *buffer;
+ struct softpipe_resource *spr;
- buffer = CALLOC_STRUCT(softpipe_resource);
- if(!buffer)
+ spr = CALLOC_STRUCT(softpipe_resource);
+ if (!spr)
return NULL;
-
- pipe_reference_init(&buffer->base.reference, 1);
- buffer->base.screen = screen;
- buffer->base.format = PIPE_FORMAT_R8_UNORM; /* ?? */
- buffer->base.bind = bind_flags;
- buffer->base.usage = PIPE_USAGE_IMMUTABLE;
- buffer->base.flags = 0;
- buffer->base.width0 = bytes;
- buffer->base.height0 = 1;
- buffer->base.depth0 = 1;
- buffer->userBuffer = TRUE;
- buffer->data = ptr;
-
- return &buffer->base;
+ pipe_reference_init(&spr->base.reference, 1);
+ spr->base.screen = screen;
+ spr->base.format = PIPE_FORMAT_R8_UNORM; /* ?? */
+ spr->base.bind = bind_flags;
+ spr->base.usage = PIPE_USAGE_IMMUTABLE;
+ spr->base.flags = 0;
+ spr->base.width0 = bytes;
+ spr->base.height0 = 1;
+ spr->base.depth0 = 1;
+ spr->userBuffer = TRUE;
+ spr->data = ptr;
+
+ return &spr->base;
}
diff --git a/src/gallium/drivers/softpipe/sp_tile_cache.c b/src/gallium/drivers/softpipe/sp_tile_cache.c
index d996c2a342..f4db6f6ef0 100644
--- a/src/gallium/drivers/softpipe/sp_tile_cache.c
+++ b/src/gallium/drivers/softpipe/sp_tile_cache.c
@@ -103,7 +103,7 @@ sp_create_tile_cache( struct pipe_context *pipe )
* However, it breaks clearing in other situations (such as in
* progs/tests/drawbuffers, see bug 24402).
*/
-#if 0 && TILE_CLEAR_OPTIMIZATION
+#if 0
/* set flags to indicate all the tiles are cleared */
memset(tc->clear_flags, 255, sizeof(tc->clear_flags));
#endif
@@ -155,7 +155,8 @@ sp_tile_cache_set_surface(struct softpipe_tile_cache *tc,
if (ps) {
tc->transfer = pipe_get_transfer(pipe, ps->texture, ps->face,
ps->level, ps->zslice,
- PIPE_TRANSFER_READ_WRITE,
+ PIPE_TRANSFER_READ_WRITE |
+ PIPE_TRANSFER_UNSYNCHRONIZED,
0, 0, ps->width, ps->height);
tc->depth_stencil = (ps->format == PIPE_FORMAT_Z24_UNORM_S8_USCALED ||
@@ -344,9 +345,7 @@ sp_flush_tile_cache(struct softpipe_tile_cache *tc)
}
}
-#if TILE_CLEAR_OPTIMIZATION
sp_tile_cache_flush_clear(tc);
-#endif
}
#if 0
@@ -448,13 +447,8 @@ sp_tile_cache_clear(struct softpipe_tile_cache *tc, const float *rgba,
tc->clear_val = clearValue;
-#if TILE_CLEAR_OPTIMIZATION
/* set flags to indicate all the tiles are cleared */
memset(tc->clear_flags, 255, sizeof(tc->clear_flags));
-#else
- /* disable the optimization */
- memset(tc->clear_flags, 0, sizeof(tc->clear_flags));
-#endif
for (pos = 0; pos < NUM_ENTRIES; pos++) {
struct softpipe_cached_tile *tile = tc->entries + pos;
diff --git a/src/gallium/drivers/softpipe/sp_tile_cache.h b/src/gallium/drivers/softpipe/sp_tile_cache.h
index 753d8c0daa..e03d53eb24 100644
--- a/src/gallium/drivers/softpipe/sp_tile_cache.h
+++ b/src/gallium/drivers/softpipe/sp_tile_cache.h
@@ -28,8 +28,6 @@
#ifndef SP_TILE_CACHE_H
#define SP_TILE_CACHE_H
-#define TILE_CLEAR_OPTIMIZATION 1
-
#include "pipe/p_compiler.h"
diff --git a/src/gallium/drivers/svga/svga_draw_arrays.c b/src/gallium/drivers/svga/svga_draw_arrays.c
index 005996d05d..da33fae62f 100644
--- a/src/gallium/drivers/svga/svga_draw_arrays.c
+++ b/src/gallium/drivers/svga/svga_draw_arrays.c
@@ -277,12 +277,13 @@ svga_hwtnl_draw_arrays( struct svga_hwtnl *hwtnl,
ret = svga_hwtnl_simple_draw_range_elements( hwtnl,
gen_buf,
gen_size,
+ start,
0,
count - 1,
gen_prim,
0,
- gen_nr,
- start );
+ gen_nr );
+
if (ret)
goto done;
diff --git a/src/gallium/drivers/svga/svga_resource.c b/src/gallium/drivers/svga/svga_resource.c
index 15258c1966..ba630582e5 100644
--- a/src/gallium/drivers/svga/svga_resource.c
+++ b/src/gallium/drivers/svga/svga_resource.c
@@ -14,7 +14,7 @@ svga_resource_create(struct pipe_screen *screen,
if (template->target == PIPE_BUFFER)
return svga_buffer_create(screen, template);
else
- return svga_resource_create(screen, template);
+ return svga_texture_create(screen, template);
}
@@ -26,7 +26,7 @@ svga_resource_from_handle(struct pipe_screen * screen,
if (template->target == PIPE_BUFFER)
return NULL;
else
- return svga_resource_from_handle(screen, template, whandle);
+ return svga_texture_from_handle(screen, template, whandle);
}
diff --git a/src/gallium/drivers/svga/svga_screen.c b/src/gallium/drivers/svga/svga_screen.c
index aeda3dcad5..9fc613da74 100644
--- a/src/gallium/drivers/svga/svga_screen.c
+++ b/src/gallium/drivers/svga/svga_screen.c
@@ -397,6 +397,7 @@ svga_screen_create(struct svga_winsys_screen *sws)
screen->fence_finish = svga_fence_finish;
svgascreen->sws = sws;
+ svga_screen_init_surface_functions(svgascreen);
svga_init_screen_resource_functions(svgascreen);
svgascreen->use_ps30 =
diff --git a/src/gallium/drivers/svga/svga_state_need_swtnl.c b/src/gallium/drivers/svga/svga_state_need_swtnl.c
index dfaab53aef..d34d68f535 100644
--- a/src/gallium/drivers/svga/svga_state_need_swtnl.c
+++ b/src/gallium/drivers/svga/svga_state_need_swtnl.c
@@ -43,7 +43,7 @@ svga_translate_vertex_format(enum pipe_format format)
case PIPE_FORMAT_R32G32_FLOAT: return SVGA3D_DECLTYPE_FLOAT2;
case PIPE_FORMAT_R32G32B32_FLOAT: return SVGA3D_DECLTYPE_FLOAT3;
case PIPE_FORMAT_R32G32B32A32_FLOAT: return SVGA3D_DECLTYPE_FLOAT4;
- case PIPE_FORMAT_A8R8G8B8_UNORM: return SVGA3D_DECLTYPE_D3DCOLOR;
+ case PIPE_FORMAT_B8G8R8A8_UNORM: return SVGA3D_DECLTYPE_D3DCOLOR;
case PIPE_FORMAT_R8G8B8A8_USCALED: return SVGA3D_DECLTYPE_UBYTE4;
case PIPE_FORMAT_R16G16_SSCALED: return SVGA3D_DECLTYPE_SHORT2;
case PIPE_FORMAT_R16G16B16A16_SSCALED: return SVGA3D_DECLTYPE_SHORT4;
@@ -52,14 +52,10 @@ svga_translate_vertex_format(enum pipe_format format)
case PIPE_FORMAT_R16G16B16A16_SNORM: return SVGA3D_DECLTYPE_SHORT4N;
case PIPE_FORMAT_R16G16_UNORM: return SVGA3D_DECLTYPE_USHORT2N;
case PIPE_FORMAT_R16G16B16A16_UNORM: return SVGA3D_DECLTYPE_USHORT4N;
-
- /* These formats don't exist yet:
- *
- case PIPE_FORMAT_R10G10B10_USCALED: return SVGA3D_DECLTYPE_UDEC3;
- case PIPE_FORMAT_R10G10B10_SNORM: return SVGA3D_DECLTYPE_DEC3N;
+ case PIPE_FORMAT_R10G10B10X2_USCALED: return SVGA3D_DECLTYPE_UDEC3;
+ case PIPE_FORMAT_R10G10B10X2_SNORM: return SVGA3D_DECLTYPE_DEC3N;
case PIPE_FORMAT_R16G16_FLOAT: return SVGA3D_DECLTYPE_FLOAT16_2;
case PIPE_FORMAT_R16G16B16A16_FLOAT: return SVGA3D_DECLTYPE_FLOAT16_4;
- */
default:
/* There are many formats without hardware support. This case
diff --git a/src/gallium/drivers/svga/svga_state_vs.c b/src/gallium/drivers/svga/svga_state_vs.c
index a6215c68cb..5133c70593 100644
--- a/src/gallium/drivers/svga/svga_state_vs.c
+++ b/src/gallium/drivers/svga/svga_state_vs.c
@@ -229,7 +229,7 @@ static int update_zero_stride( struct svga_context *svga,
translate->set_buffer(translate, vel->vertex_buffer_index,
mapped_buffer,
- vbuffer->stride);
+ vbuffer->stride, vbuffer->max_index);
translate->run(translate, 0, 1, 0,
svga->curr.zero_stride_constants);
diff --git a/src/gallium/drivers/svga/svga_tgsi_insn.c b/src/gallium/drivers/svga/svga_tgsi_insn.c
index 3d4f56a67b..7d7024c4a7 100644
--- a/src/gallium/drivers/svga/svga_tgsi_insn.c
+++ b/src/gallium/drivers/svga/svga_tgsi_insn.c
@@ -49,9 +49,7 @@ translate_opcode(
case TGSI_OPCODE_DP2A: return SVGA3DOP_DP2ADD;
case TGSI_OPCODE_DP3: return SVGA3DOP_DP3;
case TGSI_OPCODE_DP4: return SVGA3DOP_DP4;
- case TGSI_OPCODE_ENDFOR: return SVGA3DOP_ENDLOOP;
case TGSI_OPCODE_FRC: return SVGA3DOP_FRC;
- case TGSI_OPCODE_BGNFOR: return SVGA3DOP_LOOP;
case TGSI_OPCODE_MAD: return SVGA3DOP_MAD;
case TGSI_OPCODE_MAX: return SVGA3DOP_MAX;
case TGSI_OPCODE_MIN: return SVGA3DOP_MIN;
@@ -2686,7 +2684,6 @@ needs_to_create_zero( struct svga_shader_emitter *emit )
if (emit->info.opcode_count[TGSI_OPCODE_IF] >= 1 ||
emit->info.opcode_count[TGSI_OPCODE_BGNLOOP] >= 1 ||
- emit->info.opcode_count[TGSI_OPCODE_BGNFOR] >= 1 ||
emit->info.opcode_count[TGSI_OPCODE_DDX] >= 1 ||
emit->info.opcode_count[TGSI_OPCODE_DDY] >= 1 ||
emit->info.opcode_count[TGSI_OPCODE_SGE] >= 1 ||
diff --git a/src/gallium/drivers/trace/tr_context.c b/src/gallium/drivers/trace/tr_context.c
index 8216c06260..71ba1e909d 100644
--- a/src/gallium/drivers/trace/tr_context.c
+++ b/src/gallium/drivers/trace/tr_context.c
@@ -1142,12 +1142,12 @@ trace_context_set_vertex_buffers(struct pipe_context *_pipe,
trace_dump_arg_end();
if (num_buffers) {
- struct pipe_vertex_buffer *_buffers = malloc(num_buffers * sizeof(*_buffers));
+ struct pipe_vertex_buffer *_buffers = MALLOC(num_buffers * sizeof(*_buffers));
memcpy(_buffers, buffers, num_buffers * sizeof(*_buffers));
for (i = 0; i < num_buffers; i++)
_buffers[i].buffer = trace_resource_unwrap(tr_ctx, buffers[i].buffer);
pipe->set_vertex_buffers(pipe, num_buffers, _buffers);
- free(_buffers);
+ FREE(_buffers);
} else {
pipe->set_vertex_buffers(pipe, num_buffers, NULL);
}
diff --git a/src/gallium/drivers/trace/tr_drm.c b/src/gallium/drivers/trace/tr_drm.c
index eaa47df406..0dc8cca264 100644
--- a/src/gallium/drivers/trace/tr_drm.c
+++ b/src/gallium/drivers/trace/tr_drm.c
@@ -73,7 +73,7 @@ trace_drm_destroy(struct drm_api *_api)
if (api->destroy)
api->destroy(api);
- free(tr_api);
+ FREE(tr_api);
}
struct drm_api *
diff --git a/src/gallium/include/pipe/p_defines.h b/src/gallium/include/pipe/p_defines.h
index 0a4bd584ae..1aa54f1423 100644
--- a/src/gallium/include/pipe/p_defines.h
+++ b/src/gallium/include/pipe/p_defines.h
@@ -269,7 +269,7 @@ enum pipe_transfer_usage {
* - pipe_context::transfer_flush_region
* - OpenGL's ARB_map_buffer_range extension, MAP_FLUSH_EXPLICIT_BIT flag.
*/
- PIPE_TRANSFER_FLUSH_EXPLICIT = (1 << 11),
+ PIPE_TRANSFER_FLUSH_EXPLICIT = (1 << 11)
};
@@ -291,10 +291,10 @@ enum pipe_transfer_usage {
#define PIPE_BIND_TRANSFER_READ (1 << 10) /* get_transfer */
#define PIPE_BIND_CUSTOM (1 << 16) /* state-tracker/winsys usages */
-/* The first two flags were previously part of the amorphous
+/* The first two flags above were previously part of the amorphous
* TEXTURE_USAGE, most of which are now descriptions of the ways a
- * particular texture can be bound to the gallium pipeline. These two
- * do not fit within that and probably need to be migrated to some
+ * particular texture can be bound to the gallium pipeline. The two flags
+ * below do not fit within that and probably need to be migrated to some
* other place.
*
* It seems like scanout is used by the Xorg state tracker to ask for
@@ -304,7 +304,7 @@ enum pipe_transfer_usage {
*
* The shared flag is quite underspecified, but certainly isn't a
* binding flag - it seems more like a message to the winsys to create
- * a shareable allocation. Could it mean that this texture is a valid argument for
+ * a shareable allocation.
*/
#define PIPE_BIND_SCANOUT (1 << 14) /* */
#define PIPE_BIND_SHARED (1 << 15) /* get_texture_handle ??? */
diff --git a/src/gallium/include/pipe/p_screen.h b/src/gallium/include/pipe/p_screen.h
index 06ab4a848a..beff1ae8a9 100644
--- a/src/gallium/include/pipe/p_screen.h
+++ b/src/gallium/include/pipe/p_screen.h
@@ -93,13 +93,13 @@ struct pipe_screen {
/**
* Check if the given pipe_format is supported as a texture or
* drawing surface.
- * \param tex_usage bitmask of PIPE_BIND_*
+ * \param bindings bitmask of PIPE_BIND_*
* \param geom_flags bitmask of PIPE_TEXTURE_GEOM_*
*/
boolean (*is_format_supported)( struct pipe_screen *,
enum pipe_format format,
enum pipe_texture_target target,
- unsigned tex_usage,
+ unsigned bindings,
unsigned geom_flags );
/**
diff --git a/src/gallium/include/pipe/p_shader_tokens.h b/src/gallium/include/pipe/p_shader_tokens.h
index c5c480f1f0..e21aaacc18 100644
--- a/src/gallium/include/pipe/p_shader_tokens.h
+++ b/src/gallium/include/pipe/p_shader_tokens.h
@@ -276,12 +276,10 @@ struct tgsi_property_data {
#define TGSI_OPCODE_TXL 72
#define TGSI_OPCODE_BRK 73
#define TGSI_OPCODE_IF 74
-#define TGSI_OPCODE_BGNFOR 75
-#define TGSI_OPCODE_REP 76
+ /* gap */
#define TGSI_OPCODE_ELSE 77
#define TGSI_OPCODE_ENDIF 78
-#define TGSI_OPCODE_ENDFOR 79
-#define TGSI_OPCODE_ENDREP 80
+ /* gap */
#define TGSI_OPCODE_PUSHA 81
#define TGSI_OPCODE_POPA 82
#define TGSI_OPCODE_CEIL 83
diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index 8897ff7c25..002d1c6b84 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -43,14 +43,6 @@
*/
/**
- * The entry points of the state trackers.
- */
-#define ST_MODULE_OPENGL_SYMBOL "st_module_OpenGL"
-#define ST_MODULE_OPENGL_ES1_SYMBOL "st_module_OpenGL_ES1"
-#define ST_MODULE_OPENGL_ES2_SYMBOL "st_module_OpenGL_ES2"
-#define ST_MODULE_OPENVG_SYMBOL "st_module_OpenVG"
-
-/**
* The supported rendering API of a state tracker.
*/
enum st_api_type {
@@ -379,17 +371,6 @@ struct st_api
};
/**
- * Represent a state tracker.
- *
- * This is the entry point of a state tracker.
- */
-struct st_module
-{
- enum st_api_type api;
- struct st_api *(*create_api)(void);
-};
-
-/**
* Return true if the visual has the specified buffers.
*/
static INLINE boolean
@@ -399,9 +380,17 @@ st_visual_have_buffers(const struct st_visual *visual, unsigned mask)
}
/* these symbols may need to be dynamically lookup up */
-extern PUBLIC const struct st_module st_module_OpenGL;
-extern PUBLIC const struct st_module st_module_OpenGL_ES1;
-extern PUBLIC const struct st_module st_module_OpenGL_ES2;
-extern PUBLIC const struct st_module st_module_OpenVG;
+extern PUBLIC struct st_api * st_api_create_OpenGL(void);
+extern PUBLIC struct st_api * st_api_create_OpenGL_ES1(void);
+extern PUBLIC struct st_api * st_api_create_OpenGL_ES2(void);
+extern PUBLIC struct st_api * st_api_create_OpenVG(void);
+
+/**
+ * The entry points of the state trackers.
+ */
+#define ST_CREATE_OPENGL_SYMBOL "st_api_create_OpenGL"
+#define ST_CREATE_OPENGL_ES1_SYMBOL "st_api_create_OpenGL_ES1"
+#define ST_CREATE_OPENGL_ES2_SYMBOL "st_api_create_OpenGL_ES2"
+#define ST_CREATE_OPENVG_SYMBOL "st_api_create_OpenVG"
#endif /* _ST_API_H_ */
diff --git a/src/gallium/state_trackers/dri/common/dri1_helper.c b/src/gallium/state_trackers/dri/common/dri1_helper.c
index b0dd974a96..f641b41ff8 100644
--- a/src/gallium/state_trackers/dri/common/dri1_helper.c
+++ b/src/gallium/state_trackers/dri/common/dri1_helper.c
@@ -42,7 +42,7 @@
struct pipe_fence_handle *
dri1_swap_fences_pop_front(struct dri_drawable *draw)
{
- struct pipe_screen *screen = dri_screen(draw->sPriv)->pipe_screen;
+ struct pipe_screen *screen = dri_screen(draw->sPriv)->base.screen;
struct pipe_fence_handle *fence = NULL;
if (draw->cur_fences >= draw->desired_fences) {
@@ -58,7 +58,7 @@ void
dri1_swap_fences_push_back(struct dri_drawable *draw,
struct pipe_fence_handle *fence)
{
- struct pipe_screen *screen = dri_screen(draw->sPriv)->pipe_screen;
+ struct pipe_screen *screen = dri_screen(draw->sPriv)->base.screen;
if (!fence)
return;
@@ -74,7 +74,7 @@ dri1_swap_fences_push_back(struct dri_drawable *draw,
void
dri1_swap_fences_clear(struct dri_drawable *drawable)
{
- struct pipe_screen *screen = dri_screen(drawable->sPriv)->pipe_screen;
+ struct pipe_screen *screen = dri_screen(drawable->sPriv)->base.screen;
struct pipe_fence_handle *fence;
while (drawable->cur_fences) {
@@ -86,7 +86,7 @@ dri1_swap_fences_clear(struct dri_drawable *drawable)
struct pipe_surface *
dri1_get_pipe_surface(struct dri_drawable *drawable, struct pipe_resource *ptex)
{
- struct pipe_screen *pipe_screen = dri_screen(drawable->sPriv)->pipe_screen;
+ struct pipe_screen *pipe_screen = dri_screen(drawable->sPriv)->base.screen;
struct pipe_surface *psurf = drawable->dri1_surface;
if (!psurf || psurf->texture != ptex) {
@@ -114,7 +114,7 @@ dri1_get_pipe_context(struct dri_screen *screen)
if (!pipe) {
screen->dri1_pipe =
- screen->pipe_screen->context_create(screen->pipe_screen, NULL);
+ screen->base.screen->context_create(screen->base.screen, NULL);
pipe = screen->dri1_pipe;
}
diff --git a/src/gallium/state_trackers/dri/common/dri_context.c b/src/gallium/state_trackers/dri/common/dri_context.c
index f14f4130bf..a808d2d9dd 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.c
+++ b/src/gallium/state_trackers/dri/common/dri_context.c
@@ -34,7 +34,6 @@
#include "dri_screen.h"
#include "dri_drawable.h"
#include "dri_context.h"
-#include "dri_st_api.h"
#include "pipe/p_context.h"
#include "state_tracker/st_context.h"
@@ -53,9 +52,9 @@ GLboolean
dri_create_context(const __GLcontextModes * visual,
__DRIcontext * cPriv, void *sharedContextPrivate)
{
- struct st_api *stapi = dri_get_st_api();
__DRIscreen *sPriv = cPriv->driScreenPriv;
struct dri_screen *screen = dri_screen(sPriv);
+ struct st_api *stapi = screen->st_api;
struct dri_context *ctx = NULL;
struct st_context_iface *st_share = NULL;
struct st_visual stvis;
@@ -77,7 +76,7 @@ dri_create_context(const __GLcontextModes * visual,
&screen->optionCache, sPriv->myNum, "dri");
dri_fill_st_visual(&stvis, screen, visual);
- ctx->st = stapi->create_context(stapi, screen->smapi, &stvis, st_share);
+ ctx->st = stapi->create_context(stapi, &screen->base, &stvis, st_share);
if (ctx->st == NULL)
goto fail;
ctx->st->st_manager_private = (void *) ctx;
@@ -119,16 +118,15 @@ dri_destroy_context(__DRIcontext * cPriv)
GLboolean
dri_unbind_context(__DRIcontext * cPriv)
{
- struct st_api *stapi = dri_get_st_api();
-
- if (cPriv) {
- struct dri_context *ctx = dri_context(cPriv);
+ /* dri_util.c ensures cPriv is not null */
+ struct dri_screen *screen = dri_screen(cPriv->driScreenPriv);
+ struct dri_context *ctx = dri_context(cPriv);
+ struct st_api *stapi = screen->st_api;
- if (--ctx->bind_count == 0) {
- if (ctx->st == stapi->get_current(stapi)) {
- ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
- stapi->make_current(stapi, NULL, NULL, NULL);
- }
+ if (--ctx->bind_count == 0) {
+ if (ctx->st == stapi->get_current(stapi)) {
+ ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+ stapi->make_current(stapi, NULL, NULL, NULL);
}
}
@@ -140,42 +138,38 @@ dri_make_current(__DRIcontext * cPriv,
__DRIdrawable * driDrawPriv,
__DRIdrawable * driReadPriv)
{
- struct st_api *stapi = dri_get_st_api();
-
- if (cPriv) {
- struct dri_context *ctx = dri_context(cPriv);
- struct dri_drawable *draw = dri_drawable(driDrawPriv);
- struct dri_drawable *read = dri_drawable(driReadPriv);
- struct st_context_iface *old_st;
+ /* dri_util.c ensures cPriv is not null */
+ struct dri_screen *screen = dri_screen(cPriv->driScreenPriv);
+ struct dri_context *ctx = dri_context(cPriv);
+ struct st_api *stapi = screen->st_api;
+ struct dri_drawable *draw = dri_drawable(driDrawPriv);
+ struct dri_drawable *read = dri_drawable(driReadPriv);
+ struct st_context_iface *old_st = stapi->get_current(stapi);
- old_st = stapi->get_current(stapi);
- if (old_st && old_st != ctx->st)
- ctx->st->flush(old_st, PIPE_FLUSH_RENDER_CACHE, NULL);
+ if (old_st && old_st != ctx->st)
+ old_st->flush(old_st, PIPE_FLUSH_RENDER_CACHE, NULL);
- ++ctx->bind_count;
+ ++ctx->bind_count;
- if (ctx->dPriv != driDrawPriv) {
- ctx->dPriv = driDrawPriv;
- draw->texture_stamp = driDrawPriv->lastStamp - 1;
- }
- if (ctx->rPriv != driReadPriv) {
- ctx->rPriv = driReadPriv;
- read->texture_stamp = driReadPriv->lastStamp - 1;
- }
-
- stapi->make_current(stapi, ctx->st, draw->stfb, read->stfb);
+ if (ctx->dPriv != driDrawPriv) {
+ ctx->dPriv = driDrawPriv;
+ draw->texture_stamp = driDrawPriv->lastStamp - 1;
}
- else {
- stapi->make_current(stapi, NULL, NULL, NULL);
+ if (ctx->rPriv != driReadPriv) {
+ ctx->rPriv = driReadPriv;
+ read->texture_stamp = driReadPriv->lastStamp - 1;
}
+ stapi->make_current(stapi, ctx->st, &draw->base, &read->base);
+
return GL_TRUE;
}
struct dri_context *
-dri_get_current(void)
+dri_get_current(__DRIscreen *sPriv)
{
- struct st_api *stapi = dri_get_st_api();
+ struct dri_screen *screen = dri_screen(sPriv);
+ struct st_api *stapi = screen->st_api;
struct st_context_iface *st;
st = stapi->get_current(stapi);
diff --git a/src/gallium/state_trackers/dri/common/dri_context.h b/src/gallium/state_trackers/dri/common/dri_context.h
index 594618874a..9fe6b58101 100644
--- a/src/gallium/state_trackers/dri/common/dri_context.h
+++ b/src/gallium/state_trackers/dri/common/dri_context.h
@@ -80,7 +80,7 @@ dri_make_current(__DRIcontext * driContextPriv,
__DRIdrawable * driReadPriv);
struct dri_context *
-dri_get_current(void);
+dri_get_current(__DRIscreen * driScreenPriv);
boolean
dri_create_context(const __GLcontextModes * visual,
diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.c b/src/gallium/state_trackers/dri/common/dri_drawable.c
index 88c17e81bf..25892fc7a7 100644
--- a/src/gallium/state_trackers/dri/common/dri_drawable.c
+++ b/src/gallium/state_trackers/dri/common/dri_drawable.c
@@ -32,13 +32,82 @@
#include "dri_screen.h"
#include "dri_context.h"
#include "dri_drawable.h"
-#include "dri_st_api.h"
#include "dri1_helper.h"
#include "pipe/p_screen.h"
#include "util/u_format.h"
#include "util/u_memory.h"
+#include "util/u_inlines.h"
+
+static boolean
+dri_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
+ const enum st_attachment_type *statts,
+ unsigned count,
+ struct pipe_resource **out)
+{
+ struct dri_drawable *drawable =
+ (struct dri_drawable *) stfbi->st_manager_private;
+ struct dri_screen *screen = dri_screen(drawable->sPriv);
+ unsigned statt_mask, new_mask;
+ boolean new_stamp;
+ int i;
+
+ statt_mask = 0x0;
+ for (i = 0; i < count; i++)
+ statt_mask |= (1 << statts[i]);
+
+ /* record newly allocated textures */
+ new_mask = (statt_mask & ~drawable->texture_mask);
+
+ /*
+ * dPriv->pStamp is the server stamp. It should be accessed with a lock, at
+ * least for DRI1. dPriv->lastStamp is the client stamp. It has the value
+ * of the server stamp when last checked.
+ */
+ new_stamp = (drawable->texture_stamp != drawable->dPriv->lastStamp);
+
+ if (new_stamp || new_mask) {
+ if (new_stamp && screen->update_drawable_info)
+ screen->update_drawable_info(drawable);
+
+ screen->allocate_textures(drawable, statts, count);
+
+ /* add existing textures */
+ for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
+ if (drawable->textures[i])
+ statt_mask |= (1 << i);
+ }
+
+ drawable->texture_stamp = drawable->dPriv->lastStamp;
+ drawable->texture_mask = statt_mask;
+ }
+
+ if (!out)
+ return TRUE;
+
+ for (i = 0; i < count; i++) {
+ out[i] = NULL;
+ pipe_resource_reference(&out[i], drawable->textures[statts[i]]);
+ }
+
+ return TRUE;
+}
+
+static boolean
+dri_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi,
+ enum st_attachment_type statt)
+{
+ struct dri_drawable *drawable =
+ (struct dri_drawable *) stfbi->st_manager_private;
+ struct dri_screen *screen = dri_screen(drawable->sPriv);
+
+ /* XXX remove this and just set the correct one on the framebuffer */
+ screen->flush_frontbuffer(drawable, statt);
+
+ return TRUE;
+}
+
/**
* This is called when we need to set up GL rendering to a new X window.
*/
@@ -58,9 +127,12 @@ dri_create_buffer(__DRIscreen * sPriv,
goto fail;
dri_fill_st_visual(&drawable->stvis, screen, visual);
- drawable->stfb = dri_create_st_framebuffer(drawable);
- if (drawable->stfb == NULL)
- goto fail;
+
+ /* setup the st_framebuffer_iface */
+ drawable->base.visual = &drawable->stvis;
+ drawable->base.flush_front = dri_st_framebuffer_flush_front;
+ drawable->base.validate = dri_st_framebuffer_validate;
+ drawable->base.st_manager_private = (void *) drawable;
drawable->sPriv = sPriv;
drawable->dPriv = dPriv;
@@ -78,16 +150,75 @@ void
dri_destroy_buffer(__DRIdrawable * dPriv)
{
struct dri_drawable *drawable = dri_drawable(dPriv);
+ int i;
dri1_swap_fences_clear(drawable);
dri1_destroy_pipe_surface(drawable);
- dri_destroy_st_framebuffer(drawable->stfb);
+ for (i = 0; i < ST_ATTACHMENT_COUNT; i++)
+ pipe_resource_reference(&drawable->textures[i], NULL);
drawable->desired_fences = 0;
FREE(drawable);
}
+/**
+ * Validate the texture at an attachment. Allocate the texture if it does not
+ * exist.
+ */
+void
+dri_drawable_validate_att(struct dri_drawable *drawable,
+ enum st_attachment_type statt)
+{
+ enum st_attachment_type statts[ST_ATTACHMENT_COUNT];
+ unsigned i, count = 0;
+
+ /* check if buffer already exists */
+ if (drawable->texture_mask & (1 << statt))
+ return;
+
+ /* make sure DRI2 does not destroy existing buffers */
+ for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
+ if (drawable->texture_mask & (1 << i)) {
+ statts[count++] = i;
+ }
+ }
+ statts[count++] = statt;
+
+ drawable->texture_stamp = drawable->dPriv->lastStamp - 1;
+
+ /* this calles into the manager */
+ drawable->base.validate(&drawable->base, statts, count, NULL);
+}
+
+/**
+ * Get the format and binding of an attachment.
+ */
+void
+dri_drawable_get_format(struct dri_drawable *drawable,
+ enum st_attachment_type statt,
+ enum pipe_format *format,
+ unsigned *bind)
+{
+ switch (statt) {
+ case ST_ATTACHMENT_FRONT_LEFT:
+ case ST_ATTACHMENT_BACK_LEFT:
+ case ST_ATTACHMENT_FRONT_RIGHT:
+ case ST_ATTACHMENT_BACK_RIGHT:
+ *format = drawable->stvis.color_format;
+ *bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
+ break;
+ case ST_ATTACHMENT_DEPTH_STENCIL:
+ *format = drawable->stvis.depth_stencil_format;
+ *bind = PIPE_BIND_DEPTH_STENCIL; /* XXX sampler? */
+ break;
+ default:
+ *format = PIPE_FORMAT_NONE;
+ *bind = 0;
+ break;
+ }
+}
+
/* vim: set sw=3 ts=8 sts=3 expandtab: */
diff --git a/src/gallium/state_trackers/dri/common/dri_drawable.h b/src/gallium/state_trackers/dri/common/dri_drawable.h
index 315b778165..5fd650ac88 100644
--- a/src/gallium/state_trackers/dri/common/dri_drawable.h
+++ b/src/gallium/state_trackers/dri/common/dri_drawable.h
@@ -42,14 +42,13 @@ struct dri_context;
struct dri_drawable
{
+ struct st_framebuffer_iface base;
+ struct st_visual stvis;
+
/* dri */
__DRIdrawable *dPriv;
__DRIscreen *sPriv;
- /* gallium */
- struct st_framebuffer_iface *stfb;
- struct st_visual stvis;
-
__DRIbuffer old[8];
unsigned old_num;
unsigned old_w;
@@ -84,6 +83,16 @@ dri_create_buffer(__DRIscreen * sPriv,
void dri_destroy_buffer(__DRIdrawable * dPriv);
+void
+dri_drawable_get_format(struct dri_drawable *drawable,
+ enum st_attachment_type statt,
+ enum pipe_format *format,
+ unsigned *bind);
+
+void
+dri_drawable_validate_att(struct dri_drawable *drawable,
+ enum st_attachment_type statt);
+
#endif
/* vim: set sw=3 ts=8 sts=3 expandtab: */
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.c b/src/gallium/state_trackers/dri/common/dri_screen.c
index 4bfbc6e80b..064c73f54c 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.c
+++ b/src/gallium/state_trackers/dri/common/dri_screen.c
@@ -38,7 +38,6 @@
#include "dri_screen.h"
#include "dri_context.h"
#include "dri_drawable.h"
-#include "dri_st_api.h"
#include "dri1_helper.h"
#ifndef __NOT_HAVE_DRM_H
#include "dri1.h"
@@ -50,6 +49,7 @@
#include "util/u_inlines.h"
#include "pipe/p_screen.h"
#include "pipe/p_format.h"
+#include "state_tracker/st_gl_api.h" /* for st_gl_api_create */
#include "util/u_debug.h"
@@ -79,7 +79,7 @@ dri_fill_in_modes(struct dri_screen *screen,
unsigned depth_buffer_factor;
unsigned back_buffer_factor;
unsigned msaa_samples_factor;
- struct pipe_screen *p_screen = screen->pipe_screen;
+ struct pipe_screen *p_screen = screen->base.screen;
boolean pf_r5g6b5, pf_a8r8g8b8, pf_x8r8g8b8;
boolean pf_z16, pf_x8z24, pf_z24x8, pf_s8z24, pf_z24s8, pf_z32;
@@ -283,6 +283,31 @@ dri_get_swap_info(__DRIdrawable * dPriv, __DRIswapInfo * sInfo)
#endif
+static boolean
+dri_get_egl_image(struct st_manager *smapi,
+ struct st_egl_image *stimg)
+{
+ struct dri_context *ctx =
+ (struct dri_context *)stimg->stctxi->st_manager_private;
+ struct dri_screen *screen = dri_screen(ctx->sPriv);
+ __DRIimage *img = NULL;
+
+ if (screen->lookup_egl_image) {
+ img = screen->lookup_egl_image(ctx, stimg->egl_image);
+ }
+
+ if (!img)
+ return FALSE;
+
+ stimg->texture = NULL;
+ pipe_resource_reference(&stimg->texture, img->texture);
+ stimg->face = img->face;
+ stimg->level = img->level;
+ stimg->zslice = img->zslice;
+
+ return TRUE;
+}
+
static void
dri_destroy_option_cache(struct dri_screen * screen)
{
@@ -304,11 +329,11 @@ dri_destroy_screen_helper(struct dri_screen * screen)
{
dri1_destroy_pipe_context(screen);
- if (screen->smapi)
- dri_destroy_st_manager(screen->smapi);
+ if (screen->st_api && screen->st_api->destroy)
+ screen->st_api->destroy(screen->st_api);
- if (screen->pipe_screen)
- screen->pipe_screen->destroy(screen->pipe_screen);
+ if (screen->base.screen)
+ screen->base.screen->destroy(screen->base.screen);
dri_destroy_option_cache(screen);
}
@@ -330,14 +355,16 @@ dri_init_screen_helper(struct dri_screen *screen,
struct pipe_screen *pscreen,
unsigned pixel_bits)
{
- screen->pipe_screen = pscreen;
- if (!screen->pipe_screen) {
+ screen->base.screen = pscreen;
+ if (!screen->base.screen) {
debug_printf("%s: failed to create pipe_screen\n", __FUNCTION__);
return NULL;
}
- screen->smapi = dri_create_st_manager(screen);
- if (!screen->smapi)
+ screen->base.get_egl_image = dri_get_egl_image;
+ screen->st_api = st_gl_api_create();
+
+ if (!screen->st_api)
return NULL;
driParseOptionInfo(&screen->optionCache,
diff --git a/src/gallium/state_trackers/dri/common/dri_screen.h b/src/gallium/state_trackers/dri/common/dri_screen.h
index 8ab7d43919..1740fa8f42 100644
--- a/src/gallium/state_trackers/dri/common/dri_screen.h
+++ b/src/gallium/state_trackers/dri/common/dri_screen.h
@@ -41,8 +41,15 @@
#include "state_tracker/st_api.h"
#include "state_tracker/drm_api.h"
+struct dri_context;
+struct dri_drawable;
+
struct dri_screen
{
+ /* st_api */
+ struct st_manager base;
+ struct st_api *st_api;
+
/* dri */
__DRIscreen *sPriv;
@@ -55,16 +62,21 @@ struct dri_screen
int fd;
drmLock *drmLock;
+ /* hooks filled in by dri1, dri2 & drisw */
+ __DRIimage * (*lookup_egl_image)(struct dri_context *ctx, void *handle);
+ void (*allocate_textures)(struct dri_drawable *drawable,
+ const enum st_attachment_type *statts,
+ unsigned count);
+ void (*update_drawable_info)(struct dri_drawable *drawable);
+ void (*flush_frontbuffer)(struct dri_drawable *drawable,
+ enum st_attachment_type statt);
+
/* gallium */
struct drm_api *api;
- struct pipe_winsys *pipe_winsys;
- struct pipe_screen *pipe_screen;
boolean d_depth_bits_last;
boolean sd_depth_bits_last;
boolean auto_fake_front;
- struct st_manager *smapi;
-
/* used only by DRI1 */
struct pipe_context *dri1_pipe;
};
@@ -76,6 +88,15 @@ dri_screen(__DRIscreen * sPriv)
return (struct dri_screen *)sPriv->private;
}
+struct __DRIimageRec {
+ struct pipe_resource *texture;
+ unsigned face;
+ unsigned level;
+ unsigned zslice;
+
+ void *loader_private;
+};
+
#ifndef __NOT_HAVE_DRM_H
static INLINE boolean
diff --git a/src/gallium/state_trackers/dri/common/dri_st_api.c b/src/gallium/state_trackers/dri/common/dri_st_api.c
deleted file mode 100644
index 261bae75a2..0000000000
--- a/src/gallium/state_trackers/dri/common/dri_st_api.c
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#include "util/u_memory.h"
-#include "util/u_inlines.h"
-#include "util/u_format.h"
-#include "util/u_debug.h"
-#include "state_tracker/st_manager.h" /* for st_manager_create_api */
-
-#include "dri_screen.h"
-#include "dri_context.h"
-#include "dri_drawable.h"
-#include "dri_st_api.h"
-#ifndef __NOT_HAVE_DRM_H
-#include "dri1.h"
-#include "dri2.h"
-#else
-#include "drisw.h"
-#endif
-
-static boolean
-dri_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
- const enum st_attachment_type *statts,
- unsigned count,
- struct pipe_resource **out)
-{
- struct dri_drawable *drawable =
- (struct dri_drawable *) stfbi->st_manager_private;
- unsigned statt_mask, new_mask;
- boolean new_stamp;
- int i;
-
- statt_mask = 0x0;
- for (i = 0; i < count; i++)
- statt_mask |= (1 << statts[i]);
-
- /* record newly allocated textures */
- new_mask = (statt_mask & ~drawable->texture_mask);
-
- /*
- * dPriv->pStamp is the server stamp. It should be accessed with a lock, at
- * least for DRI1. dPriv->lastStamp is the client stamp. It has the value
- * of the server stamp when last checked.
- */
- new_stamp = (drawable->texture_stamp != drawable->dPriv->lastStamp);
-
- if (new_stamp || new_mask) {
-
-#ifndef __NOT_HAVE_DRM_H
- if (__dri1_api_hooks) {
- dri1_allocate_textures(drawable, statt_mask);
- }
- else {
- dri2_allocate_textures(drawable, statts, count);
- }
-#else
- if (new_stamp)
- drisw_update_drawable_info(drawable);
-
- drisw_allocate_textures(drawable, statt_mask);
-#endif
-
- /* add existing textures */
- for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
- if (drawable->textures[i])
- statt_mask |= (1 << i);
- }
-
- drawable->texture_stamp = drawable->dPriv->lastStamp;
- drawable->texture_mask = statt_mask;
- }
-
- if (!out)
- return TRUE;
-
- for (i = 0; i < count; i++) {
- out[i] = NULL;
- pipe_resource_reference(&out[i], drawable->textures[statts[i]]);
- }
-
- return TRUE;
-}
-
-static boolean
-dri_st_framebuffer_flush_front(struct st_framebuffer_iface *stfbi,
- enum st_attachment_type statt)
-{
- struct dri_drawable *drawable =
- (struct dri_drawable *) stfbi->st_manager_private;
-
-#ifndef __NOT_HAVE_DRM_H
- if (__dri1_api_hooks) {
- dri1_flush_frontbuffer(drawable, statt);
- }
- else {
- dri2_flush_frontbuffer(drawable, statt);
- }
-#else
- drisw_flush_frontbuffer(drawable, statt);
-#endif
-
- return TRUE;
-}
-
-/**
- * Create a framebuffer from the given drawable.
- */
-struct st_framebuffer_iface *
-dri_create_st_framebuffer(struct dri_drawable *drawable)
-{
- struct st_framebuffer_iface *stfbi;
-
- stfbi = CALLOC_STRUCT(st_framebuffer_iface);
- if (stfbi) {
- stfbi->visual = &drawable->stvis;
- stfbi->flush_front = dri_st_framebuffer_flush_front;
- stfbi->validate = dri_st_framebuffer_validate;
- stfbi->st_manager_private = (void *) drawable;
- }
-
- return stfbi;
-}
-
-/**
- * Destroy a framebuffer.
- */
-void
-dri_destroy_st_framebuffer(struct st_framebuffer_iface *stfbi)
-{
- struct dri_drawable *drawable =
- (struct dri_drawable *) stfbi->st_manager_private;
- int i;
-
- for (i = 0; i < ST_ATTACHMENT_COUNT; i++)
- pipe_resource_reference(&drawable->textures[i], NULL);
-
- FREE(stfbi);
-}
-
-/**
- * Validate the texture at an attachment. Allocate the texture if it does not
- * exist.
- */
-void
-dri_st_framebuffer_validate_att(struct st_framebuffer_iface *stfbi,
- enum st_attachment_type statt)
-{
- struct dri_drawable *drawable =
- (struct dri_drawable *) stfbi->st_manager_private;
- enum st_attachment_type statts[ST_ATTACHMENT_COUNT];
- unsigned i, count = 0;
-
- /* check if buffer already exists */
- if (drawable->texture_mask & (1 << statt))
- return;
-
- /* make sure DRI2 does not destroy existing buffers */
- for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
- if (drawable->texture_mask & (1 << i)) {
- statts[count++] = i;
- }
- }
- statts[count++] = statt;
-
- drawable->texture_stamp = drawable->dPriv->lastStamp - 1;
-
- stfbi->validate(stfbi, statts, count, NULL);
-}
-
-/**
- * Reference counted st_api.
- */
-static struct {
- int32_t refcnt;
- struct st_api *stapi;
-} dri_st_api;
-
-/**
- * Add a reference to the st_api of the state tracker.
- */
-static void
-_dri_get_st_api(void)
-{
- p_atomic_inc(&dri_st_api.refcnt);
- if (p_atomic_read(&dri_st_api.refcnt) == 1)
- dri_st_api.stapi = st_manager_create_api();
-}
-
-/**
- * Remove a reference to the st_api of the state tracker.
- */
-static void
-_dri_put_st_api(void)
-{
- struct st_api *stapi = dri_st_api.stapi;
-
- if (p_atomic_dec_zero(&dri_st_api.refcnt)) {
- stapi->destroy(dri_st_api.stapi);
- dri_st_api.stapi = NULL;
- }
-}
-
-static boolean
-dri_st_manager_get_egl_image(struct st_manager *smapi,
- struct st_egl_image *stimg)
-{
- __DRIimage *img = NULL;
-
-#ifndef __NOT_HAVE_DRM_H
- if (!__dri1_api_hooks) {
- struct dri_context *ctx = (struct dri_context *)
- stimg->stctxi->st_manager_private;
- img = dri2_lookup_egl_image(ctx, stimg->egl_image);
- }
-#endif
- if (!img)
- return FALSE;
-
- stimg->texture = NULL;
- pipe_resource_reference(&stimg->texture, img->texture);
- stimg->face = img->face;
- stimg->level = img->level;
- stimg->zslice = img->zslice;
-
- return TRUE;
-}
-
-/**
- * Create a state tracker manager from the given screen.
- */
-struct st_manager *
-dri_create_st_manager(struct dri_screen *screen)
-{
- struct st_manager *smapi;
-
- smapi = CALLOC_STRUCT(st_manager);
- if (smapi) {
- smapi->screen = screen->pipe_screen;
- smapi->get_egl_image = dri_st_manager_get_egl_image;
- _dri_get_st_api();
- }
-
- return smapi;
-}
-
-/**
- * Destroy a state tracker manager.
- */
-void
-dri_destroy_st_manager(struct st_manager *smapi)
-{
- _dri_put_st_api();
- FREE(smapi);
-}
-
-/**
- * Return the st_api of OpenGL state tracker.
- */
-struct st_api *
-dri_get_st_api(void)
-{
- assert(dri_st_api.stapi);
- return dri_st_api.stapi;
-}
diff --git a/src/gallium/state_trackers/dri/common/dri_st_api.h b/src/gallium/state_trackers/dri/common/dri_st_api.h
deleted file mode 100644
index 11d86cfbdf..0000000000
--- a/src/gallium/state_trackers/dri/common/dri_st_api.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.9
- *
- * Copyright (C) 2010 LunarG Inc.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Chia-I Wu <olv@lunarg.com>
- */
-
-#ifndef _DRI_ST_API_H_
-#define _DRI_ST_API_H_
-
-#include "state_tracker/st_api.h"
-
-struct dri_screen;
-struct dri_drawable;
-
-struct __DRIimageRec {
- struct pipe_resource *texture;
- unsigned face;
- unsigned level;
- unsigned zslice;
-
- void *loader_private;
-};
-
-struct st_api *
-dri_get_st_api(void);
-
-struct st_manager *
-dri_create_st_manager(struct dri_screen *screen);
-
-void
-dri_destroy_st_manager(struct st_manager *smapi);
-
-struct st_framebuffer_iface *
-dri_create_st_framebuffer(struct dri_drawable *drawable);
-
-void
-dri_destroy_st_framebuffer(struct st_framebuffer_iface *stfbi);
-
-void
-dri_st_framebuffer_validate_att(struct st_framebuffer_iface *stfbi,
- enum st_attachment_type statt);
-
-#endif /* _DRI_ST_API_H_ */
diff --git a/src/gallium/state_trackers/dri/drm/Makefile b/src/gallium/state_trackers/dri/drm/Makefile
index 7a236da0c0..d9a973e3c3 100644
--- a/src/gallium/state_trackers/dri/drm/Makefile
+++ b/src/gallium/state_trackers/dri/drm/Makefile
@@ -16,7 +16,6 @@ C_SOURCES = \
dri_context.c \
dri_screen.c \
dri_drawable.c \
- dri_st_api.c \
dri1_helper.c \
dri1.c \
dri2.c
diff --git a/src/gallium/state_trackers/dri/drm/SConscript b/src/gallium/state_trackers/dri/drm/SConscript
index 1dfaa402f2..8800b65534 100644
--- a/src/gallium/state_trackers/dri/drm/SConscript
+++ b/src/gallium/state_trackers/dri/drm/SConscript
@@ -20,7 +20,6 @@ if env['dri']:
source = [ 'dri_context.c',
'dri_drawable.c',
'dri_screen.c',
- 'dri_st_api.c',
'dri1_helper.c',
'dri1.c',
'dri2.c',
diff --git a/src/gallium/state_trackers/dri/drm/dri1.c b/src/gallium/state_trackers/dri/drm/dri1.c
index e216e46a87..23c21ed839 100644
--- a/src/gallium/state_trackers/dri/drm/dri1.c
+++ b/src/gallium/state_trackers/dri/drm/dri1.c
@@ -104,13 +104,13 @@ dri1_propagate_drawable_change(struct dri_context *ctx)
if (dPriv && draw->texture_stamp != dPriv->lastStamp) {
ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
flushed = TRUE;
- ctx->st->notify_invalid_framebuffer(ctx->st, draw->stfb);
+ ctx->st->notify_invalid_framebuffer(ctx->st, &draw->base);
}
if (rPriv && dPriv != rPriv && read->texture_stamp != rPriv->lastStamp) {
if (!flushed)
ctx->st->flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
- ctx->st->notify_invalid_framebuffer(ctx->st, read->stfb);
+ ctx->st->notify_invalid_framebuffer(ctx->st, &read->base);
}
}
@@ -253,13 +253,13 @@ dri1_copy_to_front(struct dri_context *ctx,
* Backend functions for st_framebuffer interface and swap_buffers.
*/
-void
+static void
dri1_flush_frontbuffer(struct dri_drawable *draw,
enum st_attachment_type statt)
{
- struct dri_context *ctx = dri_get_current();
+ struct dri_context *ctx = dri_get_current(draw->sPriv);
struct dri_screen *screen = dri_screen(draw->sPriv);
- struct pipe_screen *pipe_screen = screen->pipe_screen;
+ struct pipe_screen *pipe_screen = screen->base.screen;
struct pipe_fence_handle *dummy_fence;
struct pipe_resource *ptex;
@@ -280,10 +280,10 @@ dri1_flush_frontbuffer(struct dri_drawable *draw,
void
dri1_swap_buffers(__DRIdrawable * dPriv)
{
- struct dri_context *ctx = dri_get_current();
struct dri_drawable *draw = dri_drawable(dPriv);
+ struct dri_context *ctx = dri_get_current(draw->sPriv);
struct dri_screen *screen = dri_screen(draw->sPriv);
- struct pipe_screen *pipe_screen = screen->pipe_screen;
+ struct pipe_screen *pipe_screen = screen->base.screen;
struct pipe_fence_handle *fence;
struct pipe_resource *ptex;
@@ -309,9 +309,9 @@ dri1_swap_buffers(__DRIdrawable * dPriv)
void
dri1_copy_sub_buffer(__DRIdrawable * dPriv, int x, int y, int w, int h)
{
- struct dri_context *ctx = dri_get_current();
+ struct dri_context *ctx = dri_get_current(dPriv->driScreenPriv);
struct dri_screen *screen = dri_screen(dPriv->driScreenPriv);
- struct pipe_screen *pipe_screen = screen->pipe_screen;
+ struct pipe_screen *pipe_screen = screen->base.screen;
struct drm_clip_rect sub_bbox;
struct dri_drawable *draw = dri_drawable(dPriv);
struct pipe_fence_handle *dummy_fence;
@@ -342,9 +342,10 @@ dri1_copy_sub_buffer(__DRIdrawable * dPriv, int x, int y, int w, int h)
* as they are requested. Unused attachments are not removed, not until the
* framebuffer is resized or destroyed.
*/
-void
+static void
dri1_allocate_textures(struct dri_drawable *drawable,
- unsigned mask)
+ const enum st_attachment_type *statts,
+ unsigned count)
{
struct dri_screen *screen = dri_screen(drawable->sPriv);
struct pipe_resource templ;
@@ -371,40 +372,24 @@ dri1_allocate_textures(struct dri_drawable *drawable,
templ.depth0 = 1;
templ.last_level = 0;
- for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
+ for (i = 0; i < count; i++) {
enum pipe_format format;
- unsigned tex_usage;
+ unsigned bind;
- /* the texture already exists or not requested */
- if (drawable->textures[i] || !(mask & (1 << i))) {
+ /* the texture already exists */
+ if (drawable->textures[statts[i]])
continue;
- }
- switch (i) {
- case ST_ATTACHMENT_FRONT_LEFT:
- case ST_ATTACHMENT_BACK_LEFT:
- case ST_ATTACHMENT_FRONT_RIGHT:
- case ST_ATTACHMENT_BACK_RIGHT:
- format = drawable->stvis.color_format;
- tex_usage = PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_RENDER_TARGET;
- break;
- case ST_ATTACHMENT_DEPTH_STENCIL:
- format = drawable->stvis.depth_stencil_format;
- tex_usage = PIPE_BIND_DEPTH_STENCIL;
- break;
- default:
- format = PIPE_FORMAT_NONE;
- break;
- }
+ dri_drawable_get_format(drawable, statts[i], &format, &bind);
+
+ if (format == PIPE_FORMAT_NONE)
+ continue;
- if (format != PIPE_FORMAT_NONE) {
- templ.format = format;
- templ.bind = tex_usage;
+ templ.format = format;
+ templ.bind = bind;
- drawable->textures[i] =
- screen->pipe_screen->resource_create(screen->pipe_screen, &templ);
- }
+ drawable->textures[statts[i]] =
+ screen->base.screen->resource_create(screen->base.screen, &templ);
}
drawable->old_w = width;
@@ -489,6 +474,8 @@ dri1_init_screen(__DRIscreen * sPriv)
screen->sPriv = sPriv;
screen->fd = sPriv->fd;
screen->drmLock = (drmLock *) & sPriv->pSAREA->lock;
+ screen->allocate_textures = dri1_allocate_textures;
+ screen->flush_frontbuffer = dri1_flush_frontbuffer;
sPriv->private = (void *)screen;
sPriv->extensions = dri1_screen_extensions;
diff --git a/src/gallium/state_trackers/dri/drm/dri1.h b/src/gallium/state_trackers/dri/drm/dri1.h
index f7441f98ab..a50188b368 100644
--- a/src/gallium/state_trackers/dri/drm/dri1.h
+++ b/src/gallium/state_trackers/dri/drm/dri1.h
@@ -43,14 +43,6 @@ extern struct dri1_api *__dri1_api_hooks;
const __DRIconfig **
dri1_init_screen(__DRIscreen * sPriv);
-void
-dri1_flush_frontbuffer(struct dri_drawable *drawable,
- enum st_attachment_type statt);
-
-void
-dri1_allocate_textures(struct dri_drawable *drawable,
- unsigned mask);
-
void dri1_swap_buffers(__DRIdrawable * dPriv);
void
diff --git a/src/gallium/state_trackers/dri/drm/dri2.c b/src/gallium/state_trackers/dri/drm/dri2.c
index 0d15b5c9b8..e1216f14c0 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.c
+++ b/src/gallium/state_trackers/dri/drm/dri2.c
@@ -38,9 +38,10 @@
#include "dri_screen.h"
#include "dri_context.h"
#include "dri_drawable.h"
-#include "dri_st_api.h"
#include "dri2.h"
+#include "GL/internal/dri_interface.h"
+
/**
* DRI2 flush extension.
*/
@@ -59,7 +60,7 @@ dri2_invalidate_drawable(__DRIdrawable *dPriv)
drawable->dPriv->lastStamp = *drawable->dPriv->pStamp;
if (ctx)
- ctx->st->notify_invalid_framebuffer(ctx->st, drawable->stfb);
+ ctx->st->notify_invalid_framebuffer(ctx->st, &drawable->base);
}
static const __DRI2flushExtension dri2FlushExtension = {
@@ -79,7 +80,7 @@ dri2_set_tex_buffer2(__DRIcontext *pDRICtx, GLint target,
struct dri_drawable *drawable = dri_drawable(dPriv);
struct pipe_resource *pt;
- dri_st_framebuffer_validate_att(drawable->stfb, ST_ATTACHMENT_FRONT_LEFT);
+ dri_drawable_validate_att(drawable, ST_ATTACHMENT_FRONT_LEFT);
pt = drawable->textures[ST_ATTACHMENT_FRONT_LEFT];
@@ -120,30 +121,31 @@ static const __DRItexBufferExtension dri2TexBufferExtension = {
};
/**
- * Get the format of an attachment.
+ * Get the format and binding of an attachment.
*/
-static INLINE enum pipe_format
+static INLINE void
dri2_drawable_get_format(struct dri_drawable *drawable,
- enum st_attachment_type statt)
+ enum st_attachment_type statt,
+ enum pipe_format *format,
+ unsigned *bind)
{
- enum pipe_format format;
-
switch (statt) {
case ST_ATTACHMENT_FRONT_LEFT:
case ST_ATTACHMENT_BACK_LEFT:
case ST_ATTACHMENT_FRONT_RIGHT:
case ST_ATTACHMENT_BACK_RIGHT:
- format = drawable->stvis.color_format;
+ *format = drawable->stvis.color_format;
+ *bind = PIPE_BIND_RENDER_TARGET | PIPE_BIND_SAMPLER_VIEW;
break;
case ST_ATTACHMENT_DEPTH_STENCIL:
- format = drawable->stvis.depth_stencil_format;
+ *format = drawable->stvis.depth_stencil_format;
+ *bind = PIPE_BIND_DEPTH_STENCIL; /* XXX sampler? */
break;
default:
- format = PIPE_FORMAT_NONE;
+ *format = PIPE_FORMAT_NONE;
+ *bind = 0;
break;
}
-
- return format;
}
@@ -174,9 +176,10 @@ dri2_drawable_get_buffers(struct dri_drawable *drawable,
for (i = 0; i < *count; i++) {
enum pipe_format format;
+ unsigned bind;
int att, bpp;
- format = dri2_drawable_get_format(drawable, statts[i]);
+ dri2_drawable_get_format(drawable, statts[i], &format, &bind);
if (format == PIPE_FORMAT_NONE)
continue;
@@ -263,7 +266,7 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
struct pipe_resource templ;
struct winsys_handle whandle;
boolean have_depth = FALSE;
- unsigned i;
+ unsigned i, bind;
if (drawable->old_num == count &&
drawable->old_w == dri_drawable->w &&
@@ -275,7 +278,6 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
pipe_resource_reference(&drawable->textures[i], NULL);
memset(&templ, 0, sizeof(templ));
- templ.bind = PIPE_BIND_RENDER_TARGET;
templ.target = PIPE_TEXTURE_2D;
templ.last_level = 0;
templ.width0 = dri_drawable->w;
@@ -319,16 +321,17 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
break;
}
- format = dri2_drawable_get_format(drawable, statt);
+ dri2_drawable_get_format(drawable, statt, &format, &bind);
if (statt == ST_ATTACHMENT_INVALID || format == PIPE_FORMAT_NONE)
continue;
templ.format = format;
+ templ.bind = bind;
whandle.handle = buf->name;
whandle.stride = buf->pitch;
drawable->textures[statt] =
- screen->pipe_screen->resource_from_handle(screen->pipe_screen,
+ screen->base.screen->resource_from_handle(screen->base.screen,
&templ, &whandle);
}
@@ -342,7 +345,7 @@ dri2_drawable_process_buffers(struct dri_drawable *drawable,
* Backend functions for st_framebuffer interface.
*/
-void
+static void
dri2_allocate_textures(struct dri_drawable *drawable,
const enum st_attachment_type *statts,
unsigned count)
@@ -354,7 +357,7 @@ dri2_allocate_textures(struct dri_drawable *drawable,
dri2_drawable_process_buffers(drawable, buffers, num_buffers);
}
-void
+static void
dri2_flush_frontbuffer(struct dri_drawable *drawable,
enum st_attachment_type statt)
{
@@ -369,7 +372,7 @@ dri2_flush_frontbuffer(struct dri_drawable *drawable,
}
}
-__DRIimage *
+static __DRIimage *
dri2_lookup_egl_image(struct dri_context *ctx, void *handle)
{
__DRIimageLookupExtension *loader = ctx->sPriv->dri2.image;
@@ -431,7 +434,7 @@ dri2_create_image_from_name(__DRIcontext *context,
whandle.handle = name;
whandle.stride = pitch * util_format_get_blocksize(pf);
- img->texture = screen->pipe_screen->resource_from_handle(screen->pipe_screen,
+ img->texture = screen->base.screen->resource_from_handle(screen->base.screen,
&templ, &whandle);
if (!img->texture) {
FREE(img);
@@ -508,6 +511,9 @@ dri2_init_screen(__DRIscreen * sPriv)
screen->api = drm_api_create();
screen->sPriv = sPriv;
screen->fd = sPriv->fd;
+ screen->lookup_egl_image = dri2_lookup_egl_image;
+ screen->allocate_textures = dri2_allocate_textures;
+ screen->flush_frontbuffer = dri2_flush_frontbuffer;
sPriv->private = (void *)screen;
sPriv->extensions = dri_screen_extensions;
diff --git a/src/gallium/state_trackers/dri/drm/dri2.h b/src/gallium/state_trackers/dri/drm/dri2.h
index 5b28850000..07adfe4f6c 100644
--- a/src/gallium/state_trackers/dri/drm/dri2.h
+++ b/src/gallium/state_trackers/dri/drm/dri2.h
@@ -34,16 +34,4 @@
const __DRIconfig **
dri2_init_screen(__DRIscreen * sPriv);
-void
-dri2_flush_frontbuffer(struct dri_drawable *drawable,
- enum st_attachment_type statt);
-
-void
-dri2_allocate_textures(struct dri_drawable *drawable,
- const enum st_attachment_type *statts,
- unsigned count);
-
-__DRIimage *
-dri2_lookup_egl_image(struct dri_context *ctx, void *handle);
-
#endif /* DRI2_H */
diff --git a/src/gallium/state_trackers/dri/drm/dri_st_api.c b/src/gallium/state_trackers/dri/drm/dri_st_api.c
deleted file mode 120000
index a8f6bd06b0..0000000000
--- a/src/gallium/state_trackers/dri/drm/dri_st_api.c
+++ /dev/null
@@ -1 +0,0 @@
-../common/dri_st_api.c \ No newline at end of file
diff --git a/src/gallium/state_trackers/dri/sw/Makefile b/src/gallium/state_trackers/dri/sw/Makefile
index 18d7aabd9f..c0ae71451b 100644
--- a/src/gallium/state_trackers/dri/sw/Makefile
+++ b/src/gallium/state_trackers/dri/sw/Makefile
@@ -19,7 +19,6 @@ C_SOURCES = \
dri_context.c \
dri_screen.c \
dri_drawable.c \
- dri_st_api.c \
dri1_helper.c \
drisw.c
diff --git a/src/gallium/state_trackers/dri/sw/SConscript b/src/gallium/state_trackers/dri/sw/SConscript
index c97124c831..6bb282d1a4 100644
--- a/src/gallium/state_trackers/dri/sw/SConscript
+++ b/src/gallium/state_trackers/dri/sw/SConscript
@@ -20,7 +20,6 @@ if env['dri']:
source = [ 'dri_context.c',
'dri_drawable.c',
'dri_screen.c',
- 'dri_st_api.c',
'dri1_helper.c',
'drisw.c',
]
diff --git a/src/gallium/state_trackers/dri/sw/dri_st_api.c b/src/gallium/state_trackers/dri/sw/dri_st_api.c
deleted file mode 120000
index a8f6bd06b0..0000000000
--- a/src/gallium/state_trackers/dri/sw/dri_st_api.c
+++ /dev/null
@@ -1 +0,0 @@
-../common/dri_st_api.c \ No newline at end of file
diff --git a/src/gallium/state_trackers/dri/sw/drisw.c b/src/gallium/state_trackers/dri/sw/drisw.c
index 9edddf01b5..dcf645593f 100644
--- a/src/gallium/state_trackers/dri/sw/drisw.c
+++ b/src/gallium/state_trackers/dri/sw/drisw.c
@@ -70,7 +70,7 @@ put_image(__DRIdrawable *dPriv, void *data, unsigned width, unsigned height)
data, dPriv->loaderPrivate);
}
-void
+static void
drisw_update_drawable_info(struct dri_drawable *drawable)
{
__DRIdrawable *dPriv = drawable->dPriv;
@@ -99,20 +99,20 @@ drisw_present_texture(__DRIdrawable *dPriv,
if (!psurf)
return;
- screen->pipe_screen->flush_frontbuffer(screen->pipe_screen, psurf, drawable);
+ screen->base.screen->flush_frontbuffer(screen->base.screen, psurf, drawable);
}
static INLINE void
drisw_invalidate_drawable(__DRIdrawable *dPriv)
{
- struct dri_context *ctx = dri_get_current();
+ struct dri_context *ctx = dri_get_current(dPriv->driScreenPriv);
struct dri_drawable *drawable = dri_drawable(dPriv);
drawable->texture_stamp = dPriv->lastStamp - 1;
/* check if swapping currently bound buffer */
if (ctx && ctx->dPriv == dPriv)
- ctx->st->notify_invalid_framebuffer(ctx->st, drawable->stfb);
+ ctx->st->notify_invalid_framebuffer(ctx->st, &drawable->base);
}
static INLINE void
@@ -131,7 +131,7 @@ drisw_copy_to_front(__DRIdrawable * dPriv,
void
drisw_swap_buffers(__DRIdrawable *dPriv)
{
- struct dri_context *ctx = dri_get_current();
+ struct dri_context *ctx = dri_get_current(dPriv->driScreenPriv);
struct dri_drawable *drawable = dri_drawable(dPriv);
struct pipe_resource *ptex;
@@ -147,11 +147,11 @@ drisw_swap_buffers(__DRIdrawable *dPriv)
}
}
-void
+static void
drisw_flush_frontbuffer(struct dri_drawable *drawable,
enum st_attachment_type statt)
{
- struct dri_context *ctx = dri_get_current();
+ struct dri_context *ctx = dri_get_current(drawable->sPriv);
struct pipe_resource *ptex;
if (!ctx)
@@ -175,9 +175,10 @@ drisw_flush_frontbuffer(struct dri_drawable *drawable,
* seems a better seperation and safer for each DRI version to provide its own
* function.
*/
-void
+static void
drisw_allocate_textures(struct dri_drawable *drawable,
- unsigned mask)
+ const enum st_attachment_type *statts,
+ unsigned count)
{
struct dri_screen *screen = dri_screen(drawable->sPriv);
struct pipe_resource templ;
@@ -206,38 +207,25 @@ drisw_allocate_textures(struct dri_drawable *drawable,
for (i = 0; i < ST_ATTACHMENT_COUNT; i++) {
enum pipe_format format;
- unsigned tex_usage;
+ unsigned bind;
/* the texture already exists or not requested */
- if (drawable->textures[i] || !(mask & (1 << i))) {
+ if (drawable->textures[statts[i]])
continue;
- }
-
- switch (i) {
- case ST_ATTACHMENT_FRONT_LEFT:
- case ST_ATTACHMENT_BACK_LEFT:
- case ST_ATTACHMENT_FRONT_RIGHT:
- case ST_ATTACHMENT_BACK_RIGHT:
- format = drawable->stvis.color_format;
- tex_usage = PIPE_BIND_DISPLAY_TARGET |
- PIPE_BIND_RENDER_TARGET;
- break;
- case ST_ATTACHMENT_DEPTH_STENCIL:
- format = drawable->stvis.depth_stencil_format;
- tex_usage = PIPE_BIND_DEPTH_STENCIL;
- break;
- default:
- format = PIPE_FORMAT_NONE;
- break;
- }
-
- if (format != PIPE_FORMAT_NONE) {
- templ.format = format;
- templ.bind = tex_usage;
-
- drawable->textures[i] =
- screen->pipe_screen->resource_create(screen->pipe_screen, &templ);
- }
+
+ dri_drawable_get_format(drawable, statts[i], &format, &bind);
+
+ if (statts[i] != ST_ATTACHMENT_DEPTH_STENCIL)
+ bind |= PIPE_BIND_DISPLAY_TARGET;
+
+ if (format == PIPE_FORMAT_NONE)
+ continue;
+
+ templ.format = format;
+ templ.bind = bind;
+
+ drawable->textures[statts[i]] =
+ screen->base.screen->resource_create(screen->base.screen, &templ);
}
drawable->old_w = width;
@@ -270,6 +258,9 @@ drisw_init_screen(__DRIscreen * sPriv)
screen->api = NULL; /* not needed */
screen->sPriv = sPriv;
screen->fd = -1;
+ screen->allocate_textures = drisw_allocate_textures;
+ screen->update_drawable_info = drisw_update_drawable_info;
+ screen->flush_frontbuffer = drisw_flush_frontbuffer;
sPriv->private = (void *)screen;
sPriv->extensions = drisw_screen_extensions;
diff --git a/src/gallium/state_trackers/dri/sw/drisw.h b/src/gallium/state_trackers/dri/sw/drisw.h
index c0c874f732..6c6c891f35 100644
--- a/src/gallium/state_trackers/dri/sw/drisw.h
+++ b/src/gallium/state_trackers/dri/sw/drisw.h
@@ -38,17 +38,6 @@
const __DRIconfig **
drisw_init_screen(__DRIscreen * sPriv);
-void
-drisw_update_drawable_info(struct dri_drawable *drawable);
-
-void
-drisw_flush_frontbuffer(struct dri_drawable *drawable,
- enum st_attachment_type statt);
-
-void
-drisw_allocate_textures(struct dri_drawable *drawable,
- unsigned mask);
-
void drisw_swap_buffers(__DRIdrawable * dPriv);
#endif /* DRISW_H */
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 57a479f6bc..9744547868 100644
--- a/src/gallium/state_trackers/egl/common/egl_g3d_st.c
+++ b/src/gallium/state_trackers/egl/common/egl_g3d_st.c
@@ -49,41 +49,39 @@ egl_g3d_st_manager(struct st_manager *smapi)
struct st_api *
egl_g3d_create_st_api(enum st_api_type api)
{
- const char *stmod_name;
struct util_dl_library *lib;
- const struct st_module *mod;
+ const char *proc_name;
+ struct st_api * (*proc)(void) = NULL;
switch (api) {
case ST_API_OPENGL:
- stmod_name = ST_MODULE_OPENGL_SYMBOL;
+ proc_name = ST_CREATE_OPENGL_SYMBOL;
break;
case ST_API_OPENGL_ES1:
- stmod_name = ST_MODULE_OPENGL_ES1_SYMBOL;
+ proc_name = ST_CREATE_OPENGL_ES1_SYMBOL;
break;
case ST_API_OPENGL_ES2:
- stmod_name = ST_MODULE_OPENGL_ES2_SYMBOL;
+ proc_name = ST_CREATE_OPENGL_ES2_SYMBOL;
break;
case ST_API_OPENVG:
- stmod_name = ST_MODULE_OPENVG_SYMBOL;
+ proc_name = ST_CREATE_OPENVG_SYMBOL;
break;
default:
- stmod_name = NULL;
- break;
- }
- if (!stmod_name)
+ assert(!"Unknown API Type\n");
return NULL;
+ }
- mod = NULL;
lib = util_dl_open(NULL);
if (lib) {
- mod = (const struct st_module *)
- util_dl_get_proc_address(lib, stmod_name);
+ proc = util_dl_get_proc_address(lib, proc_name);
+ debug_printf("%s: %s %p\n", __func__, proc_name, proc);
util_dl_close(lib);
}
- if (!mod || mod->api != api)
+
+ if (!proc)
return NULL;
- return mod->create_api();
+ return proc();
}
static boolean
diff --git a/src/gallium/state_trackers/es/st_es1.c b/src/gallium/state_trackers/es/st_es1.c
index 4e89e06b34..825fdac215 100644
--- a/src/gallium/state_trackers/es/st_es1.c
+++ b/src/gallium/state_trackers/es/st_es1.c
@@ -1,8 +1,7 @@
-#include "state_tracker/st_manager.h"
+#include "state_tracker/st_gl_api.h"
-PUBLIC const int st_api_OpenGL_ES1 = 1;
-
-PUBLIC const struct st_module st_module_OpenGL_ES1 = {
- .api = ST_API_OPENGL_ES1,
- .create_api = st_manager_create_api
-};
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES1()
+{
+ return st_gl_api_create();
+}
diff --git a/src/gallium/state_trackers/es/st_es2.c b/src/gallium/state_trackers/es/st_es2.c
index 82e88b176a..5c773aaf93 100644
--- a/src/gallium/state_trackers/es/st_es2.c
+++ b/src/gallium/state_trackers/es/st_es2.c
@@ -1,8 +1,8 @@
-#include "state_tracker/st_manager.h"
+#include "state_tracker/st_gl_api.h"
-PUBLIC const int st_api_OpenGL_ES2 = 1;
-
-PUBLIC const struct st_module st_module_OpenGL_ES2 = {
- .api = ST_API_OPENGL_ES2,
- .create_api = st_manager_create_api
-};
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES2()
+{
+ /* linker magic creates different versions */
+ return st_gl_api_create();
+}
diff --git a/src/gallium/state_trackers/glx/xlib/xm_st.c b/src/gallium/state_trackers/glx/xlib/xm_st.c
index 294b593bf7..1c678b4f76 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_st.c
+++ b/src/gallium/state_trackers/glx/xlib/xm_st.c
@@ -125,7 +125,7 @@ xmesa_st_framebuffer_copy_textures(struct st_framebuffer_iface *stfbi,
/**
* Remove outdated textures and create the requested ones.
*/
-static void
+static boolean
xmesa_st_framebuffer_validate_textures(struct st_framebuffer_iface *stfbi,
unsigned width, unsigned height,
unsigned mask)
@@ -183,12 +183,16 @@ xmesa_st_framebuffer_validate_textures(struct st_framebuffer_iface *stfbi,
xstfb->textures[i] =
xstfb->screen->resource_create(xstfb->screen, &templ);
+ if (!xstfb->textures[i])
+ return FALSE;
}
}
xstfb->texture_width = width;
xstfb->texture_height = height;
xstfb->texture_mask = mask;
+
+ return TRUE;
}
static boolean
@@ -200,6 +204,7 @@ xmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
struct xmesa_st_framebuffer *xstfb = xmesa_st_framebuffer(stfbi);
unsigned statt_mask, new_mask, i;
boolean resized;
+ boolean ret;
statt_mask = 0x0;
for (i = 0; i < count; i++)
@@ -212,8 +217,10 @@ xmesa_st_framebuffer_validate(struct st_framebuffer_iface *stfbi,
/* revalidate textures */
if (resized || new_mask) {
- xmesa_st_framebuffer_validate_textures(stfbi,
- xstfb->buffer->width, xstfb->buffer->height, statt_mask);
+ ret = xmesa_st_framebuffer_validate_textures(stfbi,
+ xstfb->buffer->width, xstfb->buffer->height, statt_mask);
+ if (!ret)
+ return ret;
if (!resized) {
enum st_attachment_type back, front;
diff --git a/src/gallium/state_trackers/vega/vg_manager.c b/src/gallium/state_trackers/vega/vg_manager.c
index e4226754d1..aecac28e7e 100644
--- a/src/gallium/state_trackers/vega/vg_manager.c
+++ b/src/gallium/state_trackers/vega/vg_manager.c
@@ -546,26 +546,17 @@ vg_api_destroy(struct st_api *stapi)
free(stapi);
}
-static struct st_api *
-vg_module_create_api(void)
-{
- struct st_api *stapi;
-
- stapi = CALLOC_STRUCT(st_api);
- if (stapi) {
- stapi->destroy = vg_api_destroy;
- stapi->get_proc_address = vg_api_get_proc_address;
- stapi->is_visual_supported = vg_api_is_visual_supported;
-
- stapi->create_context = vg_api_create_context;
- stapi->make_current = vg_api_make_current;
- stapi->get_current = vg_api_get_current;
- }
+struct st_api st_vg_api = {
+ vg_api_destroy,
+ vg_api_get_proc_address,
+ vg_api_is_visual_supported,
+ vg_api_create_context,
+ vg_api_make_current,
+ vg_api_get_current,
+};
- return stapi;
+struct st_api *
+st_api_create_OpenVG(void)
+{
+ return &st_vg_api;
}
-
-PUBLIC const struct st_module st_module_OpenVG = {
- .api = ST_API_OPENVG,
- .create_api = vg_module_create_api,
-};
diff --git a/src/gallium/state_trackers/wgl/stw_st.c b/src/gallium/state_trackers/wgl/stw_st.c
index f4ea61ed2c..bcdd82e4f6 100644
--- a/src/gallium/state_trackers/wgl/stw_st.c
+++ b/src/gallium/state_trackers/wgl/stw_st.c
@@ -27,7 +27,7 @@
#include "util/u_memory.h"
#include "util/u_inlines.h"
-#include "state_tracker/st_manager.h" /* for st_manager_create_api */
+#include "state_tracker/st_gl_api.h" /* for st_gl_api_create */
#include "stw_st.h"
#include "stw_device.h"
@@ -308,5 +308,5 @@ stw_st_swap_framebuffer_locked(struct st_framebuffer_iface *stfb)
struct st_api *
stw_st_create_api(void)
{
- return st_manager_create_api();
+ return st_gl_api_create();
}
diff --git a/src/gallium/targets/Makefile.dri b/src/gallium/targets/Makefile.dri
index 8efbf4e828..3cbaf615e2 100644
--- a/src/gallium/targets/Makefile.dri
+++ b/src/gallium/targets/Makefile.dri
@@ -1,5 +1,14 @@
# -*-makefile-*-
+ifeq ($(MESA_LLVM),1)
+DRIVER_DEFINES += -DGALLIUM_LLVMPIPE
+PIPE_DRIVERS += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a
+LDFLAGS += $(LLVM_LDFLAGS)
+LD = g++
+DRIVER_EXTRAS = $(LLVM_LIBS)
+USE_CXX=1
+endif
+
MESA_MODULES = \
$(TOP)/src/mesa/libmesagallium.a \
$(GALLIUM_AUXILIARIES)
@@ -69,7 +78,11 @@ $(LIBNAME): $(OBJECTS) $(MESA_MODULES) $(PIPE_DRIVERS) Makefile \
$(OBJECTS) $(PIPE_DRIVERS) \
-Wl,--start-group $(MESA_MODULES) -Wl,--end-group \
$(DRI_LIB_DEPS) $(DRIVER_EXTRAS)
- $(CC) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS)
+ if [ "x${USE_CXX}" == "x" ]; then \
+ $(CC) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS); \
+ else \
+ $(CXX) $(CFLAGS) -o $@.test $(TOP)/src/mesa/drivers/dri/common/dri_test.o $@.tmp $(DRI_LIB_DEPS); \
+ fi
@rm -f $@.test
mv -f $@.tmp $@
diff --git a/src/gallium/targets/dri-swrast/Makefile b/src/gallium/targets/dri-swrast/Makefile
index fcfd690e43..3db9781c20 100644
--- a/src/gallium/targets/dri-swrast/Makefile
+++ b/src/gallium/targets/dri-swrast/Makefile
@@ -8,7 +8,8 @@ DRIVER_DEFINES = -D__NOT_HAVE_DRM_H -DGALLIUM_SOFTPIPE
PIPE_DRIVERS = \
$(TOP)/src/gallium/state_trackers/dri/sw/libdrisw.a \
$(TOP)/src/gallium/winsys/sw/dri/libswdri.a \
- $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a
+ $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
+ $(TOP)/src/gallium/drivers/trace/libtrace.a
SWRAST_COMMON_GALLIUM_SOURCES = \
$(TOP)/src/mesa/drivers/dri/common/utils.c \
diff --git a/src/gallium/targets/dri-swrast/swrast_drm_api.c b/src/gallium/targets/dri-swrast/swrast_drm_api.c
index e8d6d8069c..84142be80c 100644
--- a/src/gallium/targets/dri-swrast/swrast_drm_api.c
+++ b/src/gallium/targets/dri-swrast/swrast_drm_api.c
@@ -31,6 +31,7 @@
#include "state_tracker/drm_api.h"
#include "state_tracker/sw_winsys.h"
#include "dri_sw_winsys.h"
+#include "trace/tr_public.h"
/* Copied from targets/libgl-xlib */
@@ -80,7 +81,7 @@ swrast_create_screen(struct sw_winsys *winsys)
screen = softpipe_create_screen( winsys );
#endif
- return screen;
+ return trace_screen_create(screen);;
}
struct pipe_screen *
diff --git a/src/gallium/targets/libgl-xlib/xlib.c b/src/gallium/targets/libgl-xlib/xlib.c
index 48e5bdff42..69b4ddd33f 100644
--- a/src/gallium/targets/libgl-xlib/xlib.c
+++ b/src/gallium/targets/libgl-xlib/xlib.c
@@ -36,15 +36,15 @@
#include "state_tracker/xlib_sw_winsys.h"
#include "xm_public.h"
-#include "state_tracker/st_manager.h"
+#include "state_tracker/st_gl_api.h"
-/* advertise OpenGL support */
-PUBLIC const int st_api_OpenGL = 1;
+/* piggy back on this libGL for OpenGL support in EGL */
+struct st_api *
+st_api_create_OpenGL()
+{
+ return st_gl_api_create();
+}
-PUBLIC const struct st_module st_module_OpenGL = {
- .api = ST_API_OPENGL,
- .create_api = st_manager_create_api
-};
/* Helper function to choose and instantiate one of the software rasterizers:
* cell, llvmpipe, softpipe.
@@ -151,7 +151,7 @@ fail:
static struct xm_driver xlib_driver =
{
.create_pipe_screen = swrast_xlib_create_screen,
- .create_st_api = st_manager_create_api,
+ .create_st_api = st_gl_api_create,
};
diff --git a/src/gallium/winsys/i915/sw/i915_sw_buffer.c b/src/gallium/winsys/i915/sw/i915_sw_buffer.c
index 9a27da5e1a..df17568886 100644
--- a/src/gallium/winsys/i915/sw/i915_sw_buffer.c
+++ b/src/gallium/winsys/i915/sw/i915_sw_buffer.c
@@ -27,7 +27,7 @@ i915_sw_buffer_create(struct i915_winsys *iws,
buf->magic = 0xDEAD1337;
buf->name = name;
buf->type = type;
- buf->ptr = calloc(size, 1);
+ buf->ptr = CALLOC(size, 1);
if (!buf->ptr)
goto err;
diff --git a/src/gallium/winsys/i965/drm/SConscript b/src/gallium/winsys/i965/drm/SConscript
index 150ab19a33..abf9aac5c0 100644
--- a/src/gallium/winsys/i965/drm/SConscript
+++ b/src/gallium/winsys/i965/drm/SConscript
@@ -2,6 +2,8 @@ Import('*')
env = env.Clone()
+env.ParseConfig('pkg-config --cflags libdrm')
+
i965drm_sources = [
'i965_drm_api.c',
'i965_drm_buffer.c',
diff --git a/src/gallium/winsys/radeon/drm/SConscript b/src/gallium/winsys/radeon/drm/SConscript
index fab4292951..60e409fe10 100644
--- a/src/gallium/winsys/radeon/drm/SConscript
+++ b/src/gallium/winsys/radeon/drm/SConscript
@@ -8,6 +8,7 @@ radeon_sources = [
'radeon_r300.c',
]
+env.ParseConfig('pkg-config --cflags libdrm_radeon')
env.Append(CPPPATH = '#/src/gallium/drivers/r300')
radeonwinsys = env.ConvenienceLibrary(
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm.c b/src/gallium/winsys/radeon/drm/radeon_drm.c
index 8c22738004..8d981b22e3 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm.c
@@ -100,8 +100,8 @@ static void do_ioctls(int fd, struct radeon_libdrm_winsys* winsys)
version->version_minor >= 1;
#endif
- /* XXX */
- winsys->tex3d_mip_bug = TRUE;
+ winsys->drm_2_3_0 = version->version_major > 2 ||
+ version->version_minor >= 3;
info.request = RADEON_INFO_DEVICE_ID;
retval = drmCommandWriteRead(fd, DRM_RADEON_INFO, &info, sizeof(info));
diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
index 9824ada5b3..b836649892 100644
--- a/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
+++ b/src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
@@ -22,6 +22,8 @@ struct radeon_drm_buffer {
boolean flinked;
uint32_t flink;
+ uint32_t tileflags;
+ uint32_t pitch;
struct radeon_drm_buffer *next, *prev;
};
@@ -318,6 +320,9 @@ void radeon_drm_bufmgr_get_tiling(struct pb_buffer *_buf,
radeon_bo_get_tiling(buf->bo, &flags, &pitch);
+ buf->tileflags = flags;
+ buf->pitch = pitch;
+
*microtiled = R300_BUFFER_LINEAR;
*macrotiled = R300_BUFFER_LINEAR;
if (flags & RADEON_BO_FLAGS_MICRO_TILE)
@@ -333,7 +338,7 @@ void radeon_drm_bufmgr_set_tiling(struct pb_buffer *_buf,
uint32_t pitch)
{
struct radeon_drm_buffer *buf = get_drm_buffer(_buf);
- uint32_t flags = 0, old_flags, old_pitch;
+ uint32_t flags = 0;
if (microtiled == R300_BUFFER_TILED)
flags |= RADEON_BO_FLAGS_MICRO_TILE;
/* XXX Remove this ifdef when libdrm version 2.4.19 becomes mandatory. */
@@ -344,17 +349,15 @@ void radeon_drm_bufmgr_set_tiling(struct pb_buffer *_buf,
if (macrotiled == R300_BUFFER_TILED)
flags |= RADEON_BO_FLAGS_MACRO_TILE;
- radeon_bo_get_tiling(buf->bo, &old_flags, &old_pitch);
-
- if (flags != old_flags || pitch != old_pitch) {
+ if (flags != buf->tileflags || pitch != buf->pitch) {
/* Tiling determines how DRM treats the buffer data.
* We must flush CS when changing it if the buffer is referenced. */
if (radeon_bo_is_referenced_by_cs(buf->bo, buf->mgr->rws->cs)) {
buf->mgr->rws->flush_cb(buf->mgr->rws->flush_data);
}
- }
- radeon_bo_set_tiling(buf->bo, flags, pitch);
+ radeon_bo_set_tiling(buf->bo, flags, pitch);
+ }
}
boolean radeon_drm_bufmgr_add_buffer(struct pb_buffer *_buf,
diff --git a/src/gallium/winsys/radeon/drm/radeon_r300.c b/src/gallium/winsys/radeon/drm/radeon_r300.c
index 2fcf7cf982..80923de937 100644
--- a/src/gallium/winsys/radeon/drm/radeon_r300.c
+++ b/src/gallium/winsys/radeon/drm/radeon_r300.c
@@ -201,6 +201,13 @@ static void radeon_write_cs_dword(struct r300_winsys_screen *rws,
radeon_cs_write_dword(ws->cs, dword);
}
+static void radeon_write_cs_table(struct r300_winsys_screen *rws,
+ const void *table, unsigned count)
+{
+ struct radeon_libdrm_winsys *ws = radeon_winsys_screen(rws);
+ radeon_cs_write_table(ws->cs, table, count);
+}
+
static void radeon_write_cs_reloc(struct r300_winsys_screen *rws,
struct r300_winsys_buffer *buf,
uint32_t rd,
@@ -265,8 +272,8 @@ static uint32_t radeon_get_value(struct r300_winsys_screen *rws,
return ws->z_pipes;
case R300_VID_SQUARE_TILING_SUPPORT:
return ws->squaretiling;
- case R300_VID_TEX3D_MIP_BUG:
- return ws->tex3d_mip_bug;
+ case R300_VID_DRM_2_3_0:
+ return ws->drm_2_3_0;
}
return 0;
}
@@ -322,6 +329,7 @@ radeon_setup_winsys(int fd, struct radeon_libdrm_winsys* ws)
ws->base.check_cs = radeon_check_cs;
ws->base.begin_cs = radeon_begin_cs;
ws->base.write_cs_dword = radeon_write_cs_dword;
+ ws->base.write_cs_table = radeon_write_cs_table;
ws->base.write_cs_reloc = radeon_write_cs_reloc;
ws->base.end_cs = radeon_end_cs;
ws->base.flush_cs = radeon_flush_cs;
diff --git a/src/gallium/winsys/radeon/drm/radeon_winsys.h b/src/gallium/winsys/radeon/drm/radeon_winsys.h
index 396f258c31..ca789be8e9 100644
--- a/src/gallium/winsys/radeon/drm/radeon_winsys.h
+++ b/src/gallium/winsys/radeon/drm/radeon_winsys.h
@@ -60,8 +60,12 @@ struct radeon_libdrm_winsys {
/* Square tiling support. */
boolean squaretiling;
- /* Square tiling support. */
- boolean tex3d_mip_bug;
+ /* DRM 2.3.0
+ * - R500 VAP regs
+ * - MSPOS regs
+ * - Fixed texture 3D size calculation
+ */
+ boolean drm_2_3_0;
/* DRM FD */
int fd;
diff --git a/src/gallium/winsys/svga/drm/vmw_context.c b/src/gallium/winsys/svga/drm/vmw_context.c
index 90ffc4868f..104d03f273 100644
--- a/src/gallium/winsys/svga/drm/vmw_context.c
+++ b/src/gallium/winsys/svga/drm/vmw_context.c
@@ -114,6 +114,19 @@ vmw_svga_winsys_context(struct svga_winsys_context *swc)
}
+static INLINE unsigned
+vmw_translate_to_pb_flags(unsigned flags)
+{
+ unsigned f = 0;
+ if (flags & SVGA_RELOC_READ)
+ f |= PB_USAGE_GPU_READ;
+
+ if (flags & SVGA_RELOC_WRITE)
+ f |= PB_USAGE_GPU_WRITE;
+
+ return f;
+}
+
static enum pipe_error
vmw_swc_flush(struct svga_winsys_context *swc,
struct pipe_fence_handle **pfence)
@@ -264,6 +277,7 @@ vmw_swc_region_relocation(struct svga_winsys_context *swc,
{
struct vmw_svga_winsys_context *vswc = vmw_svga_winsys_context(swc);
struct vmw_region_relocation *reloc;
+ unsigned translated_flags;
enum pipe_error ret;
assert(vswc->region.staged < vswc->region.reserved);
@@ -275,7 +289,8 @@ vmw_swc_region_relocation(struct svga_winsys_context *swc,
++vswc->region.staged;
- ret = pb_validate_add_buffer(vswc->validate, reloc->buffer, flags);
+ translated_flags = vmw_translate_to_pb_flags(flags);
+ ret = pb_validate_add_buffer(vswc->validate, reloc->buffer, translated_flags);
/* TODO: Update pipebuffer to reserve buffers and not fail here */
assert(ret == PIPE_OK);
diff --git a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
index ec4f919d08..56d2df825d 100644
--- a/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
+++ b/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
@@ -48,6 +48,8 @@
#include <sys/shm.h>
#include <X11/extensions/XShm.h>
+DEBUG_GET_ONCE_BOOL_OPTION(xlib_no_shm, "XLIB_NO_SHM", FALSE)
+
/**
* Display target for Xlib winsys.
* Low-level OS/window system memory buffer
@@ -122,6 +124,9 @@ static char *alloc_shm(struct xm_displaytarget *buf, unsigned size)
{
XShmSegmentInfo *const shminfo = & buf->shminfo;
+ shminfo->shmid = -1;
+ shminfo->shmaddr = (char *) -1;
+
shminfo->shmid = shmget(IPC_PRIVATE, size, IPC_CREAT|0777);
if (shminfo->shmid < 0) {
return NULL;
@@ -383,15 +388,11 @@ xm_displaytarget_create(struct sw_winsys *winsys,
xm_dt->stride = align(util_format_get_stride(format, width), alignment);
size = xm_dt->stride * nblocksy;
- if (!debug_get_bool_option("XLIB_NO_SHM", FALSE))
- {
- xm_dt->shminfo.shmid = -1;
- xm_dt->shminfo.shmaddr = (char *) -1;
- xm_dt->shm = TRUE;
-
+ if (!debug_get_option_xlib_no_shm()) {
xm_dt->data = alloc_shm(xm_dt, size);
- if(!xm_dt->data)
- goto no_data;
+ if (xm_dt->data) {
+ xm_dt->shm = TRUE;
+ }
}
if(!xm_dt->data) {
diff --git a/src/glx/Makefile b/src/glx/Makefile
index 6711fdc61b..c6ebc49828 100644
--- a/src/glx/Makefile
+++ b/src/glx/Makefile
@@ -90,7 +90,7 @@ install: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
# Remove .o and backup files
clean:
- -rm -f $(TOP)/$(LIB_DIR)/libGL.so*
+ -rm -f $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB)
-rm -f *.o *~
-rm -f depend depend.bak
diff --git a/src/glx/XF86dri.c b/src/glx/XF86dri.c
index fdbdd43000..d0e88805bc 100644
--- a/src/glx/XF86dri.c
+++ b/src/glx/XF86dri.c
@@ -36,7 +36,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
/* THIS IS NOT AN X CONSORTIUM STANDARD */
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
#define NEED_REPLIES
#include <X11/Xlibint.h>
diff --git a/src/glx/apple/.gitignore b/src/glx/apple/.gitignore
new file mode 100644
index 0000000000..3cc2d13013
--- /dev/null
+++ b/src/glx/apple/.gitignore
@@ -0,0 +1,4 @@
+apple_xgl_api.[hc]
+exports.list
+stage.[1234]
+
diff --git a/src/glx/apple/GL_aliases b/src/glx/apple/GL_aliases
new file mode 100644
index 0000000000..8de22383a7
--- /dev/null
+++ b/src/glx/apple/GL_aliases
@@ -0,0 +1,10 @@
+#GL_EXT_texture_object
+alias AreTexturesResidentEXT AreTexturesResident
+alias BindTextureEXT BindTexture
+alias DeleteTexturesEXT DeleteTextures
+alias GenTexturesEXT GenTextures
+alias IsTextureEXT IsTexture
+alias PrioritizeTexturesEXT PrioritizeTextures
+
+# Due to type conflicts, we handle this differently
+#alias TexImage3DEXT TexImage3D
diff --git a/src/glx/apple/GL_extensions b/src/glx/apple/GL_extensions
new file mode 100644
index 0000000000..073666c367
--- /dev/null
+++ b/src/glx/apple/GL_extensions
@@ -0,0 +1,106 @@
+extension ARB_transpose_matrix
+extension ARB_vertex_program
+extension ARB_vertex_blend
+extension ARB_window_pos
+extension ARB_shader_objects
+extension ARB_vertex_shader
+extension ARB_shading_language_100
+extension ARB_imaging
+extension ARB_point_parameters
+extension ARB_texture_env_crossbar
+extension ARB_texture_border_clamp
+extension ARB_multitexture
+extension ARB_texture_env_add
+extension ARB_texture_cube_map
+extension ARB_texture_env_dot3
+extension ARB_multisample
+extension ARB_texture_env_combine
+extension ARB_texture_compression
+extension ARB_texture_mirrored_repeat
+extension ARB_shadow
+extension ARB_depth_texture
+extension ARB_shadow_ambient
+extension ARB_fragment_program
+extension ARB_fragment_program_shadow
+extension ARB_fragment_shader
+extension ARB_occlusion_query
+extension ARB_point_sprite
+extension ARB_texture_non_power_of_two
+extension ARB_vertex_buffer_object
+extension ARB_pixel_buffer_object
+extension ARB_draw_buffers
+extension ARB_shader_texture_lod
+extension ARB_texture_rectangle
+extension ARB_texture_float
+extension ARB_half_float_pixel
+
+extension EXT_multi_draw_arrays
+extension EXT_clip_volume_hint
+extension EXT_rescale_normal
+extension EXT_draw_range_elements
+extension EXT_fog_coord
+extension EXT_gpu_program_parameters
+extension EXT_geometry_shader4
+
+#The gl.spec has the wrong arguments for GetTransformFeedbackVaryingEXT
+#extension EXT_transform_feedback
+extension EXT_compiled_vertex_array
+extension EXT_framebuffer_object
+extension EXT_framebuffer_blit
+extension EXT_framebuffer_multisample
+extension EXT_texture_rectangle
+extension EXT_texture_env_add
+extension EXT_blend_color
+extension EXT_blend_minmax
+extension EXT_blend_subtract
+extension EXT_texture_lod_bias
+extension EXT_abgr
+extension EXT_bgra
+extension EXT_stencil_wrap
+extension EXT_texture_filter_anisotropic
+extension EXT_separate_specular_color
+extension EXT_secondary_color
+extension EXT_blend_func_separate
+extension EXT_shadow_funcs
+extension EXT_stencil_two_side
+extension EXT_texture_compression_s3tc
+extension EXT_texture_compression_dxt1
+extension EXT_texture_sRGB
+extension EXT_blend_equation_separate
+extension EXT_texture_mirror_clamp
+extension EXT_packed_depth_stencil
+
+extension APPLE_client_storage
+extension APPLE_specular_vector
+extension APPLE_transform_hint
+extension APPLE_packed_pixels
+#The gl.spec has different argument types for this:
+#extension APPLE_fence
+extension APPLE_vertex_array_object
+extension APPLE_vertex_program_evaluators
+extension APPLE_element_array
+extension APPLE_flush_render
+extension APPLE_aux_depth_stencil
+extension APPLE_flush_buffer_range
+extension APPLE_ycbcr_422
+#The gl.spec has different argument types for this:
+#extension APPLE_vertex_array_range
+extension APPLE_texture_range
+extension APPLE_float_pixels
+extension APPLE_pixel_buffer
+extension APPLE_object_purgeable
+
+#The OpenGL framework has moved this to the core OpenGL, and eliminated EXT_convolution listing.
+#extension EXT_convolution
+
+#Leopard supports these according to nm.
+#Applications should use the GL_EXTENSIONS list to determine capabilities.
+extension EXT_paletted_texture
+extension APPLE_fence
+extension NV_vertex_program4
+extension EXT_draw_buffers2
+extension EXT_gpu_shader4
+extension ATI_pn_triangles
+extension NV_register_combiners
+extension EXT_depth_bounds_test
+
diff --git a/src/glx/apple/GL_noop b/src/glx/apple/GL_noop
new file mode 100644
index 0000000000..2581be1a7d
--- /dev/null
+++ b/src/glx/apple/GL_noop
@@ -0,0 +1,15 @@
+#These are for compatibility with the old libGL.
+noop SGI_color_table
+noop EXT_convolution
+noop EXT_cull_vertex
+noop NV_fence
+noop SGIS_detail_texture
+noop SGIX_fragment_lighting
+noop SGIX_flush_raster
+noop EXT_vertex_array
+noop SGIX_instruments
+noop EXT_histogram
+noop NV_vertex_program
+noop PGI_misc_hints
+noop SGIS_multisample
+noop EXT_multisample
diff --git a/src/glx/apple/GL_promoted b/src/glx/apple/GL_promoted
new file mode 100644
index 0000000000..a16dc6ae65
--- /dev/null
+++ b/src/glx/apple/GL_promoted
@@ -0,0 +1,4 @@
+promoted MESA_window_pos
+promoted ARB_window_pos
+promoted EXT_copy_texture
+promoted ARB_vertex_program
diff --git a/src/glx/apple/Makefile b/src/glx/apple/Makefile
new file mode 100644
index 0000000000..279f7aded9
--- /dev/null
+++ b/src/glx/apple/Makefile
@@ -0,0 +1,129 @@
+TOP = ../../..
+
+include $(TOP)/configs/current
+
+#CC=gcc
+#GL_CFLAGS=-Wall -ggdb3 -Os -DPTHREADS -D_REENTRANT $(RC_CFLAGS) $(CFLAGS)
+#GL_LDFLAGS=-L$(INSTALL_DIR)/lib -L$(X11_DIR)/lib $(LDFLAGS) -Wl,-single_module
+
+TCLSH=tclsh8.5
+MKDIR=mkdir
+INSTALL=install
+LN=ln
+RM=rm
+
+#INCLUDE=-I. -Iinclude -I.. -DGLX_ALIAS_UNSUPPORTED -I$(INSTALL_DIR)/include -I$(X11_DIR)/include
+
+#COMPILE=$(CC) $(INCLUDE) $(GL_CFLAGS) -c
+
+#The directory with the final binaries.
+BUILD_DIR=builds
+
+all: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+
+SOURCES = \
+ apple_cgl.c \
+ apple_glx.c \
+ apple_glx_context.c \
+ apple_glx_drawable.c \
+ apple_glx_pbuffer.c \
+ apple_glx_pixmap.c \
+ apple_glx_surface.c \
+ apple_visual.c \
+ apple_xgl_api.c \
+ apple_xgl_api_additional.c \
+ apple_xgl_api_read.c \
+ apple_xgl_api_stereo.c \
+ apple_xgl_api_viewport.c \
+ appledri.c \
+ ../clientattrib.c \
+ ../compsize.c \
+ ../glcontextmodes.c \
+ glx_empty.c \
+ glx_error.c \
+ ../glx_pbuffer.c \
+ ../glx_query.c \
+ ../glxcmds.c \
+ ../glxcurrent.c \
+ ../glxext.c \
+ ../glxextensions.c \
+ glxreply.c \
+ ../pixel.c \
+ ../xfont.c
+
+include $(TOP)/src/mesa/sources.mak
+
+LDFLAGS += -lXplugin -framework ApplicationServices -framework CoreFoundation
+
+MESA_GLAPI_ASM_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_ASM_SOURCES))
+MESA_GLAPI_SOURCES = $(addprefix $(TOP)/src/mesa/, $(GLAPI_SOURCES))
+MESA_GLAPI_OBJECTS = $(addprefix $(TOP)/src/mesa/, $(GLAPI_OBJECTS))
+
+OBJECTS = $(SOURCES:.c=.o) # $(MESA_GLAPI_OBJECTS)
+
+INCLUDES = -I. -Iinclude -I..\
+ -I$(TOP)/include \
+ -I$(TOP)/include/GL/internal \
+ -I$(TOP)/src/mesa \
+ -I$(TOP)/src/mesa/glapi \
+ $(LIBDRM_CFLAGS) \
+ $(DRI2PROTO_CFLAGS) \
+ $(X11_INCLUDES)
+
+##### RULES #####
+
+$(OBJECTS) : apple_xgl_api.h
+
+apple_xgl_api.c : apple_xgl_api.h
+
+apple_xgl_api.h : gen_api_header.tcl gen_api_library.tcl gen_code.tcl gen_defs.tcl gen_exports.tcl gen_funcs.tcl gen_types.tcl
+ $(TCLSH) gen_code.tcl
+
+.c.o:
+ $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES) $< -o $@
+
+.S.o:
+ $(CC) -c $(INCLUDES) $(CFLAGS) $(EXTRA_DEFINES) $< -o $@
+
+##### TARGETS #####
+
+default: depend $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+
+# Make libGL
+$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) Makefile
+ $(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+ -major 1 -minor 2 $(MKLIB_OPTIONS) \
+ -install $(TOP)/$(LIB_DIR) -id $(INSTALL_LIB_DIR)/lib$(GL_LIB).1.dylib \
+ $(GL_LIB_DEPS) $(OBJECTS)
+
+depend: $(SOURCES) $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES) Makefile
+ rm -f depend
+ touch depend
+ $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(SOURCES) \
+ $(MESA_GLAPI_SOURCES) $(MESA_GLAPI_ASM_SOURCES)
+
+# Emacs tags
+tags:
+ etags `find . -name \*.[ch]` `find $(TOP)/include`
+
+install_headers: include/GL/gl.h
+ $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GL
+ $(INSTALL) -m 644 include/GL/gl.h $(DESTDIR)$(INSTALL_DIR)/include/GL
+
+install_libraries: $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
+ $(MAKE) -C $(TOP)/src/mesa install-libgl
+
+install: install_libraries
+
+# Remove .o and backup files
+clean:
+ -rm -f *.o *.a *~
+ -rm -f *.c~ *.h~
+ -rm -f apple_xgl_api.h apple_xgl_api.c
+ -rm -f *.dylib
+ -rm -f include/GL/gl.h
+ -rm -f $(TOP)/$(LIB_DIR)/$(GL_LIB_GLOB)
+ -rm -f *.o *~
+ -rm -f depend depend.bak
+
+-include depend
diff --git a/src/glx/apple/OVERALL_DESIGN b/src/glx/apple/OVERALL_DESIGN
new file mode 100644
index 0000000000..c394b2115c
--- /dev/null
+++ b/src/glx/apple/OVERALL_DESIGN
@@ -0,0 +1,18 @@
+A lot of the code is automatically generated.
+
+The following are generated based on specs/gl.spec and specs/enum.spec (from OpenGL.org):
+
+apple_xgl_api.h
+apple_xgl_api.c
+exports.list
+include/GL/gl.h
+include/GL/glext.h (includes the OpenGL framework glext.h)
+
+The gen_code.tcl script is what executes the various gen_*.tcl scripts to produce those.
+
+You will need Tcl 8.5 for the gen_code.tcl script.
+
+The tests/ directory contains some tests that are built in testbuilds.
+
+The tests built in testbuilds don't require installation of the library.
+
diff --git a/src/glx/apple/README_UPDATING b/src/glx/apple/README_UPDATING
new file mode 100644
index 0000000000..7b1bbe02c5
--- /dev/null
+++ b/src/glx/apple/README_UPDATING
@@ -0,0 +1,8 @@
+The design of most of this code is such that we extend the GLX structures
+with a void * named apple.
+
+The GLX functions that need to do Apple-specific things are passed
+&s->apple in order to initialize the private structures.
+
+Thus when updating, just run a diff against glxext.c or glxcmds.c, and
+manually merge from there as needed.
diff --git a/src/glx/apple/RELEASE_NOTES b/src/glx/apple/RELEASE_NOTES
new file mode 100644
index 0000000000..c5c603e76d
--- /dev/null
+++ b/src/glx/apple/RELEASE_NOTES
@@ -0,0 +1,71 @@
+AppleSGLX Release Notes
+
+o OpenGL Support
+
+AppleSGLX supports the same version of OpenGL as Leopard (OpenGL 2.1).
+Many extensions from the OpenGL framework are now builtin.
+
+This adds support for GLSL, and a variety of other features.
+
+o Thread Support
+
+Thread support has been improved since the libGL in XQuartz 2.3.2.1.
+
+o GLX 1.4 Support
+
+The GLX 1.3 and 1.4 functions should all work with a few exceptions
+as outlined in this document.
+
+o glXMakeContextCurrent (a GLX 1.3 feature)
+
+glXMakeContextCurrent should work with the readable drawable. The
+OpenGL functions: glReadPixels, glCopyPixels, and glCopyColorTable,
+should use the readable drawable if it's different than the rendering
+drawable.
+
+o glXGetProcAddress (a GLX 1.4 feature and ARB extension)
+
+glXGetProcAddress should work and allow getting the address of any
+extension functions you may need from the X11 libGL, or OpenGL framework
+libGL. Previous versions of the X11 libGL didn't allow getting the newer
+OpenGL framework addresses.
+
+o GLXPixmaps
+
+New support for GLXPixmaps works well with mixed X11 and OpenGL drawing
+operations. You can create them using glXCreateGLXPixmap or
+glXCreatePixmap.
+
+o GLXPbuffers
+
+Support for GLXPbuffers has been added. These are drawables that are
+not possible to render to with X11, which is allowed by the spec.
+A GLXPbuffer will never generate a clobber event, however
+glXSelectEvent and glXGetSelectedEvent should operate normally.
+
+Clobber events are not generated due to low-level architectural
+differences. The contents of your pbuffers will not be clobbered.
+
+o Shared Contexts
+
+Due to basic low-level architectural differences the usage of shared
+contexts requires a similar visual or GLXFBConfig be used in the
+creation of a shared context. It's best if you specify the same
+visual. This is due to a CGL design difference, and not something
+that is easily worked around. UPDATE: some changes made seem to
+help resolve this issue in many cases, so you may be able to use a
+shared context without this restriction.
+
+
+o Indirect
+
+The X server supports indirect fairly well, so OpenGL applications
+can be run remotely and displayed by XQuartz. This means you can run
+applications from a remote host on an XQuartz X server.
+
+AppleSGLX does not support indirect rendering. Any indirect context
+created will appear to glXIsDirect as an indirect context, but it
+does not actually support indirect rendering to a remote X server.
+
+AppleSGLX supports GLXPixmaps and GLXPbuffers with direct and indirect
+contexts, though they are all direct contexts by definition (see above).
diff --git a/src/glx/apple/TODO b/src/glx/apple/TODO
new file mode 100644
index 0000000000..4a063fe0ed
--- /dev/null
+++ b/src/glx/apple/TODO
@@ -0,0 +1,26 @@
+Test shared contexts!
+
+Go over every glxcmd in glxcmds.c and make sure we have them working.
+Verify the XError behavior of GLXPixmap support functions.
+
+Test GLXPixmap support with various pixmap depths.
+
+Test GLXPixmap support with invalid pixmaps (to stress the protocol code).
+
+-- Feb 10, 2009
+
+Test glXCopyContext.
+
+-- Dec 12 2008
+
+TEST glXCopyContext needs some work and additional code in apple_glx.c.
+
+----
+
+Make sure we report the proper list of GLX extensions available. Apple direct may not support some
+that Mesa does, and vice-versa.
+
+Modify create_destroy_context and create a new test called create_destroy_context_thread_race.
+Where 2 threads are doing the same sort of path of create and destroy. The locking should protect
+us there, but we need to verify nothing goes wrong.
+
diff --git a/src/glx/apple/apple_cgl.c b/src/glx/apple/apple_cgl.c
new file mode 100644
index 0000000000..737d757ed5
--- /dev/null
+++ b/src/glx/apple/apple_cgl.c
@@ -0,0 +1,128 @@
+/*
+ Copyright (c) 2008 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <dlfcn.h>
+
+#include "apple_cgl.h"
+#include "apple_glx.h"
+
+#ifndef OPENGL_FRAMEWORK_PATH
+#define OPENGL_FRAMEWORK_PATH "/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL"
+#endif
+
+static void *dl_handle = NULL;
+
+struct apple_cgl_api apple_cgl;
+
+static bool initialized = false;
+
+static void *
+sym(void *h, const char *name)
+{
+ void *s;
+
+ s = dlsym(h, name);
+
+ if (NULL == s) {
+ fprintf(stderr, "error: %s\n", dlerror());
+ abort();
+ }
+
+ return s;
+}
+
+void
+apple_cgl_init(void)
+{
+ void *h;
+ GLint major = 0, minor = 0;
+ const char *opengl_framework_path;
+
+ if (initialized)
+ return;
+
+ opengl_framework_path = getenv("OPENGL_FRAMEWORK_PATH");
+ if (!opengl_framework_path) {
+ opengl_framework_path = OPENGL_FRAMEWORK_PATH;
+ }
+
+ (void) dlerror(); /*drain dlerror */
+ h = dlopen(opengl_framework_path, RTLD_NOW);
+
+ if (NULL == h) {
+ fprintf(stderr, "error: unable to dlopen %s : %s\n",
+ opengl_framework_path, dlerror());
+ abort();
+ }
+
+ dl_handle = h;
+
+ apple_cgl.get_version = sym(h, "CGLGetVersion");
+
+ apple_cgl.get_version(&major, &minor);
+
+ apple_glx_diagnostic("CGL major %d minor %d\n", major, minor);
+
+ if (1 != major) {
+ fprintf(stderr, "WARNING: the CGL major version has changed!\n"
+ "libGL may be incompatible!\n");
+ }
+
+ apple_cgl.choose_pixel_format = sym(h, "CGLChoosePixelFormat");
+ apple_cgl.destroy_pixel_format = sym(h, "CGLDestroyPixelFormat");
+
+ apple_cgl.clear_drawable = sym(h, "CGLClearDrawable");
+ apple_cgl.flush_drawable = sym(h, "CGLFlushDrawable");
+
+ apple_cgl.create_context = sym(h, "CGLCreateContext");
+ apple_cgl.destroy_context = sym(h, "CGLDestroyContext");
+
+ apple_cgl.set_current_context = sym(h, "CGLSetCurrentContext");
+ apple_cgl.get_current_context = sym(h, "CGLGetCurrentContext");
+ apple_cgl.error_string = sym(h, "CGLErrorString");
+
+ apple_cgl.set_off_screen = sym(h, "CGLSetOffScreen");
+
+ apple_cgl.copy_context = sym(h, "CGLCopyContext");
+
+ apple_cgl.create_pbuffer = sym(h, "CGLCreatePBuffer");
+ apple_cgl.destroy_pbuffer = sym(h, "CGLDestroyPBuffer");
+ apple_cgl.set_pbuffer = sym(h, "CGLSetPBuffer");
+
+ initialized = true;
+}
+
+void *
+apple_cgl_get_dl_handle(void)
+{
+ return dl_handle;
+}
diff --git a/src/glx/apple/apple_cgl.h b/src/glx/apple/apple_cgl.h
new file mode 100644
index 0000000000..5e98a00fe7
--- /dev/null
+++ b/src/glx/apple/apple_cgl.h
@@ -0,0 +1,86 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#ifndef APPLE_CGL_H
+#define APPLE_CGL_H
+
+#include <stdio.h>
+#include <OpenGL/CGLCurrent.h>
+#include <OpenGL/CGLTypes.h>
+#include <OpenGL/OpenGL.h>
+
+/* For GLint and GLsizei on Tiger */
+#include <OpenGL/gl.h>
+
+struct apple_cgl_api
+{
+ void (*get_version) (GLint * majorvers, GLint * minorvers);
+
+ CGLError(*choose_pixel_format) (const CGLPixelFormatAttribute * attribs,
+ CGLPixelFormatObj * pix, GLint * npix);
+ CGLError(*destroy_pixel_format) (CGLPixelFormatObj pix);
+
+ CGLError(*clear_drawable) (CGLContextObj ctx);
+ CGLError(*flush_drawable) (CGLContextObj ctx);
+
+ CGLError(*create_context) (CGLPixelFormatObj pix, CGLContextObj share,
+ CGLContextObj * ctx);
+ CGLError(*destroy_context) (CGLContextObj pix);
+
+ CGLError(*set_current_context) (CGLContextObj ctx);
+ CGLContextObj(*get_current_context) (void);
+ const char *(*error_string) (CGLError error);
+
+ CGLError(*set_off_screen) (CGLContextObj ctx,
+ GLsizei width, GLsizei height, GLint rowbytes,
+ void *baseaddr);
+
+ CGLError(*copy_context) (CGLContextObj src, CGLContextObj dst,
+ GLbitfield mask);
+
+ CGLError(*create_pbuffer) (GLsizei width,
+ GLsizei height,
+ GLenum target,
+ GLenum internalFormat,
+ GLint max_level, CGLPBufferObj * pbuffer);
+
+ CGLError(*destroy_pbuffer) (CGLPBufferObj pbuffer);
+
+ CGLError(*set_pbuffer) (CGLContextObj ctx,
+ CGLPBufferObj pbuffer,
+ GLenum face, GLint level, GLint screen);
+};
+
+extern struct apple_cgl_api apple_cgl;
+
+extern void apple_cgl_init(void);
+
+extern void *apple_cgl_get_dl_handle(void);
+
+#endif
diff --git a/src/glx/apple/apple_exports.list b/src/glx/apple/apple_exports.list
new file mode 100644
index 0000000000..f4790119a5
--- /dev/null
+++ b/src/glx/apple/apple_exports.list
@@ -0,0 +1,623 @@
+_glAccum
+_glAlphaFunc
+_glAreTexturesResident
+_glArrayElement
+_glBegin
+_glBindTexture
+_glBitmap
+_glBlendColor
+_glBlendEquation
+_glBlendEquationSeparate
+_glBlendFunc
+_glCallList
+_glCallLists
+_glClear
+_glClearAccum
+_glClearColor
+_glClearDepth
+_glClearIndex
+_glClearStencil
+_glClipPlane
+_glColor3b
+_glColor3bv
+_glColor3d
+_glColor3dv
+_glColor3f
+_glColor3fv
+_glColor3i
+_glColor3iv
+_glColor3s
+_glColor3sv
+_glColor3ub
+_glColor3ubv
+_glColor3ui
+_glColor3uiv
+_glColor3us
+_glColor3usv
+_glColor4b
+_glColor4bv
+_glColor4d
+_glColor4dv
+_glColor4f
+_glColor4fv
+_glColor4i
+_glColor4iv
+_glColor4s
+_glColor4sv
+_glColor4ub
+_glColor4ubv
+_glColor4ui
+_glColor4uiv
+_glColor4us
+_glColor4usv
+_glColorMask
+_glColorMaterial
+_glColorPointer
+_glColorSubTable
+_glColorTable
+_glColorTableParameterfv
+_glColorTableParameteriv
+_glConvolutionFilter1D
+_glConvolutionFilter2D
+_glConvolutionParameterf
+_glConvolutionParameterfv
+_glConvolutionParameteri
+_glConvolutionParameteriv
+_glCopyColorSubTable
+_glCopyColorTable
+_glCopyConvolutionFilter1D
+_glCopyConvolutionFilter2D
+_glCopyPixels
+_glCopyTexImage1D
+_glCopyTexImage2D
+_glCopyTexSubImage1D
+_glCopyTexSubImage2D
+_glCopyTexSubImage3D
+_glCullFace
+_glDeleteLists
+_glDeleteTextures
+_glDepthFunc
+_glDepthMask
+_glDepthRange
+_glDisable
+_glDisableClientState
+_glDrawArrays
+_glDrawBuffer
+_glDrawElements
+_glDrawPixels
+_glDrawRangeElements
+_glEdgeFlag
+_glEdgeFlagPointer
+_glEdgeFlagv
+_glEnable
+_glEnableClientState
+_glEnd
+_glEndList
+_glEvalCoord1d
+_glEvalCoord1dv
+_glEvalCoord1f
+_glEvalCoord1fv
+_glEvalCoord2d
+_glEvalCoord2dv
+_glEvalCoord2f
+_glEvalCoord2fv
+_glEvalMesh1
+_glEvalMesh2
+_glEvalPoint1
+_glEvalPoint2
+_glFeedbackBuffer
+_glFinish
+_glFlush
+_glFogf
+_glFogfv
+_glFogi
+_glFogiv
+_glFrontFace
+_glFrustum
+_glGenLists
+_glGenTextures
+_glGetBooleanv
+_glGetClipPlane
+_glGetColorTable
+_glGetColorTableParameterfv
+_glGetColorTableParameteriv
+_glGetConvolutionFilter
+_glGetConvolutionParameterfv
+_glGetConvolutionParameteriv
+_glGetDoublev
+_glGetError
+_glGetFloatv
+_glGetHistogram
+_glGetHistogramParameterfv
+_glGetHistogramParameteriv
+_glGetIntegerv
+_glGetLightfv
+_glGetLightiv
+_glGetMapdv
+_glGetMapfv
+_glGetMapiv
+_glGetMaterialfv
+_glGetMaterialiv
+_glGetMinmax
+_glGetMinmaxParameterfv
+_glGetMinmaxParameteriv
+_glGetPixelMapfv
+_glGetPixelMapuiv
+_glGetPixelMapusv
+_glGetPointerv
+_glGetPolygonStipple
+_glGetSeparableFilter
+_glGetString
+_glGetTexEnvfv
+_glGetTexEnviv
+_glGetTexGendv
+_glGetTexGenfv
+_glGetTexGeniv
+_glGetTexImage
+_glGetTexLevelParameterfv
+_glGetTexLevelParameteriv
+_glGetTexParameterfv
+_glGetTexParameteriv
+_glHint
+_glHistogram
+_glIndexMask
+_glIndexPointer
+_glIndexd
+_glIndexdv
+_glIndexf
+_glIndexfv
+_glIndexi
+_glIndexiv
+_glIndexs
+_glIndexsv
+_glIndexub
+_glIndexubv
+_glInitNames
+_glInterleavedArrays
+_glIsEnabled
+_glIsList
+_glIsTexture
+_glLightModelf
+_glLightModelfv
+_glLightModeli
+_glLightModeliv
+_glLightf
+_glLightfv
+_glLighti
+_glLightiv
+_glLineStipple
+_glLineWidth
+_glListBase
+_glLoadIdentity
+_glLoadMatrixd
+_glLoadMatrixf
+_glLoadName
+_glLogicOp
+_glMap1d
+_glMap1f
+_glMap2d
+_glMap2f
+_glMapGrid1d
+_glMapGrid1f
+_glMapGrid2d
+_glMapGrid2f
+_glMaterialf
+_glMaterialfv
+_glMateriali
+_glMaterialiv
+_glMatrixMode
+_glMinmax
+_glMultMatrixd
+_glMultMatrixf
+_glNewList
+_glNormal3b
+_glNormal3bv
+_glNormal3d
+_glNormal3dv
+_glNormal3f
+_glNormal3fv
+_glNormal3i
+_glNormal3iv
+_glNormal3s
+_glNormal3sv
+_glNormalPointer
+_glOrtho
+_glPassThrough
+_glPixelMapfv
+_glPixelMapuiv
+_glPixelMapusv
+_glPixelStoref
+_glPixelStorei
+_glPixelTransferf
+_glPixelTransferi
+_glPixelZoom
+_glPointSize
+_glPolygonMode
+_glPolygonOffset
+_glPolygonStipple
+_glPopAttrib
+_glPopClientAttrib
+_glPopMatrix
+_glPopName
+_glPrioritizeTextures
+_glPushAttrib
+_glPushClientAttrib
+_glPushMatrix
+_glPushName
+_glRasterPos2d
+_glRasterPos2dv
+_glRasterPos2f
+_glRasterPos2fv
+_glRasterPos2i
+_glRasterPos2iv
+_glRasterPos2s
+_glRasterPos2sv
+_glRasterPos3d
+_glRasterPos3dv
+_glRasterPos3f
+_glRasterPos3fv
+_glRasterPos3i
+_glRasterPos3iv
+_glRasterPos3s
+_glRasterPos3sv
+_glRasterPos4d
+_glRasterPos4dv
+_glRasterPos4f
+_glRasterPos4fv
+_glRasterPos4i
+_glRasterPos4iv
+_glRasterPos4s
+_glRasterPos4sv
+_glReadBuffer
+_glReadPixels
+_glRectd
+_glRectdv
+_glRectf
+_glRectfv
+_glRecti
+_glRectiv
+_glRects
+_glRectsv
+_glRenderMode
+_glResetHistogram
+_glResetMinmax
+_glRotated
+_glRotatef
+_glScaled
+_glScalef
+_glScissor
+_glSelectBuffer
+_glSeparableFilter2D
+_glShadeModel
+_glStencilFunc
+_glStencilMask
+_glStencilOp
+_glTexCoord1d
+_glTexCoord1dv
+_glTexCoord1f
+_glTexCoord1fv
+_glTexCoord1i
+_glTexCoord1iv
+_glTexCoord1s
+_glTexCoord1sv
+_glTexCoord2d
+_glTexCoord2dv
+_glTexCoord2f
+_glTexCoord2fv
+_glTexCoord2i
+_glTexCoord2iv
+_glTexCoord2s
+_glTexCoord2sv
+_glTexCoord3d
+_glTexCoord3dv
+_glTexCoord3f
+_glTexCoord3fv
+_glTexCoord3i
+_glTexCoord3iv
+_glTexCoord3s
+_glTexCoord3sv
+_glTexCoord4d
+_glTexCoord4dv
+_glTexCoord4f
+_glTexCoord4fv
+_glTexCoord4i
+_glTexCoord4iv
+_glTexCoord4s
+_glTexCoord4sv
+_glTexCoordPointer
+_glTexEnvf
+_glTexEnvfv
+_glTexEnvi
+_glTexEnviv
+_glTexGend
+_glTexGendv
+_glTexGenf
+_glTexGenfv
+_glTexGeni
+_glTexGeniv
+_glTexImage1D
+_glTexImage2D
+_glTexImage3D
+_glTexParameterf
+_glTexParameterfv
+_glTexParameteri
+_glTexParameteriv
+_glTexSubImage1D
+_glTexSubImage2D
+_glTexSubImage3D
+_glTranslated
+_glTranslatef
+_glVertex2d
+_glVertex2dv
+_glVertex2f
+_glVertex2fv
+_glVertex2i
+_glVertex2iv
+_glVertex2s
+_glVertex2sv
+_glVertex3d
+_glVertex3dv
+_glVertex3f
+_glVertex3fv
+_glVertex3i
+_glVertex3iv
+_glVertex3s
+_glVertex3sv
+_glVertex4d
+_glVertex4dv
+_glVertex4f
+_glVertex4fv
+_glVertex4i
+_glVertex4iv
+_glVertex4s
+_glVertex4sv
+_glVertexPointer
+_glViewport
+_glSampleCoverage
+_glSamplePass
+_glLoadTransposeMatrixf
+_glLoadTransposeMatrixd
+_glMultTransposeMatrixf
+_glMultTransposeMatrixd
+_glCompressedTexImage3D
+_glCompressedTexImage2D
+_glCompressedTexImage1D
+_glCompressedTexSubImage3D
+_glCompressedTexSubImage2D
+_glCompressedTexSubImage1D
+_glGetCompressedTexImage
+_glActiveTexture
+_glClientActiveTexture
+_glMultiTexCoord1d
+_glMultiTexCoord1dv
+_glMultiTexCoord1f
+_glMultiTexCoord1fv
+_glMultiTexCoord1i
+_glMultiTexCoord1iv
+_glMultiTexCoord1s
+_glMultiTexCoord1sv
+_glMultiTexCoord2d
+_glMultiTexCoord2dv
+_glMultiTexCoord2f
+_glMultiTexCoord2fv
+_glMultiTexCoord2i
+_glMultiTexCoord2iv
+_glMultiTexCoord2s
+_glMultiTexCoord2sv
+_glMultiTexCoord3d
+_glMultiTexCoord3dv
+_glMultiTexCoord3f
+_glMultiTexCoord3fv
+_glMultiTexCoord3i
+_glMultiTexCoord3iv
+_glMultiTexCoord3s
+_glMultiTexCoord3sv
+_glMultiTexCoord4d
+_glMultiTexCoord4dv
+_glMultiTexCoord4f
+_glMultiTexCoord4fv
+_glMultiTexCoord4i
+_glMultiTexCoord4iv
+_glMultiTexCoord4s
+_glMultiTexCoord4sv
+_glFogCoordf
+_glFogCoordfv
+_glFogCoordd
+_glFogCoorddv
+_glFogCoordPointer
+_glSecondaryColor3b
+_glSecondaryColor3bv
+_glSecondaryColor3d
+_glSecondaryColor3dv
+_glSecondaryColor3f
+_glSecondaryColor3fv
+_glSecondaryColor3i
+_glSecondaryColor3iv
+_glSecondaryColor3s
+_glSecondaryColor3sv
+_glSecondaryColor3ub
+_glSecondaryColor3ubv
+_glSecondaryColor3ui
+_glSecondaryColor3uiv
+_glSecondaryColor3us
+_glSecondaryColor3usv
+_glSecondaryColorPointer
+_glPointParameterf
+_glPointParameterfv
+_glPointParameteri
+_glPointParameteriv
+_glBlendFuncSeparate
+_glMultiDrawArrays
+_glMultiDrawElements
+_glWindowPos2d
+_glWindowPos2dv
+_glWindowPos2f
+_glWindowPos2fv
+_glWindowPos2i
+_glWindowPos2iv
+_glWindowPos2s
+_glWindowPos2sv
+_glWindowPos3d
+_glWindowPos3dv
+_glWindowPos3f
+_glWindowPos3fv
+_glWindowPos3i
+_glWindowPos3iv
+_glWindowPos3s
+_glWindowPos3sv
+_glGenQueries
+_glDeleteQueries
+_glIsQuery
+_glBeginQuery
+_glEndQuery
+_glGetQueryiv
+_glGetQueryObjectiv
+_glGetQueryObjectuiv
+_glBindBuffer
+_glDeleteBuffers
+_glGenBuffers
+_glIsBuffer
+_glBufferData
+_glBufferSubData
+_glGetBufferSubData
+_glMapBuffer
+_glUnmapBuffer
+_glGetBufferParameteriv
+_glGetBufferPointerv
+_glDrawBuffers
+_glVertexAttrib1d
+_glVertexAttrib1dv
+_glVertexAttrib1f
+_glVertexAttrib1fv
+_glVertexAttrib1s
+_glVertexAttrib1sv
+_glVertexAttrib2d
+_glVertexAttrib2dv
+_glVertexAttrib2f
+_glVertexAttrib2fv
+_glVertexAttrib2s
+_glVertexAttrib2sv
+_glVertexAttrib3d
+_glVertexAttrib3dv
+_glVertexAttrib3f
+_glVertexAttrib3fv
+_glVertexAttrib3s
+_glVertexAttrib3sv
+_glVertexAttrib4Nbv
+_glVertexAttrib4Niv
+_glVertexAttrib4Nsv
+_glVertexAttrib4Nub
+_glVertexAttrib4Nubv
+_glVertexAttrib4Nuiv
+_glVertexAttrib4Nusv
+_glVertexAttrib4bv
+_glVertexAttrib4d
+_glVertexAttrib4dv
+_glVertexAttrib4f
+_glVertexAttrib4fv
+_glVertexAttrib4iv
+_glVertexAttrib4s
+_glVertexAttrib4sv
+_glVertexAttrib4ubv
+_glVertexAttrib4uiv
+_glVertexAttrib4usv
+_glVertexAttribPointer
+_glEnableVertexAttribArray
+_glDisableVertexAttribArray
+_glGetVertexAttribdv
+_glGetVertexAttribfv
+_glGetVertexAttribiv
+_glGetVertexAttribPointerv
+_glDeleteShader
+_glDetachShader
+_glCreateShader
+_glShaderSource
+_glCompileShader
+_glCreateProgram
+_glAttachShader
+_glLinkProgram
+_glUseProgram
+_glDeleteProgram
+_glValidateProgram
+_glUniform1f
+_glUniform2f
+_glUniform3f
+_glUniform4f
+_glUniform1i
+_glUniform2i
+_glUniform3i
+_glUniform4i
+_glUniform1fv
+_glUniform2fv
+_glUniform3fv
+_glUniform4fv
+_glUniform1iv
+_glUniform2iv
+_glUniform3iv
+_glUniform4iv
+_glUniformMatrix2fv
+_glUniformMatrix3fv
+_glUniformMatrix4fv
+_glIsShader
+_glIsProgram
+_glGetShaderiv
+_glGetProgramiv
+_glGetAttachedShaders
+_glGetShaderInfoLog
+_glGetProgramInfoLog
+_glGetUniformLocation
+_glGetActiveUniform
+_glGetUniformfv
+_glGetUniformiv
+_glGetShaderSource
+_glBindAttribLocation
+_glGetActiveAttrib
+_glGetAttribLocation
+_glStencilFuncSeparate
+_glStencilOpSeparate
+_glStencilMaskSeparate
+_glUniformMatrix2x3fv
+_glUniformMatrix3x2fv
+_glUniformMatrix2x4fv
+_glUniformMatrix4x2fv
+_glUniformMatrix3x4fv
+_glUniformMatrix4x3fv
+_glXChooseVisual
+_glXCreateContext
+_glXDestroyContext
+_glXMakeCurrent
+_glXCopyContext
+_glXSwapBuffers
+_glXCreateGLXPixmap
+_glXDestroyGLXPixmap
+_glXQueryExtension
+_glXQueryVersion
+_glXIsDirect
+_glXGetConfig
+_glXGetCurrentContext
+_glXGetCurrentDrawable
+_glXWaitGL
+_glXWaitX
+_glXUseXFont
+_glXQueryExtensionsString
+_glXQueryServerString
+_glXGetClientString
+_glXGetCurrentDisplay
+_glXChooseFBConfig
+_glXGetFBConfigAttrib
+_glXGetFBConfigs
+_glXGetVisualFromFBConfig
+_glXCreateWindow
+_glXDestroyWindow
+_glXCreatePixmap
+_glXDestroyPixmap
+_glXCreatePbuffer
+_glXDestroyPbuffer
+_glXQueryDrawable
+_glXCreateNewContext
+_glXMakeContextCurrent
+_glXGetCurrentReadDrawable
+_glXQueryContext
+_glXSelectEvent
+_glXGetSelectedEvent
+_glXGetProcAddress
diff --git a/src/glx/apple/apple_glx.c b/src/glx/apple/apple_glx.c
new file mode 100644
index 0000000000..d9bc091715
--- /dev/null
+++ b/src/glx/apple/apple_glx.c
@@ -0,0 +1,214 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <stdarg.h>
+#include <dlfcn.h>
+#include "appledri.h"
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#include "apple_cgl.h"
+#include "apple_xgl_api.h"
+
+static bool initialized = false;
+static int dri_event_base = 0;
+
+const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
+
+#ifndef OPENGL_LIB_PATH
+#define OPENGL_LIB_PATH "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"
+#endif
+
+static void *libgl_handle = NULL;
+
+static bool diagnostic = false;
+
+void
+apple_glx_diagnostic(const char *fmt, ...)
+{
+ va_list vl;
+
+ if (diagnostic) {
+ fprintf(stderr, "DIAG: ");
+
+ va_start(vl, fmt);
+ vfprintf(stderr, fmt, vl);
+ va_end(vl);
+ }
+}
+
+int
+apple_get_dri_event_base(void)
+{
+ if (!initialized) {
+ fprintf(stderr,
+ "error: dri_event_base called before apple_init_glx!\n");
+ abort();
+ }
+ return dri_event_base;
+}
+
+static void
+surface_notify_handler(Display * dpy, unsigned int uid, int kind)
+{
+
+ switch (kind) {
+ case AppleDRISurfaceNotifyDestroyed:
+ apple_glx_diagnostic("%s: surface destroyed %u\n", __func__, uid);
+ apple_glx_surface_destroy(uid);
+ break;
+
+ case AppleDRISurfaceNotifyChanged:{
+ int updated;
+
+ updated = apple_glx_context_surface_changed(uid, pthread_self());
+
+ apple_glx_diagnostic("surface notify updated %d\n", updated);
+ }
+ break;
+
+ default:
+ fprintf(stderr, "unhandled kind of event: %d in %s\n", kind, __func__);
+ }
+}
+
+xp_client_id
+apple_glx_get_client_id(void)
+{
+ static xp_client_id id;
+
+ if (0 == id) {
+ if ((XP_Success != xp_init(XP_IN_BACKGROUND)) ||
+ (Success != xp_get_client_id(&id))) {
+ return 0;
+ }
+ }
+
+ return id;
+}
+
+/* Return true if an error occured. */
+bool
+apple_init_glx(Display * dpy)
+{
+ int eventBase, errorBase;
+ int major, minor, patch;
+
+ if (!XAppleDRIQueryExtension(dpy, &eventBase, &errorBase))
+ return true;
+
+ if (!XAppleDRIQueryVersion(dpy, &major, &minor, &patch))
+ return true;
+
+ if (initialized)
+ return false;
+
+ if (getenv("LIBGL_DIAGNOSTIC")) {
+ printf("initializing libGL in %s\n", __func__);
+ diagnostic = true;
+ }
+
+ apple_cgl_init();
+ apple_xgl_init_direct();
+ libgl_handle = dlopen(OPENGL_LIB_PATH, RTLD_LAZY);
+ (void) apple_glx_get_client_id();
+
+ XAppleDRISetSurfaceNotifyHandler(surface_notify_handler);
+
+ /* This should really be per display. */
+ dri_event_base = eventBase;
+ initialized = true;
+
+ return false;
+}
+
+void
+apple_glx_swap_buffers(void *ptr)
+{
+ struct apple_glx_context *ac = ptr;
+
+ /* This may not be needed with CGLFlushDrawable: */
+ glFlush();
+ apple_cgl.flush_drawable(ac->context_obj);
+}
+
+void *
+apple_glx_get_proc_address(const GLubyte * procname)
+{
+ size_t len;
+ void *h, *s;
+ char *pname = (char *) procname;
+
+ assert(NULL != procname);
+ len = strlen(pname);
+
+ if (len < 3) {
+ return NULL;
+ }
+
+ if ((pname != strstr(pname, "glX")) && (pname != strstr(pname, "gl"))) {
+ fprintf(stderr,
+ "warning: get proc address request is not for a gl or glX function");
+ return NULL;
+ }
+
+ /* Search using the default symbols first. */
+ (void) dlerror(); /*drain dlerror */
+ h = dlopen(NULL, RTLD_NOW);
+ if (NULL == h) {
+ fprintf(stderr, "warning: get proc address: %s\n", dlerror());
+ return NULL;
+ }
+
+ s = dlsym(h, pname);
+
+ if (NULL == s) {
+ /* Try the libGL.dylib from the OpenGL.framework. */
+ s = dlsym(libgl_handle, pname);
+ }
+
+ dlclose(h);
+
+ return s;
+}
+
+void
+apple_glx_waitx(Display * dpy, void *ptr)
+{
+ struct apple_private_context *ac = ptr;
+
+ (void) ac;
+
+ glFlush();
+ glFinish();
+ XSync(dpy, False);
+}
diff --git a/src/glx/apple/apple_glx.h b/src/glx/apple/apple_glx.h
new file mode 100644
index 0000000000..9b3643bf15
--- /dev/null
+++ b/src/glx/apple/apple_glx.h
@@ -0,0 +1,49 @@
+/*
+ Copyright (c) 2008 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#ifndef APPLE_GLX_H
+#define APPLE_GLX_H
+
+#include <stdbool.h>
+#include <GL/gl.h>
+#include <GL/glxint.h>
+#include <X11/Xlib.h>
+
+#define XP_NO_X_HEADERS
+#include <Xplugin.h>
+
+void apple_glx_diagnostic(const char *fmt, ...);
+xp_client_id apple_glx_get_client_id(void);
+bool apple_init_glx(Display * dpy);
+void apple_glx_swap_buffers(void *ptr);
+void *apple_glx_get_proc_address(const GLubyte * procname);
+void apple_glx_waitx(Display * dpy, void *ptr);
+int apple_get_dri_event_base(void);
+
+#endif
diff --git a/src/glx/apple/apple_glx_context.c b/src/glx/apple/apple_glx_context.c
new file mode 100644
index 0000000000..c58d05a59a
--- /dev/null
+++ b/src/glx/apple/apple_glx_context.c
@@ -0,0 +1,616 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <assert.h>
+#include <pthread.h>
+
+#include <fcntl.h>
+#include <sys/mman.h>
+#include <unistd.h>
+
+// Get the newer glext.h first
+#include <GL/gl.h>
+#include <GL/glext.h>
+
+#include <OpenGL/CGLTypes.h>
+#include <OpenGL/CGLCurrent.h>
+#include <OpenGL/OpenGL.h>
+
+#include "glxclient.h"
+
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#include "appledri.h"
+#include "apple_visual.h"
+#include "apple_cgl.h"
+#include "apple_glx_drawable.h"
+
+static pthread_mutex_t context_lock = PTHREAD_MUTEX_INITIALIZER;
+
+/*
+ * This should be locked on creation and destruction of the
+ * apple_glx_contexts.
+ *
+ * It's also locked when the surface_notify_handler is searching
+ * for a uid associated with a surface.
+ */
+static struct apple_glx_context *context_list = NULL;
+
+/* This guards the context_list above. */
+static void
+lock_context_list(void)
+{
+ int err;
+
+ err = pthread_mutex_lock(&context_lock);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutex_lock failure in %s: %d\n",
+ __func__, err);
+ abort();
+ }
+}
+
+static void
+unlock_context_list(void)
+{
+ int err;
+
+ err = pthread_mutex_unlock(&context_lock);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutex_unlock failure in %s: %d\n",
+ __func__, err);
+ abort();
+ }
+}
+
+static bool
+is_context_valid(struct apple_glx_context *ac)
+{
+ struct apple_glx_context *i;
+
+ lock_context_list();
+
+ for (i = context_list; i; i = i->next) {
+ if (ac == i) {
+ unlock_context_list();
+ return true;
+ }
+ }
+
+ unlock_context_list();
+
+ return false;
+}
+
+/* This creates an apple_private_context struct.
+ *
+ * It's typically called to save the struct in a GLXContext.
+ *
+ * This is also where the CGLContextObj is created, and the CGLPixelFormatObj.
+ */
+bool
+apple_glx_create_context(void **ptr, Display * dpy, int screen,
+ const void *mode, void *sharedContext,
+ int *errorptr, bool * x11errorptr)
+{
+ struct apple_glx_context *ac;
+ struct apple_glx_context *sharedac = sharedContext;
+ CGLError error;
+
+ *ptr = NULL;
+
+ ac = malloc(sizeof *ac);
+
+ if (NULL == ac) {
+ *errorptr = BadAlloc;
+ *x11errorptr = true;
+ return true;
+ }
+
+ if (sharedac && !is_context_valid(sharedac)) {
+ *errorptr = GLXBadContext;
+ *x11errorptr = false;
+ return true;
+ }
+
+ ac->context_obj = NULL;
+ ac->pixel_format_obj = NULL;
+ ac->drawable = NULL;
+ ac->thread_id = pthread_self();
+ ac->screen = screen;
+ ac->double_buffered = false;
+ ac->uses_stereo = false;
+ ac->need_update = false;
+ ac->is_current = false;
+ ac->made_current = false;
+ ac->last_surface_window = None;
+
+ apple_visual_create_pfobj(&ac->pixel_format_obj, mode,
+ &ac->double_buffered, &ac->uses_stereo,
+ /*offscreen */ false);
+
+ error = apple_cgl.create_context(ac->pixel_format_obj,
+ sharedac ? sharedac->context_obj : NULL,
+ &ac->context_obj);
+
+
+ if (error) {
+ (void) apple_cgl.destroy_pixel_format(ac->pixel_format_obj);
+
+ free(ac);
+
+ if (kCGLBadMatch == error) {
+ *errorptr = BadMatch;
+ *x11errorptr = true;
+ }
+ else {
+ *errorptr = GLXBadContext;
+ *x11errorptr = false;
+ }
+
+ if (getenv("LIBGL_DIAGNOSTIC"))
+ fprintf(stderr, "error: %s\n", apple_cgl.error_string(error));
+
+ return true;
+ }
+
+ /* The context creation succeeded, so we can link in the new context. */
+ lock_context_list();
+
+ if (context_list)
+ context_list->previous = ac;
+
+ ac->previous = NULL;
+ ac->next = context_list;
+ context_list = ac;
+
+ *ptr = ac;
+
+ apple_glx_diagnostic("%s: ac %p ac->context_obj %p\n",
+ __func__, (void *) ac, (void *) ac->context_obj);
+
+ unlock_context_list();
+
+ return false;
+}
+
+void
+apple_glx_destroy_context(void **ptr, Display * dpy)
+{
+ struct apple_glx_context *ac = *ptr;
+
+ if (NULL == ac)
+ return;
+
+ apple_glx_diagnostic("%s: ac %p ac->context_obj %p\n",
+ __func__, (void *) ac, (void *) ac->context_obj);
+
+ if (apple_cgl.get_current_context() == ac->context_obj) {
+ apple_glx_diagnostic("%s: context ac->context_obj %p "
+ "is still current!\n", __func__,
+ (void *) ac->context_obj);
+ if (apple_cgl.set_current_context(NULL)) {
+ abort();
+ }
+ }
+
+ /* Remove ac from the context_list as soon as possible. */
+ lock_context_list();
+
+ if (ac->previous) {
+ ac->previous->next = ac->next;
+ }
+ else {
+ context_list = ac->next;
+ }
+
+ if (ac->next) {
+ ac->next->previous = ac->previous;
+ }
+
+ unlock_context_list();
+
+
+ if (apple_cgl.clear_drawable(ac->context_obj)) {
+ fprintf(stderr, "error: while clearing drawable!\n");
+ abort();
+ }
+
+ /*
+ * This potentially causes surface_notify_handler to be called in
+ * apple_glx.c...
+ * We can NOT have a lock held at this point. It would result in
+ * an abort due to an attempted deadlock. This is why we earlier
+ * removed the ac pointer from the double-linked list.
+ */
+ if (ac->drawable) {
+ ac->drawable->destroy(ac->drawable);
+ }
+
+ if (apple_cgl.destroy_pixel_format(ac->pixel_format_obj)) {
+ fprintf(stderr, "error: destroying pixel format in %s\n", __func__);
+ abort();
+ }
+
+ if (apple_cgl.destroy_context(ac->context_obj)) {
+ fprintf(stderr, "error: destroying context_obj in %s\n", __func__);
+ abort();
+ }
+
+ free(ac);
+
+ *ptr = NULL;
+
+ apple_glx_garbage_collect_drawables(dpy);
+}
+
+
+/* Return true if an error occured. */
+bool
+apple_glx_make_current_context(Display * dpy, void *oldptr, void *ptr,
+ GLXDrawable drawable)
+{
+ struct apple_glx_context *oldac = oldptr;
+ struct apple_glx_context *ac = ptr;
+ struct apple_glx_drawable *newagd = NULL;
+ CGLError cglerr;
+ bool same_drawable = false;
+
+#if 0
+ apple_glx_diagnostic("%s: oldac %p ac %p drawable 0x%lx\n",
+ __func__, (void *) oldac, (void *) ac, drawable);
+
+ apple_glx_diagnostic("%s: oldac->context_obj %p ac->context_obj %p\n",
+ __func__,
+ (void *) (oldac ? oldac->context_obj : NULL),
+ (void *) (ac ? ac->context_obj : NULL));
+#endif
+
+ /* This a common path for GLUT and other apps, so special case it. */
+ if (ac && ac->drawable && ac->drawable->drawable == drawable) {
+ same_drawable = true;
+
+ if (ac->is_current)
+ return false;
+ }
+
+ /* Reset the is_current state of the old context, if non-NULL. */
+ if (oldac && (ac != oldac))
+ oldac->is_current = false;
+
+ if (NULL == ac) {
+ /*Clear the current context for this thread. */
+ apple_cgl.set_current_context(NULL);
+
+ if (oldac) {
+ oldac->is_current = false;
+
+ if (oldac->drawable) {
+ oldac->drawable->destroy(oldac->drawable);
+ oldac->drawable = NULL;
+ }
+
+ /* Invalidate this to prevent surface recreation. */
+ oldac->last_surface_window = None;
+ }
+
+ return false;
+ }
+
+ if (None == drawable) {
+ bool error = false;
+
+ /* Clear the current drawable for this context_obj. */
+
+ if (apple_cgl.set_current_context(ac->context_obj))
+ error = true;
+
+ if (apple_cgl.clear_drawable(ac->context_obj))
+ error = true;
+
+ if (ac->drawable) {
+ ac->drawable->destroy(ac->drawable);
+ ac->drawable = NULL;
+ }
+
+ /* Invalidate this to prevent surface recreation. */
+ ac->last_surface_window = None;
+
+ apple_glx_diagnostic("%s: drawable is None, error is: %d\n",
+ __func__, error);
+
+ return error;
+ }
+
+ /* This is an optimisation to avoid searching for the current drawable. */
+ if (ac->drawable && ac->drawable->drawable == drawable) {
+ newagd = ac->drawable;
+ }
+ else {
+ /* Find the drawable if possible, and retain a reference to it. */
+ newagd =
+ apple_glx_drawable_find(drawable, APPLE_GLX_DRAWABLE_REFERENCE);
+ }
+
+ /*
+ * Try to destroy the old drawable, so long as the new one
+ * isn't the old.
+ */
+ if (ac->drawable && !same_drawable) {
+ ac->drawable->destroy(ac->drawable);
+ ac->drawable = NULL;
+ }
+
+ if (NULL == newagd) {
+ if (apple_glx_surface_create(dpy, ac->screen, drawable, &newagd))
+ return true;
+
+ /* The drawable is referenced once by apple_glx_surface_create. */
+
+ /*
+ * FIXME: We actually need 2 references to prevent premature surface
+ * destruction. The problem is that the surface gets destroyed in
+ * the case of the context being reused for another window, and
+ * we then lose the surface contents. Wait for destruction of a
+ * window to destroy a surface.
+ *
+ * Note: this may leave around surfaces we don't want around, if
+ * say we are using X for raster drawing after OpenGL rendering,
+ * but it will be compatible with the old libGL's behavior.
+ *
+ * Someday the X11 and OpenGL rendering must be unified at some
+ * layer. I suspect we can do that via shared memory and
+ * multiple threads in the X server (1 for each context created
+ * by a client). This would also allow users to render from
+ * multiple clients to the same OpenGL surface. In fact it could
+ * all be OpenGL.
+ *
+ */
+ newagd->reference(newagd);
+
+ /* Save the new drawable with the context structure. */
+ ac->drawable = newagd;
+ }
+ else {
+ /* We are reusing an existing drawable structure. */
+
+ if (same_drawable) {
+ assert(ac->drawable == newagd);
+ /* The drawable_find above retained a reference for us. */
+ }
+ else {
+ ac->drawable = newagd;
+ }
+ }
+
+ /*
+ * Avoid this costly path if this is the same drawable and the
+ * context is already current.
+ */
+
+ if (same_drawable && ac->is_current) {
+ apple_glx_diagnostic("%s: same_drawable and ac->is_current\n");
+ return false;
+ }
+
+ cglerr = apple_cgl.set_current_context(ac->context_obj);
+
+ if (kCGLNoError != cglerr) {
+ fprintf(stderr, "set current error: %s\n",
+ apple_cgl.error_string(cglerr));
+ return true;
+ }
+
+ ac->is_current = true;
+
+ assert(NULL != ac->context_obj);
+ assert(NULL != ac->drawable);
+
+ ac->thread_id = pthread_self();
+
+ /* This will be set if the pending_destroy code indicates it should be: */
+ ac->last_surface_window = None;
+
+ switch (ac->drawable->type) {
+ case APPLE_GLX_DRAWABLE_PBUFFER:
+ case APPLE_GLX_DRAWABLE_SURFACE:
+ case APPLE_GLX_DRAWABLE_PIXMAP:
+ if (ac->drawable->callbacks.make_current) {
+ if (ac->drawable->callbacks.make_current(ac, ac->drawable))
+ return true;
+ }
+ break;
+
+ default:
+ fprintf(stderr, "internal error: invalid drawable type: %d\n",
+ ac->drawable->type);
+ abort();
+ }
+
+ return false;
+}
+
+bool
+apple_glx_is_current_drawable(Display * dpy, void *ptr, GLXDrawable drawable)
+{
+ struct apple_glx_context *ac = ptr;
+
+ if (ac->drawable && ac->drawable->drawable == drawable) {
+ return true;
+ }
+ else if (NULL == ac->drawable && None != ac->last_surface_window) {
+ apple_glx_context_update(dpy, ac);
+
+ return (ac->drawable && ac->drawable->drawable == drawable);
+ }
+
+ return false;
+}
+
+bool
+apple_glx_copy_context(void *currentptr, void *srcptr, void *destptr,
+ unsigned long mask, int *errorptr, bool * x11errorptr)
+{
+ struct apple_glx_context *src, *dest;
+ CGLError err;
+
+ src = srcptr;
+ dest = destptr;
+
+ if (src->screen != dest->screen) {
+ *errorptr = BadMatch;
+ *x11errorptr = true;
+ return true;
+ }
+
+ if (dest == currentptr || dest->is_current) {
+ *errorptr = BadAccess;
+ *x11errorptr = true;
+ return true;
+ }
+
+ /*
+ * If srcptr is the current context then we should do an implicit glFlush.
+ */
+ if (currentptr == srcptr)
+ glFlush();
+
+ err = apple_cgl.copy_context(src->context_obj, dest->context_obj,
+ (GLbitfield) mask);
+
+ if (kCGLNoError != err) {
+ *errorptr = GLXBadContext;
+ *x11errorptr = false;
+ return true;
+ }
+
+ return false;
+}
+
+/*
+ * The value returned is the total number of contexts set to update.
+ * It's meant for debugging/introspection.
+ */
+int
+apple_glx_context_surface_changed(unsigned int uid, pthread_t caller)
+{
+ struct apple_glx_context *ac;
+ int updated = 0;
+
+ lock_context_list();
+
+ for (ac = context_list; ac; ac = ac->next) {
+ if (ac->drawable && APPLE_GLX_DRAWABLE_SURFACE == ac->drawable->type
+ && ac->drawable->types.surface.uid == uid) {
+
+ if (caller == ac->thread_id) {
+ apple_glx_diagnostic("caller is the same thread for uid %u\n",
+ uid);
+
+ xp_update_gl_context(ac->context_obj);
+ }
+ else {
+ ac->need_update = true;
+ ++updated;
+ }
+ }
+ }
+
+ unlock_context_list();
+
+ return updated;
+}
+
+void
+apple_glx_context_update(Display * dpy, void *ptr)
+{
+ struct apple_glx_context *ac = ptr;
+
+ if (NULL == ac->drawable && None != ac->last_surface_window) {
+ bool failed;
+
+ /* Attempt to recreate the surface for a destroyed drawable. */
+ failed =
+ apple_glx_make_current_context(dpy, ac, ac, ac->last_surface_window);
+
+ apple_glx_diagnostic("%s: surface recreation failed? %s\n", __func__,
+ failed ? "YES" : "NO");
+ }
+
+ if (ac->need_update) {
+ xp_update_gl_context(ac->context_obj);
+ ac->need_update = false;
+
+ apple_glx_diagnostic("%s: updating context %p\n", __func__, ptr);
+ }
+
+ if (ac->drawable && APPLE_GLX_DRAWABLE_SURFACE == ac->drawable->type
+ && ac->drawable->types.surface.pending_destroy) {
+ apple_glx_diagnostic("%s: clearing drawable %p\n", __func__, ptr);
+ apple_cgl.clear_drawable(ac->context_obj);
+
+ if (ac->drawable) {
+ struct apple_glx_drawable *d;
+
+ apple_glx_diagnostic("%s: attempting to destroy drawable %p\n",
+ __func__, ptr);
+ apple_glx_diagnostic("%s: ac->drawable->drawable is 0x%lx\n",
+ __func__, ac->drawable->drawable);
+
+ d = ac->drawable;
+
+ ac->last_surface_window = d->drawable;
+
+ ac->drawable = NULL;
+
+ /*
+ * This will destroy the surface drawable if there are
+ * no references to it.
+ * It also subtracts 1 from the reference_count.
+ * If there are references to it, then it's probably made
+ * current in another context.
+ */
+ d->destroy(d);
+ }
+ }
+}
+
+bool
+apple_glx_context_uses_stereo(void *ptr)
+{
+ struct apple_glx_context *ac = ptr;
+
+ return ac->uses_stereo;
+}
diff --git a/src/glx/apple/apple_glx_context.h b/src/glx/apple/apple_glx_context.h
new file mode 100644
index 0000000000..c2a3e3fcf6
--- /dev/null
+++ b/src/glx/apple/apple_glx_context.h
@@ -0,0 +1,93 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#ifndef APPLE_GLX_CONTEXT_H
+#define APPLE_GLX_CONTEXT_H
+
+/* <rdar://problem/6953344> */
+#define glTexImage1D glTexImage1D_OSX
+#define glTexImage2D glTexImage2D_OSX
+#define glTexImage3D glTexImage3D_OSX
+#include <OpenGL/CGLTypes.h>
+#include <OpenGL/CGLContext.h>
+#undef glTexImage1D
+#undef glTexImage2D
+#undef glTexImage3D
+
+#include <stdbool.h>
+#include <X11/Xlib.h>
+#include <GL/glx.h>
+#define XP_NO_X_HEADERS
+#include <Xplugin.h>
+#undef XP_NO_X_HEADERS
+
+#include "apple_glx_drawable.h"
+
+struct apple_glx_context
+{
+ CGLContextObj context_obj;
+ CGLPixelFormatObj pixel_format_obj;
+ struct apple_glx_drawable *drawable;
+ pthread_t thread_id;
+ int screen;
+ bool double_buffered;
+ bool uses_stereo;
+ bool need_update;
+ bool is_current; /* True if the context is current in some thread. */
+ bool made_current; /* True if the context has ever been made current. */
+
+ /*
+ * last_surface is set by the pending_destroy code handler for a drawable.
+ * Due to a CG difference, we have to recreate a surface if the window
+ * is unmapped and mapped again.
+ */
+ Window last_surface_window;
+ struct apple_glx_context *previous, *next;
+};
+
+bool apple_glx_create_context(void **ptr, Display * dpy, int screen,
+ const void *mode, void *sharedContext,
+ int *errorptr, bool * x11errorptr);
+void apple_glx_destroy_context(void **ptr, Display * dpy);
+
+bool apple_glx_make_current_context(Display * dpy, void *oldptr, void *ptr,
+ GLXDrawable drawable);
+bool apple_glx_is_current_drawable(Display * dpy, void *ptr,
+ GLXDrawable drawable);
+
+bool apple_glx_copy_context(void *currentptr, void *srcptr, void *destptr,
+ unsigned long mask, int *errorptr,
+ bool * x11errorptr);
+
+int apple_glx_context_surface_changed(unsigned int uid, pthread_t caller);
+
+void apple_glx_context_update(Display * dpy, void *ptr);
+
+bool apple_glx_context_uses_stereo(void *ptr);
+
+#endif /*APPLE_GLX_CONTEXT_H */
diff --git a/src/glx/apple/apple_glx_drawable.c b/src/glx/apple/apple_glx_drawable.c
new file mode 100644
index 0000000000..5530224335
--- /dev/null
+++ b/src/glx/apple/apple_glx_drawable.c
@@ -0,0 +1,542 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <pthread.h>
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#include "apple_glx_drawable.h"
+#include "appledri.h"
+
+static pthread_mutex_t drawables_lock = PTHREAD_MUTEX_INITIALIZER;
+static struct apple_glx_drawable *drawables_list = NULL;
+
+static void
+lock_drawables_list(void)
+{
+ int err;
+
+ err = pthread_mutex_lock(&drawables_lock);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutex_lock failure in %s: %d\n",
+ __func__, err);
+ abort();
+ }
+}
+
+static void
+unlock_drawables_list(void)
+{
+ int err;
+
+ err = pthread_mutex_unlock(&drawables_lock);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutex_unlock failure in %s: %d\n",
+ __func__, err);
+ abort();
+ }
+}
+
+struct apple_glx_drawable *
+apple_glx_find_drawable(Display * dpy, GLXDrawable drawable)
+{
+ struct apple_glx_drawable *i, *agd = NULL;
+
+ lock_drawables_list();
+
+ for (i = drawables_list; i; i = i->next) {
+ if (i->drawable == drawable) {
+ agd = i;
+ break;
+ }
+ }
+
+ unlock_drawables_list();
+
+ return agd;
+}
+
+static void
+drawable_lock(struct apple_glx_drawable *agd)
+{
+ int err;
+
+ err = pthread_mutex_lock(&agd->mutex);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutex_lock error: %d\n", err);
+ abort();
+ }
+}
+
+static void
+drawable_unlock(struct apple_glx_drawable *d)
+{
+ int err;
+
+ err = pthread_mutex_unlock(&d->mutex);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutex_unlock error: %d\n", err);
+ abort();
+ }
+}
+
+
+static void
+reference_drawable(struct apple_glx_drawable *d)
+{
+ d->lock(d);
+ d->reference_count++;
+ d->unlock(d);
+}
+
+static void
+release_drawable(struct apple_glx_drawable *d)
+{
+ d->lock(d);
+ d->reference_count--;
+ d->unlock(d);
+}
+
+/* The drawables list must be locked prior to calling this. */
+/* Return true if the drawable was destroyed. */
+static bool
+destroy_drawable(struct apple_glx_drawable *d)
+{
+
+ d->lock(d);
+
+ if (d->reference_count > 0) {
+ d->unlock(d);
+ return false;
+ }
+
+ d->unlock(d);
+
+ if (d->previous) {
+ d->previous->next = d->next;
+ }
+ else {
+ /*
+ * The item must be at the head of the list, if it
+ * has no previous pointer.
+ */
+ drawables_list = d->next;
+ }
+
+ if (d->next)
+ d->next->previous = d->previous;
+
+ unlock_drawables_list();
+
+ if (d->callbacks.destroy) {
+ /*
+ * Warning: this causes other routines to be called (potentially)
+ * from surface_notify_handler. It's probably best to not have
+ * any locks at this point locked.
+ */
+ d->callbacks.destroy(d->display, d);
+ }
+
+ apple_glx_diagnostic("%s: freeing %p\n", __func__, (void *) d);
+
+ free(d);
+
+ /* So that the locks are balanced and the caller correctly unlocks. */
+ lock_drawables_list();
+
+ return true;
+}
+
+/*
+ * This is typically called when a context is destroyed or the current
+ * drawable is made None.
+ */
+static bool
+destroy_drawable_callback(struct apple_glx_drawable *d)
+{
+ bool result;
+
+ d->lock(d);
+
+ apple_glx_diagnostic("%s: %p ->reference_count before -- %d\n", __func__,
+ (void *) d, d->reference_count);
+
+ d->reference_count--;
+
+ if (d->reference_count > 0) {
+ d->unlock(d);
+ return false;
+ }
+
+ d->unlock(d);
+
+ lock_drawables_list();
+
+ result = destroy_drawable(d);
+
+ unlock_drawables_list();
+
+ return result;
+}
+
+static bool
+is_pbuffer(struct apple_glx_drawable *d)
+{
+ return APPLE_GLX_DRAWABLE_PBUFFER == d->type;
+}
+
+static bool
+is_pixmap(struct apple_glx_drawable *d)
+{
+ return APPLE_GLX_DRAWABLE_PIXMAP == d->type;
+}
+
+static void
+common_init(Display * dpy, GLXDrawable drawable, struct apple_glx_drawable *d)
+{
+ int err;
+ pthread_mutexattr_t attr;
+
+ d->display = dpy;
+ d->reference_count = 0;
+ d->drawable = drawable;
+ d->type = -1;
+
+ err = pthread_mutexattr_init(&attr);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutexattr_init error: %d\n", err);
+ abort();
+ }
+
+ /*
+ * There are some patterns that require a recursive mutex,
+ * when working with locks that protect the apple_glx_drawable,
+ * and reference functions like ->reference, and ->release.
+ */
+ err = pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
+
+ if (err) {
+ fprintf(stderr, "error: setting pthread mutex type: %d\n", err);
+ abort();
+ }
+
+ err = pthread_mutex_init(&d->mutex, &attr);
+
+ if (err) {
+ fprintf(stderr, "pthread_mutex_init error: %d\n", err);
+ abort();
+ }
+
+ (void) pthread_mutexattr_destroy(&attr);
+
+ d->lock = drawable_lock;
+ d->unlock = drawable_unlock;
+
+ d->reference = reference_drawable;
+ d->release = release_drawable;
+
+ d->destroy = destroy_drawable_callback;
+
+ d->is_pbuffer = is_pbuffer;
+ d->is_pixmap = is_pixmap;
+
+ d->width = -1;
+ d->height = -1;
+ d->row_bytes = 0;
+ d->path[0] = '\0';
+ d->fd = -1;
+ d->buffer = NULL;
+ d->buffer_length = 0;
+
+ d->previous = NULL;
+ d->next = NULL;
+}
+
+static void
+link_tail(struct apple_glx_drawable *agd)
+{
+ lock_drawables_list();
+
+ /* Link the new drawable into the global list. */
+ agd->next = drawables_list;
+
+ if (drawables_list)
+ drawables_list->previous = agd;
+
+ drawables_list = agd;
+
+ unlock_drawables_list();
+}
+
+/*WARNING: this returns a locked and referenced object. */
+bool
+apple_glx_drawable_create(Display * dpy,
+ int screen,
+ GLXDrawable drawable,
+ struct apple_glx_drawable **agdResult,
+ struct apple_glx_drawable_callbacks *callbacks)
+{
+ struct apple_glx_drawable *d;
+
+ d = calloc(1, sizeof *d);
+
+ if (NULL == d) {
+ perror("malloc");
+ return true;
+ }
+
+ common_init(dpy, drawable, d);
+ d->type = callbacks->type;
+ d->callbacks = *callbacks;
+
+ d->reference(d);
+ d->lock(d);
+
+ link_tail(d);
+
+ apple_glx_diagnostic("%s: new drawable %p\n", __func__, (void *) d);
+
+ *agdResult = d;
+
+ return false;
+}
+
+static int error_count = 0;
+
+static int
+error_handler(Display * dpy, XErrorEvent * err)
+{
+ if (err->error_code == BadWindow) {
+ ++error_count;
+ }
+
+ return 0;
+}
+
+void
+apple_glx_garbage_collect_drawables(Display * dpy)
+{
+ struct apple_glx_drawable *d, *dnext;
+ Window root;
+ int x, y;
+ unsigned int width, height, bd, depth;
+ int (*old_handler) (Display *, XErrorEvent *);
+
+
+ if (NULL == drawables_list)
+ return;
+
+ old_handler = XSetErrorHandler(error_handler);
+
+ XSync(dpy, False);
+
+ lock_drawables_list();
+
+ for (d = drawables_list; d;) {
+ dnext = d->next;
+
+ d->lock(d);
+
+ if (d->reference_count > 0) {
+ /*
+ * Skip this, because some context still retains a reference
+ * to the drawable.
+ */
+ d->unlock(d);
+ d = dnext;
+ continue;
+ }
+
+ d->unlock(d);
+
+ error_count = 0;
+
+ /*
+ * Mesa uses XGetWindowAttributes, but some of these things are
+ * most definitely not Windows, and that's against the rules.
+ * XGetGeometry on the other hand is legal with a Pixmap and Window.
+ */
+ XGetGeometry(dpy, d->drawable, &root, &x, &y, &width, &height, &bd,
+ &depth);
+
+ if (error_count > 0) {
+ /*
+ * Note: this may not actually destroy the drawable.
+ * If another context retains a reference to the drawable
+ * after the reference count test above.
+ */
+ (void) destroy_drawable(d);
+ error_count = 0;
+ }
+
+ d = dnext;
+ }
+
+ XSetErrorHandler(old_handler);
+
+ unlock_drawables_list();
+}
+
+unsigned int
+apple_glx_get_drawable_count(void)
+{
+ unsigned int result = 0;
+ struct apple_glx_drawable *d;
+
+ lock_drawables_list();
+
+ for (d = drawables_list; d; d = d->next)
+ ++result;
+
+ unlock_drawables_list();
+
+ return result;
+}
+
+struct apple_glx_drawable *
+apple_glx_drawable_find_by_type(GLXDrawable drawable, int type, int flags)
+{
+ struct apple_glx_drawable *d;
+
+ lock_drawables_list();
+
+ for (d = drawables_list; d; d = d->next) {
+ if (d->type == type && d->drawable == drawable) {
+ if (flags & APPLE_GLX_DRAWABLE_REFERENCE)
+ d->reference(d);
+
+ if (flags & APPLE_GLX_DRAWABLE_LOCK)
+ d->lock(d);
+
+ unlock_drawables_list();
+
+ return d;
+ }
+ }
+
+ unlock_drawables_list();
+
+ return NULL;
+}
+
+struct apple_glx_drawable *
+apple_glx_drawable_find(GLXDrawable drawable, int flags)
+{
+ struct apple_glx_drawable *d;
+
+ lock_drawables_list();
+
+ for (d = drawables_list; d; d = d->next) {
+ if (d->drawable == drawable) {
+ if (flags & APPLE_GLX_DRAWABLE_REFERENCE)
+ d->reference(d);
+
+ if (flags & APPLE_GLX_DRAWABLE_LOCK)
+ d->lock(d);
+
+ unlock_drawables_list();
+
+ return d;
+ }
+ }
+
+ unlock_drawables_list();
+
+ return NULL;
+}
+
+/* Return true if the type is valid for the drawable. */
+bool
+apple_glx_drawable_destroy_by_type(Display * dpy,
+ GLXDrawable drawable, int type)
+{
+ struct apple_glx_drawable *d;
+
+ lock_drawables_list();
+
+ for (d = drawables_list; d; d = d->next) {
+ if (drawable == d->drawable && type == d->type) {
+ /*
+ * The user has requested that we destroy this resource.
+ * However, there may be references in the contexts to it, so
+ * release it, and call destroy_drawable which doesn't destroy
+ * if the reference_count is > 0.
+ */
+ d->release(d);
+
+ apple_glx_diagnostic("%s d->reference_count %d\n",
+ __func__, d->reference_count);
+
+ destroy_drawable(d);
+ unlock_drawables_list();
+ return true;
+ }
+ }
+
+ unlock_drawables_list();
+
+ return false;
+}
+
+struct apple_glx_drawable *
+apple_glx_drawable_find_by_uid(unsigned int uid, int flags)
+{
+ struct apple_glx_drawable *d;
+
+ lock_drawables_list();
+
+ for (d = drawables_list; d; d = d->next) {
+ /* Only surfaces have a uid. */
+ if (APPLE_GLX_DRAWABLE_SURFACE == d->type) {
+ if (d->types.surface.uid == uid) {
+ if (flags & APPLE_GLX_DRAWABLE_REFERENCE)
+ d->reference(d);
+
+ if (flags & APPLE_GLX_DRAWABLE_LOCK)
+ d->lock(d);
+
+ unlock_drawables_list();
+
+ return d;
+ }
+ }
+ }
+
+ unlock_drawables_list();
+
+ return NULL;
+}
diff --git a/src/glx/apple/apple_glx_drawable.h b/src/glx/apple/apple_glx_drawable.h
new file mode 100644
index 0000000000..e49eae355e
--- /dev/null
+++ b/src/glx/apple/apple_glx_drawable.h
@@ -0,0 +1,227 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#ifndef APPLE_GLX_DRAWABLE_H
+#define APPLE_GLX_DRAWABLE_H
+
+/* Must be first for:
+ * <rdar://problem/6953344>
+ */
+#include "apple_glx_context.h"
+
+#include <pthread.h>
+#include <stdbool.h>
+#include <limits.h>
+#include <GL/glx.h>
+#define XP_NO_X_HEADERS
+#include <Xplugin.h>
+#undef XP_NO_X_HEADERS
+
+enum
+{
+ APPLE_GLX_DRAWABLE_SURFACE = 1,
+ APPLE_GLX_DRAWABLE_PBUFFER,
+ APPLE_GLX_DRAWABLE_PIXMAP
+};
+
+/* The flag for the find routine. */
+enum
+{
+ APPLE_GLX_DRAWABLE_LOCK = 2,
+ APPLE_GLX_DRAWABLE_REFERENCE = 4
+};
+
+struct apple_glx_context;
+struct apple_glx_drawable;
+
+struct apple_glx_surface
+{
+ xp_surface_id surface_id;
+ unsigned int uid;
+ bool pending_destroy;
+};
+
+struct apple_glx_pbuffer
+{
+ GLXPbuffer xid; /* our pixmap */
+ int width, height;
+ GLint fbconfigID;
+ CGLPBufferObj buffer_obj;
+ unsigned long event_mask;
+};
+
+struct apple_glx_pixmap
+{
+ GLXPixmap xpixmap;
+ void *buffer;
+ int width, height, pitch, /*bytes per pixel */ bpp;
+ size_t size;
+ char path[PATH_MAX];
+ int fd;
+ CGLPixelFormatObj pixel_format_obj;
+ CGLContextObj context_obj;
+ GLint fbconfigID;
+};
+
+struct apple_glx_drawable_callbacks
+{
+ int type;
+ bool(*make_current) (struct apple_glx_context * ac,
+ struct apple_glx_drawable * d);
+ void (*destroy) (Display * dpy, struct apple_glx_drawable * d);
+};
+
+struct apple_glx_drawable
+{
+ Display *display;
+ int reference_count;
+ GLXDrawable drawable;
+ int type; /* APPLE_GLX_DRAWABLE_* */
+
+ union
+ {
+ struct apple_glx_pixmap pixmap;
+ struct apple_glx_pbuffer pbuffer;
+ struct apple_glx_surface surface;
+ } types;
+
+ struct apple_glx_drawable_callbacks callbacks;
+
+ /*
+ * This mutex protects the reference count and any other drawable data.
+ * It's used to prevent an early release of a drawable.
+ */
+ pthread_mutex_t mutex;
+ void (*lock) (struct apple_glx_drawable * agd);
+ void (*unlock) (struct apple_glx_drawable * agd);
+
+ void (*reference) (struct apple_glx_drawable * agd);
+ void (*release) (struct apple_glx_drawable * agd);
+
+ bool(*destroy) (struct apple_glx_drawable * agd);
+
+ bool(*is_pbuffer) (struct apple_glx_drawable * agd);
+
+ bool(*is_pixmap) (struct apple_glx_drawable * agd);
+
+/*BEGIN These are used for the mixed mode drawing... */
+ int width, height;
+ int row_bytes;
+ char path[PATH_MAX];
+ int fd; /* The file descriptor for this drawable's shared memory. */
+ void *buffer; /* The memory for the drawable. Typically shared memory. */
+ size_t buffer_length;
+ /*END*/ struct apple_glx_drawable *previous, *next;
+};
+
+struct apple_glx_context;
+
+/* May return NULL if not found */
+struct apple_glx_drawable *apple_glx_find_drawable(Display * dpy,
+ GLXDrawable drawable);
+
+/* Returns true on error and locks the agd result with a reference. */
+bool apple_glx_drawable_create(Display * dpy,
+ int screen,
+ GLXDrawable drawable,
+ struct apple_glx_drawable **agd,
+ struct apple_glx_drawable_callbacks
+ *callbacks);
+
+/* Returns true on error */
+bool apple_glx_create_drawable(Display * dpy,
+ struct apple_glx_context *ac,
+ GLXDrawable drawable,
+ struct apple_glx_drawable **agd);
+
+void apple_glx_garbage_collect_drawables(Display * dpy);
+
+/*
+ * This returns the total number of drawables.
+ * It's mostly intended for debugging and introspection.
+ */
+unsigned int apple_glx_get_drawable_count(void);
+
+struct apple_glx_drawable *apple_glx_drawable_find_by_type(GLXDrawable
+ drawable, int type,
+ int flags);
+
+struct apple_glx_drawable *apple_glx_drawable_find(GLXDrawable drawable,
+ int flags);
+
+
+bool apple_glx_drawable_destroy_by_type(Display * dpy, GLXDrawable drawable,
+ int type);
+
+struct apple_glx_drawable *apple_glx_drawable_find_by_uid(unsigned int uid,
+ int flags);
+
+/* Surfaces */
+
+bool apple_glx_surface_create(Display * dpy, int screen, GLXDrawable drawable,
+ struct apple_glx_drawable **resultptr);
+
+void apple_glx_surface_destroy(unsigned int uid);
+
+/* Pbuffers */
+
+/* Returns true if an error occurred. */
+bool apple_glx_pbuffer_create(Display * dpy, GLXFBConfig config,
+ int width, int height, int *errorcode,
+ GLXPbuffer * pbuf);
+
+/* Returns true if the pbuffer was invalid. */
+bool apple_glx_pbuffer_destroy(Display * dpy, GLXPbuffer pbuf);
+
+/* Returns true if the pbuffer was valid and the attribute. */
+bool apple_glx_pbuffer_query(GLXDrawable d, int attribute,
+ unsigned int *value);
+
+/* Returns true if the GLXDrawable is a valid GLXPbuffer, and the mask is set. */
+bool apple_glx_pbuffer_set_event_mask(GLXDrawable d, unsigned long mask);
+
+/* Returns true if the GLXDrawable is a valid GLXPbuffer, and the *mask is set. */
+bool apple_glx_pbuffer_get_event_mask(GLXDrawable d, unsigned long *mask);
+
+
+/* Pixmaps */
+
+/* mode is a __GLcontextModes * */
+/* Returns true if an error occurred. */
+bool apple_glx_pixmap_create(Display * dpy, int screen, Pixmap pixmap,
+ const void *mode);
+
+/* Returns true if an error occurred. */
+bool apple_glx_pixmap_destroy(Display * dpy, Pixmap pixmap);
+
+bool apple_glx_pixmap_query(GLXPixmap pixmap, int attribute,
+ unsigned int *value);
+
+
+
+#endif
diff --git a/src/glx/apple/apple_glx_pbuffer.c b/src/glx/apple/apple_glx_pbuffer.c
new file mode 100644
index 0000000000..1466fea487
--- /dev/null
+++ b/src/glx/apple/apple_glx_pbuffer.c
@@ -0,0 +1,348 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+/* Must be before OpenGL.framework is included. Remove once fixed:
+ * <rdar://problem/7872773>
+ */
+#include <GL/gl.h>
+#include <GL/glext.h>
+#define __gltypes_h_ 1
+
+/* Must be first for:
+ * <rdar://problem/6953344>
+ */
+#include "apple_glx_context.h"
+#include "apple_glx_drawable.h"
+
+#include <stdlib.h>
+#include <pthread.h>
+#include <assert.h>
+#include "apple_glx.h"
+#include "glcontextmodes.h"
+#include "apple_cgl.h"
+
+/* mesa defines in glew.h, Apple in glext.h.
+ * Due to namespace nightmares, just do it here.
+ */
+#ifndef GL_TEXTURE_RECTANGLE_EXT
+#define GL_TEXTURE_RECTANGLE_EXT 0x84F5
+#endif
+
+static bool pbuffer_make_current(struct apple_glx_context *ac,
+ struct apple_glx_drawable *d);
+
+static void pbuffer_destroy(Display * dpy, struct apple_glx_drawable *d);
+
+static struct apple_glx_drawable_callbacks callbacks = {
+ .type = APPLE_GLX_DRAWABLE_PBUFFER,
+ .make_current = pbuffer_make_current,
+ .destroy = pbuffer_destroy
+};
+
+
+/* Return true if an error occurred. */
+bool
+pbuffer_make_current(struct apple_glx_context *ac,
+ struct apple_glx_drawable *d)
+{
+ struct apple_glx_pbuffer *pbuf = &d->types.pbuffer;
+ CGLError cglerr;
+
+ assert(APPLE_GLX_DRAWABLE_PBUFFER == d->type);
+
+ cglerr = apple_cgl.set_pbuffer(ac->context_obj, pbuf->buffer_obj, 0, 0, 0);
+
+ if (kCGLNoError != cglerr) {
+ fprintf(stderr, "set_pbuffer: %s\n", apple_cgl.error_string(cglerr));
+ return true;
+ }
+
+ if (!ac->made_current) {
+ glViewport(0, 0, pbuf->width, pbuf->height);
+ glScissor(0, 0, pbuf->width, pbuf->height);
+ ac->made_current = true;
+ }
+
+ apple_glx_diagnostic("made pbuffer drawable 0x%lx current\n", d->drawable);
+
+ return false;
+}
+
+void
+pbuffer_destroy(Display * dpy, struct apple_glx_drawable *d)
+{
+ struct apple_glx_pbuffer *pbuf = &d->types.pbuffer;
+
+ assert(APPLE_GLX_DRAWABLE_PBUFFER == d->type);
+
+ apple_glx_diagnostic("destroying pbuffer for drawable 0x%lx\n",
+ d->drawable);
+
+ apple_cgl.destroy_pbuffer(pbuf->buffer_obj);
+ XFreePixmap(dpy, pbuf->xid);
+}
+
+/* Return true if an error occurred. */
+bool
+apple_glx_pbuffer_destroy(Display * dpy, GLXPbuffer pbuf)
+{
+ return !apple_glx_drawable_destroy_by_type(dpy, pbuf,
+ APPLE_GLX_DRAWABLE_PBUFFER);
+}
+
+/* Return true if an error occurred. */
+bool
+apple_glx_pbuffer_create(Display * dpy, GLXFBConfig config,
+ int width, int height, int *errorcode,
+ GLXPbuffer * result)
+{
+ struct apple_glx_drawable *d;
+ struct apple_glx_pbuffer *pbuf = NULL;
+ CGLError err;
+ Window root;
+ int screen;
+ Pixmap xid;
+ __GLcontextModes *modes = (__GLcontextModes *) config;
+
+ root = DefaultRootWindow(dpy);
+ screen = DefaultScreen(dpy);
+
+ /*
+ * This pixmap is only used for a persistent XID.
+ * The XC-MISC extension cleans up XIDs and reuses them transparently,
+ * so we need to retain a server-side reference.
+ */
+ xid = XCreatePixmap(dpy, root, (unsigned int) 1,
+ (unsigned int) 1, DefaultDepth(dpy, screen));
+
+ if (None == xid) {
+ *errorcode = BadAlloc;
+ return true;
+ }
+
+ if (apple_glx_drawable_create(dpy, screen, xid, &d, &callbacks)) {
+ *errorcode = BadAlloc;
+ return true;
+ }
+
+ /* The lock is held in d from create onward. */
+ pbuf = &d->types.pbuffer;
+
+ pbuf->xid = xid;
+ pbuf->width = width;
+ pbuf->height = height;
+
+ err = apple_cgl.create_pbuffer(width, height, GL_TEXTURE_RECTANGLE_EXT,
+ (modes->alphaBits > 0) ? GL_RGBA : GL_RGB,
+ 0, &pbuf->buffer_obj);
+
+ if (kCGLNoError != err) {
+ d->unlock(d);
+ d->destroy(d);
+ *errorcode = BadMatch;
+ return true;
+ }
+
+ pbuf->fbconfigID = modes->fbconfigID;
+
+ pbuf->event_mask = 0;
+
+ *result = pbuf->xid;
+
+ d->unlock(d);
+
+ return false;
+}
+
+
+
+/* Return true if an error occurred. */
+static bool
+get_max_size(int *widthresult, int *heightresult)
+{
+ CGLContextObj oldcontext;
+ GLint ar[2];
+
+ oldcontext = apple_cgl.get_current_context();
+
+ if (!oldcontext) {
+ /*
+ * There is no current context, so we need to make one in order
+ * to call glGetInteger.
+ */
+ CGLPixelFormatObj pfobj;
+ CGLError err;
+ CGLPixelFormatAttribute attr[10];
+ int c = 0;
+ GLint vsref = 0;
+ CGLContextObj newcontext;
+
+ attr[c++] = kCGLPFAColorSize;
+ attr[c++] = 32;
+ attr[c++] = 0;
+
+ err = apple_cgl.choose_pixel_format(attr, &pfobj, &vsref);
+ if (kCGLNoError != err) {
+ if (getenv("LIBGL_DIAGNOSTIC")) {
+ printf("choose_pixel_format error in %s: %s\n", __func__,
+ apple_cgl.error_string(err));
+ }
+
+ return true;
+ }
+
+
+ err = apple_cgl.create_context(pfobj, NULL, &newcontext);
+
+ if (kCGLNoError != err) {
+ if (getenv("LIBGL_DIAGNOSTIC")) {
+ printf("create_context error in %s: %s\n", __func__,
+ apple_cgl.error_string(err));
+ }
+
+ apple_cgl.destroy_pixel_format(pfobj);
+
+ return true;
+ }
+
+ err = apple_cgl.set_current_context(newcontext);
+
+ if (kCGLNoError != err) {
+ printf("set_current_context error in %s: %s\n", __func__,
+ apple_cgl.error_string(err));
+ return true;
+ }
+
+
+ glGetIntegerv(GL_MAX_VIEWPORT_DIMS, ar);
+
+ apple_cgl.set_current_context(oldcontext);
+ apple_cgl.destroy_context(newcontext);
+ apple_cgl.destroy_pixel_format(pfobj);
+ }
+ else {
+ /* We have a valid context. */
+
+ glGetIntegerv(GL_MAX_VIEWPORT_DIMS, ar);
+ }
+
+ *widthresult = ar[0];
+ *heightresult = ar[1];
+
+ return false;
+}
+
+bool
+apple_glx_pbuffer_query(GLXPbuffer p, int attr, unsigned int *value)
+{
+ bool result = false;
+ struct apple_glx_drawable *d;
+ struct apple_glx_pbuffer *pbuf;
+
+ d = apple_glx_drawable_find_by_type(p, APPLE_GLX_DRAWABLE_PBUFFER,
+ APPLE_GLX_DRAWABLE_LOCK);
+
+ if (d) {
+ pbuf = &d->types.pbuffer;
+
+ switch (attr) {
+ case GLX_WIDTH:
+ *value = pbuf->width;
+ result = true;
+ break;
+
+ case GLX_HEIGHT:
+ *value = pbuf->height;
+ result = true;
+ break;
+
+ case GLX_PRESERVED_CONTENTS:
+ *value = true;
+ result = true;
+ break;
+
+ case GLX_LARGEST_PBUFFER:{
+ int width, height;
+ if (get_max_size(&width, &height)) {
+ fprintf(stderr, "internal error: "
+ "unable to find the largest pbuffer!\n");
+ }
+ else {
+ *value = width;
+ result = true;
+ }
+ }
+ break;
+
+ case GLX_FBCONFIG_ID:
+ *value = pbuf->fbconfigID;
+ result = true;
+ break;
+ }
+
+ d->unlock(d);
+ }
+
+ return result;
+}
+
+bool
+apple_glx_pbuffer_set_event_mask(GLXDrawable drawable, unsigned long mask)
+{
+ struct apple_glx_drawable *d;
+ bool result = false;
+
+ d = apple_glx_drawable_find_by_type(drawable, APPLE_GLX_DRAWABLE_PBUFFER,
+ APPLE_GLX_DRAWABLE_LOCK);
+
+ if (d) {
+ d->types.pbuffer.event_mask = mask;
+ result = true;
+ d->unlock(d);
+ }
+
+ return result;
+}
+
+bool
+apple_glx_pbuffer_get_event_mask(GLXDrawable drawable, unsigned long *mask)
+{
+ struct apple_glx_drawable *d;
+ bool result = false;
+
+ d = apple_glx_drawable_find_by_type(drawable, APPLE_GLX_DRAWABLE_PBUFFER,
+ APPLE_GLX_DRAWABLE_LOCK);
+ if (d) {
+ *mask = d->types.pbuffer.event_mask;
+ result = true;
+ d->unlock(d);
+ }
+
+ return result;
+}
diff --git a/src/glx/apple/apple_glx_pixmap.c b/src/glx/apple/apple_glx_pixmap.c
new file mode 100644
index 0000000000..af1791afb7
--- /dev/null
+++ b/src/glx/apple/apple_glx_pixmap.c
@@ -0,0 +1,230 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <pthread.h>
+#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include <assert.h>
+#include "apple_glx.h"
+#include "apple_cgl.h"
+#include "apple_visual.h"
+#include "apple_glx_drawable.h"
+#include "appledri.h"
+#include "glcontextmodes.h"
+
+static bool pixmap_make_current(struct apple_glx_context *ac,
+ struct apple_glx_drawable *d);
+
+static void pixmap_destroy(Display * dpy, struct apple_glx_drawable *d);
+
+static struct apple_glx_drawable_callbacks callbacks = {
+ .type = APPLE_GLX_DRAWABLE_PIXMAP,
+ .make_current = pixmap_make_current,
+ .destroy = pixmap_destroy
+};
+
+static bool
+pixmap_make_current(struct apple_glx_context *ac,
+ struct apple_glx_drawable *d)
+{
+ CGLError cglerr;
+ struct apple_glx_pixmap *p = &d->types.pixmap;
+
+ assert(APPLE_GLX_DRAWABLE_PIXMAP == d->type);
+
+ cglerr = apple_cgl.set_current_context(p->context_obj);
+
+ if (kCGLNoError != cglerr) {
+ fprintf(stderr, "set current context: %s\n",
+ apple_cgl.error_string(cglerr));
+ return true;
+ }
+
+ cglerr = apple_cgl.set_off_screen(p->context_obj, p->width, p->height,
+ p->pitch, p->buffer);
+
+ if (kCGLNoError != cglerr) {
+ fprintf(stderr, "set off screen: %s\n", apple_cgl.error_string(cglerr));
+
+ return true;
+ }
+
+ if (!ac->made_current) {
+ glViewport(0, 0, p->width, p->height);
+ glScissor(0, 0, p->width, p->height);
+ ac->made_current = true;
+ }
+
+ return false;
+}
+
+static void
+pixmap_destroy(Display * dpy, struct apple_glx_drawable *d)
+{
+ struct apple_glx_pixmap *p = &d->types.pixmap;
+
+ if (p->pixel_format_obj)
+ (void) apple_cgl.destroy_pixel_format(p->pixel_format_obj);
+
+ if (p->context_obj)
+ (void) apple_cgl.destroy_context(p->context_obj);
+
+ XAppleDRIDestroyPixmap(dpy, p->xpixmap);
+
+ if (p->buffer) {
+ if (munmap(p->buffer, p->size))
+ perror("munmap");
+
+ if (-1 == close(p->fd))
+ perror("close");
+
+ if (shm_unlink(p->path))
+ perror("shm_unlink");
+ }
+
+ apple_glx_diagnostic("destroyed pixmap buffer for: 0x%lx\n", d->drawable);
+}
+
+/* Return true if an error occurred. */
+bool
+apple_glx_pixmap_create(Display * dpy, int screen, Pixmap pixmap,
+ const void *mode)
+{
+ struct apple_glx_drawable *d;
+ struct apple_glx_pixmap *p;
+ bool double_buffered;
+ bool uses_stereo;
+ CGLError error;
+ const __GLcontextModes *cmodes = mode;
+
+ if (apple_glx_drawable_create(dpy, screen, pixmap, &d, &callbacks))
+ return true;
+
+ /* d is locked and referenced at this point. */
+
+ p = &d->types.pixmap;
+
+ p->xpixmap = pixmap;
+ p->buffer = NULL;
+
+ if (!XAppleDRICreatePixmap(dpy, screen, pixmap,
+ &p->width, &p->height, &p->pitch, &p->bpp,
+ &p->size, p->path, PATH_MAX)) {
+ d->unlock(d);
+ d->destroy(d);
+ return true;
+ }
+
+ p->fd = shm_open(p->path, O_RDWR, 0);
+
+ if (p->fd < 0) {
+ perror("shm_open");
+ d->unlock(d);
+ d->destroy(d);
+ return true;
+ }
+
+ p->buffer = mmap(NULL, p->size, PROT_READ | PROT_WRITE,
+ MAP_FILE | MAP_SHARED, p->fd, 0);
+
+ if (MAP_FAILED == p->buffer) {
+ perror("mmap");
+ d->unlock(d);
+ d->destroy(d);
+ return true;
+ }
+
+ apple_visual_create_pfobj(&p->pixel_format_obj, mode, &double_buffered,
+ &uses_stereo, /*offscreen */ true);
+
+ error = apple_cgl.create_context(p->pixel_format_obj, NULL,
+ &p->context_obj);
+
+ if (kCGLNoError != error) {
+ d->unlock(d);
+ d->destroy(d);
+ return true;
+ }
+
+ p->fbconfigID = cmodes->fbconfigID;
+
+ d->unlock(d);
+
+ apple_glx_diagnostic("created: pixmap buffer for 0x%lx\n", d->drawable);
+
+ return false;
+}
+
+bool
+apple_glx_pixmap_query(GLXPixmap pixmap, int attr, unsigned int *value)
+{
+ struct apple_glx_drawable *d;
+ struct apple_glx_pixmap *p;
+ bool result = false;
+
+ d = apple_glx_drawable_find_by_type(pixmap, APPLE_GLX_DRAWABLE_PIXMAP,
+ APPLE_GLX_DRAWABLE_LOCK);
+
+ if (d) {
+ p = &d->types.pixmap;
+
+ switch (attr) {
+ case GLX_WIDTH:
+ *value = p->width;
+ result = true;
+ break;
+
+ case GLX_HEIGHT:
+ *value = p->height;
+ result = true;
+ break;
+
+ case GLX_FBCONFIG_ID:
+ *value = p->fbconfigID;
+ result = true;
+ break;
+ }
+
+ d->unlock(d);
+ }
+
+ return result;
+}
+
+/* Return true if the type is valid for pixmap. */
+bool
+apple_glx_pixmap_destroy(Display * dpy, GLXPixmap pixmap)
+{
+ return !apple_glx_drawable_destroy_by_type(dpy, pixmap,
+ APPLE_GLX_DRAWABLE_PIXMAP);
+}
diff --git a/src/glx/apple/apple_glx_surface.c b/src/glx/apple/apple_glx_surface.c
new file mode 100644
index 0000000000..6db2910a46
--- /dev/null
+++ b/src/glx/apple/apple_glx_surface.c
@@ -0,0 +1,224 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#include <assert.h>
+#include "glxclient.h"
+#include "apple_glx.h"
+#include "appledri.h"
+#include "apple_glx_drawable.h"
+
+static bool surface_make_current(struct apple_glx_context *ac,
+ struct apple_glx_drawable *d);
+
+static void surface_destroy(Display * dpy, struct apple_glx_drawable *d);
+
+
+static struct apple_glx_drawable_callbacks callbacks = {
+ .type = APPLE_GLX_DRAWABLE_SURFACE,
+ .make_current = surface_make_current,
+ .destroy = surface_destroy
+};
+
+static void
+update_viewport_and_scissor(Display * dpy, GLXDrawable drawable)
+{
+ Window root;
+ int x, y;
+ unsigned int width = 0, height = 0, bd, depth;
+
+ XGetGeometry(dpy, drawable, &root, &x, &y, &width, &height, &bd, &depth);
+
+ glViewport(0, 0, width, height);
+ glScissor(0, 0, width, height);
+}
+
+static bool
+surface_make_current(struct apple_glx_context *ac,
+ struct apple_glx_drawable *d)
+{
+ struct apple_glx_surface *s = &d->types.surface;
+ xp_error error;
+
+ assert(APPLE_GLX_DRAWABLE_SURFACE == d->type);
+
+ apple_glx_diagnostic("%s: ac->context_obj %p s->surface_id %u\n",
+ __func__, (void *) ac->context_obj, s->surface_id);
+
+ error = xp_attach_gl_context(ac->context_obj, s->surface_id);
+
+ if (error) {
+ fprintf(stderr, "error: xp_attach_gl_context returned: %d\n", error);
+ return true;
+ }
+
+
+ if (!ac->made_current) {
+ /*
+ * The first time a new context is made current the glViewport
+ * and glScissor should be updated.
+ */
+ update_viewport_and_scissor(ac->drawable->display,
+ ac->drawable->drawable);
+ ac->made_current = true;
+ }
+
+ apple_glx_diagnostic("%s: drawable 0x%lx\n", __func__, d->drawable);
+
+ return false;
+}
+
+static void
+surface_destroy(Display * dpy, struct apple_glx_drawable *d)
+{
+ struct apple_glx_surface *s = &d->types.surface;
+
+ apple_glx_diagnostic("%s: s->surface_id %u\n", __func__, s->surface_id);
+
+ xp_error error = xp_destroy_surface(s->surface_id);
+
+ if (error) {
+ fprintf(stderr, "xp_destroy_surface error: %d\n", (int) error);
+ }
+
+ /*
+ * Check if this surface destroy came from the surface being destroyed
+ * on the server. If s->pending_destroy is true, then it did, and
+ * we don't want to try to destroy the surface on the server.
+ */
+ if (!s->pending_destroy) {
+ /*
+ * Warning: this causes other routines to be called (potentially)
+ * from surface_notify_handler. It's probably best to not have
+ * any locks at this point locked.
+ */
+ XAppleDRIDestroySurface(d->display, DefaultScreen(d->display),
+ d->drawable);
+
+ apple_glx_diagnostic
+ ("%s: destroyed a surface for drawable 0x%lx uid %u\n", __func__,
+ d->drawable, s->uid);
+ }
+}
+
+/* Return true if an error occured. */
+static bool
+create_surface(Display * dpy, int screen, struct apple_glx_drawable *d)
+{
+ struct apple_glx_surface *s = &d->types.surface;
+ unsigned int key[2];
+ xp_client_id id;
+
+ id = apple_glx_get_client_id();
+ if (0 == id)
+ return true;
+
+ assert(None != d->drawable);
+
+ s->pending_destroy = false;
+
+ if (XAppleDRICreateSurface(dpy, screen, d->drawable, id, key, &s->uid)) {
+ xp_error error;
+
+ error = xp_import_surface(key, &s->surface_id);
+
+ if (error) {
+ fprintf(stderr, "error: xp_import_surface returned: %d\n", error);
+ return true;
+ }
+
+ apple_glx_diagnostic("%s: created a surface for drawable 0x%lx"
+ " with uid %u\n", __func__, d->drawable, s->uid);
+ return false; /*success */
+ }
+
+ return true; /* unable to create a surface. */
+}
+
+/* Return true if an error occured. */
+/* This returns a referenced object via resultptr. */
+bool
+apple_glx_surface_create(Display * dpy, int screen,
+ GLXDrawable drawable,
+ struct apple_glx_drawable ** resultptr)
+{
+ struct apple_glx_drawable *d;
+
+ if (apple_glx_drawable_create(dpy, screen, drawable, &d, &callbacks))
+ return true;
+
+ /* apple_glx_drawable_create creates a locked and referenced object. */
+
+ if (create_surface(dpy, screen, d)) {
+ d->unlock(d);
+ d->destroy(d);
+ return true;
+ }
+
+ *resultptr = d;
+
+ d->unlock(d);
+
+ return false;
+}
+
+/*
+ * All surfaces are reference counted, and surfaces are only created
+ * when the window is made current. When all contexts no longer reference
+ * a surface drawable the apple_glx_drawable gets destroyed, and thus
+ * its surface is destroyed.
+ *
+ * However we can make the destruction occur a bit sooner by setting
+ * pending_destroy, which is then checked for in glViewport by
+ * apple_glx_context_update.
+ */
+void
+apple_glx_surface_destroy(unsigned int uid)
+{
+ struct apple_glx_drawable *d;
+
+ d = apple_glx_drawable_find_by_uid(uid, APPLE_GLX_DRAWABLE_REFERENCE
+ | APPLE_GLX_DRAWABLE_LOCK);
+
+ if (d) {
+ d->types.surface.pending_destroy = true;
+ d->release(d);
+ /*
+ * We release 2 references to the surface. One was acquired by
+ * the find, and the other was leftover from a context, or
+ * the surface being displayed, so the destroy() will decrease it
+ * once more.
+ *
+ * If the surface is in a context, it will take one d->destroy(d);
+ * to actually destroy it when the pending_destroy is processed
+ * by a glViewport callback (see apple_glx_context_update()).
+ */
+ d->destroy(d);
+
+ d->unlock(d);
+ }
+}
diff --git a/src/glx/apple/apple_visual.c b/src/glx/apple/apple_visual.c
new file mode 100644
index 0000000000..da5aa05fd5
--- /dev/null
+++ b/src/glx/apple/apple_visual.c
@@ -0,0 +1,153 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <GL/gl.h>
+
+/* <rdar://problem/6953344> */
+#define glTexImage1D glTexImage1D_OSX
+#define glTexImage2D glTexImage2D_OSX
+#define glTexImage3D glTexImage3D_OSX
+#include <OpenGL/OpenGL.h>
+#include <OpenGL/CGLContext.h>
+#include <OpenGL/CGLRenderers.h>
+#undef glTexImage1D
+#undef glTexImage2D
+#undef glTexImage3D
+
+#include "apple_cgl.h"
+#include "apple_visual.h"
+#include "apple_glx.h"
+#include "glcontextmodes.h"
+
+enum
+{
+ MAX_ATTR = 60
+};
+
+/*mode is a __GlcontextModes*/
+void
+apple_visual_create_pfobj(CGLPixelFormatObj * pfobj, const void *mode,
+ bool * double_buffered, bool * uses_stereo,
+ bool offscreen)
+{
+ CGLPixelFormatAttribute attr[MAX_ATTR];
+ const __GLcontextModes *c = mode;
+ int numattr = 0;
+ GLint vsref = 0;
+ CGLError error = 0;
+
+ if (offscreen) {
+ apple_glx_diagnostic
+ ("offscreen rendering enabled. Using kCGLPFAOffScreen\n");
+
+ attr[numattr++] = kCGLPFAOffScreen;
+ attr[numattr++] = kCGLPFAColorSize;
+ attr[numattr++] = 32;
+ }
+ else if (getenv("LIBGL_ALWAYS_SOFTWARE") != NULL) {
+ apple_glx_diagnostic
+ ("Software rendering requested. Using kCGLRendererGenericFloatID.\n");
+ attr[numattr++] = kCGLPFARendererID;
+ attr[numattr++] = kCGLRendererGenericFloatID;
+ }
+ else if (getenv("LIBGL_ALLOW_SOFTWARE") != NULL) {
+ apple_glx_diagnostic
+ ("Software rendering is not being excluded. Not using kCGLPFAAccelerated.\n");
+ }
+ else {
+ attr[numattr++] = kCGLPFAAccelerated;
+ }
+
+ /*
+ * The program chose a config based on the fbconfigs or visuals.
+ * Those are based on the attributes from CGL, so we probably
+ * do want the closest match for the color, depth, and accum.
+ */
+ attr[numattr++] = kCGLPFAClosestPolicy;
+
+ if (c->stereoMode) {
+ attr[numattr++] = kCGLPFAStereo;
+ *uses_stereo = true;
+ }
+ else {
+ *uses_stereo = false;
+ }
+
+ if (c->doubleBufferMode) {
+ attr[numattr++] = kCGLPFADoubleBuffer;
+ *double_buffered = true;
+ }
+ else {
+ *double_buffered = false;
+ }
+
+ attr[numattr++] = kCGLPFAColorSize;
+ attr[numattr++] = c->redBits + c->greenBits + c->blueBits;
+ attr[numattr++] = kCGLPFAAlphaSize;
+ attr[numattr++] = c->alphaBits;
+
+ if ((c->accumRedBits + c->accumGreenBits + c->accumBlueBits) > 0) {
+ attr[numattr++] = kCGLPFAAccumSize;
+ attr[numattr++] = c->accumRedBits + c->accumGreenBits +
+ c->accumBlueBits + c->accumAlphaBits;
+ }
+
+ if (c->depthBits > 0) {
+ attr[numattr++] = kCGLPFADepthSize;
+ attr[numattr++] = c->depthBits;
+ }
+
+ if (c->stencilBits > 0) {
+ attr[numattr++] = kCGLPFAStencilSize;
+ attr[numattr++] = c->stencilBits;
+ }
+
+ if (c->sampleBuffers > 0) {
+ attr[numattr++] = kCGLPFAMultisample;
+ attr[numattr++] = kCGLPFASampleBuffers;
+ attr[numattr++] = c->sampleBuffers;
+ attr[numattr++] = kCGLPFASamples;
+ attr[numattr++] = c->samples;
+ }
+
+ attr[numattr++] = 0;
+
+ assert(numattr < MAX_ATTR);
+
+ error = apple_cgl.choose_pixel_format(attr, pfobj, &vsref);
+
+ if (error) {
+ fprintf(stderr, "error: %s\n", apple_cgl.error_string(error));
+ abort();
+ }
+}
diff --git a/src/glx/apple/apple_visual.h b/src/glx/apple/apple_visual.h
new file mode 100644
index 0000000000..ebfafa340b
--- /dev/null
+++ b/src/glx/apple/apple_visual.h
@@ -0,0 +1,41 @@
+/*
+ Copyright (c) 2008 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#ifndef APPLE_VISUAL_H
+#define APPLE_VISUAL_H
+
+#include <stdbool.h>
+#include <OpenGL/CGLTypes.h>
+
+/* mode is expected to be of type __GLcontextModes. */
+void apple_visual_create_pfobj(CGLPixelFormatObj * pfobj, const void *mode,
+ bool * double_buffered, bool * uses_stereo,
+ bool offscreen);
+
+#endif
diff --git a/src/glx/apple/apple_xgl_api_additional.c b/src/glx/apple/apple_xgl_api_additional.c
new file mode 100644
index 0000000000..7d40afe1d7
--- /dev/null
+++ b/src/glx/apple/apple_xgl_api_additional.c
@@ -0,0 +1,37 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#define GL_GLEXT_PROTOTYPES
+#include <GL/gl.h>
+
+GLAPI void APIENTRY glTexImage3DEXT(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei
+ depth, GLint border, GLenum format, GLenum type, const void * pixels) {
+ glTexImage3D(target, level, (GLint)internalformat, width, height, depth, border, format, type, pixels);
+}
+
diff --git a/src/glx/apple/apple_xgl_api_read.c b/src/glx/apple/apple_xgl_api_read.c
new file mode 100644
index 0000000000..0798f45bbf
--- /dev/null
+++ b/src/glx/apple/apple_xgl_api_read.c
@@ -0,0 +1,133 @@
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+/*
+ * This file works with the glXMakeContextCurrent readable drawable.
+ *
+ * The way it works is by swapping the currentDrawable for the currentReadable
+ * drawable if they are different.
+ */
+#include <stdbool.h>
+#include "glxclient.h"
+#include "apple_glx_context.h"
+#include "apple_xgl_api.h"
+
+extern struct apple_xgl_api __gl_api;
+
+struct apple_xgl_saved_state
+{
+ bool swapped;
+};
+
+static void
+SetRead(struct apple_xgl_saved_state *saved)
+{
+ GLXContext gc = __glXGetCurrentContext();
+
+ /*
+ * By default indicate that the state was not swapped, so that UnsetRead
+ * functions correctly.
+ */
+ saved->swapped = false;
+
+ /*
+ * If the readable drawable isn't the same as the drawable then
+ * the user has requested a readable drawable with glXMakeContextCurrent().
+ * We emulate this behavior by switching the current drawable.
+ */
+ if (None != gc->currentReadable
+ && gc->currentReadable != gc->currentDrawable) {
+ Display *dpy = glXGetCurrentDisplay();
+
+ saved->swapped = true;
+
+ if (apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,
+ gc->currentReadable)) {
+ /* An error occurred, so try to restore the old context state. */
+ (void) apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,
+ gc->currentDrawable);
+ saved->swapped = false;
+ }
+ }
+}
+
+static void
+UnsetRead(struct apple_xgl_saved_state *saved)
+{
+ if (saved->swapped) {
+ GLXContext gc = __glXGetCurrentContext();
+ Display *dpy = glXGetCurrentDisplay();
+
+ if (apple_glx_make_current_context(dpy, gc->driContext, gc->driContext,
+ gc->currentDrawable)) {
+ /*
+ * An error occurred restoring the drawable.
+ * It's unclear what to do about that.
+ */
+ }
+ }
+}
+
+void
+glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height,
+ GLenum format, GLenum type, void *pixels)
+{
+ struct apple_xgl_saved_state saved;
+
+ SetRead(&saved);
+
+ __gl_api.ReadPixels(x, y, width, height, format, type, pixels);
+
+ UnsetRead(&saved);
+}
+
+void
+glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
+{
+ struct apple_xgl_saved_state saved;
+
+ SetRead(&saved);
+
+ __gl_api.CopyPixels(x, y, width, height, type);
+
+ UnsetRead(&saved);
+}
+
+void
+glCopyColorTable(GLenum target, GLenum internalformat, GLint x, GLint y,
+ GLsizei width)
+{
+ struct apple_xgl_saved_state saved;
+
+ SetRead(&saved);
+
+ __gl_api.CopyColorTable(target, internalformat, x, y, width);
+
+ UnsetRead(&saved);
+}
diff --git a/src/glx/apple/apple_xgl_api_stereo.c b/src/glx/apple/apple_xgl_api_stereo.c
new file mode 100644
index 0000000000..64a15f7486
--- /dev/null
+++ b/src/glx/apple/apple_xgl_api_stereo.c
@@ -0,0 +1,128 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+/* This should be removed once stereo hardware bugs are fixed
+ * <rdar://problem/6729006>
+ */
+
+#include <stdbool.h>
+
+#define GL_GLEXT_PROTOTYPES
+#include <GL/gl.h>
+#include <GL/glext.h>
+
+#include "glxclient.h"
+#include "apple_glx_context.h"
+#include "apple_xgl_api.h"
+
+extern struct apple_xgl_api __gl_api;
+/*
+ * These are special functions for stereoscopic support
+ * differences in MacOS X.
+ */
+void
+glDrawBuffer(GLenum mode)
+{
+ GLXContext gc = glXGetCurrentContext();
+
+ if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
+ GLenum buf[2];
+ GLsizei n = 0;
+
+ switch (mode) {
+ case GL_BACK:
+ buf[0] = GL_BACK_LEFT;
+ buf[1] = GL_BACK_RIGHT;
+ n = 2;
+ break;
+ case GL_FRONT:
+ buf[0] = GL_FRONT_LEFT;
+ buf[1] = GL_FRONT_RIGHT;
+ n = 2;
+ break;
+
+ default:
+ buf[0] = mode;
+ n = 1;
+ break;
+ }
+
+ __gl_api.DrawBuffers(n, buf);
+ }
+ else {
+ __gl_api.DrawBuffer(mode);
+ }
+}
+
+
+void
+glDrawBuffers(GLsizei n, const GLenum * bufs)
+{
+ GLXContext gc = glXGetCurrentContext();
+
+ if (gc && apple_glx_context_uses_stereo(gc->driContext)) {
+ GLenum newbuf[n + 2];
+ GLsizei i, outi = 0;
+ bool have_back = false;
+ bool have_front = false;
+
+ for (i = 0; i < n; ++i) {
+ if (GL_BACK == bufs[i]) {
+ have_back = true;
+ }
+ else if (GL_FRONT == bufs[i]) {
+ have_back = true;
+ }
+ else {
+ newbuf[outi++] = bufs[i];
+ }
+ }
+
+ if (have_back) {
+ newbuf[outi++] = GL_BACK_LEFT;
+ newbuf[outi++] = GL_BACK_RIGHT;
+ }
+
+ if (have_front) {
+ newbuf[outi++] = GL_FRONT_LEFT;
+ newbuf[outi++] = GL_FRONT_RIGHT;
+ }
+
+ __gl_api.DrawBuffers(outi, newbuf);
+ }
+ else {
+ __gl_api.DrawBuffers(n, bufs);
+ }
+}
+
+void
+glDrawBuffersARB(GLsizei n, const GLenum * bufs)
+{
+ glDrawBuffers(n, bufs);
+}
diff --git a/src/glx/apple/apple_xgl_api_viewport.c b/src/glx/apple/apple_xgl_api_viewport.c
new file mode 100644
index 0000000000..e39ab15223
--- /dev/null
+++ b/src/glx/apple/apple_xgl_api_viewport.c
@@ -0,0 +1,46 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+
+#include "glxclient.h"
+#include "apple_glx_context.h"
+#include "apple_xgl_api.h"
+
+extern struct apple_xgl_api __gl_api;
+
+void
+glViewport(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+ GLXContext gc = __glXGetCurrentContext();
+ Display *dpy = glXGetCurrentDisplay();
+
+ if (gc && gc->driContext)
+ apple_glx_context_update(dpy, gc->driContext);
+
+ __gl_api.Viewport(x, y, width, height);
+}
diff --git a/src/glx/apple/appledri.c b/src/glx/apple/appledri.c
new file mode 100644
index 0000000000..4f2e8f9914
--- /dev/null
+++ b/src/glx/apple/appledri.c
@@ -0,0 +1,452 @@
+/* $XFree86: xc/lib/GL/dri/XF86dri.c,v 1.12 2001/08/27 17:40:57 dawes Exp $ */
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008 Apple Computer, Inc.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ * Kevin E. Martin <martin@valinux.com>
+ * Jens Owen <jens@valinux.com>
+ * Rickard E. (Rik) Faith <faith@valinux.com>
+ *
+ */
+
+/* THIS IS NOT AN X CONSORTIUM STANDARD */
+
+#define NEED_EVENTS
+#define NEED_REPLIES
+#include <X11/Xlibint.h>
+#include "appledristr.h"
+#include <X11/extensions/Xext.h>
+#include <X11/extensions/extutil.h>
+#include <stdio.h>
+
+static XExtensionInfo _appledri_info_data;
+static XExtensionInfo *appledri_info = &_appledri_info_data;
+static char *appledri_extension_name = APPLEDRINAME;
+
+#define AppleDRICheckExtension(dpy,i,val) \
+ XextCheckExtension (dpy, i, appledri_extension_name, val)
+
+/*****************************************************************************
+ * *
+ * private utility routines *
+ * *
+ *****************************************************************************/
+
+static int close_display(Display * dpy, XExtCodes * extCodes);
+static Bool wire_to_event(Display * dpy, XEvent * re, xEvent * event);
+
+static /* const */ XExtensionHooks appledri_extension_hooks = {
+ NULL, /* create_gc */
+ NULL, /* copy_gc */
+ NULL, /* flush_gc */
+ NULL, /* free_gc */
+ NULL, /* create_font */
+ NULL, /* free_font */
+ close_display, /* close_display */
+ wire_to_event, /* wire_to_event */
+ NULL, /* event_to_wire */
+ NULL, /* error */
+ NULL, /* error_string */
+};
+
+static
+XEXT_GENERATE_FIND_DISPLAY(find_display, appledri_info,
+ appledri_extension_name,
+ &appledri_extension_hooks,
+ AppleDRINumberEvents, NULL)
+
+ static XEXT_GENERATE_CLOSE_DISPLAY(close_display, appledri_info)
+
+ static void (*surface_notify_handler) ();
+
+ void *XAppleDRISetSurfaceNotifyHandler(void (*fun) ())
+{
+ void *old = surface_notify_handler;
+ surface_notify_handler = fun;
+ return old;
+}
+
+static Bool
+wire_to_event(Display *dpy, XEvent *re, xEvent *event)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRINotifyEvent *sevent;
+
+ AppleDRICheckExtension(dpy, info, False);
+
+ switch ((event->u.u.type & 0x7f) - info->codes->first_event) {
+ case AppleDRISurfaceNotify:
+ sevent = (xAppleDRINotifyEvent *) event;
+ if (surface_notify_handler != NULL) {
+ (*surface_notify_handler) (dpy, (unsigned int) sevent->arg,
+ (int) sevent->kind);
+ }
+ return False;
+ }
+ return False;
+}
+
+/*****************************************************************************
+ * *
+ * public Apple-DRI Extension routines *
+ * *
+ *****************************************************************************/
+
+#if 0
+#include <stdio.h>
+#define TRACE(msg) fprintf(stderr, "AppleDRI%s\n", msg);
+#else
+#define TRACE(msg)
+#endif
+
+
+Bool
+XAppleDRIQueryExtension(dpy, event_basep, error_basep)
+ Display *dpy;
+ int *event_basep, *error_basep;
+{
+ XExtDisplayInfo *info = find_display(dpy);
+
+ TRACE("QueryExtension...");
+ if (XextHasExtension(info)) {
+ *event_basep = info->codes->first_event;
+ *error_basep = info->codes->first_error;
+ TRACE("QueryExtension... return True");
+ return True;
+ }
+ else {
+ TRACE("QueryExtension... return False");
+ return False;
+ }
+}
+
+Bool
+XAppleDRIQueryVersion(dpy, majorVersion, minorVersion, patchVersion)
+ Display *dpy;
+ int *majorVersion;
+ int *minorVersion;
+ int *patchVersion;
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRIQueryVersionReply rep;
+ xAppleDRIQueryVersionReq *req;
+
+ TRACE("QueryVersion...");
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRIQueryVersion, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRIQueryVersion;
+ if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("QueryVersion... return False");
+ return False;
+ }
+ *majorVersion = rep.majorVersion;
+ *minorVersion = rep.minorVersion;
+ *patchVersion = rep.patchVersion;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("QueryVersion... return True");
+ return True;
+}
+
+Bool
+XAppleDRIQueryDirectRenderingCapable(dpy, screen, isCapable)
+ Display *dpy;
+ int screen;
+ Bool *isCapable;
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRIQueryDirectRenderingCapableReply rep;
+ xAppleDRIQueryDirectRenderingCapableReq *req;
+
+ TRACE("QueryDirectRenderingCapable...");
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRIQueryDirectRenderingCapable, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRIQueryDirectRenderingCapable;
+ req->screen = screen;
+ if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("QueryDirectRenderingCapable... return False");
+ return False;
+ }
+ *isCapable = rep.isCapable;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("QueryDirectRenderingCapable... return True");
+ return True;
+}
+
+Bool
+XAppleDRIAuthConnection(dpy, screen, magic)
+ Display *dpy;
+ int screen;
+ unsigned int magic;
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRIAuthConnectionReq *req;
+ xAppleDRIAuthConnectionReply rep;
+
+ TRACE("AuthConnection...");
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRIAuthConnection, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRIAuthConnection;
+ req->screen = screen;
+ req->magic = magic;
+ rep.authenticated = 0;
+ if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.authenticated) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("AuthConnection... return False");
+ return False;
+ }
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("AuthConnection... return True");
+ return True;
+}
+
+Bool
+XAppleDRICreateSurface(dpy, screen, drawable, client_id, key, uid)
+ Display *dpy;
+ int screen;
+ Drawable drawable;
+ unsigned int client_id;
+ unsigned int *key;
+ unsigned int *uid;
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRICreateSurfaceReply rep;
+ xAppleDRICreateSurfaceReq *req;
+
+ TRACE("CreateSurface...");
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRICreateSurface, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRICreateSurface;
+ req->screen = screen;
+ req->drawable = drawable;
+ req->client_id = client_id;
+ rep.key_0 = rep.key_1 = rep.uid = 0;
+ if (!_XReply(dpy, (xReply *) & rep, 0, xFalse) || !rep.key_0) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("CreateSurface... return False");
+ return False;
+ }
+ key[0] = rep.key_0;
+ key[1] = rep.key_1;
+ *uid = rep.uid;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("CreateSurface... return True");
+ return True;
+}
+
+Bool
+XAppleDRIDestroySurface(dpy, screen, drawable)
+ Display *dpy;
+ int screen;
+ Drawable drawable;
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRIDestroySurfaceReq *req;
+
+ TRACE("DestroySurface...");
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRIDestroySurface, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRIDestroySurface;
+ req->screen = screen;
+ req->drawable = drawable;
+ UnlockDisplay(dpy);
+ SyncHandle();
+ TRACE("DestroySurface... return True");
+ return True;
+}
+
+Bool
+XAppleDRICreateSharedBuffer(Display * dpy, int screen, Drawable drawable,
+ Bool doubleSwap, char *path, size_t pathlen,
+ int *width, int *height)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRICreateSharedBufferReq *req;
+ xAppleDRICreateSharedBufferReply rep;
+
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRICreateSharedBuffer, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRICreateSharedBuffer;
+ req->screen = screen;
+ req->drawable = drawable;
+ req->doubleSwap = doubleSwap;
+
+
+ if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+ puts("REPLY ERROR");
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+
+ printf("rep.stringLength %d\n", (int) rep.stringLength);
+
+ if (rep.stringLength > 0 && rep.stringLength <= pathlen) {
+ _XReadPad(dpy, path, rep.stringLength);
+
+ printf("path: %s\n", path);
+
+ *width = rep.width;
+ *height = rep.height;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ return False;
+}
+
+Bool
+XAppleDRISwapBuffers(Display * dpy, int screen, Drawable drawable)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRISwapBuffersReq *req;
+
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRISwapBuffers, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRISwapBuffers;
+ req->screen = screen;
+ req->drawable = drawable;
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ return True;
+}
+
+Bool
+XAppleDRICreatePixmap(Display * dpy, int screen, Drawable drawable,
+ int *width, int *height, int *pitch, int *bpp,
+ size_t * size, char *bufname, size_t bufnamesize)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRICreatePixmapReq *req;
+ xAppleDRICreatePixmapReply rep;
+
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRICreatePixmap, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRICreatePixmap;
+ req->screen = screen;
+ req->drawable = drawable;
+
+ if (!_XReply(dpy, (xReply *) & rep, 0, xFalse)) {
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return False;
+ }
+
+ /*
+ printf("rep.stringLength %d\n", (int) rep.stringLength);
+ */
+
+ if (rep.stringLength > 0 && rep.stringLength <= bufnamesize) {
+ _XReadPad(dpy, bufname, rep.stringLength);
+
+ printf("path: %s\n", bufname);
+
+ *width = rep.width;
+ *height = rep.height;
+ *pitch = rep.pitch;
+ *bpp = rep.bpp;
+ *size = rep.size;
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+ return True;
+ }
+ else if (rep.stringLength > 0) {
+ _XEatData(dpy, rep.stringLength);
+ }
+
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ return True;
+}
+
+/*
+ * Call it a drawable, because we really don't know what it is
+ * until it reaches the server, and we should keep that in mind.
+ */
+Bool
+XAppleDRIDestroyPixmap(Display * dpy, Pixmap drawable)
+{
+ XExtDisplayInfo *info = find_display(dpy);
+ xAppleDRIDestroyPixmapReq *req;
+
+ AppleDRICheckExtension(dpy, info, False);
+
+ LockDisplay(dpy);
+ GetReq(AppleDRIDestroyPixmap, req);
+ req->reqType = info->codes->major_opcode;
+ req->driReqType = X_AppleDRIDestroyPixmap;
+ req->drawable = drawable;
+ UnlockDisplay(dpy);
+ SyncHandle();
+
+ return True;
+}
diff --git a/src/glx/apple/appledri.h b/src/glx/apple/appledri.h
new file mode 100644
index 0000000000..0108378ca3
--- /dev/null
+++ b/src/glx/apple/appledri.h
@@ -0,0 +1,124 @@
+/* $XFree86: xc/lib/GL/dri/xf86dri.h,v 1.7 2000/12/07 20:26:02 dawes Exp $ */
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008, 2009 Apple Computer, Inc.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ * Kevin E. Martin <martin@valinux.com>
+ * Jens Owen <jens@valinux.com>
+ * Rickard E. (Rik) Faith <faith@valinux.com>
+ *
+ */
+
+#ifndef _APPLEDRI_H_
+#define _APPLEDRI_H_
+
+#include <X11/Xlib.h>
+#include <X11/Xfuncproto.h>
+
+#define X_AppleDRIQueryVersion 0
+#define X_AppleDRIQueryDirectRenderingCapable 1
+#define X_AppleDRICreateSurface 2
+#define X_AppleDRIDestroySurface 3
+#define X_AppleDRIAuthConnection 4
+#define X_AppleDRICreateSharedBuffer 5
+#define X_AppleDRISwapBuffers 6
+#define X_AppleDRICreatePixmap 7
+#define X_AppleDRIDestroyPixmap 8
+
+/* Requests up to and including 18 were used in a previous version */
+
+/* Events */
+#define AppleDRIObsoleteEvent1 0
+#define AppleDRIObsoleteEvent2 1
+#define AppleDRIObsoleteEvent3 2
+#define AppleDRISurfaceNotify 3
+#define AppleDRINumberEvents 4
+
+/* Errors */
+#define AppleDRIClientNotLocal 0
+#define AppleDRIOperationNotSupported 1
+#define AppleDRINumberErrors (AppleDRIOperationNotSupported + 1)
+
+/* Kinds of SurfaceNotify events: */
+#define AppleDRISurfaceNotifyChanged 0
+#define AppleDRISurfaceNotifyDestroyed 1
+
+#ifndef _APPLEDRI_SERVER_
+
+typedef struct
+{
+ int type; /* of event */
+ unsigned long serial; /* # of last request processed by server */
+ Bool send_event; /* true if this came frome a SendEvent request */
+ Display *display; /* Display the event was read from */
+ Window window; /* window of event */
+ Time time; /* server timestamp when event happened */
+ int kind; /* subtype of event */
+ int arg;
+} XAppleDRINotifyEvent;
+
+_XFUNCPROTOBEGIN
+ Bool XAppleDRIQueryExtension(Display * dpy, int *event_base,
+ int *error_base);
+
+Bool XAppleDRIQueryVersion(Display * dpy, int *majorVersion,
+ int *minorVersion, int *patchVersion);
+
+Bool XAppleDRIQueryDirectRenderingCapable(Display * dpy, int screen,
+ Bool * isCapable);
+
+void *XAppleDRISetSurfaceNotifyHandler(void (*fun) (Display * dpy,
+ unsigned uid, int kind));
+
+Bool XAppleDRIAuthConnection(Display * dpy, int screen, unsigned int magic);
+
+Bool XAppleDRICreateSurface(Display * dpy, int screen, Drawable drawable,
+ unsigned int client_id, unsigned int key[2],
+ unsigned int *uid);
+
+Bool XAppleDRIDestroySurface(Display * dpy, int screen, Drawable drawable);
+
+Bool XAppleDRISynchronizeSurfaces(Display * dpy);
+
+Bool XAppleDRICreateSharedBuffer(Display * dpy, int screen, Drawable drawable,
+ Bool doubleSwap, char *path, size_t pathlen,
+ int *width, int *height);
+
+Bool XAppleDRISwapBuffers(Display * dpy, int screen, Drawable drawable);
+
+Bool XAppleDRICreatePixmap(Display * dpy, int screen, Drawable drawable,
+ int *width, int *height, int *pitch, int *bpp,
+ size_t * size, char *bufname, size_t bufnamesize);
+
+Bool XAppleDRIDestroyPixmap(Display * dpy, Pixmap pixmap);
+
+_XFUNCPROTOEND
+#endif /* _APPLEDRI_SERVER_ */
+#endif /* _APPLEDRI_H_ */
diff --git a/src/glx/apple/appledristr.h b/src/glx/apple/appledristr.h
new file mode 100644
index 0000000000..b5ffe5b46a
--- /dev/null
+++ b/src/glx/apple/appledristr.h
@@ -0,0 +1,266 @@
+/**************************************************************************
+
+Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+Copyright 2000 VA Linux Systems, Inc.
+Copyright (c) 2002, 2008, 2009 Apple Computer, Inc.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sub license, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice (including the
+next paragraph) shall be included in all copies or substantial portions
+of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+**************************************************************************/
+
+/*
+ * Authors:
+ * Kevin E. Martin <martin@valinux.com>
+ * Jens Owen <jens@valinux.com>
+ * Rickard E. (Rik) Fiath <faith@valinux.com>
+ *
+ */
+
+#ifndef _APPLEDRISTR_H_
+#define _APPLEDRISTR_H_
+
+#include "appledri.h"
+
+#define APPLEDRINAME "Apple-DRI"
+
+#define APPLE_DRI_MAJOR_VERSION 1 /* current version numbers */
+#define APPLE_DRI_MINOR_VERSION 0
+#define APPLE_DRI_PATCH_VERSION 0
+
+typedef struct _AppleDRIQueryVersion
+{
+ CARD8 reqType; /* always DRIReqCode */
+ CARD8 driReqType; /* always X_DRIQueryVersion */
+ CARD16 length B16;
+} xAppleDRIQueryVersionReq;
+#define sz_xAppleDRIQueryVersionReq 4
+
+typedef struct
+{
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD16 majorVersion B16; /* major version of DRI protocol */
+ CARD16 minorVersion B16; /* minor version of DRI protocol */
+ CARD32 patchVersion B32; /* patch version of DRI protocol */
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xAppleDRIQueryVersionReply;
+#define sz_xAppleDRIQueryVersionReply 32
+
+typedef struct _AppleDRIQueryDirectRenderingCapable
+{
+ CARD8 reqType; /* always DRIReqCode */
+ CARD8 driReqType; /* X_DRIQueryDirectRenderingCapable */
+ CARD16 length B16;
+ CARD32 screen B32;
+} xAppleDRIQueryDirectRenderingCapableReq;
+#define sz_xAppleDRIQueryDirectRenderingCapableReq 8
+
+typedef struct
+{
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ BOOL isCapable;
+ BOOL pad2;
+ BOOL pad3;
+ BOOL pad4;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+ CARD32 pad7 B32;
+ CARD32 pad8 B32;
+ CARD32 pad9 B32;
+} xAppleDRIQueryDirectRenderingCapableReply;
+#define sz_xAppleDRIQueryDirectRenderingCapableReply 32
+
+typedef struct _AppleDRIAuthConnection
+{
+ CARD8 reqType; /* always DRIReqCode */
+ CARD8 driReqType; /* always X_DRICloseConnection */
+ CARD16 length B16;
+ CARD32 screen B32;
+ CARD32 magic B32;
+} xAppleDRIAuthConnectionReq;
+#define sz_xAppleDRIAuthConnectionReq 12
+
+typedef struct
+{
+ BYTE type;
+ BOOL pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 authenticated B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xAppleDRIAuthConnectionReply;
+#define zx_xAppleDRIAuthConnectionReply 32
+
+typedef struct _AppleDRICreateSurface
+{
+ CARD8 reqType; /* always DRIReqCode */
+ CARD8 driReqType; /* always X_DRICreateSurface */
+ CARD16 length B16;
+ CARD32 screen B32;
+ CARD32 drawable B32;
+ CARD32 client_id B32;
+} xAppleDRICreateSurfaceReq;
+#define sz_xAppleDRICreateSurfaceReq 16
+
+typedef struct
+{
+ BYTE type; /* X_Reply */
+ BOOL pad1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 key_0 B32;
+ CARD32 key_1 B32;
+ CARD32 uid B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xAppleDRICreateSurfaceReply;
+#define sz_xAppleDRICreateSurfaceReply 32
+
+typedef struct _AppleDRIDestroySurface
+{
+ CARD8 reqType; /* always DRIReqCode */
+ CARD8 driReqType; /* always X_DRIDestroySurface */
+ CARD16 length B16;
+ CARD32 screen B32;
+ CARD32 drawable B32;
+} xAppleDRIDestroySurfaceReq;
+#define sz_xAppleDRIDestroySurfaceReq 12
+
+typedef struct _AppleDRINotify
+{
+ BYTE type; /* always eventBase + event type */
+ BYTE kind;
+ CARD16 sequenceNumber B16;
+ CARD32 time B32; /* time of change */
+ CARD32 pad1 B32;
+ CARD32 arg B32;
+ CARD32 pad3 B32;
+ CARD32 pad4 B32;
+ CARD32 pad5 B32;
+ CARD32 pad6 B32;
+} xAppleDRINotifyEvent;
+#define sz_xAppleDRINotifyEvent 32
+
+
+typedef struct
+{
+ CARD8 reqType;
+ CARD8 driReqType;
+ CARD16 length B16;
+ CARD32 screen B32;
+ CARD32 drawable B32;
+ BOOL doubleSwap;
+ CARD8 pad1, pad2, pad3;
+} xAppleDRICreateSharedBufferReq;
+
+#define sz_xAppleDRICreateSharedBufferReq 16
+
+typedef struct
+{
+ BYTE type;
+ BYTE data1;
+ CARD16 sequenceNumber B16;
+ CARD32 length B32;
+ CARD32 stringLength B32; /* 0 on error */
+ CARD32 width B32;
+ CARD32 height B32;
+ CARD32 pad1 B32;
+ CARD32 pad2 B32;
+ CARD32 pad3 B32;
+} xAppleDRICreateSharedBufferReply;
+
+#define sz_xAppleDRICreateSharedBufferReply 32
+
+typedef struct
+{
+ CARD8 reqType;
+ CARD8 driReqType;
+ CARD16 length B16;
+ CARD32 screen B32;
+ CARD32 drawable B32;
+} xAppleDRISwapBuffersReq;
+
+#define sz_xAppleDRISwapBuffersReq 12
+
+typedef struct
+{
+ CARD8 reqType; /*1 */
+ CARD8 driReqType; /*2 */
+ CARD16 length B16; /*4 */
+ CARD32 screen B32; /*8 */
+ CARD32 drawable B32; /*12 */
+} xAppleDRICreatePixmapReq;
+
+#define sz_xAppleDRICreatePixmapReq 12
+
+typedef struct
+{
+ BYTE type; /*1 */
+ BOOL pad1; /*2 */
+ CARD16 sequenceNumber B16; /*4 */
+ CARD32 length B32; /*8 */
+ CARD32 width B32; /*12 */
+ CARD32 height B32; /*16 */
+ CARD32 pitch B32; /*20 */
+ CARD32 bpp B32; /*24 */
+ CARD32 size B32; /*28 */
+ CARD32 stringLength B32; /*32 */
+} xAppleDRICreatePixmapReply;
+
+#define sz_xAppleDRICreatePixmapReply 32
+
+typedef struct
+{
+ CARD8 reqType; /*1 */
+ CARD8 driReqType; /*2 */
+ CARD16 length B16; /*4 */
+ CARD32 drawable B32; /*8 */
+} xAppleDRIDestroyPixmapReq;
+
+#define sz_xAppleDRIDestroyPixmapReq 8
+
+#ifdef _APPLEDRI_SERVER_
+
+void AppleDRISendEvent(
+#if NeedFunctionPrototypes
+ int /* type */ ,
+ unsigned int /* mask */ ,
+ int /* which */ ,
+ int /* arg */
+#endif
+ );
+
+#endif /* _APPLEDRI_SERVER_ */
+#endif /* _APPLEDRISTR_H_ */
diff --git a/src/glx/apple/gen_api_header.tcl b/src/glx/apple/gen_api_header.tcl
new file mode 100644
index 0000000000..9e986de504
--- /dev/null
+++ b/src/glx/apple/gen_api_header.tcl
@@ -0,0 +1,86 @@
+
+package require Tcl 8.5
+
+set license {
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+}
+
+set this_script [info script]
+
+proc main {argc argv} {
+ if {2 != $argc} {
+ puts stderr "syntax is: [set ::this_script] serialized-array-file output.h"
+ return 1
+ }
+
+ set fd [open [lindex $argv 0] r]
+ array set api [read $fd]
+ close $fd
+
+ set fd [open [lindex $argv 1] w]
+
+ puts $fd "/* This file was automatically generated by [set ::this_script]. */"
+ puts $fd $::license
+
+ puts $fd "
+#ifndef APPLE_XGL_API_H
+#define APPLE_XGL_API_H
+"
+
+ puts $fd "struct apple_xgl_api \{"
+
+ set sorted [lsort -dictionary [array names api]]
+
+ foreach f $sorted {
+ set attr $api($f)
+ set pstr ""
+
+ if {[dict exists $attr alias_for] || [dict exists $attr noop]} {
+ #Skip this function.
+ continue
+ }
+
+ foreach p [dict get $attr parameters] {
+ append pstr "[lindex $p 0] [lindex $p 1], "
+ }
+
+ set pstr [string trimright $pstr ", "]
+ puts $fd "\t[dict get $attr return] (*[set f])([set pstr]);"
+ }
+
+ puts $fd "\};"
+ puts $fd "void apple_xgl_init_direct(void);
+
+#endif /*APPLE_XGL_API_H*/
+"
+
+ return 0
+}
+exit [main $::argc $::argv] \ No newline at end of file
diff --git a/src/glx/apple/gen_api_library.tcl b/src/glx/apple/gen_api_library.tcl
new file mode 100644
index 0000000000..159f9c085f
--- /dev/null
+++ b/src/glx/apple/gen_api_library.tcl
@@ -0,0 +1,212 @@
+package require Tcl 8.5
+
+set license {
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+}
+
+set gl_license {
+/*
+** License Applicability. Except to the extent portions of this file are
+** made subject to an alternative license as permitted in the SGI Free
+** Software License B, Version 1.1 (the "License"), the contents of this
+** file are subject only to the provisions of the License. You may not use
+** this file except in compliance with the License. You may obtain a copy
+** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
+** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
+**
+** http://oss.sgi.com/projects/FreeB
+**
+** Note that, as provided in the License, the Software is distributed on an
+** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
+** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
+** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
+** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+**
+** Original Code. The Original Code is: OpenGL Sample Implementation,
+** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
+** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
+** Copyright in any portions created by third parties is as indicated
+** elsewhere herein. All Rights Reserved.
+**
+** Additional Notice Provisions: This software was created using the
+** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
+** not been independently verified as being compliant with the OpenGL(R)
+** version 1.2.1 Specification.
+*/
+}
+
+set init_code {
+static void *glsym(void *handle, const char *name) {
+ void *sym = dlsym(handle, name);
+
+ if(NULL == sym) {
+ fprintf(stderr, "Error: symbol not found: '%s'. "
+ "Error information: %s\n",
+ name, dlerror());
+ abort();
+ }
+
+ return sym;
+}
+
+}
+
+set dlopen_code {
+#ifndef LIBGLNAME
+#define LIBGLNAME "/System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib"
+#endif LIBGLNAME
+
+ (void)dlerror(); /*drain dlerror()*/
+
+ handle = dlopen(LIBGLNAME, RTLD_LAZY);
+
+ if(NULL == handle) {
+ fprintf(stderr, "error: unable to dlopen "
+ LIBGLNAME " :" "%s\n", dlerror());
+ abort();
+ }
+}
+
+set this_script [info script]
+
+proc main {argc argv} {
+ if {2 != $argc} {
+ puts stderr "syntax is: [set ::this_script] serialized-array-file output.c"
+ return 1
+ }
+
+
+ set fd [open [lindex $argv 0] r]
+ array set api [read $fd]
+ close $fd
+
+ set fd [open [lindex $argv 1] w]
+
+ puts $fd "/* This file was automatically generated by [set ::this_script]. */"
+ puts $fd $::license
+
+ puts $fd {
+#define GL_GLEXT_PROTOTYPES
+#include <GL/gl.h>
+#include <dlfcn.h>
+#include "glxclient.h"
+#include "apple_xgl_api.h"
+#include "apple_glx_context.h"
+ }
+
+ puts $fd "struct apple_xgl_api __gl_api;"
+
+ set sorted [lsort -dictionary [array names api]]
+
+ set exclude [list DrawBuffer DrawBuffers DrawBuffersARB]
+
+ #These are special to glXMakeContextCurrent.
+ #See also: apple_xgl_api_read.c.
+ lappend exclude ReadPixels CopyPixels CopyColorTable
+
+ #This is excluded to work with surface updates.
+ lappend exclude Viewport
+
+ foreach f $sorted {
+ if {$f in $exclude} {
+ continue
+ }
+
+ set attr $api($f)
+
+ set pstr ""
+
+ foreach p [dict get $attr parameters] {
+ append pstr "[lindex $p 0] [lindex $p 1], "
+ }
+
+ set pstr [string trimright $pstr ", "]
+
+ if {![string length $pstr]} {
+ set pstr void
+ }
+
+ set callvars ""
+
+ foreach p [dict get $attr parameters] {
+ append callvars "[lindex $p end], "
+ }
+
+ set callvars [string trimright $callvars ", "]
+
+ set return ""
+ if {"void" ne [dict get $attr return]} {
+ set return "return "
+ }
+
+ if {[dict exists $attr noop]} {
+ if {"void" eq [dict get $attr return]} {
+ set body "/*noop*/"
+ } else {
+ set body "return 0; /*noop*/"
+ }
+ } elseif {[dict exists $attr alias_for]} {
+ set alias [dict get $attr alias_for]
+ set body "[set return] gl[set alias]([set callvars]);"
+ } else {
+ set body "[set return]__gl_api.[set f]([set callvars]);"
+ }
+
+ puts $fd "GLAPI [dict get $attr return] APIENTRY gl[set f]([set pstr]) \{\n\t$body\n\}"
+ }
+
+ puts $fd $::init_code
+
+ puts $fd "void apple_xgl_init_direct(void) \{"
+ puts $fd "\tvoid *handle;"
+
+ puts $fd $::dlopen_code
+
+ foreach f $sorted {
+ set attr $api($f)
+
+ puts $attr
+ puts $f
+
+ if {[dict exists $attr alias_for] || [dict exists $attr noop]} {
+ #Function f is an alias_for another, so we shouldn't try
+ #to load it.
+ continue
+ }
+
+ puts $fd "\t__gl_api.$f = glsym(handle, \"gl$f\");"
+ }
+
+ puts $fd "\}\n"
+ close $fd
+
+ return 0
+}
+exit [main $::argc $::argv]
diff --git a/src/glx/apple/gen_code.tcl b/src/glx/apple/gen_code.tcl
new file mode 100644
index 0000000000..bb38d9f1c9
--- /dev/null
+++ b/src/glx/apple/gen_code.tcl
@@ -0,0 +1,50 @@
+if 0 {
+ Copyright (c) 2008 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+}
+
+package require Tcl 8.5
+
+proc main {} {
+ set tclsh [info nameofexecutable]
+
+ puts TYPES
+ exec $tclsh ./gen_types.tcl stage.1
+ puts DEFS
+ exec $tclsh ./gen_defs.tcl specs/enum.spec stage.2
+ puts FUNCS
+ exec $tclsh ./gen_funcs.tcl specs/gl.spec stage.3 stage.4
+ puts HEADER
+ exec $tclsh ./gen_api_header.tcl stage.4 apple_xgl_api.h
+ puts "C API"
+ exec $tclsh ./gen_api_library.tcl stage.4 apple_xgl_api.c
+ puts "EXPORTS"
+ exec $tclsh ./gen_exports.tcl stage.4 exports.list
+
+ return 0
+}
+exit [main]
diff --git a/src/glx/apple/gen_defs.tcl b/src/glx/apple/gen_defs.tcl
new file mode 100644
index 0000000000..d32694db72
--- /dev/null
+++ b/src/glx/apple/gen_defs.tcl
@@ -0,0 +1,67 @@
+#This parses and generates #defines from an enum.spec type of file.
+
+proc main {argc argv} {
+ if {2 != $argc} {
+ puts stderr "syntax is: [info script] input.spec output.h"
+ exit 1
+ }
+
+ set fd [open [lindex $argv 0] r]
+ set data [read $fd]
+ close $fd
+
+ set fd [open [lindex $argv 1] w]
+
+ set state ""
+
+ puts $fd "#define GL_VERSION_1_1 1"
+ puts $fd "#define GL_VERSION_1_2 1"
+ puts $fd "#define GL_VERSION_1_3 1"
+ puts $fd "#define GL_VERSION_1_4 1"
+ puts $fd "#define GL_VERSION_1_5 1"
+ puts $fd "#define GL_VERSION_2_0 1"
+ #puts $fd "#define GL_VERSION_3_0 1"
+
+ set mask ""
+ array set ar {}
+
+ foreach line [split $data \n] {
+ if {[regexp {^\S*#.*} $line] > 0} {
+ #puts COMMENT:$line
+ set state ""
+ } elseif {"enum" eq $state} {
+ if {[string match "\t*" $line]} {
+ if {[regexp {^\tuse.*} $line] > 0} {
+ lassign [split [string trim $line]] use usemask def
+ set usemask [string trim $usemask]
+ set def [string trim $def]
+ puts $fd "/* GL_$def */"
+ } else {
+ lassign [split [string trim $line] =] def value
+ set def [string trim $def]
+ set value [string trim $value]
+
+ #Trim out the data like: 0x0B00 # 4 F
+ set value [lindex [split $value] 0]
+
+ puts $fd "#define GL_$def $value"
+
+ #Save this association with the value.
+ set d $ar($mask)
+ dict set d $def $value
+ set ar($mask) $d
+ }
+ } else {
+ set state ""
+ }
+ } elseif {[string match "* enum:*" $line]} {
+ lassign [split $line] mask _
+ puts $fd "\n/*[string trim $mask]*/"
+ set ar($mask) [dict create]
+ set state enum
+ }
+ }
+
+ close $fd
+}
+main $::argc $::argv
diff --git a/src/glx/apple/gen_exports.tcl b/src/glx/apple/gen_exports.tcl
new file mode 100644
index 0000000000..acfe6e6a9e
--- /dev/null
+++ b/src/glx/apple/gen_exports.tcl
@@ -0,0 +1,132 @@
+if 0 {
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+}
+
+package require Tcl 8.5
+
+proc main {argc argv} {
+ if {2 != $argc} {
+ puts stderr "syntax is: [info script] serialized-array-file export.list"
+ return 1
+ }
+
+ set fd [open [lindex $argv 0] r]
+ array set api [read $fd]
+ close $fd
+
+ #Start with 1.0
+ set glxlist [list \
+ glXChooseVisual glXCreateContext glXDestroyContext \
+ glXMakeCurrent glXCopyContext glXSwapBuffers \
+ glXCreateGLXPixmap glXDestroyGLXPixmap \
+ glXQueryExtension glXQueryVersion \
+ glXIsDirect glXGetConfig \
+ glXGetCurrentContext glXGetCurrentDrawable \
+ glXWaitGL glXWaitX glXUseXFont]
+
+ #GLX 1.1 and later
+ lappend glxlist glXQueryExtensionsString glXQueryServerString \
+ glXGetClientString
+
+ #GLX 1.2 and later
+ lappend glxlist glXGetCurrentDisplay
+
+ #GLX 1.3 and later
+ lappend glxlist glXChooseFBConfig glXGetFBConfigAttrib \
+ glXGetFBConfigs glXGetVisualFromFBConfig \
+ glXCreateWindow glXDestroyWindow \
+ glXCreatePixmap glXDestroyPixmap \
+ glXCreatePbuffer glXDestroyPbuffer \
+ glXQueryDrawable glXCreateNewContext \
+ glXMakeContextCurrent glXGetCurrentReadDrawable \
+ glXQueryContext glXSelectEvent glXGetSelectedEvent
+
+ #GLX 1.4 and later
+ lappend glxlist glXGetProcAddress
+
+ #Extensions
+ lappend glxlist glXGetProcAddressARB
+
+ #Old extensions we don't support and never really have, but need for
+ #symbol compatibility. See also: glx_empty.c
+ lappend glxlist glXSwapIntervalSGI glXSwapIntervalMESA \
+ glXGetSwapIntervalMESA glXBeginFrameTrackingMESA \
+ glXEndFrameTrackingMESA glXGetFrameUsageMESA \
+ glXQueryFrameTrackingMESA glXGetVideoSyncSGI \
+ glXWaitVideoSyncSGI glXJoinSwapGroupSGIX \
+ glXBindSwapBarrierSGIX glXQueryMaxSwapBarriersSGIX \
+ glXGetSyncValuesOML glXSwapBuffersMscOML \
+ glXWaitForMscOML glXWaitForSbcOML \
+ glXAllocateMemoryMESA glXFreeMemoryMESA \
+ glXGetMemoryOffsetMESA glXReleaseBuffersMESA \
+ glXCreateGLXPixmapMESA glXCopySubBufferMESA \
+ glXQueryGLXPbufferSGIX glXCreateGLXPbufferSGIX \
+ glXDestroyGLXPbufferSGIX glXSelectEventSGIX \
+ glXGetSelectedEventSGIX
+
+ #These are for GLX_SGIX_fbconfig, which isn't implemented, because
+ #we have the GLX 1.3 GLXFBConfig functions which are in the standard spec.
+ #It should be possible to support these to some extent.
+ #The old libGL somewhat supported the GLXFBConfigSGIX code, but lacked
+ #pbuffer, and pixmap support.
+ #We mainly just need these stubs for linking with apps, because for
+ #some reason the OpenGL site suggests using the latest glxext.h,
+ #and glxext.h defines all GLX extensions, which doesn't seem right for
+ #compile-time capability detection.
+ #See also: http://www.mesa3d.org/brianp/sig97/exten.htm#Compile
+ #which conflicts with: the ABI registry from what I saw on opengl.org.
+ #By disabling some of the #defines in glxext.h we break some software,
+ #and by enabling them without the symbols we break others (in Mesa).
+ #I think a lot of OpenGL-based programs have issues one way or another.
+ #It seems that even Mesa developers are confused on this issue, because
+ #Mesa-7.3/progs/xdemos/glxgears_fbconfig.c has comments about breakage
+ #in some comments.
+ lappend glxlist glXGetFBConfigAttribSGIX \
+ glXChooseFBConfigSGIX \
+ glXGetVisualFromFBConfigSGIX \
+ glXCreateGLXPixmapWithConfigSGIX \
+ glXCreateContextWithConfigSGIX \
+ glXGetFBConfigFromVisualSGIX
+
+
+ set fd [open [lindex $argv 1] w]
+
+ foreach f [lsort -dictionary [array names api]] {
+ puts $fd _gl$f
+ }
+
+ foreach f [lsort -dictionary $glxlist] {
+ puts $fd _$f
+ }
+
+ close $fd
+
+ return 0
+}
+
+exit [main $::argc $::argv] \ No newline at end of file
diff --git a/src/glx/apple/gen_funcs.tcl b/src/glx/apple/gen_funcs.tcl
new file mode 100644
index 0000000000..1392c155a8
--- /dev/null
+++ b/src/glx/apple/gen_funcs.tcl
@@ -0,0 +1,735 @@
+package require Tcl 8.5
+
+#input is specs/gl.spec
+
+set license {
+/*
+ Copyright (c) 2008, 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+}
+
+
+proc extension name {
+ global extensions
+
+ set extensions($name) 1
+}
+
+proc alias {from to} {
+ global aliases
+
+ set aliases($from) $to
+}
+
+proc promoted name {
+ global promoted
+
+ set promoted($name) 1
+}
+
+proc noop name {
+ global noop
+
+ set noop($name) 1
+}
+
+set dir [file dirname [info script]]
+
+source [file join $dir GL_extensions]
+source [file join $dir GL_aliases]
+source [file join $dir GL_promoted]
+source [file join $dir GL_noop]
+
+proc is-extension-supported? name {
+ global extensions
+
+ return [info exists extensions($name)]
+}
+
+# This is going to need to be updated for future OpenGL versions:
+# cat specs/gl.tm | grep -v '^#' | awk -F, '{sub(/[ \t]+/, ""); print " "$1 " \"" $4 "\""}'
+# then change void from "*" to "void"
+#
+# TextureComponentCount is GLenum in SL for everything
+# It is GLint in mesa, but is GLenum for glTexImage3DEXT
+array set typemap {
+ AccumOp "GLenum"
+ AlphaFunction "GLenum"
+ AttribMask "GLbitfield"
+ BeginMode "GLenum"
+ BinormalPointerTypeEXT "GLenum"
+ BlendEquationMode "GLenum"
+ BlendEquationModeEXT "GLenum"
+ BlendFuncSeparateParameterEXT "GLenum"
+ BlendingFactorDest "GLenum"
+ BlendingFactorSrc "GLenum"
+ Boolean "GLboolean"
+ BooleanPointer "GLboolean*"
+ Char "GLchar"
+ CharPointer "GLchar*"
+ CheckedFloat32 "GLfloat"
+ CheckedInt32 "GLint"
+ ClampColorTargetARB "GLenum"
+ ClampColorModeARB "GLenum"
+ ClampedColorF "GLclampf"
+ ClampedFloat32 "GLclampf"
+ ClampedFloat64 "GLclampd"
+ ClampedStencilValue "GLint"
+ ClearBufferMask "GLbitfield"
+ ClientAttribMask "GLbitfield"
+ ClipPlaneName "GLenum"
+ ColorB "GLbyte"
+ ColorD "GLdouble"
+ ColorF "GLfloat"
+ ColorI "GLint"
+ ColorIndexValueD "GLdouble"
+ ColorIndexValueF "GLfloat"
+ ColorIndexValueI "GLint"
+ ColorIndexValueS "GLshort"
+ ColorIndexValueUB "GLubyte"
+ ColorMaterialParameter "GLenum"
+ ColorPointerType "GLenum"
+ ColorS "GLshort"
+ ColorTableParameterPName "GLenum"
+ ColorTableParameterPNameSGI "GLenum"
+ ColorTableTarget "GLenum"
+ ColorTableTargetSGI "GLenum"
+ ColorUB "GLubyte"
+ ColorUI "GLuint"
+ ColorUS "GLushort"
+ CombinerBiasNV "GLenum"
+ CombinerComponentUsageNV "GLenum"
+ CombinerMappingNV "GLenum"
+ CombinerParameterNV "GLenum"
+ CombinerPortionNV "GLenum"
+ CombinerRegisterNV "GLenum"
+ CombinerScaleNV "GLenum"
+ CombinerStageNV "GLenum"
+ CombinerVariableNV "GLenum"
+ CompressedTextureARB "GLvoid"
+ ControlPointNV "GLvoid"
+ ControlPointTypeNV "GLenum"
+ ConvolutionParameter "GLenum"
+ ConvolutionParameterEXT "GLenum"
+ ConvolutionTarget "GLenum"
+ ConvolutionTargetEXT "GLenum"
+ CoordD "GLdouble"
+ CoordF "GLfloat"
+ CoordI "GLint"
+ CoordS "GLshort"
+ CullFaceMode "GLenum"
+ CullParameterEXT "GLenum"
+ DepthFunction "GLenum"
+ DrawBufferMode "GLenum"
+ DrawBufferName "GLint"
+ DrawElementsType "GLenum"
+ ElementPointerTypeATI "GLenum"
+ EnableCap "GLenum"
+ ErrorCode "GLenum"
+ EvalMapsModeNV "GLenum"
+ EvalTargetNV "GLenum"
+ FeedbackElement "GLfloat"
+ FeedbackType "GLenum"
+ FenceNV "GLuint"
+ FenceConditionNV "GLenum"
+ FenceParameterNameNV "GLenum"
+ FfdMaskSGIX "GLbitfield"
+ FfdTargetSGIX "GLenum"
+ Float32 "GLfloat"
+ Float32Pointer "GLfloat*"
+ Float64 "GLdouble"
+ Float64Pointer "GLdouble*"
+ FogParameter "GLenum"
+ FogPointerTypeEXT "GLenum"
+ FogPointerTypeIBM "GLenum"
+ FragmentLightModelParameterSGIX "GLenum"
+ FragmentLightNameSGIX "GLenum"
+ FragmentLightParameterSGIX "GLenum"
+ FramebufferAttachment "GLenum"
+ FramebufferTarget "GLenum"
+ FrontFaceDirection "GLenum"
+ FunctionPointer "_GLfuncptr"
+ GetColorTableParameterPName "GLenum"
+ GetColorTableParameterPNameSGI "GLenum"
+ GetConvolutionParameterPName "GLenum"
+ GetHistogramParameterPName "GLenum"
+ GetHistogramParameterPNameEXT "GLenum"
+ GetMapQuery "GLenum"
+ GetMinmaxParameterPName "GLenum"
+ GetMinmaxParameterPNameEXT "GLenum"
+ GetPName "GLenum"
+ GetPointervPName "GLenum"
+ GetTextureParameter "GLenum"
+ HintMode "GLenum"
+ HintTarget "GLenum"
+ HintTargetPGI "GLenum"
+ HistogramTarget "GLenum"
+ HistogramTargetEXT "GLenum"
+ IglooFunctionSelectSGIX "GLenum"
+ IglooParameterSGIX "GLvoid"
+ ImageTransformPNameHP "GLenum"
+ ImageTransformTargetHP "GLenum"
+ IndexFunctionEXT "GLenum"
+ IndexMaterialParameterEXT "GLenum"
+ IndexPointerType "GLenum"
+ Int16 "GLshort"
+ Int32 "GLint"
+ Int8 "GLbyte"
+ InterleavedArrayFormat "GLenum"
+ LightEnvParameterSGIX "GLenum"
+ LightModelParameter "GLenum"
+ LightName "GLenum"
+ LightParameter "GLenum"
+ LightTextureModeEXT "GLenum"
+ LightTexturePNameEXT "GLenum"
+ LineStipple "GLushort"
+ List "GLuint"
+ ListMode "GLenum"
+ ListNameType "GLenum"
+ ListParameterName "GLenum"
+ LogicOp "GLenum"
+ MapAttribParameterNV "GLenum"
+ MapParameterNV "GLenum"
+ MapTarget "GLenum"
+ MapTargetNV "GLenum"
+ MapTypeNV "GLenum"
+ MaskedColorIndexValueF "GLfloat"
+ MaskedColorIndexValueI "GLuint"
+ MaskedStencilValue "GLuint"
+ MaterialFace "GLenum"
+ MaterialParameter "GLenum"
+ MatrixIndexPointerTypeARB "GLenum"
+ MatrixMode "GLenum"
+ MatrixTransformNV "GLenum"
+ MeshMode1 "GLenum"
+ MeshMode2 "GLenum"
+ MinmaxTarget "GLenum"
+ MinmaxTargetEXT "GLenum"
+ NormalPointerType "GLenum"
+ NurbsCallback "GLenum"
+ NurbsObj "GLUnurbs*"
+ NurbsProperty "GLenum"
+ NurbsTrim "GLenum"
+ OcclusionQueryParameterNameNV "GLenum"
+ PixelCopyType "GLenum"
+ PixelFormat "GLenum"
+ PixelInternalFormat "GLenum"
+ PixelMap "GLenum"
+ PixelStoreParameter "GLenum"
+ PixelTexGenModeSGIX "GLenum"
+ PixelTexGenParameterNameSGIS "GLenum"
+ PixelTransferParameter "GLenum"
+ PixelTransformPNameEXT "GLenum"
+ PixelTransformTargetEXT "GLenum"
+ PixelType "GLenum"
+ PointParameterNameARB "GLenum"
+ PolygonMode "GLenum"
+ ProgramNV "GLuint"
+ ProgramCharacterNV "GLubyte"
+ ProgramParameterNV "GLenum"
+ ProgramParameterPName "GLenum"
+ QuadricCallback "GLenum"
+ QuadricDrawStyle "GLenum"
+ QuadricNormal "GLenum"
+ QuadricObj "GLUquadric*"
+ QuadricOrientation "GLenum"
+ ReadBufferMode "GLenum"
+ RenderbufferTarget "GLenum"
+ RenderingMode "GLenum"
+ ReplacementCodeSUN "GLuint"
+ ReplacementCodeTypeSUN "GLenum"
+ SamplePassARB "GLenum"
+ SamplePatternEXT "GLenum"
+ SamplePatternSGIS "GLenum"
+ SecondaryColorPointerTypeIBM "GLenum"
+ SelectName "GLuint"
+ SeparableTarget "GLenum"
+ SeparableTargetEXT "GLenum"
+ ShadingModel "GLenum"
+ SizeI "GLsizei"
+ SpriteParameterNameSGIX "GLenum"
+ StencilFunction "GLenum"
+ StencilFaceDirection "GLenum"
+ StencilOp "GLenum"
+ StencilValue "GLint"
+ String "const GLubyte *"
+ StringName "GLenum"
+ TangentPointerTypeEXT "GLenum"
+ TessCallback "GLenum"
+ TessContour "GLenum"
+ TessProperty "GLenum"
+ TesselatorObj "GLUtesselator*"
+ TexCoordPointerType "GLenum"
+ Texture "GLuint"
+ TextureComponentCount "GLint"
+ TextureCoordName "GLenum"
+ TextureEnvParameter "GLenum"
+ TextureEnvTarget "GLenum"
+ TextureFilterSGIS "GLenum"
+ TextureGenParameter "GLenum"
+ TextureNormalModeEXT "GLenum"
+ TextureParameterName "GLenum"
+ TextureTarget "GLenum"
+ TextureUnit "GLenum"
+ UInt16 "GLushort"
+ UInt32 "GLuint"
+ UInt8 "GLubyte"
+ VertexAttribEnum "GLenum"
+ VertexAttribEnumNV "GLenum"
+ VertexAttribPointerTypeNV "GLenum"
+ VertexPointerType "GLenum"
+ VertexWeightPointerTypeEXT "GLenum"
+ Void "GLvoid"
+ VoidPointer "GLvoid*"
+ ConstVoidPointer "GLvoid* const"
+ WeightPointerTypeARB "GLenum"
+ WinCoord "GLint"
+ void "void"
+ ArrayObjectPNameATI "GLenum"
+ ArrayObjectUsageATI "GLenum"
+ ConstFloat32 "GLfloat"
+ ConstInt32 "GLint"
+ ConstUInt32 "GLuint"
+ ConstVoid "GLvoid"
+ DataTypeEXT "GLenum"
+ FragmentOpATI "GLenum"
+ GetTexBumpParameterATI "GLenum"
+ GetVariantValueEXT "GLenum"
+ ParameterRangeEXT "GLenum"
+ PreserveModeATI "GLenum"
+ ProgramFormatARB "GLenum"
+ ProgramTargetARB "GLenum"
+ ProgramTarget "GLenum"
+ ProgramPropertyARB "GLenum"
+ ProgramStringPropertyARB "GLenum"
+ ScalarType "GLenum"
+ SwizzleOpATI "GLenum"
+ TexBumpParameterATI "GLenum"
+ VariantCapEXT "GLenum"
+ VertexAttribPointerPropertyARB "GLenum"
+ VertexAttribPointerTypeARB "GLenum"
+ VertexAttribPropertyARB "GLenum"
+ VertexShaderCoordOutEXT "GLenum"
+ VertexShaderOpEXT "GLenum"
+ VertexShaderParameterEXT "GLenum"
+ VertexShaderStorageTypeEXT "GLenum"
+ VertexShaderTextureUnitParameter "GLenum"
+ VertexShaderWriteMaskEXT "GLenum"
+ VertexStreamATI "GLenum"
+ PNTrianglesPNameATI "GLenum"
+ BufferOffset "GLintptr"
+ BufferSize "GLsizeiptr"
+ BufferAccessARB "GLenum"
+ BufferOffsetARB "GLintptrARB"
+ BufferPNameARB "GLenum"
+ BufferPointerNameARB "GLenum"
+ BufferSizeARB "GLsizeiptrARB"
+ BufferTargetARB "GLenum"
+ BufferUsageARB "GLenum"
+ ObjectTypeAPPLE "GLenum"
+ VertexArrayPNameAPPLE "GLenum"
+ DrawBufferModeATI "GLenum"
+ Half16NV "GLhalfNV"
+ PixelDataRangeTargetNV "GLenum"
+ TypeEnum "GLenum"
+ GLbitfield "GLbitfield"
+ GLenum "GLenum"
+ Int64 "GLint64"
+ UInt64 "GLuint64"
+ handleARB "GLhandleARB"
+ charARB "GLcharARB"
+ charPointerARB "GLcharARB*"
+ sync "GLsync"
+ Int64EXT "GLint64EXT"
+ UInt64EXT "GLuint64EXT"
+ FramebufferAttachment "GLenum"
+ FramebufferAttachmentParameterName "GLenum"
+ Framebuffer "GLuint"
+ FramebufferStatus "GLenum"
+ FramebufferTarget "GLenum"
+ GetFramebufferParameter "GLenum"
+ Intptr "GLintptr"
+ ProgramFormat "GLenum"
+ ProgramProperty "GLenum"
+ ProgramStringProperty "GLenum"
+ ProgramTarget "GLenum"
+ Renderbuffer "GLuint"
+ RenderbufferParameterName "GLenum"
+ Sizeiptr "GLsizeiptr"
+ TextureInternalFormat "GLenum"
+ VertexBufferObjectAccess "GLenum"
+ VertexBufferObjectParameter "GLenum"
+ VertexBufferObjectUsage "GLenum"
+ BufferAccessMask "GLbitfield"
+ GetMultisamplePNameNV "GLenum"
+ SampleMaskNV "GLbitfield"
+}
+
+proc psplit s {
+ set r [list]
+ set token ""
+
+ foreach c [split $s ""] {
+ if {[string is space -strict $c]} {
+ if {[string length $token]} {
+ lappend r $token
+ }
+ set token ""
+ } else {
+ append token $c
+ }
+ }
+
+ if {[string length $token]} {
+ lappend r $token
+ }
+
+ return $r
+}
+
+proc is-extension? str {
+ #Check if the trailing name of the function is NV, or EXT, and so on.
+
+ if {[string is upper [string index $str end]]
+ && [string is upper [string index $str end-1]]} {
+ return 1
+ }
+
+ return 0
+}
+
+
+proc parse {data arvar} {
+ upvar 1 $arvar ar
+
+ set state ""
+ set name ""
+
+ foreach line [split $data \n] {
+ if {"attr" eq $state} {
+ if {[string match "\t*" $line]} {
+ set plist [psplit [lindex [split $line "#"] 0]]
+ #puts PLIST:$plist
+ set master $ar($name)
+ set param [dict get $master parameters]
+
+ switch -- [llength $plist] {
+ 1 {
+ dict set master [lindex $plist 0] ""
+ }
+
+ 2 {
+ #standard key, value pair
+ set key [lindex $plist 0]
+ set value [lindex $plist 1]
+
+ dict set master $key $value
+ }
+
+ default {
+ set key [lindex $plist 0]
+
+ #puts PLIST:$plist
+
+ if {"param" eq $key} {
+ lappend param [list [lindex $plist 1] [lindex $plist 2] [lindex $plist 3] [lindex $plist 4]]
+ } else {
+ dict set master $key [lrange $plist 1 end]
+ }
+ }
+ }
+
+ dict set master parameters $param
+
+ set ar($name) $master
+ } else {
+ set state ""
+ }
+ } elseif {[regexp {^([A-Z_a-z0-9]+)\((.*)\)\S*} $line all name argv] > 0} {
+ #puts "MATCH:$name ARGV:$argv"
+
+ #Trim the spaces in the elements.
+ set newargv [list]
+ foreach a [split $argv ,] {
+ lappend newargv [string trim $a]
+ }
+
+
+ set d [dict create name $name arguments $newargv \
+ parameters [dict create]]
+ set ar($name) $d
+ set state attr
+ }
+ }
+}
+
+#This returns true if the category is valid for an extension.
+proc is-valid-category? c {
+ set clist [list display-list drawing drawing-control feedback framebuf misc modeling pixel-op pixel-rw state-req xform VERSION_1_0 VERSION_1_0_DEPRECATED VERSION_1_1 VERSION_1_1_DEPRECATED VERSION_1_2 VERSION_1_2_DEPRECATED VERSION_1_3 VERSION_1_3_DEPRECATED VERSION_1_4 VERSION_1_4_DEPRECATED VERSION_1_5 VERSION_2_0 VERSION_2_1 VERSION_3_0 VERSION_3_0_DEPRECATED VERSION_3_1 VERSION_3_2]
+
+ set result [expr {$c in $clist}]
+
+
+ if {!$result} {
+ set result [is-extension-supported? $c]
+ }
+
+ return $result
+}
+
+proc translate-parameters {func parameters} {
+ global typemap
+
+ set newparams [list]
+
+ foreach p $parameters {
+ set var [lindex $p 0]
+
+ set ptype [lindex $p 1]
+
+ if {![info exists typemap($ptype)]} {
+ set ::missingTypes($ptype) $func
+ continue
+ }
+
+ set type $typemap($ptype)
+
+ if {"array" eq [lindex $p 3]} {
+ if {"in" eq [lindex $p 2]} {
+ set final_type "const $type *"
+ } else {
+ set final_type "$type *"
+ }
+ } else {
+ set final_type $type
+ }
+
+ lappend newparams [list $final_type $var]
+ }
+
+ return $newparams
+}
+
+proc api-new-entry {info func} {
+ global typemap
+
+ set master [dict create]
+ set rettype [dict get $info return]
+
+ if {![info exists typemap($rettype)]} {
+ set ::missingTypes($rettype) $func
+ } else {
+ dict set master return $typemap($rettype)
+ }
+
+ dict set master parameters [translate-parameters $func \
+ [dict get $info parameters]]
+
+ return $master
+}
+
+proc main {argc argv} {
+ global extensions typemap aliases promoted noop
+
+ set fd [open [lindex $argv 0] r]
+ set data [read $fd]
+ close $fd
+
+ array set ar {}
+
+ parse $data ar
+
+ array set newapi {}
+ array set missingTypes {}
+
+ foreach {key value} [array get ar] {
+ puts "KEY:$key VALUE:$value"
+
+ set category [dict get $value category]
+
+ #Invalidate any of the extensions and things not in the spec we support.
+ set valid [is-valid-category? $category]
+ puts VALID:$valid
+
+ if {!$valid} {
+ continue
+ }
+
+ puts "VALID:$key"
+
+ if {"BlitFramebuffer" eq $key} {
+ #This was promoted to an ARB extension after Leopard it seems.
+ set key BlitFramebufferEXT
+ }
+
+ if {"ARB_framebuffer_object" eq $category} {
+ #This wasn't an ARB extension in Leopard either.
+ if {![string match *EXT $key]} {
+ append key EXT
+ }
+ }
+
+ set newapi($key) [api-new-entry $value $key]
+ }
+
+ #Now iterate and support as many aliases as we can for promoted functions
+ #based on if the newapi contains the function.
+ foreach {func value} [array get ar] {
+ if {![info exists promoted([dict get $value category])]} {
+ continue
+ }
+
+ if {[dict exists $value alias]} {
+ #We have an alias. Let's see if we have the implementation.
+ set alias [dict get $value alias]
+
+ if {[info exists newapi($alias)] && ![info exists newapi($func)]} {
+ #We have an implementing function available.
+ puts "HAVE:$key ALIAS:$alias"
+
+ set master [api-new-entry $value $func]
+ dict set master alias_for $alias
+ set newapi($func) $master
+ }
+ }
+ }
+
+ parray noop
+
+ #Now handle the no-op compatibility categories.
+ foreach {func value} [array get ar] {
+ if {[info exists noop([dict get $value category])]} {
+ if {[info exists newapi($func)]} {
+ puts stderr "$func shouldn't be a noop"
+ exit 1
+ }
+
+ set master [api-new-entry $value $func]
+ dict set master noop 1
+ set newapi($func) $master
+ }
+ }
+
+
+
+ parray newapi
+
+ if {[array size ::missingTypes]} {
+ parray ::missingTypes
+ return 1
+ }
+
+ foreach {from to} [array get aliases] {
+ set d $newapi($to)
+ dict set d alias_for $to
+ set newapi($from) $d
+ }
+
+ #Iterate the nm output and set each symbol in an associative array.
+ array set validapi {}
+
+ foreach line [split [exec nm -j -g /System/Library/Frameworks/OpenGL.framework/Libraries/libGL.dylib] \n] {
+ set fn [string trim $line]
+
+ #Only match the _gl functions.
+ if {[string match _gl* $fn]} {
+ set finalfn [string range $fn 3 end]
+ puts FINALFN:$finalfn
+ set validapi($finalfn) $finalfn
+ }
+ }
+
+ puts "Correcting the API functions to match the OpenGL framework."
+ #parray validapi
+
+ #Iterate the newapi and unset any members that the
+ #libGL.dylib doesn't support, assuming they aren't no-ops.
+ foreach fn [array names newapi] {
+ if {![info exists validapi($fn)]} {
+ puts "WARNING: libGL.dylib lacks support for: $fn"
+
+ if {[dict exists $newapi($fn) noop]
+ && [dict get $newapi($fn) noop]} {
+ #This is no-op, so we should skip it.
+ continue
+ }
+
+ #Is the function an alias for another in libGL?
+ if {[dict exists $newapi($fn) alias_for]} {
+ set alias [dict get $newapi($fn) alias_for]
+
+ if {![info exists validapi($alias)]} {
+ puts "WARNING: alias function doesn't exist for $fn."
+ puts "The alias is $alias."
+ puts "unsetting $fn"
+ unset newapi($fn)
+ }
+ } else {
+ puts "unsetting $fn"
+ unset newapi($fn)
+ }
+ }
+ }
+
+
+ #Now print a warning about any symbols that libGL supports that we don't.
+ foreach fn [array names validapi] {
+ if {![info exists newapi($fn)]} {
+ puts "AppleSGLX is missing $fn"
+ }
+ }
+
+ puts "NOW GENERATING:[lindex $::argv 1]"
+ set fd [open [lindex $::argv 1] w]
+
+ set sorted [lsort -dictionary [array names newapi]]
+
+ foreach f $sorted {
+ set attr $newapi($f)
+ set pstr ""
+ foreach p [dict get $attr parameters] {
+ append pstr "[lindex $p 0] [lindex $p 1], "
+ }
+ set pstr [string trimright $pstr ", "]
+ puts $fd "[dict get $attr return] gl[set f]($pstr); "
+ }
+
+ close $fd
+
+ if {$::argc == 3} {
+ puts "NOW GENERATING:[lindex $::argv 2]"
+ #Dump the array as a serialized list.
+ set fd [open [lindex $::argv 2] w]
+ puts $fd [array get newapi]
+ close $fd
+ }
+
+ return 0
+}
+exit [main $::argc $::argv]
+
diff --git a/src/glx/apple/gen_types.tcl b/src/glx/apple/gen_types.tcl
new file mode 100644
index 0000000000..ed20bdaec0
--- /dev/null
+++ b/src/glx/apple/gen_types.tcl
@@ -0,0 +1,32 @@
+
+proc main {argc argv} {
+ if {1 != $argc} {
+ puts stderr "syntax is: [info script] output.h"
+ exit 1
+ }
+
+ set fd [open [lindex $argv 0] w]
+ puts $fd "
+/*OpenGL primitive typedefs*/
+typedef unsigned int GLenum;
+typedef unsigned char GLboolean;
+typedef unsigned int GLbitfield;
+typedef signed char GLbyte;
+typedef short GLshort;
+typedef int GLint;
+typedef int GLsizei;
+typedef unsigned char GLubyte;
+typedef unsigned short GLushort;
+typedef unsigned int GLuint;
+typedef float GLfloat;
+typedef float GLclampf;
+typedef double GLdouble;
+typedef double GLclampd;
+typedef void GLvoid;
+
+typedef long GLintptr;
+typedef long GLsizeiptr;
+"
+
+}
+main $::argc $::argv
diff --git a/src/glx/apple/glx_empty.c b/src/glx/apple/glx_empty.c
new file mode 100644
index 0000000000..44c5a256f2
--- /dev/null
+++ b/src/glx/apple/glx_empty.c
@@ -0,0 +1,375 @@
+#include "glxclient.h"
+#include "glxextensions.h"
+#include "glcontextmodes.h"
+
+/*
+** GLX_SGI_swap_control
+*/
+int
+glXSwapIntervalSGI(int interval)
+{
+ (void) interval;
+ return 0;
+}
+
+
+/*
+** GLX_MESA_swap_control
+*/
+int
+glXSwapIntervalMESA(unsigned int interval)
+{
+ (void) interval;
+ return GLX_BAD_CONTEXT;
+}
+
+
+int
+glXGetSwapIntervalMESA(void)
+{
+ return 0;
+}
+
+
+/*
+** GLX_MESA_swap_frame_usage
+*/
+
+int
+glXBeginFrameTrackingMESA(Display * dpy, GLXDrawable drawable)
+{
+ int status = GLX_BAD_CONTEXT;
+ (void) dpy;
+ (void) drawable;
+ return status;
+}
+
+
+int
+glXEndFrameTrackingMESA(Display * dpy, GLXDrawable drawable)
+{
+ int status = GLX_BAD_CONTEXT;
+ (void) dpy;
+ (void) drawable;
+ return status;
+}
+
+
+int
+glXGetFrameUsageMESA(Display * dpy, GLXDrawable drawable, GLfloat * usage)
+{
+ int status = GLX_BAD_CONTEXT;
+ (void) dpy;
+ (void) drawable;
+ (void) usage;
+ return status;
+}
+
+int
+glXQueryFrameTrackingMESA(Display * dpy, GLXDrawable drawable,
+ int64_t * sbc, int64_t * missedFrames,
+ GLfloat * lastMissedUsage)
+{
+ int status = GLX_BAD_CONTEXT;
+ (void) dpy;
+ (void) drawable;
+ (void) sbc;
+ (void) missedFrames;
+ (void) lastMissedUsage;
+ return status;
+}
+
+/*
+** GLX_SGI_video_sync
+*/
+int
+glXGetVideoSyncSGI(unsigned int *count)
+{
+ (void) count;
+ return GLX_BAD_CONTEXT;
+}
+
+int
+glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
+{
+ (void) count;
+ return GLX_BAD_CONTEXT;
+}
+
+
+/*
+** GLX_SGIX_swap_group
+*/
+void
+glXJoinSwapGroupSGIX(Display * dpy, GLXDrawable drawable, GLXDrawable member)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) member;
+}
+
+
+/*
+** GLX_SGIX_swap_barrier
+*/
+void
+glXBindSwapBarrierSGIX(Display * dpy, GLXDrawable drawable, int barrier)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) barrier;
+}
+
+Bool
+glXQueryMaxSwapBarriersSGIX(Display * dpy, int screen, int *max)
+{
+ (void) dpy;
+ (void) screen;
+ (void) max;
+ return False;
+}
+
+
+/*
+** GLX_OML_sync_control
+*/
+Bool
+glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable,
+ int64_t * ust, int64_t * msc, int64_t * sbc)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) ust;
+ (void) msc;
+ (void) sbc;
+ return False;
+}
+
+int64_t
+glXSwapBuffersMscOML(Display * dpy, GLXDrawable drawable,
+ int64_t target_msc, int64_t divisor, int64_t remainder)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) target_msc;
+ (void) divisor;
+ (void) remainder;
+ return 0;
+}
+
+
+Bool
+glXWaitForMscOML(Display * dpy, GLXDrawable drawable,
+ int64_t target_msc, int64_t divisor,
+ int64_t remainder, int64_t * ust,
+ int64_t * msc, int64_t * sbc)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) target_msc;
+ (void) divisor;
+ (void) remainder;
+ (void) ust;
+ (void) msc;
+ (void) sbc;
+ return False;
+}
+
+
+Bool
+glXWaitForSbcOML(Display * dpy, GLXDrawable drawable,
+ int64_t target_sbc, int64_t * ust,
+ int64_t * msc, int64_t * sbc)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) target_sbc;
+ (void) ust;
+ (void) msc;
+ (void) sbc;
+ return False;
+}
+
+
+/**
+ * GLX_MESA_allocate_memory
+ */
+/*@{*/
+
+PUBLIC void *
+glXAllocateMemoryMESA(Display * dpy, int scrn,
+ size_t size, float readFreq,
+ float writeFreq, float priority)
+{
+ (void) dpy;
+ (void) scrn;
+ (void) size;
+ (void) readFreq;
+ (void) writeFreq;
+ (void) priority;
+ return NULL;
+}
+
+
+PUBLIC void
+glXFreeMemoryMESA(Display * dpy, int scrn, void *pointer)
+{
+#ifdef __DRI_ALLOCATE
+ __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, scrn);
+
+ if (psc && psc->allocate)
+ (*psc->allocate->freeMemory) (psc->__driScreen, pointer);
+
+#else
+ (void) dpy;
+ (void) scrn;
+ (void) pointer;
+#endif /* __DRI_ALLOCATE */
+}
+
+
+PUBLIC GLuint
+glXGetMemoryOffsetMESA(Display * dpy, int scrn, const void *pointer)
+{
+ (void) dpy;
+ (void) scrn;
+ (void) pointer;
+ return ~0L;
+}
+
+Bool
+glXReleaseBuffersMESA(Display * dpy, GLXDrawable d)
+{
+ (void) dpy;
+ (void) d;
+ return False;
+}
+
+
+PUBLIC GLXPixmap
+glXCreateGLXPixmapMESA(Display * dpy, XVisualInfo * visual,
+ Pixmap pixmap, Colormap cmap)
+{
+ (void) dpy;
+ (void) visual;
+ (void) pixmap;
+ (void) cmap;
+ return 0;
+}
+
+
+/**
+ * GLX_MESA_copy_sub_buffer
+ */
+void
+glXCopySubBufferMESA(Display * dpy, GLXDrawable drawable,
+ int x, int y, int width, int height)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) x;
+ (void) y;
+ (void) width;
+ (void) height;
+}
+
+
+PUBLIC int
+glXQueryGLXPbufferSGIX(Display * dpy, GLXDrawable drawable,
+ int attribute, unsigned int *value)
+{
+ (void) dpy;
+ (void) drawable;
+ (void) attribute;
+ (void) value;
+ return 0;
+}
+
+PUBLIC GLXDrawable
+glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfig config,
+ unsigned int width, unsigned int height,
+ int *attrib_list)
+{
+ (void) dpy;
+ (void) config;
+ (void) width;
+ (void) height;
+ (void) attrib_list;
+ return None;
+}
+
+#if 0
+/* GLX_SGIX_fbconfig */
+PUBLIC int
+glXGetFBConfigAttribSGIX(Display * dpy, void *config, int a, int *b)
+{
+ (void) dpy;
+ (void) config;
+ (void) a;
+ (void) b;
+ return 0;
+}
+
+PUBLIC void *
+glXChooseFBConfigSGIX(Display * dpy, int a, int *b, int *c)
+{
+ (void) dpy;
+ (void) a;
+ (void) b;
+ (void) c;
+ return NULL;
+}
+
+PUBLIC GLXPixmap
+glXCreateGLXPixmapWithConfigSGIX(Display * dpy, void *config, Pixmap p)
+{
+ (void) dpy;
+ (void) config;
+ (void) p;
+ return None;
+}
+
+PUBLIC GLXContext
+glXCreateContextWithConfigSGIX(Display * dpy, void *config, int a,
+ GLXContext b, Bool c)
+{
+ (void) dpy;
+ (void) config;
+ (void) a;
+ (void) b;
+ (void) c;
+ return NULL;
+}
+
+PUBLIC XVisualInfo *
+glXGetVisualFromFBConfigSGIX(Display * dpy, void *config)
+{
+ (void) dpy;
+ (void) config;
+ return NULL;
+}
+
+PUBLIC void *
+glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * visinfo)
+{
+ (void) dpy;
+ (void) visinfo;
+ return NULL;
+}
+#endif
+
+
+PUBLIC
+GLX_ALIAS_VOID(glXDestroyGLXPbufferSGIX,
+ (Display * dpy, GLXDrawable pbuf),
+ (dpy, pbuf), glXDestroyPbuffer)
+
+ PUBLIC GLX_ALIAS_VOID(glXSelectEventSGIX,
+ (Display * dpy, GLXDrawable drawable,
+ unsigned long mask), (dpy, drawable, mask),
+ glXSelectEvent)
+
+ PUBLIC GLX_ALIAS_VOID(glXGetSelectedEventSGIX,
+ (Display * dpy, GLXDrawable drawable,
+ unsigned long *mask), (dpy, drawable, mask),
+ glXGetSelectedEvent)
diff --git a/src/glx/apple/glx_error.c b/src/glx/apple/glx_error.c
new file mode 100644
index 0000000000..282f7ae40b
--- /dev/null
+++ b/src/glx/apple/glx_error.c
@@ -0,0 +1,65 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#include <stdbool.h>
+#include <X11/Xlibint.h>
+#include <X11/extensions/extutil.h>
+#include <X11/extensions/Xext.h>
+#include "glxclient.h"
+#include "glx_error.h"
+
+extern XExtDisplayInfo *__glXFindDisplay(Display * dpy);
+
+void
+__glXSendError(Display * dpy, int errorCode, unsigned long resourceID,
+ unsigned long minorCode, bool coreX11error)
+{
+ XExtDisplayInfo *info = __glXFindDisplay(dpy);
+ GLXContext gc = __glXGetCurrentContext();
+ xError error;
+
+ LockDisplay(dpy);
+
+ error.type = X_Error;
+
+ if (coreX11error) {
+ error.errorCode = errorCode;
+ }
+ else {
+ error.errorCode = info->codes->first_error + errorCode;
+ }
+
+ error.sequenceNumber = dpy->request;
+ error.resourceID = resourceID;
+ error.minorCode = minorCode;
+ error.majorCode = gc ? gc->majorOpcode : 0;
+
+ _XError(dpy, &error);
+
+ UnlockDisplay(dpy);
+}
diff --git a/src/glx/apple/glx_error.h b/src/glx/apple/glx_error.h
new file mode 100644
index 0000000000..6ba2f854db
--- /dev/null
+++ b/src/glx/apple/glx_error.h
@@ -0,0 +1,33 @@
+/*
+ Copyright (c) 2009 Apple Inc.
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation files
+ (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge,
+ publish, distribute, sublicense, and/or sell copies of the Software,
+ and to permit persons to whom the Software is furnished to do so,
+ subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT
+ HOLDER(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ DEALINGS IN THE SOFTWARE.
+
+ Except as contained in this notice, the name(s) of the above
+ copyright holders shall not be used in advertising or otherwise to
+ promote the sale, use or other dealings in this Software without
+ prior written authorization.
+*/
+#include <stdbool.h>
+#include <X11/Xlib.h>
+
+void __glXSendError(Display * dpy, int errorCode, unsigned long resourceID,
+ unsigned long minorCode, bool coreX11error);
diff --git a/src/glx/apple/glxreply.c b/src/glx/apple/glxreply.c
new file mode 100644
index 0000000000..7280bc9715
--- /dev/null
+++ b/src/glx/apple/glxreply.c
@@ -0,0 +1,134 @@
+/*
+ * (C) Copyright Apple Inc. 2008
+ * (C) Copyright IBM Corporation 2004, 2005
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sub license,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * IBM,
+ * AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+ * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#include <GL/gl.h>
+#include "glxclient.h"
+#include <GL/glxproto.h>
+
+CARD32
+__glXReadReply(Display * dpy, size_t size, void *dest,
+ GLboolean reply_is_always_array)
+{
+ xGLXSingleReply reply;
+
+ (void) _XReply(dpy, (xReply *) & reply, 0, False);
+ if (size != 0) {
+ if ((reply.length > 0) || reply_is_always_array) {
+ const GLint bytes = (reply_is_always_array)
+ ? (4 * reply.length) : (reply.size * size);
+ const GLint extra = 4 - (bytes & 3);
+
+ _XRead(dpy, dest, bytes);
+ if (extra < 4) {
+ _XEatData(dpy, extra);
+ }
+ }
+ else {
+ (void) memcpy(dest, &(reply.pad3), size);
+ }
+ }
+
+ return reply.retval;
+}
+
+void
+__glXReadPixelReply(Display * dpy, __GLXcontext * gc, unsigned max_dim,
+ GLint width, GLint height, GLint depth, GLenum format,
+ GLenum type, void *dest, GLboolean dimensions_in_reply)
+{
+ xGLXSingleReply reply;
+ GLint size;
+
+ (void) _XReply(dpy, (xReply *) & reply, 0, False);
+
+ if (dimensions_in_reply) {
+ width = reply.pad3;
+ height = reply.pad4;
+ depth = reply.pad5;
+
+ if ((height == 0) || (max_dim < 2)) {
+ height = 1;
+ }
+ if ((depth == 0) || (max_dim < 3)) {
+ depth = 1;
+ }
+ }
+
+ size = reply.length * 4;
+ if (size != 0) {
+ void *buf = Xmalloc(size);
+
+ if (buf == NULL) {
+ _XEatData(dpy, size);
+ __glXSetError(gc, GL_OUT_OF_MEMORY);
+ }
+ else {
+ const GLint extra = 4 - (size & 3);
+
+ _XRead(dpy, buf, size);
+ if (extra < 4) {
+ _XEatData(dpy, extra);
+ }
+
+ __glEmptyImage(gc, 3, width, height, depth, format, type, buf, dest);
+ Xfree(buf);
+ }
+ }
+}
+
+#if 0
+GLubyte *
+__glXSetupSingleRequest(__GLXcontext * gc, GLint sop, GLint cmdlen)
+{
+ xGLXSingleReq *req;
+ Display *const dpy = gc->currentDpy;
+
+ (void) __glXFlushRenderBuffer(gc, gc->pc);
+ LockDisplay(dpy);
+ GetReqExtra(GLXSingle, cmdlen, req);
+ req->reqType = gc->majorOpcode;
+ req->contextTag = gc->currentContextTag;
+ req->glxCode = sop;
+ return (GLubyte *) (req) + sz_xGLXSingleReq;
+}
+#endif
+
+GLubyte *
+__glXSetupVendorRequest(__GLXcontext * gc, GLint code, GLint vop,
+ GLint cmdlen)
+{
+ xGLXVendorPrivateReq *req;
+ Display *const dpy = gc->currentDpy;
+
+ (void) __glXFlushRenderBuffer(gc, gc->pc);
+ LockDisplay(dpy);
+ GetReqExtra(GLXVendorPrivate, cmdlen, req);
+ req->reqType = gc->majorOpcode;
+ req->glxCode = code;
+ req->vendorCode = vop;
+ req->contextTag = gc->currentContextTag;
+ return (GLubyte *) (req) + sz_xGLXVendorPrivateReq;
+}
diff --git a/src/glx/apple/specs/enum.spec b/src/glx/apple/specs/enum.spec
new file mode 100644
index 0000000000..20f96f2418
--- /dev/null
+++ b/src/glx/apple/specs/enum.spec
@@ -0,0 +1,7522 @@
+# This is the OpenGL and OpenGL ES enumerant registry.
+#
+# It is an extremely important file. Do not mess with it unless
+# you know what you're doing and have permission to do so.
+#
+# $Revision: 10971 $ on $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $
+
+###############################################################################
+#
+# Before modifying this file, read the following:
+#
+# ONLY the Khronos API Registrar (Jon Leech, jon 'at' alumni.caltech.edu)
+# may allocate new enumerants outside the 'experimental' range described
+# below. Any modifications to this file not performed by the Registrar
+# are incompatible with the OpenGL API. The master copy of the registry,
+# showing up-to-date enumerant allocations, is maintained in the
+# OpenGL registry at
+#
+# http://www.opengl.org/registry/
+#
+# The following guidelines are thus only for reference purposes
+# (unless you're the Registrar)
+#
+# Enumerant values for extensions CANNOT be chosen arbitrarily, since
+# the enumerant value space is shared by all GL implementations. It is
+# therefore imperative that the procedures described in this file be
+# followed carefully when allocating extension enum values.
+#
+# - Use tabs, not spaces.
+#
+# - When adding enum values for a new extension, use existing extensions
+# as a guide.
+#
+# - When a vendor has committed to releasing a new extension and needs to
+# allocate enum values for that extension, the vendor may request that the
+# ARB allocate a previously unallocated block of 16 enum values, in the
+# range 0x8000-0xFFFF, for the vendor's exclusive use.
+#
+# - The vendor that introduces an extension will allocate enum values for
+# it as if it is a single-vendor extension, even if it is a multi-vendor
+# (EXT) extension.
+#
+# - The file enum.spec is primarily a reference. The file enumext.spec
+# contains enumerants for all OpenGL 1.2 and OpenGL extensions in a form
+# used to generate <GL/glext.h>.
+#
+# - If a vendor hasn't yet released an extension, just add a comment to
+# enum.spec that contains the name of the extension and the range of enum
+# values used by the extension. When the vendor releases the extension,
+# put the actual enum assignments in enum.spec and enumext.spec.
+#
+# - Allocate all of the enum values for an extension in a single contiguous
+# block.
+#
+# - If an extension is experimental, allocate temporary enum values in the
+# range 0x6000-0x8000 during development work. When the vendor commits to
+# releasing the extension, allocate permanent enum values (see below).
+# There are two reasons for this policy:
+#
+# 1. It is desirable to keep extension enum values tightly packed and to
+# make all of the enum values for an extension be contiguous. This is
+# possible only if permanent enum values for a new extension are not
+# allocated until the extension spec is stable and the number of new
+# enum values needed by the extension has therefore stopped changing.
+#
+# 2. OpenGL ARB policy is that a vendor may allocate a new block of 16
+# extension enum values only if it has committed to releasing an
+# extension that will use values in that block.
+#
+# - To allocate a new block of permanent enum values for an extension, do the
+# following:
+#
+# 1. Start at the top of enum.spec and choose the first future_use
+# range that is not allocated to another vendor and is large enough
+# to contain the new block. This will almost certainly be the
+# 'Any_vendor_future_use' range near the end of enum.spec. This
+# process helps keep allocated enum values tightly packed into
+# the start of the 0x8000-0xFFFF range.
+#
+# 2. Allocate a block of enum values at the start of this range. If
+# the enum definitions are going into enumfuture.spec, add a comment
+# to enum.spec that contains the name of the extension and the range
+# of values in the new block. Use existing extensions as a guide.
+#
+# 3. Add the size of the block you just allocated to the start of the
+# chosen future_use range. If you have allocated the entire range,
+# eliminate its future_use entry.
+#
+# 4. Note that there are historical enum allocations above 0xFFFF, but
+# no new allocations will be made there in the forseeable future.
+#
+###############################################################################
+
+Extensions define:
+ VERSION_1_1 = 1
+ VERSION_1_2 = 1
+ VERSION_1_3 = 1
+ VERSION_1_4 = 1
+ VERSION_1_5 = 1
+ VERSION_2_0 = 1
+ VERSION_2_1 = 1
+ VERSION_3_0 = 1
+ VERSION_3_1 = 1
+ VERSION_3_2 = 1
+ ARB_imaging = 1
+ EXT_abgr = 1
+ EXT_blend_color = 1
+ EXT_blend_logic_op = 1
+ EXT_blend_minmax = 1
+ EXT_blend_subtract = 1
+ EXT_cmyka = 1
+ EXT_convolution = 1
+ EXT_copy_texture = 1
+ EXT_histogram = 1
+ EXT_packed_pixels = 1
+ EXT_point_parameters = 1
+ EXT_polygon_offset = 1
+ EXT_rescale_normal = 1
+ EXT_shared_texture_palette = 1
+ EXT_subtexture = 1
+ EXT_texture = 1
+ EXT_texture3D = 1
+ EXT_texture_object = 1
+ EXT_vertex_array = 1
+ SGIS_detail_texture = 1
+ SGIS_fog_function = 1
+ SGIS_generate_mipmap = 1
+ SGIS_multisample = 1
+ SGIS_pixel_texture = 1
+ SGIS_point_line_texgen = 1
+ SGIS_point_parameters = 1
+ SGIS_sharpen_texture = 1
+ SGIS_texture4D = 1
+ SGIS_texture_border_clamp = 1
+ SGIS_texture_edge_clamp = 1
+ SGIS_texture_filter4 = 1
+ SGIS_texture_lod = 1
+ SGIS_texture_select = 1
+ SGIX_async = 1
+ SGIX_async_histogram = 1
+ SGIX_async_pixel = 1
+ SGIX_blend_alpha_minmax = 1
+ SGIX_calligraphic_fragment = 1
+ SGIX_clipmap = 1
+ SGIX_convolution_accuracy = 1
+ SGIX_depth_texture = 1
+ SGIX_flush_raster = 1
+ SGIX_fog_offset = 1
+ SGIX_fragment_lighting = 1
+ SGIX_framezoom = 1
+ SGIX_icc_texture = 1
+ SGIX_impact_pixel_texture = 1
+ SGIX_instruments = 1
+ SGIX_interlace = 1
+ SGIX_ir_instrument1 = 1
+ SGIX_list_priority = 1
+ SGIX_pixel_texture = 1
+ SGIX_pixel_tiles = 1
+ SGIX_polynomial_ffd = 1
+ SGIX_reference_plane = 1
+ SGIX_resample = 1
+ SGIX_scalebias_hint = 1
+ SGIX_shadow = 1
+ SGIX_shadow_ambient = 1
+ SGIX_sprite = 1
+ SGIX_subsample = 1
+ SGIX_tag_sample_buffer = 1
+ SGIX_texture_add_env = 1
+ SGIX_texture_coordinate_clamp = 1
+ SGIX_texture_lod_bias = 1
+ SGIX_texture_multi_buffer = 1
+ SGIX_texture_scale_bias = 1
+ SGIX_vertex_preclip = 1
+ SGIX_ycrcb = 1
+ SGI_color_matrix = 1
+ SGI_color_table = 1
+ SGI_texture_color_table = 1
+
+###############################################################################
+
+AttribMask enum:
+ CURRENT_BIT = 0x00000001
+ POINT_BIT = 0x00000002
+ LINE_BIT = 0x00000004
+ POLYGON_BIT = 0x00000008
+ POLYGON_STIPPLE_BIT = 0x00000010
+ PIXEL_MODE_BIT = 0x00000020
+ LIGHTING_BIT = 0x00000040
+ FOG_BIT = 0x00000080
+ DEPTH_BUFFER_BIT = 0x00000100
+ ACCUM_BUFFER_BIT = 0x00000200
+ STENCIL_BUFFER_BIT = 0x00000400
+ VIEWPORT_BIT = 0x00000800
+ TRANSFORM_BIT = 0x00001000
+ ENABLE_BIT = 0x00002000
+ COLOR_BUFFER_BIT = 0x00004000
+ HINT_BIT = 0x00008000
+ EVAL_BIT = 0x00010000
+ LIST_BIT = 0x00020000
+ TEXTURE_BIT = 0x00040000
+ SCISSOR_BIT = 0x00080000
+ ALL_ATTRIB_BITS = 0xFFFFFFFF
+#??? ALL_ATTRIB_BITS mask value changed to all-1s in OpenGL 1.3 - this affects covgl.
+# use ARB_multisample MULTISAMPLE_BIT_ARB
+# use EXT_multisample MULTISAMPLE_BIT_EXT
+# use 3DFX_multisample MULTISAMPLE_BIT_3DFX
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ MULTISAMPLE_BIT = 0x20000000
+
+ARB_multisample enum:
+ MULTISAMPLE_BIT_ARB = 0x20000000
+
+EXT_multisample enum:
+ MULTISAMPLE_BIT_EXT = 0x20000000
+
+3DFX_multisample enum:
+ MULTISAMPLE_BIT_3DFX = 0x20000000
+
+###############################################################################
+
+# Note that COVERAGE_BUFFER_BIT_NV collides with AttribMask bit
+# HINT_BIT. This is OK since the extension is for OpenGL ES 2, which
+# doesn't have attribute groups.
+ClearBufferMask enum:
+ use AttribMask DEPTH_BUFFER_BIT # = 0x00000100
+ use AttribMask ACCUM_BUFFER_BIT # = 0x00000200
+ use AttribMask STENCIL_BUFFER_BIT # = 0x00000400
+ use AttribMask COLOR_BUFFER_BIT # = 0x00004000
+ use NV_coverage_sample COVERAGE_BUFFER_BIT_NV # = 0x00008000
+
+###############################################################################
+
+ClientAttribMask enum:
+ CLIENT_PIXEL_STORE_BIT = 0x00000001
+ CLIENT_VERTEX_ARRAY_BIT = 0x00000002
+ CLIENT_ALL_ATTRIB_BITS = 0xFFFFFFFF
+
+###############################################################################
+
+# There's no obvious better place to put non-attribute-group mask bits
+VERSION_3_0 enum:
+ use ARB_map_buffer_range MAP_READ_BIT
+ use ARB_map_buffer_range MAP_WRITE_BIT
+ use ARB_map_buffer_range MAP_INVALIDATE_RANGE_BIT
+ use ARB_map_buffer_range MAP_INVALIDATE_BUFFER_BIT
+ use ARB_map_buffer_range MAP_FLUSH_EXPLICIT_BIT
+ use ARB_map_buffer_range MAP_UNSYNCHRONIZED_BIT
+
+ARB_map_buffer_range enum:
+ MAP_READ_BIT = 0x0001 # VERSION_3_0 / ARB_mbr
+ MAP_WRITE_BIT = 0x0002 # VERSION_3_0 / ARB_mbr
+ MAP_INVALIDATE_RANGE_BIT = 0x0004 # VERSION_3_0 / ARB_mbr
+ MAP_INVALIDATE_BUFFER_BIT = 0x0008 # VERSION_3_0 / ARB_mbr
+ MAP_FLUSH_EXPLICIT_BIT = 0x0010 # VERSION_3_0 / ARB_mbr
+ MAP_UNSYNCHRONIZED_BIT = 0x0020 # VERSION_3_0 / ARB_mbr
+
+###############################################################################
+
+VERSION_3_0 enum:
+ CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x0001 # VERSION_3_0
+
+###############################################################################
+
+Boolean enum:
+ FALSE = 0
+ TRUE = 1
+
+###############################################################################
+
+BeginMode enum:
+ POINTS = 0x0000
+ LINES = 0x0001
+ LINE_LOOP = 0x0002
+ LINE_STRIP = 0x0003
+ TRIANGLES = 0x0004
+ TRIANGLE_STRIP = 0x0005
+ TRIANGLE_FAN = 0x0006
+ QUADS = 0x0007
+ QUAD_STRIP = 0x0008
+ POLYGON = 0x0009
+
+VERSION_3_2 enum:
+ LINES_ADJACENCY = 0x000A
+ LINE_STRIP_ADJACENCY = 0x000B
+ TRIANGLES_ADJACENCY = 0x000C
+ TRIANGLE_STRIP_ADJACENCY = 0x000D
+
+ARB_geometry_shader4 enum: (additional; see below)
+ LINES_ADJACENCY_ARB = 0x000A
+ LINE_STRIP_ADJACENCY_ARB = 0x000B
+ TRIANGLES_ADJACENCY_ARB = 0x000C
+ TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D
+
+NV_geometry_program4 enum: (additional; see below)
+ LINES_ADJACENCY_EXT = 0x000A
+ LINE_STRIP_ADJACENCY_EXT = 0x000B
+ TRIANGLES_ADJACENCY_EXT = 0x000C
+ TRIANGLE_STRIP_ADJACENCY_EXT = 0x000D
+
+# BeginMode_future_use: 0x000E
+
+###############################################################################
+
+AccumOp enum:
+ ACCUM = 0x0100
+ LOAD = 0x0101
+ RETURN = 0x0102
+ MULT = 0x0103
+ ADD = 0x0104
+
+###############################################################################
+
+AlphaFunction enum:
+ NEVER = 0x0200
+ LESS = 0x0201
+ EQUAL = 0x0202
+ LEQUAL = 0x0203
+ GREATER = 0x0204
+ NOTEQUAL = 0x0205
+ GEQUAL = 0x0206
+ ALWAYS = 0x0207
+
+###############################################################################
+
+BlendingFactorDest enum:
+ ZERO = 0
+ ONE = 1
+ SRC_COLOR = 0x0300
+ ONE_MINUS_SRC_COLOR = 0x0301
+ SRC_ALPHA = 0x0302
+ ONE_MINUS_SRC_ALPHA = 0x0303
+ DST_ALPHA = 0x0304
+ ONE_MINUS_DST_ALPHA = 0x0305
+ use EXT_blend_color CONSTANT_COLOR_EXT
+ use EXT_blend_color ONE_MINUS_CONSTANT_COLOR_EXT
+ use EXT_blend_color CONSTANT_ALPHA_EXT
+ use EXT_blend_color ONE_MINUS_CONSTANT_ALPHA_EXT
+
+###############################################################################
+
+BlendingFactorSrc enum:
+ use BlendingFactorDest ZERO
+ use BlendingFactorDest ONE
+ DST_COLOR = 0x0306
+ ONE_MINUS_DST_COLOR = 0x0307
+ SRC_ALPHA_SATURATE = 0x0308
+ use BlendingFactorDest SRC_ALPHA
+ use BlendingFactorDest ONE_MINUS_SRC_ALPHA
+ use BlendingFactorDest DST_ALPHA
+ use BlendingFactorDest ONE_MINUS_DST_ALPHA
+ use EXT_blend_color CONSTANT_COLOR_EXT
+ use EXT_blend_color ONE_MINUS_CONSTANT_COLOR_EXT
+ use EXT_blend_color CONSTANT_ALPHA_EXT
+ use EXT_blend_color ONE_MINUS_CONSTANT_ALPHA_EXT
+
+###############################################################################
+
+BlendEquationModeEXT enum:
+ use GetPName LOGIC_OP
+ use EXT_blend_minmax FUNC_ADD_EXT
+ use EXT_blend_minmax MIN_EXT
+ use EXT_blend_minmax MAX_EXT
+ use EXT_blend_subtract FUNC_SUBTRACT_EXT
+ use EXT_blend_subtract FUNC_REVERSE_SUBTRACT_EXT
+ use SGIX_blend_alpha_minmax ALPHA_MIN_SGIX
+ use SGIX_blend_alpha_minmax ALPHA_MAX_SGIX
+
+###############################################################################
+
+ColorMaterialFace enum:
+ use DrawBufferMode FRONT
+ use DrawBufferMode BACK
+ use DrawBufferMode FRONT_AND_BACK
+
+###############################################################################
+
+ColorMaterialParameter enum:
+ use LightParameter AMBIENT
+ use LightParameter DIFFUSE
+ use LightParameter SPECULAR
+ use MaterialParameter EMISSION
+ use MaterialParameter AMBIENT_AND_DIFFUSE
+
+###############################################################################
+
+ColorPointerType enum:
+ use DataType BYTE
+ use DataType UNSIGNED_BYTE
+ use DataType SHORT
+ use DataType UNSIGNED_SHORT
+ use DataType INT
+ use DataType UNSIGNED_INT
+ use DataType FLOAT
+ use DataType DOUBLE
+
+###############################################################################
+
+ColorTableParameterPNameSGI enum:
+ use SGI_color_table COLOR_TABLE_SCALE_SGI
+ use SGI_color_table COLOR_TABLE_BIAS_SGI
+
+###############################################################################
+
+ColorTableTargetSGI enum:
+ use SGI_color_table COLOR_TABLE_SGI
+ use SGI_color_table POST_CONVOLUTION_COLOR_TABLE_SGI
+ use SGI_color_table POST_COLOR_MATRIX_COLOR_TABLE_SGI
+ use SGI_color_table PROXY_COLOR_TABLE_SGI
+ use SGI_color_table PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI
+ use SGI_color_table PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI
+ use SGI_texture_color_table TEXTURE_COLOR_TABLE_SGI
+ use SGI_texture_color_table PROXY_TEXTURE_COLOR_TABLE_SGI
+
+###############################################################################
+
+ConvolutionBorderModeEXT enum:
+ use EXT_convolution REDUCE_EXT
+
+###############################################################################
+
+ConvolutionParameterEXT enum:
+ use EXT_convolution CONVOLUTION_BORDER_MODE_EXT
+ use EXT_convolution CONVOLUTION_FILTER_SCALE_EXT
+ use EXT_convolution CONVOLUTION_FILTER_BIAS_EXT
+
+###############################################################################
+
+ConvolutionTargetEXT enum:
+ use EXT_convolution CONVOLUTION_1D_EXT
+ use EXT_convolution CONVOLUTION_2D_EXT
+
+###############################################################################
+
+CullFaceMode enum:
+ use DrawBufferMode FRONT
+ use DrawBufferMode BACK
+ use DrawBufferMode FRONT_AND_BACK
+
+###############################################################################
+
+DepthFunction enum:
+ use AlphaFunction NEVER
+ use AlphaFunction LESS
+ use AlphaFunction EQUAL
+ use AlphaFunction LEQUAL
+ use AlphaFunction GREATER
+ use AlphaFunction NOTEQUAL
+ use AlphaFunction GEQUAL
+ use AlphaFunction ALWAYS
+
+###############################################################################
+
+DrawBufferMode enum:
+ NONE = 0
+ FRONT_LEFT = 0x0400
+ FRONT_RIGHT = 0x0401
+ BACK_LEFT = 0x0402
+ BACK_RIGHT = 0x0403
+ FRONT = 0x0404
+ BACK = 0x0405
+ LEFT = 0x0406
+ RIGHT = 0x0407
+ FRONT_AND_BACK = 0x0408
+ AUX0 = 0x0409
+ AUX1 = 0x040A
+ AUX2 = 0x040B
+ AUX3 = 0x040C
+
+# Aliases DrawBufferMode enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+# NONE_OES = 0
+
+###############################################################################
+
+EnableCap enum:
+ use GetPName FOG
+ use GetPName LIGHTING
+ use GetPName TEXTURE_1D
+ use GetPName TEXTURE_2D
+ use GetPName LINE_STIPPLE
+ use GetPName POLYGON_STIPPLE
+ use GetPName CULL_FACE
+ use GetPName ALPHA_TEST
+ use GetPName BLEND
+ use GetPName INDEX_LOGIC_OP
+ use GetPName COLOR_LOGIC_OP
+ use GetPName DITHER
+ use GetPName STENCIL_TEST
+ use GetPName DEPTH_TEST
+ use GetPName CLIP_PLANE0
+ use GetPName CLIP_PLANE1
+ use GetPName CLIP_PLANE2
+ use GetPName CLIP_PLANE3
+ use GetPName CLIP_PLANE4
+ use GetPName CLIP_PLANE5
+ use GetPName LIGHT0
+ use GetPName LIGHT1
+ use GetPName LIGHT2
+ use GetPName LIGHT3
+ use GetPName LIGHT4
+ use GetPName LIGHT5
+ use GetPName LIGHT6
+ use GetPName LIGHT7
+ use GetPName TEXTURE_GEN_S
+ use GetPName TEXTURE_GEN_T
+ use GetPName TEXTURE_GEN_R
+ use GetPName TEXTURE_GEN_Q
+ use GetPName MAP1_VERTEX_3
+ use GetPName MAP1_VERTEX_4
+ use GetPName MAP1_COLOR_4
+ use GetPName MAP1_INDEX
+ use GetPName MAP1_NORMAL
+ use GetPName MAP1_TEXTURE_COORD_1
+ use GetPName MAP1_TEXTURE_COORD_2
+ use GetPName MAP1_TEXTURE_COORD_3
+ use GetPName MAP1_TEXTURE_COORD_4
+ use GetPName MAP2_VERTEX_3
+ use GetPName MAP2_VERTEX_4
+ use GetPName MAP2_COLOR_4
+ use GetPName MAP2_INDEX
+ use GetPName MAP2_NORMAL
+ use GetPName MAP2_TEXTURE_COORD_1
+ use GetPName MAP2_TEXTURE_COORD_2
+ use GetPName MAP2_TEXTURE_COORD_3
+ use GetPName MAP2_TEXTURE_COORD_4
+ use GetPName POINT_SMOOTH
+ use GetPName LINE_SMOOTH
+ use GetPName POLYGON_SMOOTH
+ use GetPName SCISSOR_TEST
+ use GetPName COLOR_MATERIAL
+ use GetPName NORMALIZE
+ use GetPName AUTO_NORMAL
+ use GetPName POLYGON_OFFSET_POINT
+ use GetPName POLYGON_OFFSET_LINE
+ use GetPName POLYGON_OFFSET_FILL
+ use GetPName VERTEX_ARRAY
+ use GetPName NORMAL_ARRAY
+ use GetPName COLOR_ARRAY
+ use GetPName INDEX_ARRAY
+ use GetPName TEXTURE_COORD_ARRAY
+ use GetPName EDGE_FLAG_ARRAY
+ use EXT_convolution CONVOLUTION_1D_EXT
+ use EXT_convolution CONVOLUTION_2D_EXT
+ use EXT_convolution SEPARABLE_2D_EXT
+ use EXT_histogram HISTOGRAM_EXT
+ use EXT_histogram MINMAX_EXT
+ use EXT_rescale_normal RESCALE_NORMAL_EXT
+ use EXT_shared_texture_palette SHARED_TEXTURE_PALETTE_EXT
+ use EXT_texture3D TEXTURE_3D_EXT
+ use SGIS_multisample MULTISAMPLE_SGIS
+ use SGIS_multisample SAMPLE_ALPHA_TO_MASK_SGIS
+ use SGIS_multisample SAMPLE_ALPHA_TO_ONE_SGIS
+ use SGIS_multisample SAMPLE_MASK_SGIS
+ use SGIS_texture4D TEXTURE_4D_SGIS
+ use SGIX_async_histogram ASYNC_HISTOGRAM_SGIX
+ use SGIX_async_pixel ASYNC_TEX_IMAGE_SGIX
+ use SGIX_async_pixel ASYNC_DRAW_PIXELS_SGIX
+ use SGIX_async_pixel ASYNC_READ_PIXELS_SGIX
+ use SGIX_calligraphic_fragment CALLIGRAPHIC_FRAGMENT_SGIX
+ use SGIX_fog_offset FOG_OFFSET_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHTING_SGIX
+ use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT0_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT1_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT2_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT3_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT4_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT5_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT6_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT7_SGIX
+ use SGIX_framezoom FRAMEZOOM_SGIX
+ use SGIX_interlace INTERLACE_SGIX
+ use SGIX_ir_instrument1 IR_INSTRUMENT1_SGIX
+ use SGIX_pixel_texture PIXEL_TEX_GEN_SGIX
+ use SGIS_pixel_texture PIXEL_TEXTURE_SGIS
+ use SGIX_reference_plane REFERENCE_PLANE_SGIX
+ use SGIX_sprite SPRITE_SGIX
+ use SGI_color_table COLOR_TABLE_SGI
+ use SGI_color_table POST_CONVOLUTION_COLOR_TABLE_SGI
+ use SGI_color_table POST_COLOR_MATRIX_COLOR_TABLE_SGI
+ use SGI_texture_color_table TEXTURE_COLOR_TABLE_SGI
+
+###############################################################################
+
+ErrorCode enum:
+ NO_ERROR = 0
+ INVALID_ENUM = 0x0500
+ INVALID_VALUE = 0x0501
+ INVALID_OPERATION = 0x0502
+ STACK_OVERFLOW = 0x0503
+ STACK_UNDERFLOW = 0x0504
+ OUT_OF_MEMORY = 0x0505
+ use EXT_histogram TABLE_TOO_LARGE_EXT
+ use EXT_texture TEXTURE_TOO_LARGE_EXT
+
+# Additional error codes
+
+VERSION_3_0 enum:
+# use ARB_framebuffer_object INVALID_FRAMEBUFFER_OPERATION
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ INVALID_FRAMEBUFFER_OPERATION = 0x0506 # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_object enum:
+ INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506
+
+# Aliases EXT_fbo enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+ INVALID_FRAMEBUFFER_OPERATION_OES = 0x0506
+
+###############################################################################
+
+FeedbackType enum:
+ 2D = 0x0600
+ 3D = 0x0601
+ 3D_COLOR = 0x0602
+ 3D_COLOR_TEXTURE = 0x0603
+ 4D_COLOR_TEXTURE = 0x0604
+
+###############################################################################
+
+FeedBackToken enum:
+ PASS_THROUGH_TOKEN = 0x0700
+ POINT_TOKEN = 0x0701
+ LINE_TOKEN = 0x0702
+ POLYGON_TOKEN = 0x0703
+ BITMAP_TOKEN = 0x0704
+ DRAW_PIXEL_TOKEN = 0x0705
+ COPY_PIXEL_TOKEN = 0x0706
+ LINE_RESET_TOKEN = 0x0707
+
+###############################################################################
+
+FfdMaskSGIX enum:
+ TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001
+ GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002
+
+###############################################################################
+
+FfdTargetSGIX enum:
+ use SGIX_polynomial_ffd GEOMETRY_DEFORMATION_SGIX
+ use SGIX_polynomial_ffd TEXTURE_DEFORMATION_SGIX
+
+###############################################################################
+
+FogMode enum:
+ use TextureMagFilter LINEAR
+ EXP = 0x0800
+ EXP2 = 0x0801
+ use SGIS_fog_function FOG_FUNC_SGIS
+
+###############################################################################
+
+FogParameter enum:
+ use GetPName FOG_COLOR
+ use GetPName FOG_DENSITY
+ use GetPName FOG_END
+ use GetPName FOG_INDEX
+ use GetPName FOG_MODE
+ use GetPName FOG_START
+ use SGIX_fog_offset FOG_OFFSET_VALUE_SGIX
+
+###############################################################################
+
+FragmentLightModelParameterSGIX enum:
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX
+
+###############################################################################
+
+FrontFaceDirection enum:
+ CW = 0x0900
+ CCW = 0x0901
+
+###############################################################################
+
+GetColorTableParameterPNameSGI enum:
+ use SGI_color_table COLOR_TABLE_SCALE_SGI
+ use SGI_color_table COLOR_TABLE_BIAS_SGI
+ use SGI_color_table COLOR_TABLE_FORMAT_SGI
+ use SGI_color_table COLOR_TABLE_WIDTH_SGI
+ use SGI_color_table COLOR_TABLE_RED_SIZE_SGI
+ use SGI_color_table COLOR_TABLE_GREEN_SIZE_SGI
+ use SGI_color_table COLOR_TABLE_BLUE_SIZE_SGI
+ use SGI_color_table COLOR_TABLE_ALPHA_SIZE_SGI
+ use SGI_color_table COLOR_TABLE_LUMINANCE_SIZE_SGI
+ use SGI_color_table COLOR_TABLE_INTENSITY_SIZE_SGI
+
+###############################################################################
+
+GetConvolutionParameter enum:
+ use EXT_convolution CONVOLUTION_BORDER_MODE_EXT
+ use EXT_convolution CONVOLUTION_FILTER_SCALE_EXT
+ use EXT_convolution CONVOLUTION_FILTER_BIAS_EXT
+ use EXT_convolution CONVOLUTION_FORMAT_EXT
+ use EXT_convolution CONVOLUTION_WIDTH_EXT
+ use EXT_convolution CONVOLUTION_HEIGHT_EXT
+ use EXT_convolution MAX_CONVOLUTION_WIDTH_EXT
+ use EXT_convolution MAX_CONVOLUTION_HEIGHT_EXT
+
+###############################################################################
+
+GetHistogramParameterPNameEXT enum:
+ use EXT_histogram HISTOGRAM_WIDTH_EXT
+ use EXT_histogram HISTOGRAM_FORMAT_EXT
+ use EXT_histogram HISTOGRAM_RED_SIZE_EXT
+ use EXT_histogram HISTOGRAM_GREEN_SIZE_EXT
+ use EXT_histogram HISTOGRAM_BLUE_SIZE_EXT
+ use EXT_histogram HISTOGRAM_ALPHA_SIZE_EXT
+ use EXT_histogram HISTOGRAM_LUMINANCE_SIZE_EXT
+ use EXT_histogram HISTOGRAM_SINK_EXT
+
+###############################################################################
+
+GetMapQuery enum:
+ COEFF = 0x0A00
+ ORDER = 0x0A01
+ DOMAIN = 0x0A02
+
+###############################################################################
+
+GetMinmaxParameterPNameEXT enum:
+ use EXT_histogram MINMAX_FORMAT_EXT
+ use EXT_histogram MINMAX_SINK_EXT
+
+###############################################################################
+
+GetPixelMap enum:
+ PIXEL_MAP_I_TO_I = 0x0C70
+ PIXEL_MAP_S_TO_S = 0x0C71
+ PIXEL_MAP_I_TO_R = 0x0C72
+ PIXEL_MAP_I_TO_G = 0x0C73
+ PIXEL_MAP_I_TO_B = 0x0C74
+ PIXEL_MAP_I_TO_A = 0x0C75
+ PIXEL_MAP_R_TO_R = 0x0C76
+ PIXEL_MAP_G_TO_G = 0x0C77
+ PIXEL_MAP_B_TO_B = 0x0C78
+ PIXEL_MAP_A_TO_A = 0x0C79
+
+###############################################################################
+
+GetPointervPName enum:
+ VERTEX_ARRAY_POINTER = 0x808E
+ NORMAL_ARRAY_POINTER = 0x808F
+ COLOR_ARRAY_POINTER = 0x8090
+ INDEX_ARRAY_POINTER = 0x8091
+ TEXTURE_COORD_ARRAY_POINTER = 0x8092
+ EDGE_FLAG_ARRAY_POINTER = 0x8093
+ FEEDBACK_BUFFER_POINTER = 0x0DF0
+ SELECTION_BUFFER_POINTER = 0x0DF3
+ use SGIX_instruments INSTRUMENT_BUFFER_POINTER_SGIX
+
+###############################################################################
+
+# the columns after the comment symbol (#) indicate: number of params, type
+# (F - float, D - double, I - integer) for the returned values
+GetPName enum:
+ CURRENT_COLOR = 0x0B00 # 4 F
+ CURRENT_INDEX = 0x0B01 # 1 F
+ CURRENT_NORMAL = 0x0B02 # 3 F
+ CURRENT_TEXTURE_COORDS = 0x0B03 # 4 F
+ CURRENT_RASTER_COLOR = 0x0B04 # 4 F
+ CURRENT_RASTER_INDEX = 0x0B05 # 1 F
+ CURRENT_RASTER_TEXTURE_COORDS = 0x0B06 # 4 F
+ CURRENT_RASTER_POSITION = 0x0B07 # 4 F
+ CURRENT_RASTER_POSITION_VALID = 0x0B08 # 1 I
+ CURRENT_RASTER_DISTANCE = 0x0B09 # 1 F
+
+ POINT_SMOOTH = 0x0B10 # 1 I
+ POINT_SIZE = 0x0B11 # 1 F
+ POINT_SIZE_RANGE = 0x0B12 # 2 F
+ POINT_SIZE_GRANULARITY = 0x0B13 # 1 F
+
+ LINE_SMOOTH = 0x0B20 # 1 I
+ LINE_WIDTH = 0x0B21 # 1 F
+ LINE_WIDTH_RANGE = 0x0B22 # 2 F
+ LINE_WIDTH_GRANULARITY = 0x0B23 # 1 F
+ LINE_STIPPLE = 0x0B24 # 1 I
+ LINE_STIPPLE_PATTERN = 0x0B25 # 1 I
+ LINE_STIPPLE_REPEAT = 0x0B26 # 1 I
+ use VERSION_1_2 SMOOTH_POINT_SIZE_RANGE
+ use VERSION_1_2 SMOOTH_POINT_SIZE_GRANULARITY
+ use VERSION_1_2 SMOOTH_LINE_WIDTH_RANGE
+ use VERSION_1_2 SMOOTH_LINE_WIDTH_GRANULARITY
+ use VERSION_1_2 ALIASED_POINT_SIZE_RANGE
+ use VERSION_1_2 ALIASED_LINE_WIDTH_RANGE
+
+ LIST_MODE = 0x0B30 # 1 I
+ MAX_LIST_NESTING = 0x0B31 # 1 I
+ LIST_BASE = 0x0B32 # 1 I
+ LIST_INDEX = 0x0B33 # 1 I
+
+ POLYGON_MODE = 0x0B40 # 2 I
+ POLYGON_SMOOTH = 0x0B41 # 1 I
+ POLYGON_STIPPLE = 0x0B42 # 1 I
+ EDGE_FLAG = 0x0B43 # 1 I
+ CULL_FACE = 0x0B44 # 1 I
+ CULL_FACE_MODE = 0x0B45 # 1 I
+ FRONT_FACE = 0x0B46 # 1 I
+
+ LIGHTING = 0x0B50 # 1 I
+ LIGHT_MODEL_LOCAL_VIEWER = 0x0B51 # 1 I
+ LIGHT_MODEL_TWO_SIDE = 0x0B52 # 1 I
+ LIGHT_MODEL_AMBIENT = 0x0B53 # 4 F
+ SHADE_MODEL = 0x0B54 # 1 I
+ COLOR_MATERIAL_FACE = 0x0B55 # 1 I
+ COLOR_MATERIAL_PARAMETER = 0x0B56 # 1 I
+ COLOR_MATERIAL = 0x0B57 # 1 I
+
+ FOG = 0x0B60 # 1 I
+ FOG_INDEX = 0x0B61 # 1 I
+ FOG_DENSITY = 0x0B62 # 1 F
+ FOG_START = 0x0B63 # 1 F
+ FOG_END = 0x0B64 # 1 F
+ FOG_MODE = 0x0B65 # 1 I
+ FOG_COLOR = 0x0B66 # 4 F
+
+ DEPTH_RANGE = 0x0B70 # 2 F
+ DEPTH_TEST = 0x0B71 # 1 I
+ DEPTH_WRITEMASK = 0x0B72 # 1 I
+ DEPTH_CLEAR_VALUE = 0x0B73 # 1 F
+ DEPTH_FUNC = 0x0B74 # 1 I
+
+ ACCUM_CLEAR_VALUE = 0x0B80 # 4 F
+
+ STENCIL_TEST = 0x0B90 # 1 I
+ STENCIL_CLEAR_VALUE = 0x0B91 # 1 I
+ STENCIL_FUNC = 0x0B92 # 1 I
+ STENCIL_VALUE_MASK = 0x0B93 # 1 I
+ STENCIL_FAIL = 0x0B94 # 1 I
+ STENCIL_PASS_DEPTH_FAIL = 0x0B95 # 1 I
+ STENCIL_PASS_DEPTH_PASS = 0x0B96 # 1 I
+ STENCIL_REF = 0x0B97 # 1 I
+ STENCIL_WRITEMASK = 0x0B98 # 1 I
+
+ MATRIX_MODE = 0x0BA0 # 1 I
+ NORMALIZE = 0x0BA1 # 1 I
+ VIEWPORT = 0x0BA2 # 4 I
+ MODELVIEW_STACK_DEPTH = 0x0BA3 # 1 I
+ PROJECTION_STACK_DEPTH = 0x0BA4 # 1 I
+ TEXTURE_STACK_DEPTH = 0x0BA5 # 1 I
+ MODELVIEW_MATRIX = 0x0BA6 # 16 F
+ PROJECTION_MATRIX = 0x0BA7 # 16 F
+ TEXTURE_MATRIX = 0x0BA8 # 16 F
+
+ ATTRIB_STACK_DEPTH = 0x0BB0 # 1 I
+ CLIENT_ATTRIB_STACK_DEPTH = 0x0BB1 # 1 I
+
+ ALPHA_TEST = 0x0BC0 # 1 I
+ ALPHA_TEST_FUNC = 0x0BC1 # 1 I
+ ALPHA_TEST_REF = 0x0BC2 # 1 F
+
+ DITHER = 0x0BD0 # 1 I
+
+ BLEND_DST = 0x0BE0 # 1 I
+ BLEND_SRC = 0x0BE1 # 1 I
+ BLEND = 0x0BE2 # 1 I
+
+ LOGIC_OP_MODE = 0x0BF0 # 1 I
+ INDEX_LOGIC_OP = 0x0BF1 # 1 I
+ LOGIC_OP = 0x0BF1 # 1 I
+ COLOR_LOGIC_OP = 0x0BF2 # 1 I
+
+ AUX_BUFFERS = 0x0C00 # 1 I
+ DRAW_BUFFER = 0x0C01 # 1 I
+ READ_BUFFER = 0x0C02 # 1 I
+
+ SCISSOR_BOX = 0x0C10 # 4 I
+ SCISSOR_TEST = 0x0C11 # 1 I
+
+ INDEX_CLEAR_VALUE = 0x0C20 # 1 I
+ INDEX_WRITEMASK = 0x0C21 # 1 I
+ COLOR_CLEAR_VALUE = 0x0C22 # 4 F
+ COLOR_WRITEMASK = 0x0C23 # 4 I
+
+ INDEX_MODE = 0x0C30 # 1 I
+ RGBA_MODE = 0x0C31 # 1 I
+ DOUBLEBUFFER = 0x0C32 # 1 I
+ STEREO = 0x0C33 # 1 I
+
+ RENDER_MODE = 0x0C40 # 1 I
+
+ PERSPECTIVE_CORRECTION_HINT = 0x0C50 # 1 I
+ POINT_SMOOTH_HINT = 0x0C51 # 1 I
+ LINE_SMOOTH_HINT = 0x0C52 # 1 I
+ POLYGON_SMOOTH_HINT = 0x0C53 # 1 I
+ FOG_HINT = 0x0C54 # 1 I
+
+ TEXTURE_GEN_S = 0x0C60 # 1 I
+ TEXTURE_GEN_T = 0x0C61 # 1 I
+ TEXTURE_GEN_R = 0x0C62 # 1 I
+ TEXTURE_GEN_Q = 0x0C63 # 1 I
+
+ PIXEL_MAP_I_TO_I_SIZE = 0x0CB0 # 1 I
+ PIXEL_MAP_S_TO_S_SIZE = 0x0CB1 # 1 I
+ PIXEL_MAP_I_TO_R_SIZE = 0x0CB2 # 1 I
+ PIXEL_MAP_I_TO_G_SIZE = 0x0CB3 # 1 I
+ PIXEL_MAP_I_TO_B_SIZE = 0x0CB4 # 1 I
+ PIXEL_MAP_I_TO_A_SIZE = 0x0CB5 # 1 I
+ PIXEL_MAP_R_TO_R_SIZE = 0x0CB6 # 1 I
+ PIXEL_MAP_G_TO_G_SIZE = 0x0CB7 # 1 I
+ PIXEL_MAP_B_TO_B_SIZE = 0x0CB8 # 1 I
+ PIXEL_MAP_A_TO_A_SIZE = 0x0CB9 # 1 I
+
+ UNPACK_SWAP_BYTES = 0x0CF0 # 1 I
+ UNPACK_LSB_FIRST = 0x0CF1 # 1 I
+ UNPACK_ROW_LENGTH = 0x0CF2 # 1 I
+ UNPACK_SKIP_ROWS = 0x0CF3 # 1 I
+ UNPACK_SKIP_PIXELS = 0x0CF4 # 1 I
+ UNPACK_ALIGNMENT = 0x0CF5 # 1 I
+
+ PACK_SWAP_BYTES = 0x0D00 # 1 I
+ PACK_LSB_FIRST = 0x0D01 # 1 I
+ PACK_ROW_LENGTH = 0x0D02 # 1 I
+ PACK_SKIP_ROWS = 0x0D03 # 1 I
+ PACK_SKIP_PIXELS = 0x0D04 # 1 I
+ PACK_ALIGNMENT = 0x0D05 # 1 I
+
+ MAP_COLOR = 0x0D10 # 1 I
+ MAP_STENCIL = 0x0D11 # 1 I
+ INDEX_SHIFT = 0x0D12 # 1 I
+ INDEX_OFFSET = 0x0D13 # 1 I
+ RED_SCALE = 0x0D14 # 1 F
+ RED_BIAS = 0x0D15 # 1 F
+ ZOOM_X = 0x0D16 # 1 F
+ ZOOM_Y = 0x0D17 # 1 F
+ GREEN_SCALE = 0x0D18 # 1 F
+ GREEN_BIAS = 0x0D19 # 1 F
+ BLUE_SCALE = 0x0D1A # 1 F
+ BLUE_BIAS = 0x0D1B # 1 F
+ ALPHA_SCALE = 0x0D1C # 1 F
+ ALPHA_BIAS = 0x0D1D # 1 F
+ DEPTH_SCALE = 0x0D1E # 1 F
+ DEPTH_BIAS = 0x0D1F # 1 F
+
+ MAX_EVAL_ORDER = 0x0D30 # 1 I
+ MAX_LIGHTS = 0x0D31 # 1 I
+
+# VERSION_3_0 enum: (aliases)
+ MAX_CLIP_DISTANCES = 0x0D32 # VERSION_3_0 # alias GL_MAX_CLIP_PLANES
+
+ MAX_CLIP_PLANES = 0x0D32 # 1 I
+ MAX_TEXTURE_SIZE = 0x0D33 # 1 I
+ MAX_PIXEL_MAP_TABLE = 0x0D34 # 1 I
+ MAX_ATTRIB_STACK_DEPTH = 0x0D35 # 1 I
+ MAX_MODELVIEW_STACK_DEPTH = 0x0D36 # 1 I
+ MAX_NAME_STACK_DEPTH = 0x0D37 # 1 I
+ MAX_PROJECTION_STACK_DEPTH = 0x0D38 # 1 I
+ MAX_TEXTURE_STACK_DEPTH = 0x0D39 # 1 I
+ MAX_VIEWPORT_DIMS = 0x0D3A # 2 F
+ MAX_CLIENT_ATTRIB_STACK_DEPTH = 0x0D3B # 1 I
+
+ SUBPIXEL_BITS = 0x0D50 # 1 I
+ INDEX_BITS = 0x0D51 # 1 I
+ RED_BITS = 0x0D52 # 1 I
+ GREEN_BITS = 0x0D53 # 1 I
+ BLUE_BITS = 0x0D54 # 1 I
+ ALPHA_BITS = 0x0D55 # 1 I
+ DEPTH_BITS = 0x0D56 # 1 I
+ STENCIL_BITS = 0x0D57 # 1 I
+ ACCUM_RED_BITS = 0x0D58 # 1 I
+ ACCUM_GREEN_BITS = 0x0D59 # 1 I
+ ACCUM_BLUE_BITS = 0x0D5A # 1 I
+ ACCUM_ALPHA_BITS = 0x0D5B # 1 I
+
+ NAME_STACK_DEPTH = 0x0D70 # 1 I
+
+ AUTO_NORMAL = 0x0D80 # 1 I
+
+ MAP1_COLOR_4 = 0x0D90 # 1 I
+ MAP1_INDEX = 0x0D91 # 1 I
+ MAP1_NORMAL = 0x0D92 # 1 I
+ MAP1_TEXTURE_COORD_1 = 0x0D93 # 1 I
+ MAP1_TEXTURE_COORD_2 = 0x0D94 # 1 I
+ MAP1_TEXTURE_COORD_3 = 0x0D95 # 1 I
+ MAP1_TEXTURE_COORD_4 = 0x0D96 # 1 I
+ MAP1_VERTEX_3 = 0x0D97 # 1 I
+ MAP1_VERTEX_4 = 0x0D98 # 1 I
+
+ MAP2_COLOR_4 = 0x0DB0 # 1 I
+ MAP2_INDEX = 0x0DB1 # 1 I
+ MAP2_NORMAL = 0x0DB2 # 1 I
+ MAP2_TEXTURE_COORD_1 = 0x0DB3 # 1 I
+ MAP2_TEXTURE_COORD_2 = 0x0DB4 # 1 I
+ MAP2_TEXTURE_COORD_3 = 0x0DB5 # 1 I
+ MAP2_TEXTURE_COORD_4 = 0x0DB6 # 1 I
+ MAP2_VERTEX_3 = 0x0DB7 # 1 I
+ MAP2_VERTEX_4 = 0x0DB8 # 1 I
+
+ MAP1_GRID_DOMAIN = 0x0DD0 # 2 F
+ MAP1_GRID_SEGMENTS = 0x0DD1 # 1 I
+ MAP2_GRID_DOMAIN = 0x0DD2 # 4 F
+ MAP2_GRID_SEGMENTS = 0x0DD3 # 2 I
+
+ TEXTURE_1D = 0x0DE0 # 1 I
+ TEXTURE_2D = 0x0DE1 # 1 I
+
+ FEEDBACK_BUFFER_SIZE = 0x0DF1 # 1 I
+ FEEDBACK_BUFFER_TYPE = 0x0DF2 # 1 I
+
+ SELECTION_BUFFER_SIZE = 0x0DF4 # 1 I
+
+ POLYGON_OFFSET_UNITS = 0x2A00 # 1 F
+ POLYGON_OFFSET_POINT = 0x2A01 # 1 I
+ POLYGON_OFFSET_LINE = 0x2A02 # 1 I
+ POLYGON_OFFSET_FILL = 0x8037 # 1 I
+ POLYGON_OFFSET_FACTOR = 0x8038 # 1 F
+
+ TEXTURE_BINDING_1D = 0x8068 # 1 I
+ TEXTURE_BINDING_2D = 0x8069 # 1 I
+ TEXTURE_BINDING_3D = 0x806A # 1 I
+
+ VERTEX_ARRAY = 0x8074 # 1 I
+ NORMAL_ARRAY = 0x8075 # 1 I
+ COLOR_ARRAY = 0x8076 # 1 I
+ INDEX_ARRAY = 0x8077 # 1 I
+ TEXTURE_COORD_ARRAY = 0x8078 # 1 I
+ EDGE_FLAG_ARRAY = 0x8079 # 1 I
+
+ VERTEX_ARRAY_SIZE = 0x807A # 1 I
+ VERTEX_ARRAY_TYPE = 0x807B # 1 I
+ VERTEX_ARRAY_STRIDE = 0x807C # 1 I
+
+ NORMAL_ARRAY_TYPE = 0x807E # 1 I
+ NORMAL_ARRAY_STRIDE = 0x807F # 1 I
+
+ COLOR_ARRAY_SIZE = 0x8081 # 1 I
+ COLOR_ARRAY_TYPE = 0x8082 # 1 I
+ COLOR_ARRAY_STRIDE = 0x8083 # 1 I
+
+ INDEX_ARRAY_TYPE = 0x8085 # 1 I
+ INDEX_ARRAY_STRIDE = 0x8086 # 1 I
+
+ TEXTURE_COORD_ARRAY_SIZE = 0x8088 # 1 I
+ TEXTURE_COORD_ARRAY_TYPE = 0x8089 # 1 I
+ TEXTURE_COORD_ARRAY_STRIDE = 0x808A # 1 I
+
+ EDGE_FLAG_ARRAY_STRIDE = 0x808C # 1 I
+
+ use ClipPlaneName CLIP_PLANE0
+ use ClipPlaneName CLIP_PLANE1
+ use ClipPlaneName CLIP_PLANE2
+ use ClipPlaneName CLIP_PLANE3
+ use ClipPlaneName CLIP_PLANE4
+ use ClipPlaneName CLIP_PLANE5
+
+ use LightName LIGHT0
+ use LightName LIGHT1
+ use LightName LIGHT2
+ use LightName LIGHT3
+ use LightName LIGHT4
+ use LightName LIGHT5
+ use LightName LIGHT6
+ use LightName LIGHT7
+
+# use ARB_transpose_matrix TRANSPOSE_MODELVIEW_MATRIX_ARB
+# use ARB_transpose_matrix TRANSPOSE_PROJECTION_MATRIX_ARB
+# use ARB_transpose_matrix TRANSPOSE_TEXTURE_MATRIX_ARB
+# use ARB_transpose_matrix TRANSPOSE_COLOR_MATRIX_ARB
+
+ use VERSION_1_2 LIGHT_MODEL_COLOR_CONTROL
+
+ use EXT_blend_color BLEND_COLOR_EXT
+
+ use EXT_blend_minmax BLEND_EQUATION_EXT
+
+ use EXT_cmyka PACK_CMYK_HINT_EXT
+ use EXT_cmyka UNPACK_CMYK_HINT_EXT
+
+ use EXT_convolution CONVOLUTION_1D_EXT
+ use EXT_convolution CONVOLUTION_2D_EXT
+ use EXT_convolution SEPARABLE_2D_EXT
+ use EXT_convolution POST_CONVOLUTION_RED_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_GREEN_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_BLUE_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_ALPHA_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_RED_BIAS_EXT
+ use EXT_convolution POST_CONVOLUTION_GREEN_BIAS_EXT
+ use EXT_convolution POST_CONVOLUTION_BLUE_BIAS_EXT
+ use EXT_convolution POST_CONVOLUTION_ALPHA_BIAS_EXT
+
+ use EXT_histogram HISTOGRAM_EXT
+ use EXT_histogram MINMAX_EXT
+
+ use EXT_polygon_offset POLYGON_OFFSET_BIAS_EXT
+
+ use EXT_rescale_normal RESCALE_NORMAL_EXT
+
+ use EXT_shared_texture_palette SHARED_TEXTURE_PALETTE_EXT
+
+ use EXT_texture_object TEXTURE_3D_BINDING_EXT
+
+ use EXT_texture3D PACK_SKIP_IMAGES_EXT
+ use EXT_texture3D PACK_IMAGE_HEIGHT_EXT
+ use EXT_texture3D UNPACK_SKIP_IMAGES_EXT
+ use EXT_texture3D UNPACK_IMAGE_HEIGHT_EXT
+ use EXT_texture3D TEXTURE_3D_EXT
+ use EXT_texture3D MAX_3D_TEXTURE_SIZE_EXT
+
+ use EXT_vertex_array VERTEX_ARRAY_COUNT_EXT
+ use EXT_vertex_array NORMAL_ARRAY_COUNT_EXT
+ use EXT_vertex_array COLOR_ARRAY_COUNT_EXT
+ use EXT_vertex_array INDEX_ARRAY_COUNT_EXT
+ use EXT_vertex_array TEXTURE_COORD_ARRAY_COUNT_EXT
+ use EXT_vertex_array EDGE_FLAG_ARRAY_COUNT_EXT
+
+ use SGIS_detail_texture DETAIL_TEXTURE_2D_BINDING_SGIS
+
+ use SGIS_fog_function FOG_FUNC_POINTS_SGIS
+ use SGIS_fog_function MAX_FOG_FUNC_POINTS_SGIS
+
+ use SGIS_generate_mipmap GENERATE_MIPMAP_HINT_SGIS
+
+ use SGIS_multisample MULTISAMPLE_SGIS
+ use SGIS_multisample SAMPLE_ALPHA_TO_MASK_SGIS
+ use SGIS_multisample SAMPLE_ALPHA_TO_ONE_SGIS
+ use SGIS_multisample SAMPLE_MASK_SGIS
+ use SGIS_multisample SAMPLE_BUFFERS_SGIS
+ use SGIS_multisample SAMPLES_SGIS
+ use SGIS_multisample SAMPLE_MASK_VALUE_SGIS
+ use SGIS_multisample SAMPLE_MASK_INVERT_SGIS
+ use SGIS_multisample SAMPLE_PATTERN_SGIS
+
+ use SGIS_pixel_texture PIXEL_TEXTURE_SGIS
+
+ use SGIS_point_parameters POINT_SIZE_MIN_SGIS
+ use SGIS_point_parameters POINT_SIZE_MAX_SGIS
+ use SGIS_point_parameters POINT_FADE_THRESHOLD_SIZE_SGIS
+ use SGIS_point_parameters DISTANCE_ATTENUATION_SGIS
+
+ use SGIS_texture4D PACK_SKIP_VOLUMES_SGIS
+ use SGIS_texture4D PACK_IMAGE_DEPTH_SGIS
+ use SGIS_texture4D UNPACK_SKIP_VOLUMES_SGIS
+ use SGIS_texture4D UNPACK_IMAGE_DEPTH_SGIS
+ use SGIS_texture4D TEXTURE_4D_SGIS
+ use SGIS_texture4D MAX_4D_TEXTURE_SIZE_SGIS
+ use SGIS_texture4D TEXTURE_4D_BINDING_SGIS
+
+ use SGIX_async ASYNC_MARKER_SGIX
+
+ use SGIX_async_histogram ASYNC_HISTOGRAM_SGIX
+ use SGIX_async_histogram MAX_ASYNC_HISTOGRAM_SGIX
+
+ use SGIX_async_pixel ASYNC_TEX_IMAGE_SGIX
+ use SGIX_async_pixel ASYNC_DRAW_PIXELS_SGIX
+ use SGIX_async_pixel ASYNC_READ_PIXELS_SGIX
+ use SGIX_async_pixel MAX_ASYNC_TEX_IMAGE_SGIX
+ use SGIX_async_pixel MAX_ASYNC_DRAW_PIXELS_SGIX
+ use SGIX_async_pixel MAX_ASYNC_READ_PIXELS_SGIX
+
+ use SGIX_calligraphic_fragment CALLIGRAPHIC_FRAGMENT_SGIX
+
+ use SGIX_clipmap MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX
+ use SGIX_clipmap MAX_CLIPMAP_DEPTH_SGIX
+
+ use SGIX_convolution_accuracy CONVOLUTION_HINT_SGIX
+
+ use SGIX_fog_offset FOG_OFFSET_SGIX
+ use SGIX_fog_offset FOG_OFFSET_VALUE_SGIX
+
+ use SGIX_fragment_lighting FRAGMENT_LIGHTING_SGIX
+ use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_SGIX
+ use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_FACE_SGIX
+ use SGIX_fragment_lighting FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX
+ use SGIX_fragment_lighting MAX_FRAGMENT_LIGHTS_SGIX
+ use SGIX_fragment_lighting MAX_ACTIVE_LIGHTS_SGIX
+ use SGIX_fragment_lighting LIGHT_ENV_MODE_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT0_SGIX
+
+ use SGIX_framezoom FRAMEZOOM_SGIX
+ use SGIX_framezoom FRAMEZOOM_FACTOR_SGIX
+ use SGIX_framezoom MAX_FRAMEZOOM_FACTOR_SGIX
+
+ use SGIX_instruments INSTRUMENT_MEASUREMENTS_SGIX
+
+ use SGIX_interlace INTERLACE_SGIX
+
+ use SGIX_ir_instrument1 IR_INSTRUMENT1_SGIX
+
+ use SGIX_pixel_texture PIXEL_TEX_GEN_SGIX
+ use SGIX_pixel_texture PIXEL_TEX_GEN_MODE_SGIX
+
+ use SGIX_pixel_tiles PIXEL_TILE_BEST_ALIGNMENT_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_CACHE_INCREMENT_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_WIDTH_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_HEIGHT_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_GRID_WIDTH_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_GRID_HEIGHT_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_GRID_DEPTH_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_CACHE_SIZE_SGIX
+
+ use SGIX_polynomial_ffd DEFORMATIONS_MASK_SGIX
+
+ use SGIX_reference_plane REFERENCE_PLANE_EQUATION_SGIX
+ use SGIX_reference_plane REFERENCE_PLANE_SGIX
+
+ use SGIX_sprite SPRITE_SGIX
+ use SGIX_sprite SPRITE_MODE_SGIX
+ use SGIX_sprite SPRITE_AXIS_SGIX
+ use SGIX_sprite SPRITE_TRANSLATION_SGIX
+
+ use SGIX_subsample PACK_SUBSAMPLE_RATE_SGIX
+ use SGIX_subsample UNPACK_SUBSAMPLE_RATE_SGIX
+ use SGIX_resample PACK_RESAMPLE_SGIX
+ use SGIX_resample UNPACK_RESAMPLE_SGIX
+
+ use SGIX_texture_scale_bias POST_TEXTURE_FILTER_BIAS_RANGE_SGIX
+ use SGIX_texture_scale_bias POST_TEXTURE_FILTER_SCALE_RANGE_SGIX
+
+ use SGIX_vertex_preclip VERTEX_PRECLIP_SGIX
+ use SGIX_vertex_preclip VERTEX_PRECLIP_HINT_SGIX
+
+ use SGI_color_matrix COLOR_MATRIX_SGI
+ use SGI_color_matrix COLOR_MATRIX_STACK_DEPTH_SGI
+ use SGI_color_matrix MAX_COLOR_MATRIX_STACK_DEPTH_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_RED_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_GREEN_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_BLUE_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_RED_BIAS_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_GREEN_BIAS_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_BLUE_BIAS_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_BIAS_SGI
+
+ use SGI_color_table COLOR_TABLE_SGI
+ use SGI_color_table POST_CONVOLUTION_COLOR_TABLE_SGI
+ use SGI_color_table POST_COLOR_MATRIX_COLOR_TABLE_SGI
+
+ use SGI_texture_color_table TEXTURE_COLOR_TABLE_SGI
+
+###############################################################################
+
+GetTextureParameter enum:
+ use TextureParameterName TEXTURE_MAG_FILTER
+ use TextureParameterName TEXTURE_MIN_FILTER
+ use TextureParameterName TEXTURE_WRAP_S
+ use TextureParameterName TEXTURE_WRAP_T
+ TEXTURE_WIDTH = 0x1000
+ TEXTURE_HEIGHT = 0x1001
+ TEXTURE_INTERNAL_FORMAT = 0x1003
+ TEXTURE_COMPONENTS = 0x1003
+ TEXTURE_BORDER_COLOR = 0x1004
+ TEXTURE_BORDER = 0x1005
+ TEXTURE_RED_SIZE = 0x805C
+ TEXTURE_GREEN_SIZE = 0x805D
+ TEXTURE_BLUE_SIZE = 0x805E
+ TEXTURE_ALPHA_SIZE = 0x805F
+ TEXTURE_LUMINANCE_SIZE = 0x8060
+ TEXTURE_INTENSITY_SIZE = 0x8061
+ TEXTURE_PRIORITY = 0x8066
+ TEXTURE_RESIDENT = 0x8067
+ use EXT_texture3D TEXTURE_DEPTH_EXT
+ use EXT_texture3D TEXTURE_WRAP_R_EXT
+ use SGIS_detail_texture DETAIL_TEXTURE_LEVEL_SGIS
+ use SGIS_detail_texture DETAIL_TEXTURE_MODE_SGIS
+ use SGIS_detail_texture DETAIL_TEXTURE_FUNC_POINTS_SGIS
+ use SGIS_generate_mipmap GENERATE_MIPMAP_SGIS
+ use SGIS_sharpen_texture SHARPEN_TEXTURE_FUNC_POINTS_SGIS
+ use SGIS_texture_filter4 TEXTURE_FILTER4_SIZE_SGIS
+ use SGIS_texture_lod TEXTURE_MIN_LOD_SGIS
+ use SGIS_texture_lod TEXTURE_MAX_LOD_SGIS
+ use SGIS_texture_lod TEXTURE_BASE_LEVEL_SGIS
+ use SGIS_texture_lod TEXTURE_MAX_LEVEL_SGIS
+ use SGIS_texture_select DUAL_TEXTURE_SELECT_SGIS
+ use SGIS_texture_select QUAD_TEXTURE_SELECT_SGIS
+ use SGIS_texture4D TEXTURE_4DSIZE_SGIS
+ use SGIS_texture4D TEXTURE_WRAP_Q_SGIS
+ use SGIX_clipmap TEXTURE_CLIPMAP_CENTER_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_FRAME_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_OFFSET_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_LOD_OFFSET_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_DEPTH_SGIX
+ use SGIX_shadow TEXTURE_COMPARE_SGIX
+ use SGIX_shadow TEXTURE_COMPARE_OPERATOR_SGIX
+ use SGIX_shadow TEXTURE_LEQUAL_R_SGIX
+ use SGIX_shadow TEXTURE_GEQUAL_R_SGIX
+ use SGIX_shadow_ambient SHADOW_AMBIENT_SGIX
+ use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_S_SGIX
+ use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_T_SGIX
+ use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_R_SGIX
+ use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_S_SGIX
+ use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_T_SGIX
+ use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_R_SGIX
+ use SGIX_texture_scale_bias POST_TEXTURE_FILTER_BIAS_SGIX
+ use SGIX_texture_scale_bias POST_TEXTURE_FILTER_SCALE_SGIX
+
+###############################################################################
+
+HintMode enum:
+ DONT_CARE = 0x1100
+ FASTEST = 0x1101
+ NICEST = 0x1102
+
+###############################################################################
+
+HintTarget enum:
+ use GetPName PERSPECTIVE_CORRECTION_HINT
+ use GetPName POINT_SMOOTH_HINT
+ use GetPName LINE_SMOOTH_HINT
+ use GetPName POLYGON_SMOOTH_HINT
+ use GetPName FOG_HINT
+ use EXT_cmyka PACK_CMYK_HINT_EXT
+ use EXT_cmyka UNPACK_CMYK_HINT_EXT
+ use SGIS_generate_mipmap GENERATE_MIPMAP_HINT_SGIS
+ use SGIX_convolution_accuracy CONVOLUTION_HINT_SGIX
+ use SGIX_texture_multi_buffer TEXTURE_MULTI_BUFFER_HINT_SGIX
+ use SGIX_vertex_preclip VERTEX_PRECLIP_HINT_SGIX
+
+###############################################################################
+
+HistogramTargetEXT enum:
+ use EXT_histogram HISTOGRAM_EXT
+ use EXT_histogram PROXY_HISTOGRAM_EXT
+
+###############################################################################
+
+IndexPointerType enum:
+ use DataType SHORT
+ use DataType INT
+ use DataType FLOAT
+ use DataType DOUBLE
+
+###############################################################################
+
+LightEnvModeSGIX enum:
+ use StencilOp REPLACE
+ use TextureEnvMode MODULATE
+ use AccumOp ADD
+
+###############################################################################
+
+LightEnvParameterSGIX enum:
+ use SGIX_fragment_lighting LIGHT_ENV_MODE_SGIX
+
+###############################################################################
+
+LightModelColorControl enum:
+ use VERSION_1_2 SINGLE_COLOR
+ use VERSION_1_2 SEPARATE_SPECULAR_COLOR
+
+###############################################################################
+
+LightModelParameter enum:
+ use GetPName LIGHT_MODEL_AMBIENT
+ use GetPName LIGHT_MODEL_LOCAL_VIEWER
+ use GetPName LIGHT_MODEL_TWO_SIDE
+ use VERSION_1_2 LIGHT_MODEL_COLOR_CONTROL
+
+###############################################################################
+
+LightParameter enum:
+ AMBIENT = 0x1200
+ DIFFUSE = 0x1201
+ SPECULAR = 0x1202
+ POSITION = 0x1203
+ SPOT_DIRECTION = 0x1204
+ SPOT_EXPONENT = 0x1205
+ SPOT_CUTOFF = 0x1206
+ CONSTANT_ATTENUATION = 0x1207
+ LINEAR_ATTENUATION = 0x1208
+ QUADRATIC_ATTENUATION = 0x1209
+
+###############################################################################
+
+ListMode enum:
+ COMPILE = 0x1300
+ COMPILE_AND_EXECUTE = 0x1301
+
+###############################################################################
+
+DataType enum:
+ BYTE = 0x1400
+ UNSIGNED_BYTE = 0x1401
+ SHORT = 0x1402
+ UNSIGNED_SHORT = 0x1403
+ INT = 0x1404
+ UNSIGNED_INT = 0x1405
+ FLOAT = 0x1406
+ 2_BYTES = 0x1407
+ 3_BYTES = 0x1408
+ 4_BYTES = 0x1409
+ DOUBLE = 0x140A
+ DOUBLE_EXT = 0x140A
+
+# OES_byte_coordinates: (OpenGL ES only)
+# use DataType BYTE
+
+OES_element_index_uint enum: (OpenGL ES only)
+# use DataType UNSIGNED_INT
+
+OES_texture_float enum: (OpenGL ES only; additional; see below)
+# use DataType FLOAT
+
+VERSION_3_0 enum:
+# use ARB_half_float_vertex HALF_FLOAT
+
+ARB_half_float_vertex enum: (note: no ARB suffixes)
+ HALF_FLOAT = 0x140B # VERSION_3_0 / ARB_half_float_vertex
+
+ARB_half_float_pixel enum:
+ HALF_FLOAT_ARB = 0x140B
+
+NV_half_float enum:
+ HALF_FLOAT_NV = 0x140B
+
+APPLE_float_pixels enum: (additional; see below)
+ HALF_APPLE = 0x140B
+
+OES_fixed_point enum: (OpenGL ES only)
+ FIXED_OES = 0x140C
+
+# Leave a gap to preserve even/odd int/uint token values
+# ARB_future_use: 0x140D
+
+# Future NV extension (Khronos bug 5172)
+ INT64_NV = 0x140E
+ UNSIGNED_INT64_NV = 0x140F
+
+###############################################################################
+
+ListNameType enum:
+ use DataType BYTE
+ use DataType UNSIGNED_BYTE
+ use DataType SHORT
+ use DataType UNSIGNED_SHORT
+ use DataType INT
+ use DataType UNSIGNED_INT
+ use DataType FLOAT
+ use DataType 2_BYTES
+ use DataType 3_BYTES
+ use DataType 4_BYTES
+
+###############################################################################
+
+ListParameterName enum:
+ use SGIX_list_priority LIST_PRIORITY_SGIX
+
+###############################################################################
+
+LogicOp enum:
+ CLEAR = 0x1500
+ AND = 0x1501
+ AND_REVERSE = 0x1502
+ COPY = 0x1503
+ AND_INVERTED = 0x1504
+ NOOP = 0x1505
+ XOR = 0x1506
+ OR = 0x1507
+ NOR = 0x1508
+ EQUIV = 0x1509
+ INVERT = 0x150A
+ OR_REVERSE = 0x150B
+ COPY_INVERTED = 0x150C
+ OR_INVERTED = 0x150D
+ NAND = 0x150E
+ SET = 0x150F
+
+###############################################################################
+
+MapTarget enum:
+ use GetPName MAP1_COLOR_4
+ use GetPName MAP1_INDEX
+ use GetPName MAP1_NORMAL
+ use GetPName MAP1_TEXTURE_COORD_1
+ use GetPName MAP1_TEXTURE_COORD_2
+ use GetPName MAP1_TEXTURE_COORD_3
+ use GetPName MAP1_TEXTURE_COORD_4
+ use GetPName MAP1_VERTEX_3
+ use GetPName MAP1_VERTEX_4
+ use GetPName MAP2_COLOR_4
+ use GetPName MAP2_INDEX
+ use GetPName MAP2_NORMAL
+ use GetPName MAP2_TEXTURE_COORD_1
+ use GetPName MAP2_TEXTURE_COORD_2
+ use GetPName MAP2_TEXTURE_COORD_3
+ use GetPName MAP2_TEXTURE_COORD_4
+ use GetPName MAP2_VERTEX_3
+ use GetPName MAP2_VERTEX_4
+ use SGIX_polynomial_ffd GEOMETRY_DEFORMATION_SGIX
+ use SGIX_polynomial_ffd TEXTURE_DEFORMATION_SGIX
+
+###############################################################################
+
+MaterialFace enum:
+ use DrawBufferMode FRONT
+ use DrawBufferMode BACK
+ use DrawBufferMode FRONT_AND_BACK
+
+
+###############################################################################
+
+MaterialParameter enum:
+ EMISSION = 0x1600
+ SHININESS = 0x1601
+ AMBIENT_AND_DIFFUSE = 0x1602
+ COLOR_INDEXES = 0x1603
+ use LightParameter AMBIENT
+ use LightParameter DIFFUSE
+ use LightParameter SPECULAR
+
+###############################################################################
+
+MatrixMode enum:
+ MODELVIEW = 0x1700
+ PROJECTION = 0x1701
+ TEXTURE = 0x1702
+
+###############################################################################
+
+MeshMode1 enum:
+ use PolygonMode POINT
+ use PolygonMode LINE
+
+###############################################################################
+
+MeshMode2 enum:
+ use PolygonMode POINT
+ use PolygonMode LINE
+ use PolygonMode FILL
+
+###############################################################################
+
+MinmaxTargetEXT enum:
+ use EXT_histogram MINMAX_EXT
+
+###############################################################################
+
+NormalPointerType enum:
+ use DataType BYTE
+ use DataType SHORT
+ use DataType INT
+ use DataType FLOAT
+ use DataType DOUBLE
+
+###############################################################################
+
+PixelCopyType enum:
+ COLOR = 0x1800
+ DEPTH = 0x1801
+ STENCIL = 0x1802
+
+EXT_discard_framebuffer enum: (OpenGL ES only)
+ COLOR_EXT = 0x1800
+ DEPTH_EXT = 0x1801
+ STENCIL_EXT = 0x1802
+
+###############################################################################
+
+PixelFormat enum:
+ COLOR_INDEX = 0x1900
+ STENCIL_INDEX = 0x1901
+ DEPTH_COMPONENT = 0x1902
+ RED = 0x1903
+ GREEN = 0x1904
+ BLUE = 0x1905
+ ALPHA = 0x1906
+ RGB = 0x1907
+ RGBA = 0x1908
+ LUMINANCE = 0x1909
+ LUMINANCE_ALPHA = 0x190A
+ use EXT_abgr ABGR_EXT
+ use EXT_cmyka CMYK_EXT
+ use EXT_cmyka CMYKA_EXT
+ use SGIX_icc_texture R5_G6_B5_ICC_SGIX
+ use SGIX_icc_texture R5_G6_B5_A8_ICC_SGIX
+ use SGIX_icc_texture ALPHA16_ICC_SGIX
+ use SGIX_icc_texture LUMINANCE16_ICC_SGIX
+ use SGIX_icc_texture LUMINANCE16_ALPHA8_ICC_SGIX
+ use SGIX_ycrcb YCRCB_422_SGIX
+ use SGIX_ycrcb YCRCB_444_SGIX
+
+OES_depth_texture enum: (OpenGL ES only)
+# use DataType UNSIGNED_SHORT
+# use DataType UNSIGNED_INT
+# use PixelFormat DEPTH_COMPONENT
+
+###############################################################################
+
+PixelMap enum:
+ use GetPixelMap PIXEL_MAP_I_TO_I
+ use GetPixelMap PIXEL_MAP_S_TO_S
+ use GetPixelMap PIXEL_MAP_I_TO_R
+ use GetPixelMap PIXEL_MAP_I_TO_G
+ use GetPixelMap PIXEL_MAP_I_TO_B
+ use GetPixelMap PIXEL_MAP_I_TO_A
+ use GetPixelMap PIXEL_MAP_R_TO_R
+ use GetPixelMap PIXEL_MAP_G_TO_G
+ use GetPixelMap PIXEL_MAP_B_TO_B
+ use GetPixelMap PIXEL_MAP_A_TO_A
+
+###############################################################################
+
+PixelStoreParameter enum:
+ use GetPName UNPACK_SWAP_BYTES
+ use GetPName UNPACK_LSB_FIRST
+ use GetPName UNPACK_ROW_LENGTH
+ use GetPName UNPACK_SKIP_ROWS
+ use GetPName UNPACK_SKIP_PIXELS
+ use GetPName UNPACK_ALIGNMENT
+ use GetPName PACK_SWAP_BYTES
+ use GetPName PACK_LSB_FIRST
+ use GetPName PACK_ROW_LENGTH
+ use GetPName PACK_SKIP_ROWS
+ use GetPName PACK_SKIP_PIXELS
+ use GetPName PACK_ALIGNMENT
+ use EXT_texture3D PACK_SKIP_IMAGES_EXT
+ use EXT_texture3D PACK_IMAGE_HEIGHT_EXT
+ use EXT_texture3D UNPACK_SKIP_IMAGES_EXT
+ use EXT_texture3D UNPACK_IMAGE_HEIGHT_EXT
+ use SGIS_texture4D PACK_SKIP_VOLUMES_SGIS
+ use SGIS_texture4D PACK_IMAGE_DEPTH_SGIS
+ use SGIS_texture4D UNPACK_SKIP_VOLUMES_SGIS
+ use SGIS_texture4D UNPACK_IMAGE_DEPTH_SGIS
+ use SGIX_pixel_tiles PIXEL_TILE_WIDTH_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_HEIGHT_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_GRID_WIDTH_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_GRID_HEIGHT_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_GRID_DEPTH_SGIX
+ use SGIX_pixel_tiles PIXEL_TILE_CACHE_SIZE_SGIX
+ use SGIX_subsample PACK_SUBSAMPLE_RATE_SGIX
+ use SGIX_subsample UNPACK_SUBSAMPLE_RATE_SGIX
+ use SGIX_resample PACK_RESAMPLE_SGIX
+ use SGIX_resample UNPACK_RESAMPLE_SGIX
+
+###############################################################################
+
+PixelStoreResampleMode enum:
+ use SGIX_resample RESAMPLE_REPLICATE_SGIX
+ use SGIX_resample RESAMPLE_ZERO_FILL_SGIX
+ use SGIX_resample RESAMPLE_DECIMATE_SGIX
+
+###############################################################################
+
+PixelStoreSubsampleRate enum:
+ use SGIX_subsample PIXEL_SUBSAMPLE_4444_SGIX
+ use SGIX_subsample PIXEL_SUBSAMPLE_2424_SGIX
+ use SGIX_subsample PIXEL_SUBSAMPLE_4242_SGIX
+
+###############################################################################
+
+PixelTexGenMode enum:
+ use DrawBufferMode NONE
+ use PixelFormat RGB
+ use PixelFormat RGBA
+ use PixelFormat LUMINANCE
+ use PixelFormat LUMINANCE_ALPHA
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_MS_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_ALPHA_LS_SGIX
+
+###############################################################################
+
+PixelTexGenParameterNameSGIS enum:
+ use SGIS_pixel_texture PIXEL_FRAGMENT_RGB_SOURCE_SGIS
+ use SGIS_pixel_texture PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS
+
+###############################################################################
+
+PixelTransferParameter enum:
+ use GetPName MAP_COLOR
+ use GetPName MAP_STENCIL
+ use GetPName INDEX_SHIFT
+ use GetPName INDEX_OFFSET
+ use GetPName RED_SCALE
+ use GetPName RED_BIAS
+ use GetPName GREEN_SCALE
+ use GetPName GREEN_BIAS
+ use GetPName BLUE_SCALE
+ use GetPName BLUE_BIAS
+ use GetPName ALPHA_SCALE
+ use GetPName ALPHA_BIAS
+ use GetPName DEPTH_SCALE
+ use GetPName DEPTH_BIAS
+ use EXT_convolution POST_CONVOLUTION_RED_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_GREEN_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_BLUE_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_ALPHA_SCALE_EXT
+ use EXT_convolution POST_CONVOLUTION_RED_BIAS_EXT
+ use EXT_convolution POST_CONVOLUTION_GREEN_BIAS_EXT
+ use EXT_convolution POST_CONVOLUTION_BLUE_BIAS_EXT
+ use EXT_convolution POST_CONVOLUTION_ALPHA_BIAS_EXT
+ use SGI_color_matrix POST_COLOR_MATRIX_RED_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_GREEN_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_BLUE_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_SCALE_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_RED_BIAS_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_GREEN_BIAS_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_BLUE_BIAS_SGI
+ use SGI_color_matrix POST_COLOR_MATRIX_ALPHA_BIAS_SGI
+
+###############################################################################
+
+PixelType enum:
+ BITMAP = 0x1A00
+ use DataType BYTE
+ use DataType UNSIGNED_BYTE
+ use DataType SHORT
+ use DataType UNSIGNED_SHORT
+ use DataType INT
+ use DataType UNSIGNED_INT
+ use DataType FLOAT
+ use EXT_packed_pixels UNSIGNED_BYTE_3_3_2_EXT
+ use EXT_packed_pixels UNSIGNED_SHORT_4_4_4_4_EXT
+ use EXT_packed_pixels UNSIGNED_SHORT_5_5_5_1_EXT
+ use EXT_packed_pixels UNSIGNED_INT_8_8_8_8_EXT
+ use EXT_packed_pixels UNSIGNED_INT_10_10_10_2_EXT
+
+###############################################################################
+
+PointParameterNameSGIS enum:
+ use SGIS_point_parameters POINT_SIZE_MIN_SGIS
+ use SGIS_point_parameters POINT_SIZE_MAX_SGIS
+ use SGIS_point_parameters POINT_FADE_THRESHOLD_SIZE_SGIS
+ use SGIS_point_parameters DISTANCE_ATTENUATION_SGIS
+
+###############################################################################
+
+PolygonMode enum:
+ POINT = 0x1B00
+ LINE = 0x1B01
+ FILL = 0x1B02
+
+###############################################################################
+
+ReadBufferMode enum:
+ use DrawBufferMode FRONT_LEFT
+ use DrawBufferMode FRONT_RIGHT
+ use DrawBufferMode BACK_LEFT
+ use DrawBufferMode BACK_RIGHT
+ use DrawBufferMode FRONT
+ use DrawBufferMode BACK
+ use DrawBufferMode LEFT
+ use DrawBufferMode RIGHT
+ use DrawBufferMode AUX0
+ use DrawBufferMode AUX1
+ use DrawBufferMode AUX2
+ use DrawBufferMode AUX3
+
+###############################################################################
+
+RenderingMode enum:
+ RENDER = 0x1C00
+ FEEDBACK = 0x1C01
+ SELECT = 0x1C02
+
+###############################################################################
+
+SamplePatternSGIS enum:
+ use SGIS_multisample 1PASS_SGIS
+ use SGIS_multisample 2PASS_0_SGIS
+ use SGIS_multisample 2PASS_1_SGIS
+ use SGIS_multisample 4PASS_0_SGIS
+ use SGIS_multisample 4PASS_1_SGIS
+ use SGIS_multisample 4PASS_2_SGIS
+ use SGIS_multisample 4PASS_3_SGIS
+
+###############################################################################
+
+SeparableTargetEXT enum:
+ use EXT_convolution SEPARABLE_2D_EXT
+
+###############################################################################
+
+ShadingModel enum:
+ FLAT = 0x1D00
+ SMOOTH = 0x1D01
+
+###############################################################################
+
+StencilFunction enum:
+ use AlphaFunction NEVER
+ use AlphaFunction LESS
+ use AlphaFunction EQUAL
+ use AlphaFunction LEQUAL
+ use AlphaFunction GREATER
+ use AlphaFunction NOTEQUAL
+ use AlphaFunction GEQUAL
+ use AlphaFunction ALWAYS
+
+###############################################################################
+
+StencilOp enum:
+ use BlendingFactorDest ZERO
+ KEEP = 0x1E00
+ REPLACE = 0x1E01
+ INCR = 0x1E02
+ DECR = 0x1E03
+ use LogicOp INVERT
+
+###############################################################################
+
+StringName enum:
+ VENDOR = 0x1F00
+ RENDERER = 0x1F01
+ VERSION = 0x1F02
+ EXTENSIONS = 0x1F03
+
+###############################################################################
+
+TexCoordPointerType enum:
+ use DataType SHORT
+ use DataType INT
+ use DataType FLOAT
+ use DataType DOUBLE
+
+###############################################################################
+
+TextureCoordName enum:
+ S = 0x2000
+ T = 0x2001
+ R = 0x2002
+ Q = 0x2003
+
+###############################################################################
+
+TextureEnvMode enum:
+ MODULATE = 0x2100
+ DECAL = 0x2101
+ use GetPName BLEND
+ use EXT_texture REPLACE_EXT
+ use AccumOp ADD
+ use SGIX_texture_add_env TEXTURE_ENV_BIAS_SGIX
+
+###############################################################################
+
+TextureEnvParameter enum:
+ TEXTURE_ENV_MODE = 0x2200
+ TEXTURE_ENV_COLOR = 0x2201
+
+###############################################################################
+
+TextureEnvTarget enum:
+ TEXTURE_ENV = 0x2300
+
+###############################################################################
+
+TextureFilterFuncSGIS enum:
+ use SGIS_texture_filter4 FILTER4_SGIS
+
+###############################################################################
+
+TextureGenMode enum:
+ EYE_LINEAR = 0x2400
+ OBJECT_LINEAR = 0x2401
+ SPHERE_MAP = 0x2402
+ use SGIS_point_line_texgen EYE_DISTANCE_TO_POINT_SGIS
+ use SGIS_point_line_texgen OBJECT_DISTANCE_TO_POINT_SGIS
+ use SGIS_point_line_texgen EYE_DISTANCE_TO_LINE_SGIS
+ use SGIS_point_line_texgen OBJECT_DISTANCE_TO_LINE_SGIS
+
+###############################################################################
+
+TextureGenParameter enum:
+ TEXTURE_GEN_MODE = 0x2500
+ OBJECT_PLANE = 0x2501
+ EYE_PLANE = 0x2502
+ use SGIS_point_line_texgen EYE_POINT_SGIS
+ use SGIS_point_line_texgen OBJECT_POINT_SGIS
+ use SGIS_point_line_texgen EYE_LINE_SGIS
+ use SGIS_point_line_texgen OBJECT_LINE_SGIS
+
+# Aliases TextureGenParameter enum above
+OES_texture_cube_map enum: (OpenGL ES only; additional; see below)
+ TEXTURE_GEN_MODE = 0x2500
+
+###############################################################################
+
+TextureMagFilter enum:
+ NEAREST = 0x2600
+ LINEAR = 0x2601
+ use SGIS_detail_texture LINEAR_DETAIL_SGIS
+ use SGIS_detail_texture LINEAR_DETAIL_ALPHA_SGIS
+ use SGIS_detail_texture LINEAR_DETAIL_COLOR_SGIS
+ use SGIS_sharpen_texture LINEAR_SHARPEN_SGIS
+ use SGIS_sharpen_texture LINEAR_SHARPEN_ALPHA_SGIS
+ use SGIS_sharpen_texture LINEAR_SHARPEN_COLOR_SGIS
+ use SGIS_texture_filter4 FILTER4_SGIS
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_CEILING_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_ROUND_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_FLOOR_SGIX
+
+###############################################################################
+
+TextureMinFilter enum:
+ use TextureMagFilter NEAREST
+ use TextureMagFilter LINEAR
+ NEAREST_MIPMAP_NEAREST = 0x2700
+ LINEAR_MIPMAP_NEAREST = 0x2701
+ NEAREST_MIPMAP_LINEAR = 0x2702
+ LINEAR_MIPMAP_LINEAR = 0x2703
+ use SGIS_texture_filter4 FILTER4_SGIS
+ use SGIX_clipmap LINEAR_CLIPMAP_LINEAR_SGIX
+ use SGIX_clipmap NEAREST_CLIPMAP_NEAREST_SGIX
+ use SGIX_clipmap NEAREST_CLIPMAP_LINEAR_SGIX
+ use SGIX_clipmap LINEAR_CLIPMAP_NEAREST_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_CEILING_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_ROUND_SGIX
+ use SGIX_impact_pixel_texture PIXEL_TEX_GEN_Q_FLOOR_SGIX
+
+###############################################################################
+
+TextureParameterName enum:
+ TEXTURE_MAG_FILTER = 0x2800
+ TEXTURE_MIN_FILTER = 0x2801
+ TEXTURE_WRAP_S = 0x2802
+ TEXTURE_WRAP_T = 0x2803
+ use GetTextureParameter TEXTURE_BORDER_COLOR
+ use GetTextureParameter TEXTURE_PRIORITY
+ use EXT_texture3D TEXTURE_WRAP_R_EXT
+ use SGIS_detail_texture DETAIL_TEXTURE_LEVEL_SGIS
+ use SGIS_detail_texture DETAIL_TEXTURE_MODE_SGIS
+ use SGIS_generate_mipmap GENERATE_MIPMAP_SGIS
+ use SGIS_texture_select DUAL_TEXTURE_SELECT_SGIS
+ use SGIS_texture_select QUAD_TEXTURE_SELECT_SGIS
+ use SGIS_texture4D TEXTURE_WRAP_Q_SGIS
+ use SGIX_clipmap TEXTURE_CLIPMAP_CENTER_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_FRAME_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_OFFSET_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_LOD_OFFSET_SGIX
+ use SGIX_clipmap TEXTURE_CLIPMAP_DEPTH_SGIX
+ use SGIX_shadow TEXTURE_COMPARE_SGIX
+ use SGIX_shadow TEXTURE_COMPARE_OPERATOR_SGIX
+ use SGIX_shadow_ambient SHADOW_AMBIENT_SGIX
+ use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_S_SGIX
+ use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_T_SGIX
+ use SGIX_texture_coordinate_clamp TEXTURE_MAX_CLAMP_R_SGIX
+ use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_S_SGIX
+ use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_T_SGIX
+ use SGIX_texture_lod_bias TEXTURE_LOD_BIAS_R_SGIX
+ use SGIX_texture_scale_bias POST_TEXTURE_FILTER_BIAS_SGIX
+ use SGIX_texture_scale_bias POST_TEXTURE_FILTER_SCALE_SGIX
+
+###############################################################################
+
+TextureTarget enum:
+ use GetPName TEXTURE_1D
+ use GetPName TEXTURE_2D
+ PROXY_TEXTURE_1D = 0x8063
+ PROXY_TEXTURE_2D = 0x8064
+ use EXT_texture3D TEXTURE_3D_EXT
+ use EXT_texture3D PROXY_TEXTURE_3D_EXT
+ use SGIS_detail_texture DETAIL_TEXTURE_2D_SGIS
+ use SGIS_texture4D TEXTURE_4D_SGIS
+ use SGIS_texture4D PROXY_TEXTURE_4D_SGIS
+ use SGIS_texture_lod TEXTURE_MIN_LOD_SGIS
+ use SGIS_texture_lod TEXTURE_MAX_LOD_SGIS
+ use SGIS_texture_lod TEXTURE_BASE_LEVEL_SGIS
+ use SGIS_texture_lod TEXTURE_MAX_LEVEL_SGIS
+
+###############################################################################
+
+TextureWrapMode enum:
+ CLAMP = 0x2900
+ REPEAT = 0x2901
+ use SGIS_texture_border_clamp CLAMP_TO_BORDER_SGIS
+ use SGIS_texture_edge_clamp CLAMP_TO_EDGE_SGIS
+
+###############################################################################
+
+PixelInternalFormat enum:
+ R3_G3_B2 = 0x2A10
+ ALPHA4 = 0x803B
+ ALPHA8 = 0x803C
+ ALPHA12 = 0x803D
+ ALPHA16 = 0x803E
+ LUMINANCE4 = 0x803F
+ LUMINANCE8 = 0x8040
+ LUMINANCE12 = 0x8041
+ LUMINANCE16 = 0x8042
+ LUMINANCE4_ALPHA4 = 0x8043
+ LUMINANCE6_ALPHA2 = 0x8044
+ LUMINANCE8_ALPHA8 = 0x8045
+ LUMINANCE12_ALPHA4 = 0x8046
+ LUMINANCE12_ALPHA12 = 0x8047
+ LUMINANCE16_ALPHA16 = 0x8048
+ INTENSITY = 0x8049
+ INTENSITY4 = 0x804A
+ INTENSITY8 = 0x804B
+ INTENSITY12 = 0x804C
+ INTENSITY16 = 0x804D
+ RGB4 = 0x804F
+ RGB5 = 0x8050
+ RGB8 = 0x8051
+ RGB10 = 0x8052
+ RGB12 = 0x8053
+ RGB16 = 0x8054
+ RGBA2 = 0x8055
+ RGBA4 = 0x8056
+ RGB5_A1 = 0x8057
+ RGBA8 = 0x8058
+ RGB10_A2 = 0x8059
+ RGBA12 = 0x805A
+ RGBA16 = 0x805B
+ use EXT_texture RGB2_EXT
+ use SGIS_texture_select DUAL_ALPHA4_SGIS
+ use SGIS_texture_select DUAL_ALPHA8_SGIS
+ use SGIS_texture_select DUAL_ALPHA12_SGIS
+ use SGIS_texture_select DUAL_ALPHA16_SGIS
+ use SGIS_texture_select DUAL_LUMINANCE4_SGIS
+ use SGIS_texture_select DUAL_LUMINANCE8_SGIS
+ use SGIS_texture_select DUAL_LUMINANCE12_SGIS
+ use SGIS_texture_select DUAL_LUMINANCE16_SGIS
+ use SGIS_texture_select DUAL_INTENSITY4_SGIS
+ use SGIS_texture_select DUAL_INTENSITY8_SGIS
+ use SGIS_texture_select DUAL_INTENSITY12_SGIS
+ use SGIS_texture_select DUAL_INTENSITY16_SGIS
+ use SGIS_texture_select DUAL_LUMINANCE_ALPHA4_SGIS
+ use SGIS_texture_select DUAL_LUMINANCE_ALPHA8_SGIS
+ use SGIS_texture_select QUAD_ALPHA4_SGIS
+ use SGIS_texture_select QUAD_ALPHA8_SGIS
+ use SGIS_texture_select QUAD_LUMINANCE4_SGIS
+ use SGIS_texture_select QUAD_LUMINANCE8_SGIS
+ use SGIS_texture_select QUAD_INTENSITY4_SGIS
+ use SGIS_texture_select QUAD_INTENSITY8_SGIS
+ use SGIX_depth_texture DEPTH_COMPONENT16_SGIX
+ use SGIX_depth_texture DEPTH_COMPONENT24_SGIX
+ use SGIX_depth_texture DEPTH_COMPONENT32_SGIX
+ use SGIX_icc_texture RGB_ICC_SGIX
+ use SGIX_icc_texture RGBA_ICC_SGIX
+ use SGIX_icc_texture ALPHA_ICC_SGIX
+ use SGIX_icc_texture LUMINANCE_ICC_SGIX
+ use SGIX_icc_texture INTENSITY_ICC_SGIX
+ use SGIX_icc_texture LUMINANCE_ALPHA_ICC_SGIX
+ use SGIX_icc_texture R5_G6_B5_ICC_SGIX
+ use SGIX_icc_texture R5_G6_B5_A8_ICC_SGIX
+ use SGIX_icc_texture ALPHA16_ICC_SGIX
+ use SGIX_icc_texture LUMINANCE16_ICC_SGIX
+ use SGIX_icc_texture INTENSITY16_ICC_SGIX
+ use SGIX_icc_texture LUMINANCE16_ALPHA8_ICC_SGIX
+
+# Aliases PixelInternalFormat enums above
+OES_rgb8_rgba8 enum: (OpenGL ES only)
+ RGB8 = 0x8051
+ RGBA8 = 0x8058
+
+###############################################################################
+
+InterleavedArrayFormat enum:
+ V2F = 0x2A20
+ V3F = 0x2A21
+ C4UB_V2F = 0x2A22
+ C4UB_V3F = 0x2A23
+ C3F_V3F = 0x2A24
+ N3F_V3F = 0x2A25
+ C4F_N3F_V3F = 0x2A26
+ T2F_V3F = 0x2A27
+ T4F_V4F = 0x2A28
+ T2F_C4UB_V3F = 0x2A29
+ T2F_C3F_V3F = 0x2A2A
+ T2F_N3F_V3F = 0x2A2B
+ T2F_C4F_N3F_V3F = 0x2A2C
+ T4F_C4F_N3F_V4F = 0x2A2D
+
+###############################################################################
+
+VertexPointerType enum:
+ use DataType SHORT
+ use DataType INT
+ use DataType FLOAT
+ use DataType DOUBLE
+
+###############################################################################
+
+# 0x3000 through 0x3FFF are reserved for clip planes
+ClipPlaneName enum:
+ CLIP_PLANE0 = 0x3000 # 1 I
+ CLIP_PLANE1 = 0x3001 # 1 I
+ CLIP_PLANE2 = 0x3002 # 1 I
+ CLIP_PLANE3 = 0x3003 # 1 I
+ CLIP_PLANE4 = 0x3004 # 1 I
+ CLIP_PLANE5 = 0x3005 # 1 I
+
+VERSION_3_0 enum: (aliases)
+ CLIP_DISTANCE0 = 0x3000 # VERSION_3_0 # alias GL_CLIP_PLANE0
+ CLIP_DISTANCE1 = 0x3001 # VERSION_3_0 # alias GL_CLIP_PLANE1
+ CLIP_DISTANCE2 = 0x3002 # VERSION_3_0 # alias GL_CLIP_PLANE2
+ CLIP_DISTANCE3 = 0x3003 # VERSION_3_0 # alias GL_CLIP_PLANE3
+ CLIP_DISTANCE4 = 0x3004 # VERSION_3_0 # alias GL_CLIP_PLANE4
+ CLIP_DISTANCE5 = 0x3005 # VERSION_3_0 # alias GL_CLIP_PLANE5
+ CLIP_DISTANCE6 = 0x3006 # VERSION_3_0 # alias GL_CLIP_PLANE5
+ CLIP_DISTANCE7 = 0x3007 # VERSION_3_0 # alias GL_CLIP_PLANE5
+
+###############################################################################
+
+# 0x4000-0x4FFF are reserved for light numbers
+LightName enum:
+ LIGHT0 = 0x4000 # 1 I
+ LIGHT1 = 0x4001 # 1 I
+ LIGHT2 = 0x4002 # 1 I
+ LIGHT3 = 0x4003 # 1 I
+ LIGHT4 = 0x4004 # 1 I
+ LIGHT5 = 0x4005 # 1 I
+ LIGHT6 = 0x4006 # 1 I
+ LIGHT7 = 0x4007 # 1 I
+ use SGIX_fragment_lighting FRAGMENT_LIGHT0_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT1_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT2_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT3_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT4_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT5_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT6_SGIX
+ use SGIX_fragment_lighting FRAGMENT_LIGHT7_SGIX
+
+###############################################################################
+
+EXT_abgr enum:
+ ABGR_EXT = 0x8000
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ CONSTANT_COLOR = 0x8001
+ ONE_MINUS_CONSTANT_COLOR = 0x8002
+ CONSTANT_ALPHA = 0x8003
+ ONE_MINUS_CONSTANT_ALPHA = 0x8004
+ BLEND_COLOR = 0x8005 # 4 F
+
+EXT_blend_color enum:
+ CONSTANT_COLOR_EXT = 0x8001
+ ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002
+ CONSTANT_ALPHA_EXT = 0x8003
+ ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004
+ BLEND_COLOR_EXT = 0x8005 # 4 F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+EXT_blend_minmax enum:
+ FUNC_ADD = 0x8006
+ FUNC_ADD_EXT = 0x8006
+ MIN = 0x8007
+ MIN_EXT = 0x8007
+ MAX = 0x8008
+ MAX_EXT = 0x8008
+ BLEND_EQUATION = 0x8009 # 1 I
+ BLEND_EQUATION_EXT = 0x8009 # 1 I
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+ BLEND_EQUATION_RGB = 0x8009 # VERSION_2_0 # alias GL_BLEND_EQUATION
+
+EXT_blend_equation_separate enum: (separate; see below)
+ BLEND_EQUATION_RGB_EXT = 0x8009 # alias GL_BLEND_EQUATION
+
+# Aliases EXT_blend_equation_separate enum above
+OES_blend_equation_separate enum: (OpenGL ES only; additional; see below)
+ BLEND_EQUATION_RGB_OES = 0x8009 # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+EXT_blend_subtract enum:
+ FUNC_SUBTRACT = 0x800A
+ FUNC_SUBTRACT_EXT = 0x800A
+ FUNC_REVERSE_SUBTRACT = 0x800B
+ FUNC_REVERSE_SUBTRACT_EXT = 0x800B
+
+# Aliases EXT_blend_minmax and EXT_blend_subtract enums above
+OES_blend_subtract enum: (OpenGL ES only)
+ FUNC_ADD_OES = 0x8006
+ BLEND_EQUATION_OES = 0x8009 # 1 I
+ FUNC_SUBTRACT_OES = 0x800A
+ FUNC_REVERSE_SUBTRACT_OES = 0x800B
+
+###############################################################################
+
+EXT_cmyka enum:
+ CMYK_EXT = 0x800C
+ CMYKA_EXT = 0x800D
+ PACK_CMYK_HINT_EXT = 0x800E # 1 I
+ UNPACK_CMYK_HINT_EXT = 0x800F # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ CONVOLUTION_1D = 0x8010 # 1 I
+ CONVOLUTION_2D = 0x8011 # 1 I
+ SEPARABLE_2D = 0x8012 # 1 I
+ CONVOLUTION_BORDER_MODE = 0x8013
+ CONVOLUTION_FILTER_SCALE = 0x8014
+ CONVOLUTION_FILTER_BIAS = 0x8015
+ REDUCE = 0x8016
+ CONVOLUTION_FORMAT = 0x8017
+ CONVOLUTION_WIDTH = 0x8018
+ CONVOLUTION_HEIGHT = 0x8019
+ MAX_CONVOLUTION_WIDTH = 0x801A
+ MAX_CONVOLUTION_HEIGHT = 0x801B
+ POST_CONVOLUTION_RED_SCALE = 0x801C # 1 F
+ POST_CONVOLUTION_GREEN_SCALE = 0x801D # 1 F
+ POST_CONVOLUTION_BLUE_SCALE = 0x801E # 1 F
+ POST_CONVOLUTION_ALPHA_SCALE = 0x801F # 1 F
+ POST_CONVOLUTION_RED_BIAS = 0x8020 # 1 F
+ POST_CONVOLUTION_GREEN_BIAS = 0x8021 # 1 F
+ POST_CONVOLUTION_BLUE_BIAS = 0x8022 # 1 F
+ POST_CONVOLUTION_ALPHA_BIAS = 0x8023 # 1 F
+
+EXT_convolution enum:
+ CONVOLUTION_1D_EXT = 0x8010 # 1 I
+ CONVOLUTION_2D_EXT = 0x8011 # 1 I
+ SEPARABLE_2D_EXT = 0x8012 # 1 I
+ CONVOLUTION_BORDER_MODE_EXT = 0x8013
+ CONVOLUTION_FILTER_SCALE_EXT = 0x8014
+ CONVOLUTION_FILTER_BIAS_EXT = 0x8015
+ REDUCE_EXT = 0x8016
+ CONVOLUTION_FORMAT_EXT = 0x8017
+ CONVOLUTION_WIDTH_EXT = 0x8018
+ CONVOLUTION_HEIGHT_EXT = 0x8019
+ MAX_CONVOLUTION_WIDTH_EXT = 0x801A
+ MAX_CONVOLUTION_HEIGHT_EXT = 0x801B
+ POST_CONVOLUTION_RED_SCALE_EXT = 0x801C # 1 F
+ POST_CONVOLUTION_GREEN_SCALE_EXT = 0x801D # 1 F
+ POST_CONVOLUTION_BLUE_SCALE_EXT = 0x801E # 1 F
+ POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x801F # 1 F
+ POST_CONVOLUTION_RED_BIAS_EXT = 0x8020 # 1 F
+ POST_CONVOLUTION_GREEN_BIAS_EXT = 0x8021 # 1 F
+ POST_CONVOLUTION_BLUE_BIAS_EXT = 0x8022 # 1 F
+ POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x8023 # 1 F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ HISTOGRAM = 0x8024 # 1 I
+ PROXY_HISTOGRAM = 0x8025
+ HISTOGRAM_WIDTH = 0x8026
+ HISTOGRAM_FORMAT = 0x8027
+ HISTOGRAM_RED_SIZE = 0x8028
+ HISTOGRAM_GREEN_SIZE = 0x8029
+ HISTOGRAM_BLUE_SIZE = 0x802A
+ HISTOGRAM_ALPHA_SIZE = 0x802B
+ HISTOGRAM_SINK = 0x802D
+ MINMAX = 0x802E # 1 I
+ MINMAX_FORMAT = 0x802F
+ MINMAX_SINK = 0x8030
+ TABLE_TOO_LARGE = 0x8031
+
+EXT_histogram enum:
+ HISTOGRAM_EXT = 0x8024 # 1 I
+ PROXY_HISTOGRAM_EXT = 0x8025
+ HISTOGRAM_WIDTH_EXT = 0x8026
+ HISTOGRAM_FORMAT_EXT = 0x8027
+ HISTOGRAM_RED_SIZE_EXT = 0x8028
+ HISTOGRAM_GREEN_SIZE_EXT = 0x8029
+ HISTOGRAM_BLUE_SIZE_EXT = 0x802A
+ HISTOGRAM_ALPHA_SIZE_EXT = 0x802B
+ HISTOGRAM_LUMINANCE_SIZE = 0x802C
+ HISTOGRAM_LUMINANCE_SIZE_EXT = 0x802C
+ HISTOGRAM_SINK_EXT = 0x802D
+ MINMAX_EXT = 0x802E # 1 I
+ MINMAX_FORMAT_EXT = 0x802F
+ MINMAX_SINK_EXT = 0x8030
+ TABLE_TOO_LARGE_EXT = 0x8031
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ UNSIGNED_BYTE_3_3_2 = 0x8032
+ UNSIGNED_SHORT_4_4_4_4 = 0x8033
+ UNSIGNED_SHORT_5_5_5_1 = 0x8034
+ UNSIGNED_INT_8_8_8_8 = 0x8035
+ UNSIGNED_INT_10_10_10_2 = 0x8036
+ UNSIGNED_BYTE_2_3_3_REV = 0x8362
+ UNSIGNED_SHORT_5_6_5 = 0x8363
+ UNSIGNED_SHORT_5_6_5_REV = 0x8364
+ UNSIGNED_SHORT_4_4_4_4_REV = 0x8365
+ UNSIGNED_SHORT_1_5_5_5_REV = 0x8366
+ UNSIGNED_INT_8_8_8_8_REV = 0x8367
+ UNSIGNED_INT_2_10_10_10_REV = 0x8368
+
+EXT_packed_pixels enum:
+ UNSIGNED_BYTE_3_3_2_EXT = 0x8032
+ UNSIGNED_SHORT_4_4_4_4_EXT = 0x8033
+ UNSIGNED_SHORT_5_5_5_1_EXT = 0x8034
+ UNSIGNED_INT_8_8_8_8_EXT = 0x8035
+ UNSIGNED_INT_10_10_10_2_EXT = 0x8036
+ UNSIGNED_BYTE_2_3_3_REV_EXT = 0x8362
+ UNSIGNED_SHORT_5_6_5_EXT = 0x8363
+ UNSIGNED_SHORT_5_6_5_REV_EXT = 0x8364
+ UNSIGNED_SHORT_4_4_4_4_REV_EXT = 0x8365
+ UNSIGNED_SHORT_1_5_5_5_REV_EXT = 0x8366
+ UNSIGNED_INT_8_8_8_8_REV_EXT = 0x8367
+ UNSIGNED_INT_2_10_10_10_REV_EXT = 0x8368
+
+EXT_texture_type_2_10_10_10_REV enum: (OpenGL ES only)
+# use EXT_packed_pixels UNSIGNED_INT_2_10_10_10_REV_EXT
+
+###############################################################################
+
+EXT_polygon_offset enum:
+ POLYGON_OFFSET_EXT = 0x8037
+ POLYGON_OFFSET_FACTOR_EXT = 0x8038
+ POLYGON_OFFSET_BIAS_EXT = 0x8039 # 1 F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ RESCALE_NORMAL = 0x803A # 1 I
+
+EXT_rescale_normal enum:
+ RESCALE_NORMAL_EXT = 0x803A # 1 I
+
+###############################################################################
+
+EXT_texture enum:
+ ALPHA4_EXT = 0x803B
+ ALPHA8_EXT = 0x803C
+ ALPHA12_EXT = 0x803D
+ ALPHA16_EXT = 0x803E
+ LUMINANCE4_EXT = 0x803F
+ LUMINANCE8_EXT = 0x8040
+ LUMINANCE12_EXT = 0x8041
+ LUMINANCE16_EXT = 0x8042
+ LUMINANCE4_ALPHA4_EXT = 0x8043
+ LUMINANCE6_ALPHA2_EXT = 0x8044
+ LUMINANCE8_ALPHA8_EXT = 0x8045
+ LUMINANCE12_ALPHA4_EXT = 0x8046
+ LUMINANCE12_ALPHA12_EXT = 0x8047
+ LUMINANCE16_ALPHA16_EXT = 0x8048
+ INTENSITY_EXT = 0x8049
+ INTENSITY4_EXT = 0x804A
+ INTENSITY8_EXT = 0x804B
+ INTENSITY12_EXT = 0x804C
+ INTENSITY16_EXT = 0x804D
+ RGB2_EXT = 0x804E
+ RGB4_EXT = 0x804F
+ RGB5_EXT = 0x8050
+ RGB8_EXT = 0x8051
+ RGB10_EXT = 0x8052
+ RGB12_EXT = 0x8053
+ RGB16_EXT = 0x8054
+ RGBA2_EXT = 0x8055
+ RGBA4_EXT = 0x8056
+ RGB5_A1_EXT = 0x8057
+ RGBA8_EXT = 0x8058
+ RGB10_A2_EXT = 0x8059
+ RGBA12_EXT = 0x805A
+ RGBA16_EXT = 0x805B
+ TEXTURE_RED_SIZE_EXT = 0x805C
+ TEXTURE_GREEN_SIZE_EXT = 0x805D
+ TEXTURE_BLUE_SIZE_EXT = 0x805E
+ TEXTURE_ALPHA_SIZE_EXT = 0x805F
+ TEXTURE_LUMINANCE_SIZE_EXT = 0x8060
+ TEXTURE_INTENSITY_SIZE_EXT = 0x8061
+ REPLACE_EXT = 0x8062
+ PROXY_TEXTURE_1D_EXT = 0x8063
+ PROXY_TEXTURE_2D_EXT = 0x8064
+ TEXTURE_TOO_LARGE_EXT = 0x8065
+
+# Aliases EXT_texture enums above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+ RGBA4_OES = 0x8056
+ RGB5_A1_OES = 0x8057
+
+###############################################################################
+
+EXT_texture_object enum:
+ TEXTURE_PRIORITY_EXT = 0x8066
+ TEXTURE_RESIDENT_EXT = 0x8067
+ TEXTURE_1D_BINDING_EXT = 0x8068
+ TEXTURE_2D_BINDING_EXT = 0x8069
+ TEXTURE_3D_BINDING_EXT = 0x806A # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ PACK_SKIP_IMAGES = 0x806B # 1 I
+ PACK_IMAGE_HEIGHT = 0x806C # 1 F
+ UNPACK_SKIP_IMAGES = 0x806D # 1 I
+ UNPACK_IMAGE_HEIGHT = 0x806E # 1 F
+ TEXTURE_3D = 0x806F # 1 I
+ PROXY_TEXTURE_3D = 0x8070
+ TEXTURE_DEPTH = 0x8071
+ TEXTURE_WRAP_R = 0x8072
+ MAX_3D_TEXTURE_SIZE = 0x8073 # 1 I
+
+EXT_texture3D enum:
+ PACK_SKIP_IMAGES_EXT = 0x806B # 1 I
+ PACK_IMAGE_HEIGHT_EXT = 0x806C # 1 F
+ UNPACK_SKIP_IMAGES_EXT = 0x806D # 1 I
+ UNPACK_IMAGE_HEIGHT_EXT = 0x806E # 1 F
+ TEXTURE_3D_EXT = 0x806F # 1 I
+ PROXY_TEXTURE_3D_EXT = 0x8070
+ TEXTURE_DEPTH_EXT = 0x8071
+ TEXTURE_WRAP_R_EXT = 0x8072
+ MAX_3D_TEXTURE_SIZE_EXT = 0x8073 # 1 I
+
+# Aliases EXT_texture_object, EXT_texture3D enums above
+OES_texture3D enum: (OpenGL ES only)
+ TEXTURE_3D_BINDING_OES = 0x806A # 1 I
+ TEXTURE_3D_OES = 0x806F # 1 I
+ TEXTURE_WRAP_R_OES = 0x8072
+ MAX_3D_TEXTURE_SIZE_OES = 0x8073 # 1 I
+
+###############################################################################
+
+EXT_vertex_array enum:
+ VERTEX_ARRAY_EXT = 0x8074
+ NORMAL_ARRAY_EXT = 0x8075
+ COLOR_ARRAY_EXT = 0x8076
+ INDEX_ARRAY_EXT = 0x8077
+ TEXTURE_COORD_ARRAY_EXT = 0x8078
+ EDGE_FLAG_ARRAY_EXT = 0x8079
+ VERTEX_ARRAY_SIZE_EXT = 0x807A
+ VERTEX_ARRAY_TYPE_EXT = 0x807B
+ VERTEX_ARRAY_STRIDE_EXT = 0x807C
+ VERTEX_ARRAY_COUNT_EXT = 0x807D # 1 I
+ NORMAL_ARRAY_TYPE_EXT = 0x807E
+ NORMAL_ARRAY_STRIDE_EXT = 0x807F
+ NORMAL_ARRAY_COUNT_EXT = 0x8080 # 1 I
+ COLOR_ARRAY_SIZE_EXT = 0x8081
+ COLOR_ARRAY_TYPE_EXT = 0x8082
+ COLOR_ARRAY_STRIDE_EXT = 0x8083
+ COLOR_ARRAY_COUNT_EXT = 0x8084 # 1 I
+ INDEX_ARRAY_TYPE_EXT = 0x8085
+ INDEX_ARRAY_STRIDE_EXT = 0x8086
+ INDEX_ARRAY_COUNT_EXT = 0x8087 # 1 I
+ TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088
+ TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089
+ TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A
+ TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B # 1 I
+ EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C
+ EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D # 1 I
+ VERTEX_ARRAY_POINTER_EXT = 0x808E
+ NORMAL_ARRAY_POINTER_EXT = 0x808F
+ COLOR_ARRAY_POINTER_EXT = 0x8090
+ INDEX_ARRAY_POINTER_EXT = 0x8091
+ TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092
+ EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093
+
+###############################################################################
+
+SGIX_interlace enum:
+ INTERLACE_SGIX = 0x8094 # 1 I
+
+###############################################################################
+
+SGIS_detail_texture enum:
+ DETAIL_TEXTURE_2D_SGIS = 0x8095
+ DETAIL_TEXTURE_2D_BINDING_SGIS = 0x8096 # 1 I
+ LINEAR_DETAIL_SGIS = 0x8097
+ LINEAR_DETAIL_ALPHA_SGIS = 0x8098
+ LINEAR_DETAIL_COLOR_SGIS = 0x8099
+ DETAIL_TEXTURE_LEVEL_SGIS = 0x809A
+ DETAIL_TEXTURE_MODE_SGIS = 0x809B
+ DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x809C
+
+###############################################################################
+
+# Reuses some SGIS_multisample values
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ MULTISAMPLE = 0x809D
+ SAMPLE_ALPHA_TO_COVERAGE = 0x809E
+ SAMPLE_ALPHA_TO_ONE = 0x809F
+ SAMPLE_COVERAGE = 0x80A0
+ SAMPLE_BUFFERS = 0x80A8 # 1 I
+ SAMPLES = 0x80A9 # 1 I
+ SAMPLE_COVERAGE_VALUE = 0x80AA # 1 F
+ SAMPLE_COVERAGE_INVERT = 0x80AB # 1 I
+
+ARB_multisample enum:
+ MULTISAMPLE_ARB = 0x809D
+ SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x809E
+ SAMPLE_ALPHA_TO_ONE_ARB = 0x809F
+ SAMPLE_COVERAGE_ARB = 0x80A0
+ SAMPLE_BUFFERS_ARB = 0x80A8 # 1 I
+ SAMPLES_ARB = 0x80A9 # 1 I
+ SAMPLE_COVERAGE_VALUE_ARB = 0x80AA # 1 F
+ SAMPLE_COVERAGE_INVERT_ARB = 0x80AB # 1 I
+
+SGIS_multisample enum:
+ MULTISAMPLE_SGIS = 0x809D # 1 I
+ SAMPLE_ALPHA_TO_MASK_SGIS = 0x809E # 1 I
+ SAMPLE_ALPHA_TO_ONE_SGIS = 0x809F # 1 I
+ SAMPLE_MASK_SGIS = 0x80A0 # 1 I
+ 1PASS_SGIS = 0x80A1
+ 2PASS_0_SGIS = 0x80A2
+ 2PASS_1_SGIS = 0x80A3
+ 4PASS_0_SGIS = 0x80A4
+ 4PASS_1_SGIS = 0x80A5
+ 4PASS_2_SGIS = 0x80A6
+ 4PASS_3_SGIS = 0x80A7
+ SAMPLE_BUFFERS_SGIS = 0x80A8 # 1 I
+ SAMPLES_SGIS = 0x80A9 # 1 I
+ SAMPLE_MASK_VALUE_SGIS = 0x80AA # 1 F
+ SAMPLE_MASK_INVERT_SGIS = 0x80AB # 1 I
+ SAMPLE_PATTERN_SGIS = 0x80AC # 1 I
+
+# Reuses SGIS_multisample values.
+EXT_multisample enum:
+ MULTISAMPLE_EXT = 0x809D
+ SAMPLE_ALPHA_TO_MASK_EXT = 0x809E
+ SAMPLE_ALPHA_TO_ONE_EXT = 0x809F
+ SAMPLE_MASK_EXT = 0x80A0
+ 1PASS_EXT = 0x80A1
+ 2PASS_0_EXT = 0x80A2
+ 2PASS_1_EXT = 0x80A3
+ 4PASS_0_EXT = 0x80A4
+ 4PASS_1_EXT = 0x80A5
+ 4PASS_2_EXT = 0x80A6
+ 4PASS_3_EXT = 0x80A7
+ SAMPLE_BUFFERS_EXT = 0x80A8 # 1 I
+ SAMPLES_EXT = 0x80A9 # 1 I
+ SAMPLE_MASK_VALUE_EXT = 0x80AA # 1 F
+ SAMPLE_MASK_INVERT_EXT = 0x80AB # 1 I
+ SAMPLE_PATTERN_EXT = 0x80AC # 1 I
+ MULTISAMPLE_BIT_EXT = 0x20000000
+
+###############################################################################
+
+SGIS_sharpen_texture enum:
+ LINEAR_SHARPEN_SGIS = 0x80AD
+ LINEAR_SHARPEN_ALPHA_SGIS = 0x80AE
+ LINEAR_SHARPEN_COLOR_SGIS = 0x80AF
+ SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x80B0
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ COLOR_MATRIX = 0x80B1 # 16 F
+ COLOR_MATRIX_STACK_DEPTH = 0x80B2 # 1 I
+ MAX_COLOR_MATRIX_STACK_DEPTH = 0x80B3 # 1 I
+ POST_COLOR_MATRIX_RED_SCALE = 0x80B4 # 1 F
+ POST_COLOR_MATRIX_GREEN_SCALE = 0x80B5 # 1 F
+ POST_COLOR_MATRIX_BLUE_SCALE = 0x80B6 # 1 F
+ POST_COLOR_MATRIX_ALPHA_SCALE = 0x80B7 # 1 F
+ POST_COLOR_MATRIX_RED_BIAS = 0x80B8 # 1 F
+ POST_COLOR_MATRIX_GREEN_BIAS = 0x80B9 # 1 F
+ POST_COLOR_MATRIX_BLUE_BIAS = 0x80BA # 1 F
+ POST_COLOR_MATRIX_ALPHA_BIAS = 0x80BB # 1 F
+
+SGI_color_matrix enum:
+ COLOR_MATRIX_SGI = 0x80B1 # 16 F
+ COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B2 # 1 I
+ MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B3 # 1 I
+ POST_COLOR_MATRIX_RED_SCALE_SGI = 0x80B4 # 1 F
+ POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x80B5 # 1 F
+ POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x80B6 # 1 F
+ POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x80B7 # 1 F
+ POST_COLOR_MATRIX_RED_BIAS_SGI = 0x80B8 # 1 F
+ POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x80B9 # 1 F
+ POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x80BA # 1 F
+ POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x80BB # 1 F
+
+###############################################################################
+
+SGI_texture_color_table enum:
+ TEXTURE_COLOR_TABLE_SGI = 0x80BC # 1 I
+ PROXY_TEXTURE_COLOR_TABLE_SGI = 0x80BD
+
+###############################################################################
+
+SGIX_texture_add_env enum:
+ TEXTURE_ENV_BIAS_SGIX = 0x80BE
+
+###############################################################################
+
+SGIX_shadow_ambient enum:
+ SHADOW_AMBIENT_SGIX = 0x80BF
+
+###############################################################################
+
+# Intergraph/Intense3D/3Dlabs: 0x80C0-0x80CF
+
+# 3Dlabs_future_use: 0x80C0-0x80C7
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ BLEND_DST_RGB = 0x80C8
+ BLEND_SRC_RGB = 0x80C9
+ BLEND_DST_ALPHA = 0x80CA
+ BLEND_SRC_ALPHA = 0x80CB
+
+EXT_blend_func_separate enum:
+ BLEND_DST_RGB_EXT = 0x80C8
+ BLEND_SRC_RGB_EXT = 0x80C9
+ BLEND_DST_ALPHA_EXT = 0x80CA
+ BLEND_SRC_ALPHA_EXT = 0x80CB
+
+# Aliases EXT_blend_func_separate enums above
+OES_blend_func_separate enum: (OpenGL ES only)
+ BLEND_DST_RGB_OES = 0x80C8
+ BLEND_SRC_RGB_OES = 0x80C9
+ BLEND_DST_ALPHA_OES = 0x80CA
+ BLEND_SRC_ALPHA_OES = 0x80CB
+
+EXT_422_pixels enum:
+ 422_EXT = 0x80CC
+ 422_REV_EXT = 0x80CD
+ 422_AVERAGE_EXT = 0x80CE
+ 422_REV_AVERAGE_EXT = 0x80CF
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ COLOR_TABLE = 0x80D0 # 1 I
+ POST_CONVOLUTION_COLOR_TABLE = 0x80D1 # 1 I
+ POST_COLOR_MATRIX_COLOR_TABLE = 0x80D2 # 1 I
+ PROXY_COLOR_TABLE = 0x80D3
+ PROXY_POST_CONVOLUTION_COLOR_TABLE = 0x80D4
+ PROXY_POST_COLOR_MATRIX_COLOR_TABLE = 0x80D5
+ COLOR_TABLE_SCALE = 0x80D6
+ COLOR_TABLE_BIAS = 0x80D7
+ COLOR_TABLE_FORMAT = 0x80D8
+ COLOR_TABLE_WIDTH = 0x80D9
+ COLOR_TABLE_RED_SIZE = 0x80DA
+ COLOR_TABLE_GREEN_SIZE = 0x80DB
+ COLOR_TABLE_BLUE_SIZE = 0x80DC
+ COLOR_TABLE_ALPHA_SIZE = 0x80DD
+ COLOR_TABLE_LUMINANCE_SIZE = 0x80DE
+ COLOR_TABLE_INTENSITY_SIZE = 0x80DF
+
+SGI_color_table enum:
+ COLOR_TABLE_SGI = 0x80D0 # 1 I
+ POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D1 # 1 I
+ POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D2 # 1 I
+ PROXY_COLOR_TABLE_SGI = 0x80D3
+ PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D4
+ PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D5
+ COLOR_TABLE_SCALE_SGI = 0x80D6
+ COLOR_TABLE_BIAS_SGI = 0x80D7
+ COLOR_TABLE_FORMAT_SGI = 0x80D8
+ COLOR_TABLE_WIDTH_SGI = 0x80D9
+ COLOR_TABLE_RED_SIZE_SGI = 0x80DA
+ COLOR_TABLE_GREEN_SIZE_SGI = 0x80DB
+ COLOR_TABLE_BLUE_SIZE_SGI = 0x80DC
+ COLOR_TABLE_ALPHA_SIZE_SGI = 0x80DD
+ COLOR_TABLE_LUMINANCE_SIZE_SGI = 0x80DE
+ COLOR_TABLE_INTENSITY_SIZE_SGI = 0x80DF
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ BGR = 0x80E0
+ BGRA = 0x80E1
+
+ARB_vertex_array_bgra enum:
+# use VERSION_1_2 BGRA
+
+EXT_bgra enum:
+ BGR_EXT = 0x80E0
+ BGRA_EXT = 0x80E1
+
+###############################################################################
+
+# Microsoft: 0x80E2-0x80E7
+
+###############################################################################
+
+VERSION_1_2 enum:
+ MAX_ELEMENTS_VERTICES = 0x80E8
+ MAX_ELEMENTS_INDICES = 0x80E9
+
+###############################################################################
+
+# Microsoft: 0x80EA-0x810F
+
+###############################################################################
+
+SGIS_texture_select enum:
+ DUAL_ALPHA4_SGIS = 0x8110
+ DUAL_ALPHA8_SGIS = 0x8111
+ DUAL_ALPHA12_SGIS = 0x8112
+ DUAL_ALPHA16_SGIS = 0x8113
+ DUAL_LUMINANCE4_SGIS = 0x8114
+ DUAL_LUMINANCE8_SGIS = 0x8115
+ DUAL_LUMINANCE12_SGIS = 0x8116
+ DUAL_LUMINANCE16_SGIS = 0x8117
+ DUAL_INTENSITY4_SGIS = 0x8118
+ DUAL_INTENSITY8_SGIS = 0x8119
+ DUAL_INTENSITY12_SGIS = 0x811A
+ DUAL_INTENSITY16_SGIS = 0x811B
+ DUAL_LUMINANCE_ALPHA4_SGIS = 0x811C
+ DUAL_LUMINANCE_ALPHA8_SGIS = 0x811D
+ QUAD_ALPHA4_SGIS = 0x811E
+ QUAD_ALPHA8_SGIS = 0x811F
+ QUAD_LUMINANCE4_SGIS = 0x8120
+ QUAD_LUMINANCE8_SGIS = 0x8121
+ QUAD_INTENSITY4_SGIS = 0x8122
+ QUAD_INTENSITY8_SGIS = 0x8123
+ DUAL_TEXTURE_SELECT_SGIS = 0x8124
+ QUAD_TEXTURE_SELECT_SGIS = 0x8125
+
+###############################################################################
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ POINT_SIZE_MIN = 0x8126 # 1 F
+ POINT_SIZE_MAX = 0x8127 # 1 F
+ POINT_FADE_THRESHOLD_SIZE = 0x8128 # 1 F
+ POINT_DISTANCE_ATTENUATION = 0x8129 # 3 F
+
+ARB_point_parameters enum:
+ POINT_SIZE_MIN_ARB = 0x8126 # 1 F
+ POINT_SIZE_MAX_ARB = 0x8127 # 1 F
+ POINT_FADE_THRESHOLD_SIZE_ARB = 0x8128 # 1 F
+ POINT_DISTANCE_ATTENUATION_ARB = 0x8129 # 3 F
+
+EXT_point_parameters enum:
+ POINT_SIZE_MIN_EXT = 0x8126 # 1 F
+ POINT_SIZE_MAX_EXT = 0x8127 # 1 F
+ POINT_FADE_THRESHOLD_SIZE_EXT = 0x8128 # 1 F
+ DISTANCE_ATTENUATION_EXT = 0x8129 # 3 F
+
+SGIS_point_parameters enum:
+ POINT_SIZE_MIN_SGIS = 0x8126 # 1 F
+ POINT_SIZE_MAX_SGIS = 0x8127 # 1 F
+ POINT_FADE_THRESHOLD_SIZE_SGIS = 0x8128 # 1 F
+ DISTANCE_ATTENUATION_SGIS = 0x8129 # 3 F
+
+###############################################################################
+
+SGIS_fog_function enum:
+ FOG_FUNC_SGIS = 0x812A
+ FOG_FUNC_POINTS_SGIS = 0x812B # 1 I
+ MAX_FOG_FUNC_POINTS_SGIS = 0x812C # 1 I
+
+###############################################################################
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ CLAMP_TO_BORDER = 0x812D
+
+ARB_texture_border_clamp enum:
+ CLAMP_TO_BORDER_ARB = 0x812D
+
+SGIS_texture_border_clamp enum:
+ CLAMP_TO_BORDER_SGIS = 0x812D
+
+###############################################################################
+
+SGIX_texture_multi_buffer enum:
+ TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x812E
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ CLAMP_TO_EDGE = 0x812F
+
+SGIS_texture_edge_clamp enum:
+ CLAMP_TO_EDGE_SGIS = 0x812F
+
+###############################################################################
+
+SGIS_texture4D enum:
+ PACK_SKIP_VOLUMES_SGIS = 0x8130 # 1 I
+ PACK_IMAGE_DEPTH_SGIS = 0x8131 # 1 I
+ UNPACK_SKIP_VOLUMES_SGIS = 0x8132 # 1 I
+ UNPACK_IMAGE_DEPTH_SGIS = 0x8133 # 1 I
+ TEXTURE_4D_SGIS = 0x8134 # 1 I
+ PROXY_TEXTURE_4D_SGIS = 0x8135
+ TEXTURE_4DSIZE_SGIS = 0x8136
+ TEXTURE_WRAP_Q_SGIS = 0x8137
+ MAX_4D_TEXTURE_SIZE_SGIS = 0x8138 # 1 I
+ TEXTURE_4D_BINDING_SGIS = 0x814F # 1 I
+
+###############################################################################
+
+SGIX_pixel_texture enum:
+ PIXEL_TEX_GEN_SGIX = 0x8139 # 1 I
+ PIXEL_TEX_GEN_MODE_SGIX = 0x832B # 1 I
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ TEXTURE_MIN_LOD = 0x813A
+ TEXTURE_MAX_LOD = 0x813B
+ TEXTURE_BASE_LEVEL = 0x813C
+ TEXTURE_MAX_LEVEL = 0x813D
+
+SGIS_texture_lod enum:
+ TEXTURE_MIN_LOD_SGIS = 0x813A
+ TEXTURE_MAX_LOD_SGIS = 0x813B
+ TEXTURE_BASE_LEVEL_SGIS = 0x813C
+ TEXTURE_MAX_LEVEL_SGIS = 0x813D
+
+###############################################################################
+
+SGIX_pixel_tiles enum:
+ PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x813E # 1 I
+ PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x813F # 1 I
+ PIXEL_TILE_WIDTH_SGIX = 0x8140 # 1 I
+ PIXEL_TILE_HEIGHT_SGIX = 0x8141 # 1 I
+ PIXEL_TILE_GRID_WIDTH_SGIX = 0x8142 # 1 I
+ PIXEL_TILE_GRID_HEIGHT_SGIX = 0x8143 # 1 I
+ PIXEL_TILE_GRID_DEPTH_SGIX = 0x8144 # 1 I
+ PIXEL_TILE_CACHE_SIZE_SGIX = 0x8145 # 1 I
+
+###############################################################################
+
+SGIS_texture_filter4 enum:
+ FILTER4_SGIS = 0x8146
+ TEXTURE_FILTER4_SIZE_SGIS = 0x8147
+
+###############################################################################
+
+SGIX_sprite enum:
+ SPRITE_SGIX = 0x8148 # 1 I
+ SPRITE_MODE_SGIX = 0x8149 # 1 I
+ SPRITE_AXIS_SGIX = 0x814A # 3 F
+ SPRITE_TRANSLATION_SGIX = 0x814B # 3 F
+ SPRITE_AXIAL_SGIX = 0x814C
+ SPRITE_OBJECT_ALIGNED_SGIX = 0x814D
+ SPRITE_EYE_ALIGNED_SGIX = 0x814E
+
+###############################################################################
+
+# SGIS_texture4D (additional; see above): 0x814F
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ CONSTANT_BORDER = 0x8151
+# WRAP_BORDER = 0x8152 # Not actually used
+ REPLICATE_BORDER = 0x8153
+ CONVOLUTION_BORDER_COLOR = 0x8154
+
+HP_convolution_border_modes enum:
+ IGNORE_BORDER_HP = 0x8150 # Not promoted
+ CONSTANT_BORDER_HP = 0x8151
+ REPLICATE_BORDER_HP = 0x8153
+ CONVOLUTION_BORDER_COLOR_HP = 0x8154
+
+###############################################################################
+
+# HP: 0x8155-0x816F
+
+###############################################################################
+
+SGIX_clipmap enum:
+ LINEAR_CLIPMAP_LINEAR_SGIX = 0x8170
+ TEXTURE_CLIPMAP_CENTER_SGIX = 0x8171
+ TEXTURE_CLIPMAP_FRAME_SGIX = 0x8172
+ TEXTURE_CLIPMAP_OFFSET_SGIX = 0x8173
+ TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8174
+ TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x8175
+ TEXTURE_CLIPMAP_DEPTH_SGIX = 0x8176
+ MAX_CLIPMAP_DEPTH_SGIX = 0x8177 # 1 I
+ MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8178 # 1 I
+ NEAREST_CLIPMAP_NEAREST_SGIX = 0x844D
+ NEAREST_CLIPMAP_LINEAR_SGIX = 0x844E
+ LINEAR_CLIPMAP_NEAREST_SGIX = 0x844F
+
+###############################################################################
+
+SGIX_texture_scale_bias enum:
+ POST_TEXTURE_FILTER_BIAS_SGIX = 0x8179
+ POST_TEXTURE_FILTER_SCALE_SGIX = 0x817A
+ POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x817B # 2 F
+ POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x817C # 2 F
+
+###############################################################################
+
+SGIX_reference_plane enum:
+ REFERENCE_PLANE_SGIX = 0x817D # 1 I
+ REFERENCE_PLANE_EQUATION_SGIX = 0x817E # 4 F
+
+###############################################################################
+
+SGIX_ir_instrument1 enum:
+ IR_INSTRUMENT1_SGIX = 0x817F # 1 I
+
+###############################################################################
+
+SGIX_instruments enum:
+ INSTRUMENT_BUFFER_POINTER_SGIX = 0x8180
+ INSTRUMENT_MEASUREMENTS_SGIX = 0x8181 # 1 I
+
+###############################################################################
+
+SGIX_list_priority enum:
+ LIST_PRIORITY_SGIX = 0x8182
+
+###############################################################################
+
+SGIX_calligraphic_fragment enum:
+ CALLIGRAPHIC_FRAGMENT_SGIX = 0x8183 # 1 I
+
+###############################################################################
+
+SGIX_impact_pixel_texture enum:
+ PIXEL_TEX_GEN_Q_CEILING_SGIX = 0x8184
+ PIXEL_TEX_GEN_Q_ROUND_SGIX = 0x8185
+ PIXEL_TEX_GEN_Q_FLOOR_SGIX = 0x8186
+ PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX = 0x8187
+ PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX = 0x8188
+ PIXEL_TEX_GEN_ALPHA_LS_SGIX = 0x8189
+ PIXEL_TEX_GEN_ALPHA_MS_SGIX = 0x818A
+
+###############################################################################
+
+SGIX_framezoom enum:
+ FRAMEZOOM_SGIX = 0x818B # 1 I
+ FRAMEZOOM_FACTOR_SGIX = 0x818C # 1 I
+ MAX_FRAMEZOOM_FACTOR_SGIX = 0x818D # 1 I
+
+###############################################################################
+
+SGIX_texture_lod_bias enum:
+ TEXTURE_LOD_BIAS_S_SGIX = 0x818E
+ TEXTURE_LOD_BIAS_T_SGIX = 0x818F
+ TEXTURE_LOD_BIAS_R_SGIX = 0x8190
+
+###############################################################################
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ GENERATE_MIPMAP = 0x8191
+ GENERATE_MIPMAP_HINT = 0x8192 # 1 I
+
+SGIS_generate_mipmap enum:
+ GENERATE_MIPMAP_SGIS = 0x8191
+ GENERATE_MIPMAP_HINT_SGIS = 0x8192 # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_spotlight_cutoff: 0x8193
+# SPOT_CUTOFF_DELTA_SGIX = 0x8193
+
+###############################################################################
+
+SGIX_polynomial_ffd enum:
+ GEOMETRY_DEFORMATION_SGIX = 0x8194
+ TEXTURE_DEFORMATION_SGIX = 0x8195
+ DEFORMATIONS_MASK_SGIX = 0x8196 # 1 I
+ MAX_DEFORMATION_ORDER_SGIX = 0x8197
+
+###############################################################################
+
+SGIX_fog_offset enum:
+ FOG_OFFSET_SGIX = 0x8198 # 1 I
+ FOG_OFFSET_VALUE_SGIX = 0x8199 # 4 F
+
+###############################################################################
+
+SGIX_shadow enum:
+ TEXTURE_COMPARE_SGIX = 0x819A
+ TEXTURE_COMPARE_OPERATOR_SGIX = 0x819B
+ TEXTURE_LEQUAL_R_SGIX = 0x819C
+ TEXTURE_GEQUAL_R_SGIX = 0x819D
+
+###############################################################################
+
+# SGI private extension, not in enumext.spec
+# SGIX_igloo_interface: 0x819E-0x81A4
+# IGLOO_FULLSCREEN_SGIX = 0x819E
+# IGLOO_VIEWPORT_OFFSET_SGIX = 0x819F
+# IGLOO_SWAPTMESH_SGIX = 0x81A0
+# IGLOO_COLORNORMAL_SGIX = 0x81A1
+# IGLOO_IRISGL_MODE_SGIX = 0x81A2
+# IGLOO_LMC_COLOR_SGIX = 0x81A3
+# IGLOO_TMESHMODE_SGIX = 0x81A4
+
+###############################################################################
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ DEPTH_COMPONENT16 = 0x81A5
+ DEPTH_COMPONENT24 = 0x81A6
+ DEPTH_COMPONENT32 = 0x81A7
+
+ARB_depth_texture enum:
+ DEPTH_COMPONENT16_ARB = 0x81A5
+ DEPTH_COMPONENT24_ARB = 0x81A6
+ DEPTH_COMPONENT32_ARB = 0x81A7
+
+SGIX_depth_texture enum:
+ DEPTH_COMPONENT16_SGIX = 0x81A5
+ DEPTH_COMPONENT24_SGIX = 0x81A6
+ DEPTH_COMPONENT32_SGIX = 0x81A7
+
+# Aliases ARB_depth_texture enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+ DEPTH_COMPONENT16_OES = 0x81A5
+
+# Aliases ARB_depth_texture enum above
+OES_depth24 enum: (OpenGL ES only)
+ DEPTH_COMPONENT24_OES = 0x81A6
+
+# Aliases ARB_depth_texture enum above
+OES_depth32 enum: (OpenGL ES only)
+ DEPTH_COMPONENT32_OES = 0x81A7
+
+###############################################################################
+
+EXT_compiled_vertex_array enum:
+ ARRAY_ELEMENT_LOCK_FIRST_EXT = 0x81A8
+ ARRAY_ELEMENT_LOCK_COUNT_EXT = 0x81A9
+
+###############################################################################
+
+EXT_cull_vertex enum:
+ CULL_VERTEX_EXT = 0x81AA
+ CULL_VERTEX_EYE_POSITION_EXT = 0x81AB
+ CULL_VERTEX_OBJECT_POSITION_EXT = 0x81AC
+
+###############################################################################
+
+# Promoted from SGI?
+EXT_index_array_formats enum:
+ IUI_V2F_EXT = 0x81AD
+ IUI_V3F_EXT = 0x81AE
+ IUI_N3F_V2F_EXT = 0x81AF
+ IUI_N3F_V3F_EXT = 0x81B0
+ T2F_IUI_V2F_EXT = 0x81B1
+ T2F_IUI_V3F_EXT = 0x81B2
+ T2F_IUI_N3F_V2F_EXT = 0x81B3
+ T2F_IUI_N3F_V3F_EXT = 0x81B4
+
+###############################################################################
+
+# Promoted from SGI?
+EXT_index_func enum:
+ INDEX_TEST_EXT = 0x81B5
+ INDEX_TEST_FUNC_EXT = 0x81B6
+ INDEX_TEST_REF_EXT = 0x81B7
+
+###############################################################################
+
+# Promoted from SGI?
+EXT_index_material enum:
+ INDEX_MATERIAL_EXT = 0x81B8
+ INDEX_MATERIAL_PARAMETER_EXT = 0x81B9
+ INDEX_MATERIAL_FACE_EXT = 0x81BA
+
+###############################################################################
+
+SGIX_ycrcb enum:
+ YCRCB_422_SGIX = 0x81BB
+ YCRCB_444_SGIX = 0x81BC
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGI_complex_type: 0x81BD-0x81C3
+# COMPLEX_UNSIGNED_BYTE_SGI = 0x81BD
+# COMPLEX_BYTE_SGI = 0x81BE
+# COMPLEX_UNSIGNED_SHORT_SGI = 0x81BF
+# COMPLEX_SHORT_SGI = 0x81C0
+# COMPLEX_UNSIGNED_INT_SGI = 0x81C1
+# COMPLEX_INT_SGI = 0x81C2
+# COMPLEX_FLOAT_SGI = 0x81C3
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGI_fft: 0x81C4-0x81CA
+# POST_TRANSFORM_RED_SCALE_SGI = ???? # 1 F
+# POST_TRANSFORM_GREEN_SCALE_SGI = ???? # 1 F
+# POST_TRANSFORM_BLUE_SCALE_SGI = ???? # 1 F
+# POST_TRANSFORM_ALPHA_SCALE_SGI = ???? # 1 F
+# POST_TRANSFORM_RED_BIAS_SGI = ???? # 1 F
+# POST_TRANSFORM_GREEN_BIAS_SGI = ???? # 1 F
+# POST_TRANSFORM_BLUE_BIAS_SGI = ???? # 1 F
+# POST_TRANSFORM_ALPHA_BIAS_SGI = ???? # 1 F
+# PIXEL_TRANSFORM_OPERATOR_SGI = 0x81C4 # 1 I
+# CONVOLUTION_SGI = 0x81C5
+# FFT_1D_SGI = 0x81C6
+# PIXEL_TRANSFORM_SGI = 0x81C7
+# MAX_FFT_WIDTH_SGI = 0x81C8
+# SORT_SGI = 0x81C9
+# TRANSPOSE_SGI = 0x81CA
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_nurbs_eval: 0x81CB-0x81CF
+# MAP1_VERTEX_3_NURBS_SGIX = 0x81CB # 1 I
+# MAP1_VERTEX_4_NURBS_SGIX = 0x81CC # 1 I
+# MAP1_INDEX_NURBS_SGIX = 0x81CD # 1 I
+# MAP1_COLOR_4_NURBS_SGIX = 0x81CE # 1 I
+# MAP1_NORMAL_NURBS_SGIX = 0x81CF # 1 I
+# MAP1_TEXTURE_COORD_1_NURBS_SGIX = 0x81E0 # 1 I
+# MAP1_TEXTURE_COORD_2_NURBS_SGIX = 0x81E1 # 1 I
+# MAP1_TEXTURE_COORD_3_NURBS_SGIX = 0x81E2 # 1 I
+# MAP1_TEXTURE_COORD_4_NURBS_SGIX = 0x81E3 # 1 I
+# MAP2_VERTEX_3_NURBS_SGIX = 0x81E4 # 1 I
+# MAP2_VERTEX_4_NURBS_SGIX = 0x81E5 # 1 I
+# MAP2_INDEX_NURBS_SGIX = 0x81E6 # 1 I
+# MAP2_COLOR_4_NURBS_SGIX = 0x81E7 # 1 I
+# MAP2_NORMAL_NURBS_SGIX = 0x81E8 # 1 I
+# MAP2_TEXTURE_COORD_1_NURBS_SGIX = 0x81E9 # 1 I
+# MAP2_TEXTURE_COORD_2_NURBS_SGIX = 0x81EA # 1 I
+# MAP2_TEXTURE_COORD_3_NURBS_SGIX = 0x81EB # 1 I
+# MAP2_TEXTURE_COORD_4_NURBS_SGIX = 0x81EC # 1 I
+# NURBS_KNOT_COUNT_SGIX = 0x81ED
+# NURBS_KNOT_VECTOR_SGIX = 0x81EE
+
+###############################################################################
+
+# Sun: 0x81D0-0x81DF
+
+# No extension spec, not in enumext.spec
+# SUNX_surface_hint enum:
+# SURFACE_SIZE_HINT_SUNX = 0x81D2
+# LARGE_SUNX = 0x81D3
+
+SUNX_general_triangle_list enum:
+ RESTART_SUN = 0x0001
+ REPLACE_MIDDLE_SUN = 0x0002
+ REPLACE_OLDEST_SUN = 0x0003
+ WRAP_BORDER_SUN = 0x81D4
+ TRIANGLE_LIST_SUN = 0x81D7
+ REPLACEMENT_CODE_SUN = 0x81D8
+
+SUNX_constant_data enum:
+ UNPACK_CONSTANT_DATA_SUNX = 0x81D5
+ TEXTURE_CONSTANT_DATA_SUNX = 0x81D6
+
+SUN_global_alpha enum:
+ GLOBAL_ALPHA_SUN = 0x81D9
+ GLOBAL_ALPHA_FACTOR_SUN = 0x81DA
+
+###############################################################################
+
+# SGIX_nurbs_eval (additional; see above): 0x81E0-0x81EE
+
+###############################################################################
+
+SGIS_texture_color_mask enum:
+ TEXTURE_COLOR_WRITEMASK_SGIS = 0x81EF
+
+###############################################################################
+
+SGIS_point_line_texgen enum:
+ EYE_DISTANCE_TO_POINT_SGIS = 0x81F0
+ OBJECT_DISTANCE_TO_POINT_SGIS = 0x81F1
+ EYE_DISTANCE_TO_LINE_SGIS = 0x81F2
+ OBJECT_DISTANCE_TO_LINE_SGIS = 0x81F3
+ EYE_POINT_SGIS = 0x81F4
+ OBJECT_POINT_SGIS = 0x81F5
+ EYE_LINE_SGIS = 0x81F6
+ OBJECT_LINE_SGIS = 0x81F7
+
+###############################################################################
+
+VERSION_1_2 enum: (Promoted for OpenGL 1.2)
+ LIGHT_MODEL_COLOR_CONTROL = 0x81F8 # 1 I
+ SINGLE_COLOR = 0x81F9
+ SEPARATE_SPECULAR_COLOR = 0x81FA
+
+EXT_separate_specular_color enum:
+ LIGHT_MODEL_COLOR_CONTROL_EXT = 0x81F8
+ SINGLE_COLOR_EXT = 0x81F9
+ SEPARATE_SPECULAR_COLOR_EXT = 0x81FA
+
+###############################################################################
+
+EXT_shared_texture_palette enum:
+ SHARED_TEXTURE_PALETTE_EXT = 0x81FB # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_scale: 0x81FC-0x81FD
+# FOG_SCALE_SGIX = 0x81FC # 1 I
+# FOG_SCALE_VALUE_SGIX = 0x81FD # 1 F
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_blend: 0x81FE-0x81FF
+# FOG_BLEND_ALPHA_SGIX = 0x81FE # 1 I
+# FOG_BLEND_COLOR_SGIX = 0x81FF # 1 I
+
+###############################################################################
+
+# ATI: 0x8200-0x820F (released by Microsoft 2002/9/16)
+ATI_text_fragment_shader enum:
+ TEXT_FRAGMENT_SHADER_ATI = 0x8200
+
+###############################################################################
+
+# OpenGL ARB: 0x8210-0x823F
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_RED_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_DEFAULT
+ use ARB_framebuffer_object FRAMEBUFFER_UNDEFINED
+ use ARB_framebuffer_object DEPTH_STENCIL_ATTACHMENT
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_DEFAULT = 0x8218 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_UNDEFINED = 0x8219 # VERSION_3_0 / ARB_fbo
+ DEPTH_STENCIL_ATTACHMENT = 0x821A # VERSION_3_0 / ARB_fbo
+
+VERSION_3_0 enum:
+ MAJOR_VERSION = 0x821B # VERSION_3_0
+ MINOR_VERSION = 0x821C # VERSION_3_0
+ NUM_EXTENSIONS = 0x821D # VERSION_3_0
+ CONTEXT_FLAGS = 0x821E # VERSION_3_0
+
+# ARB_future_use: 0x821F-0x8221
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object INDEX
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ INDEX = 0x8222 # VERSION_3_0 / ARB_fbo
+
+VERSION_3_0 enum:
+ DEPTH_BUFFER = 0x8223 # VERSION_3_0
+ STENCIL_BUFFER = 0x8224 # VERSION_3_0
+ COMPRESSED_RED = 0x8225 # VERSION_3_0
+ COMPRESSED_RG = 0x8226 # VERSION_3_0
+
+VERSION_3_0 enum:
+ use ARB_texture_rg RG
+ use ARB_texture_rg RG_INTEGER
+ use ARB_texture_rg R8
+ use ARB_texture_rg R16
+ use ARB_texture_rg RG8
+ use ARB_texture_rg RG16
+ use ARB_texture_rg R16F
+ use ARB_texture_rg R32F
+ use ARB_texture_rg RG16F
+ use ARB_texture_rg RG32F
+ use ARB_texture_rg R8I
+ use ARB_texture_rg R8UI
+ use ARB_texture_rg R16I
+ use ARB_texture_rg R16UI
+ use ARB_texture_rg R32I
+ use ARB_texture_rg R32UI
+ use ARB_texture_rg RG8I
+ use ARB_texture_rg RG8UI
+ use ARB_texture_rg RG16I
+ use ARB_texture_rg RG16UI
+ use ARB_texture_rg RG32I
+ use ARB_texture_rg RG32UI
+
+ARB_texture_rg enum: (note: no ARB suffixes)
+ RG = 0x8227 # VERSION_3_0 / ARB_trg
+ RG_INTEGER = 0x8228 # VERSION_3_0 / ARB_trg
+ R8 = 0x8229 # VERSION_3_0 / ARB_trg
+ R16 = 0x822A # VERSION_3_0 / ARB_trg
+ RG8 = 0x822B # VERSION_3_0 / ARB_trg
+ RG16 = 0x822C # VERSION_3_0 / ARB_trg
+ R16F = 0x822D # VERSION_3_0 / ARB_trg
+ R32F = 0x822E # VERSION_3_0 / ARB_trg
+ RG16F = 0x822F # VERSION_3_0 / ARB_trg
+ RG32F = 0x8230 # VERSION_3_0 / ARB_trg
+ R8I = 0x8231 # VERSION_3_0 / ARB_trg
+ R8UI = 0x8232 # VERSION_3_0 / ARB_trg
+ R16I = 0x8233 # VERSION_3_0 / ARB_trg
+ R16UI = 0x8234 # VERSION_3_0 / ARB_trg
+ R32I = 0x8235 # VERSION_3_0 / ARB_trg
+ R32UI = 0x8236 # VERSION_3_0 / ARB_trg
+ RG8I = 0x8237 # VERSION_3_0 / ARB_trg
+ RG8UI = 0x8238 # VERSION_3_0 / ARB_trg
+ RG16I = 0x8239 # VERSION_3_0 / ARB_trg
+ RG16UI = 0x823A # VERSION_3_0 / ARB_trg
+ RG32I = 0x823B # VERSION_3_0 / ARB_trg
+ RG32UI = 0x823C # VERSION_3_0 / ARB_trg
+
+# ARB_future_use: 0x823D-0x823F
+
+###############################################################################
+
+# @@@ Any_vendor_future_use: 0x8240-0x82AF (released by Microsoft 2002/9/16)
+
+###############################################################################
+
+# ADD: 0x82B0-0x830F
+
+###############################################################################
+
+SGIX_depth_pass_instrument enum: 0x8310-0x8312
+ DEPTH_PASS_INSTRUMENT_SGIX = 0x8310
+ DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = 0x8311
+ DEPTH_PASS_INSTRUMENT_MAX_SGIX = 0x8312
+
+###############################################################################
+
+SGIX_fragments_instrument enum: 0x8313-0x8315
+ FRAGMENTS_INSTRUMENT_SGIX = 0x8313 # 1 I
+ FRAGMENTS_INSTRUMENT_COUNTERS_SGIX = 0x8314 # 1 I
+ FRAGMENTS_INSTRUMENT_MAX_SGIX = 0x8315 # 1 I
+
+###############################################################################
+
+SGIX_convolution_accuracy enum:
+ CONVOLUTION_HINT_SGIX = 0x8316 # 1 I
+
+###############################################################################
+
+# SGIX_color_matrix_accuracy: 0x8317
+
+###############################################################################
+
+# 0x8318-0x8319
+SGIX_ycrcba enum:
+ YCRCB_SGIX = 0x8318
+ YCRCBA_SGIX = 0x8319
+
+###############################################################################
+
+# 0x831A-0x831F
+SGIX_slim enum:
+ UNPACK_COMPRESSED_SIZE_SGIX = 0x831A
+ PACK_MAX_COMPRESSED_SIZE_SGIX = 0x831B
+ PACK_COMPRESSED_SIZE_SGIX = 0x831C
+ SLIM8U_SGIX = 0x831D
+ SLIM10U_SGIX = 0x831E
+ SLIM12S_SGIX = 0x831F
+
+###############################################################################
+
+SGIX_blend_alpha_minmax enum:
+ ALPHA_MIN_SGIX = 0x8320
+ ALPHA_MAX_SGIX = 0x8321
+
+###############################################################################
+
+SGIX_scalebias_hint enum:
+ SCALEBIAS_HINT_SGIX = 0x8322
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_layers: 0x8323-0x8328
+# FOG_TYPE_SGIX = 0x8323 # 1 I
+# UNIFORM_SGIX = 0x8324
+# LAYERED_SGIX = 0x8325
+# FOG_GROUND_PLANE_SGIX = 0x8326 # 4 F
+# FOG_LAYERS_POINTS_SGIX = 0x8327 # 1 I
+# MAX_FOG_LAYERS_POINTS_SGIX = 0x8328 # 1 I
+
+###############################################################################
+
+SGIX_async enum:
+ ASYNC_MARKER_SGIX = 0x8329
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_texture_phase: 0x832A
+# PHASE_SGIX = 0x832A
+
+###############################################################################
+
+# SGIX_pixel_texture (additional; see above): 0x832B
+
+###############################################################################
+
+SGIX_async_histogram enum:
+ ASYNC_HISTOGRAM_SGIX = 0x832C
+ MAX_ASYNC_HISTOGRAM_SGIX = 0x832D
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_texture_mipmap_anisotropic: 0x832E-0x832F
+# TEXTURE_MIPMAP_ANISOTROPY_SGIX = 0x832E
+# MAX_MIPMAP_ANISOTROPY_SGIX = 0x832F # 1 I
+
+###############################################################################
+
+EXT_pixel_transform enum:
+ PIXEL_TRANSFORM_2D_EXT = 0x8330
+ PIXEL_MAG_FILTER_EXT = 0x8331
+ PIXEL_MIN_FILTER_EXT = 0x8332
+ PIXEL_CUBIC_WEIGHT_EXT = 0x8333
+ CUBIC_EXT = 0x8334
+ AVERAGE_EXT = 0x8335
+ PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8336
+ MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8337
+ PIXEL_TRANSFORM_2D_MATRIX_EXT = 0x8338
+
+# SUN_future_use: 0x8339-0x833F
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_cube_map: 0x8340-0x8348
+# ENV_MAP_SGIX = 0x8340
+# CUBE_MAP_SGIX = 0x8341
+# CUBE_MAP_ZP_SGIX = 0x8342
+# CUBE_MAP_ZN_SGIX = 0x8343
+# CUBE_MAP_XN_SGIX = 0x8344
+# CUBE_MAP_XP_SGIX = 0x8345
+# CUBE_MAP_YN_SGIX = 0x8346
+# CUBE_MAP_YP_SGIX = 0x8347
+# CUBE_MAP_BINDING_SGIX = 0x8348 # 1 I
+
+###############################################################################
+
+# Unfortunately, there was a collision promoting to EXT from SGIX.
+# Use fog_coord's value of 0x8452 instead of the previously
+# assigned FRAGMENT_DEPTH_EXT -> 0x834B.
+# EXT_light_texture: 0x8349-0x8352
+EXT_light_texture enum: 0x8349-0x8352
+ FRAGMENT_MATERIAL_EXT = 0x8349
+ FRAGMENT_NORMAL_EXT = 0x834A
+ FRAGMENT_COLOR_EXT = 0x834C
+ ATTENUATION_EXT = 0x834D
+ SHADOW_ATTENUATION_EXT = 0x834E
+ TEXTURE_APPLICATION_MODE_EXT = 0x834F # 1 I
+ TEXTURE_LIGHT_EXT = 0x8350 # 1 I
+ TEXTURE_MATERIAL_FACE_EXT = 0x8351 # 1 I
+ TEXTURE_MATERIAL_PARAMETER_EXT = 0x8352 # 1 I
+ use EXT_fog_coord FRAGMENT_DEPTH_EXT
+
+###############################################################################
+
+SGIS_pixel_texture enum:
+ PIXEL_TEXTURE_SGIS = 0x8353 # 1 I
+ PIXEL_FRAGMENT_RGB_SOURCE_SGIS = 0x8354 # 1 I
+ PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = 0x8355 # 1 I
+ PIXEL_GROUP_COLOR_SGIS = 0x8356 # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_pixel_texture_bits: 0x8357-0x8359
+# COLOR_TO_TEXTURE_COORD_SGIX = 0x8357
+# COLOR_BIT_PATTERN_SGIX = 0x8358
+# COLOR_VALUE_SGIX = 0x8359
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_pixel_texture_lod: 0x835A
+# PIXEL_TEX_GEN_LAMBDA_SOURCE_SGIX = 0x835A
+
+###############################################################################
+
+SGIX_line_quality_hint enum:
+ LINE_QUALITY_HINT_SGIX = 0x835B
+
+###############################################################################
+
+SGIX_async_pixel enum:
+ ASYNC_TEX_IMAGE_SGIX = 0x835C
+ ASYNC_DRAW_PIXELS_SGIX = 0x835D
+ ASYNC_READ_PIXELS_SGIX = 0x835E
+ MAX_ASYNC_TEX_IMAGE_SGIX = 0x835F
+ MAX_ASYNC_DRAW_PIXELS_SGIX = 0x8360
+ MAX_ASYNC_READ_PIXELS_SGIX = 0x8361
+
+###############################################################################
+
+# EXT_packed_pixels (additional; see above): 0x8362-0x8368
+
+###############################################################################
+
+SGIX_texture_coordinate_clamp enum:
+ TEXTURE_MAX_CLAMP_S_SGIX = 0x8369
+ TEXTURE_MAX_CLAMP_T_SGIX = 0x836A
+ TEXTURE_MAX_CLAMP_R_SGIX = 0x836B
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_texture: 0x836C-0x836E
+# FRAGMENT_FOG_SGIX = 0x836C
+# TEXTURE_FOG_SGIX = 0x836D # 1 I
+# FOG_PATCHY_FACTOR_SGIX = 0x836E
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fog_factor_to_alpha: 0x836F
+ FOG_FACTOR_TO_ALPHA_SGIX = 0x836F
+
+###############################################################################
+
+# HP: 0x8370-0x837F
+# NOTE: IBM is using values in this range, because of a bobble
+# when Pat Brown left at the same time as I assigned them the
+# next range and their registry became inconsistent. Unknown
+# whether HP has any conflicts as they have never reported using
+# any values in this range.
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ MIRRORED_REPEAT = 0x8370
+
+ARB_texture_mirrored_repeat enum:
+ MIRRORED_REPEAT_ARB = 0x8370
+
+IBM_texture_mirrored_repeat enum:
+ MIRRORED_REPEAT_IBM = 0x8370
+
+# Aliases ARB_texture_mirrored_repeat enum above
+OES_texture_mirrored_repeat enum: (OpenGL ES only)
+ MIRRORED_REPEAT_OES = 0x8370
+
+###############################################################################
+
+# IBM: 0x8380-0x839F
+
+###############################################################################
+
+# S3: 0x83A0-0x83BF
+
+S3_s3tc enum:
+ RGB_S3TC = 0x83A0
+ RGB4_S3TC = 0x83A1
+ RGBA_S3TC = 0x83A2
+ RGBA4_S3TC = 0x83A3
+
+# S3_future_use: 0x83A4-0x83BF
+
+###############################################################################
+
+# Obsolete extension, never to be put in enumext.spec
+# SGIS_multitexture: 0x83C0-0x83E5
+# SELECTED_TEXTURE_SGIS = 0x83C0 # 1 I
+# SELECTED_TEXTURE_COORD_SET_SGIS = 0x83C1 # 1 I
+# SELECTED_TEXTURE_TRANSFORM_SGIS = 0x83C2 # 1 I
+# MAX_TEXTURES_SGIS = 0x83C3 # 1 I
+# MAX_TEXTURE_COORD_SETS_SGIS = 0x83C4 # 1 I
+# TEXTURE_COORD_SET_INTERLEAVE_FACTOR_SGIS = 0x83C5 # 1 I
+# TEXTURE_ENV_COORD_SET_SGIS = 0x83C6
+# TEXTURE0_SGIS = 0x83C7
+# TEXTURE1_SGIS = 0x83C8
+# TEXTURE2_SGIS = 0x83C9
+# TEXTURE3_SGIS = 0x83CA
+#
+# SGIS_multitexture_future_use: 0x83CB-0x83E5
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_bali_g_instruments: 0x83E6-0x83E9
+# BALI_NUM_TRIS_CULLED_INSTRUMENT_SGIX = 0x83E6 # 1 I
+# BALI_NUM_PRIMS_CLIPPED_INSTRUMENT_SGIX = 0x83E7 # 1 I
+# BALI_NUM_PRIMS_REJECT_INSTRUMENT_SGIX = 0x83E8 # 1 I
+# BALI_NUM_PRIMS_CLIP_RESULT_INSTRUMENT_SGIX = 0x83E9 # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_bali_r_instruments: 0x83EA-0x83EC
+# BALI_FRAGMENTS_GENERATED_INSTRUMENT_SGIX = 0x83EA # 1 I
+# BALI_DEPTH_PASS_INSTRUMENT_SGIX = 0x83EB # 1 I
+# BALI_R_CHIP_COUNT_SGIX = 0x83EC # 1 I
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_occlusion_instrument: 0x83ED
+# OCCLUSION_INSTRUMENT_SGIX = 0x83ED # 1 I
+
+###############################################################################
+
+SGIX_vertex_preclip enum:
+ VERTEX_PRECLIP_SGIX = 0x83EE
+ VERTEX_PRECLIP_HINT_SGIX = 0x83EF
+
+###############################################################################
+
+# INTEL: 0x83F0-0x83FF
+# Note that this block was reclaimed from NTP, who never shipped it,
+# and reassigned to Intel.
+
+EXT_texture_compression_s3tc enum:
+ COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0
+ COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1
+ COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2
+ COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3
+
+INTEL_parallel_arrays enum:
+ PARALLEL_ARRAYS_INTEL = 0x83F4
+ VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F5
+ NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F6
+ COLOR_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F7
+ TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F8
+
+# INTEL_future_use: 0x83F9-0x83FF
+
+###############################################################################
+
+SGIX_fragment_lighting enum:
+ FRAGMENT_LIGHTING_SGIX = 0x8400 # 1 I
+ FRAGMENT_COLOR_MATERIAL_SGIX = 0x8401 # 1 I
+ FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x8402 # 1 I
+ FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x8403 # 1 I
+ MAX_FRAGMENT_LIGHTS_SGIX = 0x8404 # 1 I
+ MAX_ACTIVE_LIGHTS_SGIX = 0x8405 # 1 I
+ CURRENT_RASTER_NORMAL_SGIX = 0x8406 # 1 I
+ LIGHT_ENV_MODE_SGIX = 0x8407 # 1 I
+ FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x8408 # 1 I
+ FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x8409 # 1 I
+ FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x840A # 4 F
+ FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x840B # 1 I
+ FRAGMENT_LIGHT0_SGIX = 0x840C # 1 I
+ FRAGMENT_LIGHT1_SGIX = 0x840D
+ FRAGMENT_LIGHT2_SGIX = 0x840E
+ FRAGMENT_LIGHT3_SGIX = 0x840F
+ FRAGMENT_LIGHT4_SGIX = 0x8410
+ FRAGMENT_LIGHT5_SGIX = 0x8411
+ FRAGMENT_LIGHT6_SGIX = 0x8412
+ FRAGMENT_LIGHT7_SGIX = 0x8413
+
+# SGIX_fragment_lighting_future_use: 0x8414-0x842B
+
+###############################################################################
+
+SGIX_resample enum:
+ PACK_RESAMPLE_SGIX = 0x842C
+ UNPACK_RESAMPLE_SGIX = 0x842D
+ RESAMPLE_REPLICATE_SGIX = 0x842E
+ RESAMPLE_ZERO_FILL_SGIX = 0x842F
+ RESAMPLE_DECIMATE_SGIX = 0x8430
+
+# SGIX_resample_future_use: 0x8431-0x8435
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_fragment_lighting_space: 0x8436-0x8449
+# EYE_SPACE_SGIX = 0x8436
+# TANGENT_SPACE_SGIX = 0x8437
+# OBJECT_SPACE_SGIX = 0x8438
+# TANGENT_ARRAY_SGIX = 0x8439
+# BINORMAL_ARRAY_SGIX = 0x843A
+# CURRENT_TANGENT_SGIX = 0x843B # 3 F
+# CURRENT_BINORMAL_SGIX = 0x843C # 3 F
+# FRAGMENT_LIGHT_SPACE_SGIX = 0x843D # 1 I
+# TANGENT_ARRAY_TYPE_SGIX = 0x843E
+# TANGENT_ARRAY_STRIDE_SGIX = 0x843F
+# TANGENT_ARRAY_COUNT_SGIX = 0x8440
+# BINORMAL_ARRAY_TYPE_SGIX = 0x8441
+# BINORMAL_ARRAY_STRIDE_SGIX = 0x8442
+# BINORMAL_ARRAY_COUNT_SGIX = 0x8443
+# TANGENT_ARRAY_POINTER_SGIX = 0x8444
+# BINORMAL_ARRAY_POINTER_SGIX = 0x8445
+# MAP1_TANGENT_SGIX = 0x8446
+# MAP2_TANGENT_SGIX = 0x8447
+# MAP1_BINORMAL_SGIX = 0x8448
+# MAP2_BINORMAL_SGIX = 0x8449
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_bali_timer_instruments: 0x844A-0x844C
+# BALI_GEOM_TIMER_INSTRUMENT_SGIX = 0x844A # 1 I
+# BALI_RASTER_TIMER_INSTRUMENT_SGIX = 0x844B # 1 I
+# BALI_INSTRUMENT_TIME_UNIT_SGIX = 0x844C # 1 I
+
+###############################################################################
+
+# SGIX_clipmap (additional; see above): 0x844D-0x844F
+
+###############################################################################
+
+# SGI (actually brokered for Id Software): 0x8450-0x845F
+
+VERSION_1_5 enum: (Consistent naming scheme for OpenGL 1.5)
+ FOG_COORD_SRC = 0x8450 # alias GL_FOG_COORDINATE_SOURCE
+ FOG_COORD = 0x8451 # alias GL_FOG_COORDINATE
+ CURRENT_FOG_COORD = 0x8453 # alias GL_CURRENT_FOG_COORDINATE
+ FOG_COORD_ARRAY_TYPE = 0x8454 # alias GL_FOG_COORDINATE_ARRAY_TYPE
+ FOG_COORD_ARRAY_STRIDE = 0x8455 # alias GL_FOG_COORDINATE_ARRAY_STRIDE
+ FOG_COORD_ARRAY_POINTER = 0x8456 # alias GL_FOG_COORDINATE_ARRAY_POINTER
+ FOG_COORD_ARRAY = 0x8457 # alias GL_FOG_COORDINATE_ARRAY
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ FOG_COORDINATE_SOURCE = 0x8450 # 1 I
+ FOG_COORDINATE = 0x8451
+ FRAGMENT_DEPTH = 0x8452
+ CURRENT_FOG_COORDINATE = 0x8453 # 1 F
+ FOG_COORDINATE_ARRAY_TYPE = 0x8454 # 1 I
+ FOG_COORDINATE_ARRAY_STRIDE = 0x8455 # 1 I
+ FOG_COORDINATE_ARRAY_POINTER = 0x8456
+ FOG_COORDINATE_ARRAY = 0x8457 # 1 I
+
+EXT_fog_coord enum:
+ FOG_COORDINATE_SOURCE_EXT = 0x8450 # 1 I
+ FOG_COORDINATE_EXT = 0x8451
+ FRAGMENT_DEPTH_EXT = 0x8452
+ CURRENT_FOG_COORDINATE_EXT = 0x8453 # 1 F
+ FOG_COORDINATE_ARRAY_TYPE_EXT = 0x8454 # 1 I
+ FOG_COORDINATE_ARRAY_STRIDE_EXT = 0x8455 # 1 I
+ FOG_COORDINATE_ARRAY_POINTER_EXT = 0x8456
+ FOG_COORDINATE_ARRAY_EXT = 0x8457 # 1 I
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ COLOR_SUM = 0x8458 # 1 I
+ CURRENT_SECONDARY_COLOR = 0x8459 # 3 F
+ SECONDARY_COLOR_ARRAY_SIZE = 0x845A # 1 I
+ SECONDARY_COLOR_ARRAY_TYPE = 0x845B # 1 I
+ SECONDARY_COLOR_ARRAY_STRIDE = 0x845C # 1 I
+ SECONDARY_COLOR_ARRAY_POINTER = 0x845D
+ SECONDARY_COLOR_ARRAY = 0x845E # 1 I
+
+EXT_secondary_color enum:
+ COLOR_SUM_EXT = 0x8458 # 1 I
+ CURRENT_SECONDARY_COLOR_EXT = 0x8459 # 3 F
+ SECONDARY_COLOR_ARRAY_SIZE_EXT = 0x845A # 1 I
+ SECONDARY_COLOR_ARRAY_TYPE_EXT = 0x845B # 1 I
+ SECONDARY_COLOR_ARRAY_STRIDE_EXT = 0x845C # 1 I
+ SECONDARY_COLOR_ARRAY_POINTER_EXT = 0x845D
+ SECONDARY_COLOR_ARRAY_EXT = 0x845E # 1 I
+
+ARB_vertex_program enum:
+ COLOR_SUM_ARB = 0x8458 # 1 I # ARB_vertex_program
+
+VERSION_2_1 enum:
+ CURRENT_RASTER_SECONDARY_COLOR = 0x845F
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+SGIX_icc_texture enum:
+# RGB_ICC_SGIX = 0x8460
+# RGBA_ICC_SGIX = 0x8461
+# ALPHA_ICC_SGIX = 0x8462
+# LUMINANCE_ICC_SGIX = 0x8463
+# INTENSITY_ICC_SGIX = 0x8464
+# LUMINANCE_ALPHA_ICC_SGIX = 0x8465
+# R5_G6_B5_ICC_SGIX = 0x8466
+# R5_G6_B5_A8_ICC_SGIX = 0x8467
+# ALPHA16_ICC_SGIX = 0x8468
+# LUMINANCE16_ICC_SGIX = 0x8469
+# INTENSITY16_ICC_SGIX = 0x846A
+# LUMINANCE16_ALPHA8_ICC_SGIX = 0x846B
+
+###############################################################################
+
+# SGI_future_use: 0x846C
+
+###############################################################################
+
+# SMOOTH_* enums are new names for pre-1.2 enums.
+VERSION_1_2 enum:
+ SMOOTH_POINT_SIZE_RANGE = 0x0B12 # 2 F
+ SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13 # 1 F
+ SMOOTH_LINE_WIDTH_RANGE = 0x0B22 # 2 F
+ SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23 # 1 F
+ ALIASED_POINT_SIZE_RANGE = 0x846D # 2 F
+ ALIASED_LINE_WIDTH_RANGE = 0x846E # 2 F
+
+###############################################################################
+
+# SGI_future_use: 0x846F
+
+###############################################################################
+
+# ATI Technologies (vendor multitexture, spec not yet released): 0x8470-0x848F
+
+###############################################################################
+
+# REND (Rendition): 0x8490-0x849F
+
+REND_screen_coordinates enum:
+ SCREEN_COORDINATES_REND = 0x8490
+ INVERTED_SCREEN_W_REND = 0x8491
+
+###############################################################################
+
+# ATI Technologies (vendor multitexture, spec not yet released): 0x84A0-84BF
+
+###############################################################################
+
+# OpenGL ARB: 0x84C0-0x84EF
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ TEXTURE0 = 0x84C0
+ TEXTURE1 = 0x84C1
+ TEXTURE2 = 0x84C2
+ TEXTURE3 = 0x84C3
+ TEXTURE4 = 0x84C4
+ TEXTURE5 = 0x84C5
+ TEXTURE6 = 0x84C6
+ TEXTURE7 = 0x84C7
+ TEXTURE8 = 0x84C8
+ TEXTURE9 = 0x84C9
+ TEXTURE10 = 0x84CA
+ TEXTURE11 = 0x84CB
+ TEXTURE12 = 0x84CC
+ TEXTURE13 = 0x84CD
+ TEXTURE14 = 0x84CE
+ TEXTURE15 = 0x84CF
+ TEXTURE16 = 0x84D0
+ TEXTURE17 = 0x84D1
+ TEXTURE18 = 0x84D2
+ TEXTURE19 = 0x84D3
+ TEXTURE20 = 0x84D4
+ TEXTURE21 = 0x84D5
+ TEXTURE22 = 0x84D6
+ TEXTURE23 = 0x84D7
+ TEXTURE24 = 0x84D8
+ TEXTURE25 = 0x84D9
+ TEXTURE26 = 0x84DA
+ TEXTURE27 = 0x84DB
+ TEXTURE28 = 0x84DC
+ TEXTURE29 = 0x84DD
+ TEXTURE30 = 0x84DE
+ TEXTURE31 = 0x84DF
+ ACTIVE_TEXTURE = 0x84E0 # 1 I
+ CLIENT_ACTIVE_TEXTURE = 0x84E1 # 1 I
+ MAX_TEXTURE_UNITS = 0x84E2 # 1 I
+
+ARB_multitexture enum:
+ TEXTURE0_ARB = 0x84C0
+ TEXTURE1_ARB = 0x84C1
+ TEXTURE2_ARB = 0x84C2
+ TEXTURE3_ARB = 0x84C3
+ TEXTURE4_ARB = 0x84C4
+ TEXTURE5_ARB = 0x84C5
+ TEXTURE6_ARB = 0x84C6
+ TEXTURE7_ARB = 0x84C7
+ TEXTURE8_ARB = 0x84C8
+ TEXTURE9_ARB = 0x84C9
+ TEXTURE10_ARB = 0x84CA
+ TEXTURE11_ARB = 0x84CB
+ TEXTURE12_ARB = 0x84CC
+ TEXTURE13_ARB = 0x84CD
+ TEXTURE14_ARB = 0x84CE
+ TEXTURE15_ARB = 0x84CF
+ TEXTURE16_ARB = 0x84D0
+ TEXTURE17_ARB = 0x84D1
+ TEXTURE18_ARB = 0x84D2
+ TEXTURE19_ARB = 0x84D3
+ TEXTURE20_ARB = 0x84D4
+ TEXTURE21_ARB = 0x84D5
+ TEXTURE22_ARB = 0x84D6
+ TEXTURE23_ARB = 0x84D7
+ TEXTURE24_ARB = 0x84D8
+ TEXTURE25_ARB = 0x84D9
+ TEXTURE26_ARB = 0x84DA
+ TEXTURE27_ARB = 0x84DB
+ TEXTURE28_ARB = 0x84DC
+ TEXTURE29_ARB = 0x84DD
+ TEXTURE30_ARB = 0x84DE
+ TEXTURE31_ARB = 0x84DF
+ ACTIVE_TEXTURE_ARB = 0x84E0 # 1 I
+ CLIENT_ACTIVE_TEXTURE_ARB = 0x84E1 # 1 I
+ MAX_TEXTURE_UNITS_ARB = 0x84E2 # 1 I
+
+# These are really core ES 1.1 enums, but haven't included
+# ES core enums in enum.spec yet
+OES_texture_env_crossbar enum: (OpenGL ES only)
+ use VERSION_1_3 TEXTURE0
+ use VERSION_1_3 TEXTURE1
+ use VERSION_1_3 TEXTURE2
+ use VERSION_1_3 TEXTURE3
+ use VERSION_1_3 TEXTURE4
+ use VERSION_1_3 TEXTURE5
+ use VERSION_1_3 TEXTURE6
+ use VERSION_1_3 TEXTURE7
+ use VERSION_1_3 TEXTURE8
+ use VERSION_1_3 TEXTURE9
+ use VERSION_1_3 TEXTURE10
+ use VERSION_1_3 TEXTURE11
+ use VERSION_1_3 TEXTURE12
+ use VERSION_1_3 TEXTURE13
+ use VERSION_1_3 TEXTURE14
+ use VERSION_1_3 TEXTURE15
+ use VERSION_1_3 TEXTURE16
+ use VERSION_1_3 TEXTURE17
+ use VERSION_1_3 TEXTURE18
+ use VERSION_1_3 TEXTURE19
+ use VERSION_1_3 TEXTURE20
+ use VERSION_1_3 TEXTURE21
+ use VERSION_1_3 TEXTURE22
+ use VERSION_1_3 TEXTURE23
+ use VERSION_1_3 TEXTURE24
+ use VERSION_1_3 TEXTURE25
+ use VERSION_1_3 TEXTURE26
+ use VERSION_1_3 TEXTURE27
+ use VERSION_1_3 TEXTURE28
+ use VERSION_1_3 TEXTURE29
+ use VERSION_1_3 TEXTURE30
+ use VERSION_1_3 TEXTURE31
+
+###############################################################################
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ TRANSPOSE_MODELVIEW_MATRIX = 0x84E3 # 16 F
+ TRANSPOSE_PROJECTION_MATRIX = 0x84E4 # 16 F
+ TRANSPOSE_TEXTURE_MATRIX = 0x84E5 # 16 F
+ TRANSPOSE_COLOR_MATRIX = 0x84E6 # 16 F
+
+ARB_transpose_matrix enum:
+ TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3 # 16 F
+ TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4 # 16 F
+ TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5 # 16 F
+ TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6 # 16 F
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ SUBTRACT = 0x84E7
+
+ARB_texture_env_combine enum:
+ SUBTRACT_ARB = 0x84E7
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object MAX_RENDERBUFFER_SIZE
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ MAX_RENDERBUFFER_SIZE = 0x84E8 # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_object enum: (additional; see below):
+ MAX_RENDERBUFFER_SIZE_EXT = 0x84E8
+
+# Aliases EXT_framebuffer_object enum above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+ MAX_RENDERBUFFER_SIZE_OES = 0x84E8
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ COMPRESSED_ALPHA = 0x84E9
+ COMPRESSED_LUMINANCE = 0x84EA
+ COMPRESSED_LUMINANCE_ALPHA = 0x84EB
+ COMPRESSED_INTENSITY = 0x84EC
+ COMPRESSED_RGB = 0x84ED
+ COMPRESSED_RGBA = 0x84EE
+ TEXTURE_COMPRESSION_HINT = 0x84EF
+ TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0
+ TEXTURE_COMPRESSED = 0x86A1
+ NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2
+ COMPRESSED_TEXTURE_FORMATS = 0x86A3
+
+ARB_texture_compression enum:
+ COMPRESSED_ALPHA_ARB = 0x84E9
+ COMPRESSED_LUMINANCE_ARB = 0x84EA
+ COMPRESSED_LUMINANCE_ALPHA_ARB = 0x84EB
+ COMPRESSED_INTENSITY_ARB = 0x84EC
+ COMPRESSED_RGB_ARB = 0x84ED
+ COMPRESSED_RGBA_ARB = 0x84EE
+ TEXTURE_COMPRESSION_HINT_ARB = 0x84EF
+ TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = 0x86A0
+ TEXTURE_COMPRESSED_ARB = 0x86A1
+ NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A2
+ COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A3
+
+###############################################################################
+
+# NVIDIA: 0x84F0-0x855F
+
+# NV_future_use: 0x84F0-0x84F1
+
+NV_fence enum:
+ ALL_COMPLETED_NV = 0x84F2
+ FENCE_STATUS_NV = 0x84F3
+ FENCE_CONDITION_NV = 0x84F4
+
+VERSION_3_1 enum:
+ TEXTURE_RECTANGLE = 0x84F5
+ TEXTURE_BINDING_RECTANGLE = 0x84F6
+ PROXY_TEXTURE_RECTANGLE = 0x84F7
+ MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8
+
+ARB_texture_rectangle enum:
+ TEXTURE_RECTANGLE_ARB = 0x84F5
+ TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6
+ PROXY_TEXTURE_RECTANGLE_ARB = 0x84F7
+ MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x84F8
+
+NV_texture_rectangle enum:
+ TEXTURE_RECTANGLE_NV = 0x84F5
+ TEXTURE_BINDING_RECTANGLE_NV = 0x84F6
+ PROXY_TEXTURE_RECTANGLE_NV = 0x84F7
+ MAX_RECTANGLE_TEXTURE_SIZE_NV = 0x84F8
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object DEPTH_STENCIL
+ use ARB_framebuffer_object UNSIGNED_INT_24_8
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ DEPTH_STENCIL = 0x84F9 # VERSION_3_0 / ARB_fbo
+ UNSIGNED_INT_24_8 = 0x84FA # VERSION_3_0 / ARB_fbo
+
+EXT_packed_depth_stencil enum:
+ DEPTH_STENCIL_EXT = 0x84F9
+ UNSIGNED_INT_24_8_EXT = 0x84FA
+
+NV_packed_depth_stencil enum:
+ DEPTH_STENCIL_NV = 0x84F9
+ UNSIGNED_INT_24_8_NV = 0x84FA
+
+# Aliases EXT_packed_depth_stencil enums above
+OES_packed_depth_stencil enum: (OpenGL ES only)
+ DEPTH_STENCIL_OES = 0x84F9
+ UNSIGNED_INT_24_8_OES = 0x84FA
+
+# NV_future_use: 0x84FB-0x84FC
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ MAX_TEXTURE_LOD_BIAS = 0x84FD
+
+EXT_texture_lod_bias enum:
+ MAX_TEXTURE_LOD_BIAS_EXT = 0x84FD
+
+EXT_texture_filter_anisotropic enum:
+ TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE
+ MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ TEXTURE_FILTER_CONTROL = 0x8500
+ TEXTURE_LOD_BIAS = 0x8501
+
+EXT_texture_lod_bias enum:
+ TEXTURE_FILTER_CONTROL_EXT = 0x8500
+ TEXTURE_LOD_BIAS_EXT = 0x8501
+
+EXT_vertex_weighting enum:
+ MODELVIEW1_STACK_DEPTH_EXT = 0x8502
+
+# NV_texture_env_combine4 (additional; see below): 0x8503
+
+NV_light_max_exponent enum:
+ MAX_SHININESS_NV = 0x8504
+ MAX_SPOT_EXPONENT_NV = 0x8505
+
+EXT_vertex_weighting enum:
+ MODELVIEW_MATRIX1_EXT = 0x8506
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ INCR_WRAP = 0x8507
+ DECR_WRAP = 0x8508
+
+EXT_stencil_wrap enum:
+ INCR_WRAP_EXT = 0x8507
+ DECR_WRAP_EXT = 0x8508
+
+# Aliases EXT_stencil_wrap enums above
+OES_stencil_wrap enum: (OpenGL ES only)
+ INCR_WRAP_OES = 0x8507
+ DECR_WRAP_OES = 0x8508
+
+EXT_vertex_weighting enum:
+ VERTEX_WEIGHTING_EXT = 0x8509
+ MODELVIEW1_EXT = 0x850A
+ CURRENT_VERTEX_WEIGHT_EXT = 0x850B
+ VERTEX_WEIGHT_ARRAY_EXT = 0x850C
+ VERTEX_WEIGHT_ARRAY_SIZE_EXT = 0x850D
+ VERTEX_WEIGHT_ARRAY_TYPE_EXT = 0x850E
+ VERTEX_WEIGHT_ARRAY_STRIDE_EXT = 0x850F
+ VERTEX_WEIGHT_ARRAY_POINTER_EXT = 0x8510
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ NORMAL_MAP = 0x8511
+ REFLECTION_MAP = 0x8512
+ TEXTURE_CUBE_MAP = 0x8513
+ TEXTURE_BINDING_CUBE_MAP = 0x8514
+ TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515
+ TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516
+ TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517
+ TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518
+ TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519
+ TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A
+ PROXY_TEXTURE_CUBE_MAP = 0x851B
+ MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C
+
+EXT_texture_cube_map enum:
+ NORMAL_MAP_EXT = 0x8511
+ REFLECTION_MAP_EXT = 0x8512
+ TEXTURE_CUBE_MAP_EXT = 0x8513
+ TEXTURE_BINDING_CUBE_MAP_EXT = 0x8514
+ TEXTURE_CUBE_MAP_POSITIVE_X_EXT = 0x8515
+ TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = 0x8516
+ TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = 0x8517
+ TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = 0x8518
+ TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = 0x8519
+ TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = 0x851A
+ PROXY_TEXTURE_CUBE_MAP_EXT = 0x851B
+ MAX_CUBE_MAP_TEXTURE_SIZE_EXT = 0x851C
+
+NV_texgen_reflection enum:
+ NORMAL_MAP = 0x8511
+ REFLECTION_MAP = 0x8512
+
+ARB_texture_cube_map enum:
+ NORMAL_MAP_ARB = 0x8511
+ REFLECTION_MAP_ARB = 0x8512
+ TEXTURE_CUBE_MAP_ARB = 0x8513
+ TEXTURE_BINDING_CUBE_MAP_ARB = 0x8514
+ TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x8515
+ TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x8516
+ TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x8517
+ TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x8518
+ TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x8519
+ TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x851A
+ PROXY_TEXTURE_CUBE_MAP_ARB = 0x851B
+ MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 0x851C
+
+# Aliases ARB_texture_cube_map enums above
+OES_texture_cube_map enum: (OpenGL ES only; additional; see below)
+ NORMAL_MAP_OES = 0x8511
+ REFLECTION_MAP_OES = 0x8512
+ TEXTURE_CUBE_MAP_OES = 0x8513
+ TEXTURE_BINDING_CUBE_MAP_OES = 0x8514
+ TEXTURE_CUBE_MAP_POSITIVE_X_OES = 0x8515
+ TEXTURE_CUBE_MAP_NEGATIVE_X_OES = 0x8516
+ TEXTURE_CUBE_MAP_POSITIVE_Y_OES = 0x8517
+ TEXTURE_CUBE_MAP_NEGATIVE_Y_OES = 0x8518
+ TEXTURE_CUBE_MAP_POSITIVE_Z_OES = 0x8519
+ TEXTURE_CUBE_MAP_NEGATIVE_Z_OES = 0x851A
+ MAX_CUBE_MAP_TEXTURE_SIZE_OES = 0x851C
+
+NV_vertex_array_range enum:
+ VERTEX_ARRAY_RANGE_NV = 0x851D
+ VERTEX_ARRAY_RANGE_LENGTH_NV = 0x851E
+ VERTEX_ARRAY_RANGE_VALID_NV = 0x851F
+ MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = 0x8520
+ VERTEX_ARRAY_RANGE_POINTER_NV = 0x8521
+
+# @@@ How does this interact with NV_vertex_array_range?
+APPLE_vertex_array_range enum:
+ VERTEX_ARRAY_RANGE_APPLE = 0x851D
+ VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x851E
+ VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F
+ VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x8521
+ STORAGE_CACHED_APPLE = 0x85BE
+ STORAGE_SHARED_APPLE = 0x85BF
+
+NV_register_combiners enum:
+ REGISTER_COMBINERS_NV = 0x8522
+ VARIABLE_A_NV = 0x8523
+ VARIABLE_B_NV = 0x8524
+ VARIABLE_C_NV = 0x8525
+ VARIABLE_D_NV = 0x8526
+ VARIABLE_E_NV = 0x8527
+ VARIABLE_F_NV = 0x8528
+ VARIABLE_G_NV = 0x8529
+ CONSTANT_COLOR0_NV = 0x852A
+ CONSTANT_COLOR1_NV = 0x852B
+ PRIMARY_COLOR_NV = 0x852C
+ SECONDARY_COLOR_NV = 0x852D
+ SPARE0_NV = 0x852E
+ SPARE1_NV = 0x852F
+ DISCARD_NV = 0x8530
+ E_TIMES_F_NV = 0x8531
+ SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532
+
+# NV_vertex_array_range2:
+ VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = 0x8533
+
+# NV_multisample_filter_hint:
+ MULTISAMPLE_FILTER_HINT_NV = 0x8534
+
+NV_register_combiners2 enum:
+ PER_STAGE_CONSTANTS_NV = 0x8535
+
+NV_register_combiners enum: (additional; see above):
+ UNSIGNED_IDENTITY_NV = 0x8536
+ UNSIGNED_INVERT_NV = 0x8537
+ EXPAND_NORMAL_NV = 0x8538
+ EXPAND_NEGATE_NV = 0x8539
+ HALF_BIAS_NORMAL_NV = 0x853A
+ HALF_BIAS_NEGATE_NV = 0x853B
+ SIGNED_IDENTITY_NV = 0x853C
+ UNSIGNED_NEGATE_NV = 0x853D
+ SCALE_BY_TWO_NV = 0x853E
+ SCALE_BY_FOUR_NV = 0x853F
+ SCALE_BY_ONE_HALF_NV = 0x8540
+ BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541
+ COMBINER_INPUT_NV = 0x8542
+ COMBINER_MAPPING_NV = 0x8543
+ COMBINER_COMPONENT_USAGE_NV = 0x8544
+ COMBINER_AB_DOT_PRODUCT_NV = 0x8545
+ COMBINER_CD_DOT_PRODUCT_NV = 0x8546
+ COMBINER_MUX_SUM_NV = 0x8547
+ COMBINER_SCALE_NV = 0x8548
+ COMBINER_BIAS_NV = 0x8549
+ COMBINER_AB_OUTPUT_NV = 0x854A
+ COMBINER_CD_OUTPUT_NV = 0x854B
+ COMBINER_SUM_OUTPUT_NV = 0x854C
+ MAX_GENERAL_COMBINERS_NV = 0x854D
+ NUM_GENERAL_COMBINERS_NV = 0x854E
+ COLOR_SUM_CLAMP_NV = 0x854F
+ COMBINER0_NV = 0x8550
+ COMBINER1_NV = 0x8551
+ COMBINER2_NV = 0x8552
+ COMBINER3_NV = 0x8553
+ COMBINER4_NV = 0x8554
+ COMBINER5_NV = 0x8555
+ COMBINER6_NV = 0x8556
+ COMBINER7_NV = 0x8557
+
+
+NV_primitive_restart enum:
+ PRIMITIVE_RESTART_NV = 0x8558
+ PRIMITIVE_RESTART_INDEX_NV = 0x8559
+
+NV_fog_distance enum:
+ FOG_GEN_MODE_NV = 0x855A
+ EYE_RADIAL_NV = 0x855B
+ EYE_PLANE_ABSOLUTE_NV = 0x855C
+
+NV_texgen_emboss enum:
+ EMBOSS_LIGHT_NV = 0x855D
+ EMBOSS_CONSTANT_NV = 0x855E
+ EMBOSS_MAP_NV = 0x855F
+
+###############################################################################
+
+# Intergraph/Intense3D/3Dlabs: 0x8560-0x856F
+
+INGR_color_clamp enum:
+ RED_MIN_CLAMP_INGR = 0x8560
+ GREEN_MIN_CLAMP_INGR = 0x8561
+ BLUE_MIN_CLAMP_INGR = 0x8562
+ ALPHA_MIN_CLAMP_INGR = 0x8563
+ RED_MAX_CLAMP_INGR = 0x8564
+ GREEN_MAX_CLAMP_INGR = 0x8565
+ BLUE_MAX_CLAMP_INGR = 0x8566
+ ALPHA_MAX_CLAMP_INGR = 0x8567
+
+INGR_interlace_read enum:
+ INTERLACE_READ_INGR = 0x8568
+
+# 3Dlabs_future_use: 0x8569-0x856F
+
+###############################################################################
+
+# ATI/NVIDIA: 0x8570-0x859F
+
+VERSION_1_5 enum: (Consistent naming scheme for OpenGL 1.5)
+ SRC0_RGB = 0x8580 # alias GL_SOURCE0_RGB
+ SRC1_RGB = 0x8581 # alias GL_SOURCE1_RGB
+ SRC2_RGB = 0x8582 # alias GL_SOURCE2_RGB
+ SRC0_ALPHA = 0x8588 # alias GL_SOURCE0_ALPHA
+ SRC1_ALPHA = 0x8589 # alias GL_SOURCE1_ALPHA
+ SRC2_ALPHA = 0x858A # alias GL_SOURCE2_ALPHA
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ COMBINE = 0x8570
+ COMBINE_RGB = 0x8571
+ COMBINE_ALPHA = 0x8572
+ RGB_SCALE = 0x8573
+ ADD_SIGNED = 0x8574
+ INTERPOLATE = 0x8575
+ CONSTANT = 0x8576
+ PRIMARY_COLOR = 0x8577
+ PREVIOUS = 0x8578
+ SOURCE0_RGB = 0x8580
+ SOURCE1_RGB = 0x8581
+ SOURCE2_RGB = 0x8582
+ SOURCE0_ALPHA = 0x8588
+ SOURCE1_ALPHA = 0x8589
+ SOURCE2_ALPHA = 0x858A
+ OPERAND0_RGB = 0x8590
+ OPERAND1_RGB = 0x8591
+ OPERAND2_RGB = 0x8592
+ OPERAND0_ALPHA = 0x8598
+ OPERAND1_ALPHA = 0x8599
+ OPERAND2_ALPHA = 0x859A
+
+EXT_texture_env_combine enum:
+ COMBINE_EXT = 0x8570
+ COMBINE_RGB_EXT = 0x8571
+ COMBINE_ALPHA_EXT = 0x8572
+ RGB_SCALE_EXT = 0x8573
+ ADD_SIGNED_EXT = 0x8574
+ INTERPOLATE_EXT = 0x8575
+ CONSTANT_EXT = 0x8576
+ PRIMARY_COLOR_EXT = 0x8577
+ PREVIOUS_EXT = 0x8578
+ SOURCE0_RGB_EXT = 0x8580
+ SOURCE1_RGB_EXT = 0x8581
+ SOURCE2_RGB_EXT = 0x8582
+ SOURCE0_ALPHA_EXT = 0x8588
+ SOURCE1_ALPHA_EXT = 0x8589
+ SOURCE2_ALPHA_EXT = 0x858A
+ OPERAND0_RGB_EXT = 0x8590
+ OPERAND1_RGB_EXT = 0x8591
+ OPERAND2_RGB_EXT = 0x8592
+ OPERAND0_ALPHA_EXT = 0x8598
+ OPERAND1_ALPHA_EXT = 0x8599
+ OPERAND2_ALPHA_EXT = 0x859A
+
+NV_texture_env_combine4 enum:
+ COMBINE4_NV = 0x8503
+ SOURCE3_RGB_NV = 0x8583
+ SOURCE3_ALPHA_NV = 0x858B
+ OPERAND3_RGB_NV = 0x8593
+ OPERAND3_ALPHA_NV = 0x859B
+
+# "Future use" => "additional combiner input/output enums" only
+# ATI/NVIDIA_future_use: 0x8584-0x8587
+# ATI/NVIDIA_future_use: 0x858C-0x858F
+# ATI/NVIDIA_future_use: 0x8594-0x8597
+# ATI/NVIDIA_future_use: 0x859C-0x859F
+
+###############################################################################
+
+SGIX_subsample enum:
+ PACK_SUBSAMPLE_RATE_SGIX = 0x85A0
+ UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1
+ PIXEL_SUBSAMPLE_4444_SGIX = 0x85A2
+ PIXEL_SUBSAMPLE_2424_SGIX = 0x85A3
+ PIXEL_SUBSAMPLE_4242_SGIX = 0x85A4
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIS_color_range: 0x85A5-0x85AD
+# EXTENDED_RANGE_SGIS = 0x85A5
+# MIN_RED_SGIS = 0x85A6
+# MAX_RED_SGIS = 0x85A7
+# MIN_GREEN_SGIS = 0x85A8
+# MAX_GREEN_SGIS = 0x85A9
+# MIN_BLUE_SGIS = 0x85AA
+# MAX_BLUE_SGIS = 0x85AB
+# MIN_ALPHA_SGIS = 0x85AC
+# MAX_ALPHA_SGIS = 0x85AD
+
+###############################################################################
+
+EXT_texture_perturb_normal enum:
+ PERTURB_EXT = 0x85AE
+ TEXTURE_NORMAL_EXT = 0x85AF
+
+###############################################################################
+
+# Apple: 0x85B0-0x85BF
+
+APPLE_specular_vector enum:
+ LIGHT_MODEL_SPECULAR_VECTOR_APPLE = 0x85B0
+
+APPLE_transform_hint enum:
+ TRANSFORM_HINT_APPLE = 0x85B1
+
+APPLE_client_storage enum:
+ UNPACK_CLIENT_STORAGE_APPLE = 0x85B2
+
+# May also be part of APPLE_fence
+APPLE_object_purgeable enum: (additional; see below)
+ BUFFER_OBJECT_APPLE = 0x85B3
+
+# APPLE_future_use: 0x85B4
+
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+# STORAGE_CLIENT_APPLE = 0x85B4
+
+VERSION_3_0 enum:
+ use ARB_vertex_array_object VERTEX_ARRAY_BINDING
+
+ARB_vertex_array_object enum: (note: no ARB suffixes)
+ VERTEX_ARRAY_BINDING = 0x85B5 # VERSION_3_0 / ARB_vao
+
+APPLE_vertex_array_object enum:
+ VERTEX_ARRAY_BINDING_APPLE = 0x85B5
+
+# APPLE_future_use: 0x85B6
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+# TEXTURE_MINIMIZE_STORAGE_APPLE = 0x85B6
+
+APPLE_texture_range enum: (additional; see below)
+ TEXTURE_RANGE_LENGTH_APPLE = 0x85B7
+ TEXTURE_RANGE_POINTER_APPLE = 0x85B8
+
+APPLE_ycbcr_422 enum:
+ YCBCR_422_APPLE = 0x85B9
+ UNSIGNED_SHORT_8_8_APPLE = 0x85BA
+ UNSIGNED_SHORT_8_8_REV_APPLE = 0x85BB
+
+MESA_ycbcr_texture enum: (additional; see below)
+ UNSIGNED_SHORT_8_8_MESA = 0x85BA
+ UNSIGNED_SHORT_8_8_REV_MESA = 0x85BB
+
+APPLE_texture_range enum:
+ TEXTURE_STORAGE_HINT_APPLE = 0x85BC
+ STORAGE_PRIVATE_APPLE = 0x85BD
+
+APPLE_vertex_array_range enum: (additional; see above):
+ STORAGE_CACHED_APPLE = 0x85BE
+ STORAGE_SHARED_APPLE = 0x85BF
+
+APPLE_texture_range enum:
+ use APPLE_vertex_array_range STORAGE_CACHED_APPLE
+ use APPLE_vertex_array_range STORAGE_SHARED_APPLE
+
+###############################################################################
+
+# Sun: 0x85C0-0x85CF
+
+SUNX_general_triangle_list enum: (additional; see above)
+ REPLACEMENT_CODE_ARRAY_SUN = 0x85C0
+ REPLACEMENT_CODE_ARRAY_TYPE_SUN = 0x85C1
+ REPLACEMENT_CODE_ARRAY_STRIDE_SUN = 0x85C2
+ REPLACEMENT_CODE_ARRAY_POINTER_SUN = 0x85C3
+ R1UI_V3F_SUN = 0x85C4
+ R1UI_C4UB_V3F_SUN = 0x85C5
+ R1UI_C3F_V3F_SUN = 0x85C6
+ R1UI_N3F_V3F_SUN = 0x85C7
+ R1UI_C4F_N3F_V3F_SUN = 0x85C8
+ R1UI_T2F_V3F_SUN = 0x85C9
+ R1UI_T2F_N3F_V3F_SUN = 0x85CA
+ R1UI_T2F_C4F_N3F_V3F_SUN = 0x85CB
+
+SUN_slice_accum enum:
+ SLICE_ACCUM_SUN = 0x85CC
+
+# SUN_future_use: 0x85CD-0x85CF
+
+###############################################################################
+
+# Unknown extension name, not in enumext.spec
+# 3Dlabs/Autodesk: 0x85D0-0x85DF
+# FACET_NORMAL_AUTODESK = 0x85D0
+# FACET_NORMAL_ARRAY_AUTODESK = 0x85D1
+
+###############################################################################
+
+# Incomplete extension, not in enumext.spec
+# SGIX_texture_range: 0x85E0-0x85FB
+# RGB_SIGNED_SGIX = 0x85E0
+# RGBA_SIGNED_SGIX = 0x85E1
+# ALPHA_SIGNED_SGIX = 0x85E2
+# LUMINANCE_SIGNED_SGIX = 0x85E3
+# INTENSITY_SIGNED_SGIX = 0x85E4
+# LUMINANCE_ALPHA_SIGNED_SGIX = 0x85E5
+# RGB16_SIGNED_SGIX = 0x85E6
+# RGBA16_SIGNED_SGIX = 0x85E7
+# ALPHA16_SIGNED_SGIX = 0x85E8
+# LUMINANCE16_SIGNED_SGIX = 0x85E9
+# INTENSITY16_SIGNED_SGIX = 0x85EA
+# LUMINANCE16_ALPHA16_SIGNED_SGIX = 0x85EB
+# RGB_EXTENDED_RANGE_SGIX = 0x85EC
+# RGBA_EXTENDED_RANGE_SGIX = 0x85ED
+# ALPHA_EXTENDED_RANGE_SGIX = 0x85EE
+# LUMINANCE_EXTENDED_RANGE_SGIX = 0x85EF
+# INTENSITY_EXTENDED_RANGE_SGIX = 0x85F0
+# LUMINANCE_ALPHA_EXTENDED_RANGE_SGIX = 0x85F1
+# RGB16_EXTENDED_RANGE_SGIX = 0x85F2
+# RGBA16_EXTENDED_RANGE_SGIX = 0x85F3
+# ALPHA16_EXTENDED_RANGE_SGIX = 0x85F4
+# LUMINANCE16_EXTENDED_RANGE_SGIX = 0x85F5
+# INTENSITY16_EXTENDED_RANGE_SGIX = 0x85F6
+# LUMINANCE16_ALPHA16_EXTENDED_RANGE_SGIX = 0x85F7
+# MIN_LUMINANCE_SGIS = 0x85F8
+# MAX_LUMINANCE_SGIS = 0x85F9
+# MIN_INTENSITY_SGIS = 0x85FA
+# MAX_INTENSITY_SGIS = 0x85FB
+
+###############################################################################
+
+# SGI_future_use: 0x85FC-0x85FF
+
+###############################################################################
+
+# Sun: 0x8600-0x861F
+
+# SUN_future_use: 0x8600-0x8613
+
+SUN_mesh_array enum: 0x8614-0x8615
+ QUAD_MESH_SUN = 0x8614
+ TRIANGLE_MESH_SUN = 0x8615
+
+# SUN_future_use: 0x8614-0x861F
+
+###############################################################################
+
+# NVIDIA: 0x8620-0x867F
+
+NV_vertex_program enum:
+ VERTEX_PROGRAM_NV = 0x8620
+ VERTEX_STATE_PROGRAM_NV = 0x8621
+ ATTRIB_ARRAY_SIZE_NV = 0x8623
+ ATTRIB_ARRAY_STRIDE_NV = 0x8624
+ ATTRIB_ARRAY_TYPE_NV = 0x8625
+ CURRENT_ATTRIB_NV = 0x8626
+ PROGRAM_LENGTH_NV = 0x8627
+ PROGRAM_STRING_NV = 0x8628
+ MODELVIEW_PROJECTION_NV = 0x8629
+ IDENTITY_NV = 0x862A
+ INVERSE_NV = 0x862B
+ TRANSPOSE_NV = 0x862C
+ INVERSE_TRANSPOSE_NV = 0x862D
+ MAX_TRACK_MATRIX_STACK_DEPTH_NV = 0x862E
+ MAX_TRACK_MATRICES_NV = 0x862F
+ MATRIX0_NV = 0x8630
+ MATRIX1_NV = 0x8631
+ MATRIX2_NV = 0x8632
+ MATRIX3_NV = 0x8633
+ MATRIX4_NV = 0x8634
+ MATRIX5_NV = 0x8635
+ MATRIX6_NV = 0x8636
+ MATRIX7_NV = 0x8637
+##################
+#
+# Reserved:
+#
+# MATRIX8_NV = 0x8638
+# MATRIX9_NV = 0x8639
+# MATRIX10_NV = 0x863A
+# MATRIX11_NV = 0x863B
+# MATRIX12_NV = 0x863C
+# MATRIX13_NV = 0x863D
+# MATRIX14_NV = 0x863E
+# MATRIX15_NV = 0x863F
+#
+###################
+ CURRENT_MATRIX_STACK_DEPTH_NV = 0x8640
+ CURRENT_MATRIX_NV = 0x8641
+ VERTEX_PROGRAM_POINT_SIZE_NV = 0x8642
+ VERTEX_PROGRAM_TWO_SIDE_NV = 0x8643
+ PROGRAM_PARAMETER_NV = 0x8644
+ ATTRIB_ARRAY_POINTER_NV = 0x8645
+ PROGRAM_TARGET_NV = 0x8646
+ PROGRAM_RESIDENT_NV = 0x8647
+ TRACK_MATRIX_NV = 0x8648
+ TRACK_MATRIX_TRANSFORM_NV = 0x8649
+ VERTEX_PROGRAM_BINDING_NV = 0x864A
+ PROGRAM_ERROR_POSITION_NV = 0x864B
+ VERTEX_ATTRIB_ARRAY0_NV = 0x8650
+ VERTEX_ATTRIB_ARRAY1_NV = 0x8651
+ VERTEX_ATTRIB_ARRAY2_NV = 0x8652
+ VERTEX_ATTRIB_ARRAY3_NV = 0x8653
+ VERTEX_ATTRIB_ARRAY4_NV = 0x8654
+ VERTEX_ATTRIB_ARRAY5_NV = 0x8655
+ VERTEX_ATTRIB_ARRAY6_NV = 0x8656
+ VERTEX_ATTRIB_ARRAY7_NV = 0x8657
+ VERTEX_ATTRIB_ARRAY8_NV = 0x8658
+ VERTEX_ATTRIB_ARRAY9_NV = 0x8659
+ VERTEX_ATTRIB_ARRAY10_NV = 0x865A
+ VERTEX_ATTRIB_ARRAY11_NV = 0x865B
+ VERTEX_ATTRIB_ARRAY12_NV = 0x865C
+ VERTEX_ATTRIB_ARRAY13_NV = 0x865D
+ VERTEX_ATTRIB_ARRAY14_NV = 0x865E
+ VERTEX_ATTRIB_ARRAY15_NV = 0x865F
+ MAP1_VERTEX_ATTRIB0_4_NV = 0x8660
+ MAP1_VERTEX_ATTRIB1_4_NV = 0x8661
+ MAP1_VERTEX_ATTRIB2_4_NV = 0x8662
+ MAP1_VERTEX_ATTRIB3_4_NV = 0x8663
+ MAP1_VERTEX_ATTRIB4_4_NV = 0x8664
+ MAP1_VERTEX_ATTRIB5_4_NV = 0x8665
+ MAP1_VERTEX_ATTRIB6_4_NV = 0x8666
+ MAP1_VERTEX_ATTRIB7_4_NV = 0x8667
+ MAP1_VERTEX_ATTRIB8_4_NV = 0x8668
+ MAP1_VERTEX_ATTRIB9_4_NV = 0x8669
+ MAP1_VERTEX_ATTRIB10_4_NV = 0x866A
+ MAP1_VERTEX_ATTRIB11_4_NV = 0x866B
+ MAP1_VERTEX_ATTRIB12_4_NV = 0x866C
+ MAP1_VERTEX_ATTRIB13_4_NV = 0x866D
+ MAP1_VERTEX_ATTRIB14_4_NV = 0x866E
+ MAP1_VERTEX_ATTRIB15_4_NV = 0x866F
+ MAP2_VERTEX_ATTRIB0_4_NV = 0x8670
+ MAP2_VERTEX_ATTRIB1_4_NV = 0x8671
+ MAP2_VERTEX_ATTRIB2_4_NV = 0x8672
+ MAP2_VERTEX_ATTRIB3_4_NV = 0x8673
+ MAP2_VERTEX_ATTRIB4_4_NV = 0x8674
+ MAP2_VERTEX_ATTRIB5_4_NV = 0x8675
+ MAP2_VERTEX_ATTRIB6_4_NV = 0x8676
+ MAP2_VERTEX_ATTRIB7_4_NV = 0x8677
+ MAP2_VERTEX_ATTRIB8_4_NV = 0x8678
+ MAP2_VERTEX_ATTRIB9_4_NV = 0x8679
+ MAP2_VERTEX_ATTRIB10_4_NV = 0x867A
+ MAP2_VERTEX_ATTRIB11_4_NV = 0x867B
+ MAP2_VERTEX_ATTRIB12_4_NV = 0x867C
+ MAP2_VERTEX_ATTRIB13_4_NV = 0x867D
+ MAP2_VERTEX_ATTRIB14_4_NV = 0x867E
+ MAP2_VERTEX_ATTRIB15_4_NV = 0x867F
+
+# NV_texture_shader (additional; see below): 0x864C-0x864E
+
+VERSION_3_2 enum:
+ PROGRAM_POINT_SIZE = 0x8642
+
+ARB_geometry_shader4 enum: (additional; see below)
+ PROGRAM_POINT_SIZE_ARB = 0x8642
+
+NV_geometry_program4 enum: (additional; see below)
+ PROGRAM_POINT_SIZE_EXT = 0x8642
+
+VERSION_3_2 enum:
+ use ARB_depth_clamp DEPTH_CLAMP
+
+ARB_depth_clamp enum:
+ DEPTH_CLAMP = 0x864F
+
+NV_depth_clamp enum:
+ DEPTH_CLAMP_NV = 0x864F
+
+VERSION_2_0 enum: (Promoted from ARB_vertex_shader; only some values)
+ VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622 # VERSION_2_0
+ VERTEX_ATTRIB_ARRAY_SIZE = 0x8623 # VERSION_2_0
+ VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624 # VERSION_2_0
+ VERTEX_ATTRIB_ARRAY_TYPE = 0x8625 # VERSION_2_0
+ CURRENT_VERTEX_ATTRIB = 0x8626 # VERSION_2_0
+ VERTEX_PROGRAM_POINT_SIZE = 0x8642 # VERSION_2_0
+ VERTEX_PROGRAM_TWO_SIDE = 0x8643 # VERSION_2_0
+ VERTEX_ATTRIB_ARRAY_POINTER = 0x8645 # VERSION_2_0
+
+ARB_vertex_program enum: (additional; see above; reuses NV_vertex_program values)
+ARB_fragment_program enum: (additional; only some values; see below)
+# (Unfortunately, PROGRAM_BINDING_ARB does accidentally reuse 0x8677)
+ VERTEX_PROGRAM_ARB = 0x8620
+ VERTEX_ATTRIB_ARRAY_ENABLED_ARB = 0x8622
+ VERTEX_ATTRIB_ARRAY_SIZE_ARB = 0x8623
+ VERTEX_ATTRIB_ARRAY_STRIDE_ARB = 0x8624
+ VERTEX_ATTRIB_ARRAY_TYPE_ARB = 0x8625
+ CURRENT_VERTEX_ATTRIB_ARB = 0x8626
+ PROGRAM_LENGTH_ARB = 0x8627 # ARB_fragment_program
+ PROGRAM_STRING_ARB = 0x8628 # ARB_fragment_program
+ MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E # ARB_fragment_program
+ MAX_PROGRAM_MATRICES_ARB = 0x862F # ARB_fragment_program
+ CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640 # ARB_fragment_program
+ CURRENT_MATRIX_ARB = 0x8641 # ARB_fragment_program
+ VERTEX_PROGRAM_POINT_SIZE_ARB = 0x8642
+ VERTEX_PROGRAM_TWO_SIDE_ARB = 0x8643
+ VERTEX_ATTRIB_ARRAY_POINTER_ARB = 0x8645
+ PROGRAM_ERROR_POSITION_ARB = 0x864B # ARB_fragment_program
+ PROGRAM_BINDING_ARB = 0x8677 # ARB_fragment_program
+
+###############################################################################
+
+# Pixelfusion: 0x8680-0x869F
+
+###############################################################################
+
+# OpenGL ARB: 0x86A0-0x86AF
+
+# ARB_texture_compression/1.3 (additional; see above): 0x86A0-0x86A3
+
+ARB_vertex_blend enum:
+ MAX_VERTEX_UNITS_ARB = 0x86A4
+ ACTIVE_VERTEX_UNITS_ARB = 0x86A5
+ WEIGHT_SUM_UNITY_ARB = 0x86A6
+ VERTEX_BLEND_ARB = 0x86A7
+ CURRENT_WEIGHT_ARB = 0x86A8
+ WEIGHT_ARRAY_TYPE_ARB = 0x86A9
+ WEIGHT_ARRAY_STRIDE_ARB = 0x86AA
+ WEIGHT_ARRAY_SIZE_ARB = 0x86AB
+ WEIGHT_ARRAY_POINTER_ARB = 0x86AC
+ WEIGHT_ARRAY_ARB = 0x86AD
+# Note: MODELVIEW0/1 are defined in other extensions, but not as ARB)
+ MODELVIEW0_ARB = 0x1700
+ MODELVIEW1_ARB = 0x850A
+ MODELVIEW2_ARB = 0x8722
+ MODELVIEW3_ARB = 0x8723
+ MODELVIEW4_ARB = 0x8724
+ MODELVIEW5_ARB = 0x8725
+ MODELVIEW6_ARB = 0x8726
+ MODELVIEW7_ARB = 0x8727
+ MODELVIEW8_ARB = 0x8728
+ MODELVIEW9_ARB = 0x8729
+ MODELVIEW10_ARB = 0x872A
+ MODELVIEW11_ARB = 0x872B
+ MODELVIEW12_ARB = 0x872C
+ MODELVIEW13_ARB = 0x872D
+ MODELVIEW14_ARB = 0x872E
+ MODELVIEW15_ARB = 0x872F
+ MODELVIEW16_ARB = 0x8730
+ MODELVIEW17_ARB = 0x8731
+ MODELVIEW18_ARB = 0x8732
+ MODELVIEW19_ARB = 0x8733
+ MODELVIEW20_ARB = 0x8734
+ MODELVIEW21_ARB = 0x8735
+ MODELVIEW22_ARB = 0x8736
+ MODELVIEW23_ARB = 0x8737
+ MODELVIEW24_ARB = 0x8738
+ MODELVIEW25_ARB = 0x8739
+ MODELVIEW26_ARB = 0x873A
+ MODELVIEW27_ARB = 0x873B
+ MODELVIEW28_ARB = 0x873C
+ MODELVIEW29_ARB = 0x873D
+ MODELVIEW30_ARB = 0x873E
+ MODELVIEW31_ARB = 0x873F
+
+# Aliases ARB_vertex_blend enums above
+OES_matrix_palette enum: (OpenGL ES only; additional; see below)
+ MAX_VERTEX_UNITS_OES = 0x86A4
+ WEIGHT_ARRAY_OES = 0x86AD
+ WEIGHT_ARRAY_TYPE_OES = 0x86A9
+ WEIGHT_ARRAY_STRIDE_OES = 0x86AA
+ WEIGHT_ARRAY_SIZE_OES = 0x86AB
+ WEIGHT_ARRAY_POINTER_OES = 0x86AC
+
+VERSION_1_3 enum: (Promoted for OpenGL 1.3)
+ DOT3_RGB = 0x86AE
+ DOT3_RGBA = 0x86AF
+
+ARB_texture_env_dot3 enum:
+ DOT3_RGB_ARB = 0x86AE
+ DOT3_RGBA_ARB = 0x86AF
+
+IMG_texture_env_enhanced_fixed_function enum: (OpenGL ES only; additional; see below)
+ DOT3_RGBA_IMG = 0x86AF
+
+###############################################################################
+
+# 3Dfx: 0x86B0-0x86BF
+
+3DFX_texture_compression_FXT1 enum:
+ COMPRESSED_RGB_FXT1_3DFX = 0x86B0
+ COMPRESSED_RGBA_FXT1_3DFX = 0x86B1
+
+3DFX_multisample enum:
+ MULTISAMPLE_3DFX = 0x86B2
+ SAMPLE_BUFFERS_3DFX = 0x86B3
+ SAMPLES_3DFX = 0x86B4
+ MULTISAMPLE_BIT_3DFX = 0x20000000
+
+# 3DFX_future_use: 0x86B5-0x86BF
+
+###############################################################################
+
+# NVIDIA: 0x86C0-0x871F
+
+NV_evaluators enum:
+ EVAL_2D_NV = 0x86C0
+ EVAL_TRIANGULAR_2D_NV = 0x86C1
+ MAP_TESSELLATION_NV = 0x86C2
+ MAP_ATTRIB_U_ORDER_NV = 0x86C3
+ MAP_ATTRIB_V_ORDER_NV = 0x86C4
+ EVAL_FRACTIONAL_TESSELLATION_NV = 0x86C5
+ EVAL_VERTEX_ATRRIB0_NV = 0x86C6
+ EVAL_VERTEX_ATRRIB1_NV = 0x86C7
+ EVAL_VERTEX_ATRRIB2_NV = 0x86C8
+ EVAL_VERTEX_ATRRIB3_NV = 0x86C9
+ EVAL_VERTEX_ATRRIB4_NV = 0x86CA
+ EVAL_VERTEX_ATRRIB5_NV = 0x86CB
+ EVAL_VERTEX_ATRRIB6_NV = 0x86CC
+ EVAL_VERTEX_ATRRIB7_NV = 0x86CD
+ EVAL_VERTEX_ATRRIB8_NV = 0x86CE
+ EVAL_VERTEX_ATRRIB9_NV = 0x86CF
+ EVAL_VERTEX_ATRRIB10_NV = 0x86D0
+ EVAL_VERTEX_ATRRIB11_NV = 0x86D1
+ EVAL_VERTEX_ATRRIB12_NV = 0x86D2
+ EVAL_VERTEX_ATRRIB13_NV = 0x86D3
+ EVAL_VERTEX_ATRRIB14_NV = 0x86D4
+ EVAL_VERTEX_ATRRIB15_NV = 0x86D5
+ MAX_MAP_TESSELLATION_NV = 0x86D6
+ MAX_RATIONAL_EVAL_ORDER_NV = 0x86D7
+
+# NV_future_use: 0x86D8
+
+NV_texture_shader enum:
+ OFFSET_TEXTURE_RECTANGLE_NV = 0x864C
+ OFFSET_TEXTURE_RECTANGLE_SCALE_NV = 0x864D
+ DOT_PRODUCT_TEXTURE_RECTANGLE_NV = 0x864E
+ RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = 0x86D9
+ UNSIGNED_INT_S8_S8_8_8_NV = 0x86DA
+ UNSIGNED_INT_8_8_S8_S8_REV_NV = 0x86DB
+ DSDT_MAG_INTENSITY_NV = 0x86DC
+ SHADER_CONSISTENT_NV = 0x86DD
+ TEXTURE_SHADER_NV = 0x86DE
+ SHADER_OPERATION_NV = 0x86DF
+ CULL_MODES_NV = 0x86E0
+ OFFSET_TEXTURE_MATRIX_NV = 0x86E1
+ OFFSET_TEXTURE_SCALE_NV = 0x86E2
+ OFFSET_TEXTURE_BIAS_NV = 0x86E3
+ OFFSET_TEXTURE_2D_MATRIX_NV = GL_OFFSET_TEXTURE_MATRIX_NV
+ OFFSET_TEXTURE_2D_SCALE_NV = GL_OFFSET_TEXTURE_SCALE_NV
+ OFFSET_TEXTURE_2D_BIAS_NV = GL_OFFSET_TEXTURE_BIAS_NV
+ PREVIOUS_TEXTURE_INPUT_NV = 0x86E4
+ CONST_EYE_NV = 0x86E5
+ PASS_THROUGH_NV = 0x86E6
+ CULL_FRAGMENT_NV = 0x86E7
+ OFFSET_TEXTURE_2D_NV = 0x86E8
+ DEPENDENT_AR_TEXTURE_2D_NV = 0x86E9
+ DEPENDENT_GB_TEXTURE_2D_NV = 0x86EA
+ DOT_PRODUCT_NV = 0x86EC
+ DOT_PRODUCT_DEPTH_REPLACE_NV = 0x86ED
+ DOT_PRODUCT_TEXTURE_2D_NV = 0x86EE
+ DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = 0x86F0
+ DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = 0x86F1
+ DOT_PRODUCT_REFLECT_CUBE_MAP_NV = 0x86F2
+ DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = 0x86F3
+ HILO_NV = 0x86F4
+ DSDT_NV = 0x86F5
+ DSDT_MAG_NV = 0x86F6
+ DSDT_MAG_VIB_NV = 0x86F7
+ HILO16_NV = 0x86F8
+ SIGNED_HILO_NV = 0x86F9
+ SIGNED_HILO16_NV = 0x86FA
+ SIGNED_RGBA_NV = 0x86FB
+ SIGNED_RGBA8_NV = 0x86FC
+ SIGNED_RGB_NV = 0x86FE
+ SIGNED_RGB8_NV = 0x86FF
+ SIGNED_LUMINANCE_NV = 0x8701
+ SIGNED_LUMINANCE8_NV = 0x8702
+ SIGNED_LUMINANCE_ALPHA_NV = 0x8703
+ SIGNED_LUMINANCE8_ALPHA8_NV = 0x8704
+ SIGNED_ALPHA_NV = 0x8705
+ SIGNED_ALPHA8_NV = 0x8706
+ SIGNED_INTENSITY_NV = 0x8707
+ SIGNED_INTENSITY8_NV = 0x8708
+ DSDT8_NV = 0x8709
+ DSDT8_MAG8_NV = 0x870A
+ DSDT8_MAG8_INTENSITY8_NV = 0x870B
+ SIGNED_RGB_UNSIGNED_ALPHA_NV = 0x870C
+ SIGNED_RGB8_UNSIGNED_ALPHA8_NV = 0x870D
+ HI_SCALE_NV = 0x870E
+ LO_SCALE_NV = 0x870F
+ DS_SCALE_NV = 0x8710
+ DT_SCALE_NV = 0x8711
+ MAGNITUDE_SCALE_NV = 0x8712
+ VIBRANCE_SCALE_NV = 0x8713
+ HI_BIAS_NV = 0x8714
+ LO_BIAS_NV = 0x8715
+ DS_BIAS_NV = 0x8716
+ DT_BIAS_NV = 0x8717
+ MAGNITUDE_BIAS_NV = 0x8718
+ VIBRANCE_BIAS_NV = 0x8719
+ TEXTURE_BORDER_VALUES_NV = 0x871A
+ TEXTURE_HI_SIZE_NV = 0x871B
+ TEXTURE_LO_SIZE_NV = 0x871C
+ TEXTURE_DS_SIZE_NV = 0x871D
+ TEXTURE_DT_SIZE_NV = 0x871E
+ TEXTURE_MAG_SIZE_NV = 0x871F
+
+NV_texture_shader2 enum:
+ DOT_PRODUCT_TEXTURE_3D_NV = 0x86EF
+
+# NV_future_use: 0x86EB
+# NV_future_use: 0x86FD
+# NV_future_use: 0x8700
+
+###############################################################################
+
+# OpenGL ARB: 0x8720-0x873F
+
+# ARB_vertex_blend (additional; see above): 0x8720-0x873F
+
+###############################################################################
+
+# ATI: 0x8740-0x874F
+
+EXT_texture_env_dot3 enum:
+ DOT3_RGB_EXT = 0x8740
+ DOT3_RGBA_EXT = 0x8741
+
+# There's a collision between AMD_program_binary_Z400 and EXT_texture_env_dot3!
+AMD_program_binary_Z400 enum: (OpenGL ES only)
+ Z400_BINARY_AMD = 0x8740
+
+# There's a collision between OES_get_program_binary and EXT_texture_env_dot3!
+OES_get_program_binary enum: (OpenGL ES only; additional; see below)
+ PROGRAM_BINARY_LENGTH_OES = 0x8741
+
+ATI_texture_mirror_once enum:
+ MIRROR_CLAMP_ATI = 0x8742
+ MIRROR_CLAMP_TO_EDGE_ATI = 0x8743
+
+EXT_texture_mirror_clamp enum:
+ MIRROR_CLAMP_EXT = 0x8742
+ MIRROR_CLAMP_TO_EDGE_EXT = 0x8743
+
+ATI_texture_env_combine3 enum:
+ MODULATE_ADD_ATI = 0x8744
+ MODULATE_SIGNED_ADD_ATI = 0x8745
+ MODULATE_SUBTRACT_ATI = 0x8746
+
+# ATI_future_use: 0x8747-0x874F
+
+###############################################################################
+
+# MESA: 0x8750-0x875F
+
+MESA_packed_depth_stencil enum:
+ DEPTH_STENCIL_MESA = 0x8750
+ UNSIGNED_INT_24_8_MESA = 0x8751
+ UNSIGNED_INT_8_24_REV_MESA = 0x8752
+ UNSIGNED_SHORT_15_1_MESA = 0x8753
+ UNSIGNED_SHORT_1_15_REV_MESA = 0x8754
+
+MESA_trace enum:
+ TRACE_ALL_BITS_MESA = 0xFFFF
+ TRACE_OPERATIONS_BIT_MESA = 0x0001
+ TRACE_PRIMITIVES_BIT_MESA = 0x0002
+ TRACE_ARRAYS_BIT_MESA = 0x0004
+ TRACE_TEXTURES_BIT_MESA = 0x0008
+ TRACE_PIXELS_BIT_MESA = 0x0010
+ TRACE_ERRORS_BIT_MESA = 0x0020
+ TRACE_MASK_MESA = 0x8755
+ TRACE_NAME_MESA = 0x8756
+
+MESA_ycbcr_texture enum:
+ YCBCR_MESA = 0x8757
+
+MESA_pack_invert enum:
+ PACK_INVERT_MESA = 0x8758
+
+MESAX_texture_stack enum:
+ TEXTURE_1D_STACK_MESAX = 0x8759
+ TEXTURE_2D_STACK_MESAX = 0x875A
+ PROXY_TEXTURE_1D_STACK_MESAX = 0x875B
+ PROXY_TEXTURE_2D_STACK_MESAX = 0x875C
+ TEXTURE_1D_STACK_BINDING_MESAX = 0x875D
+ TEXTURE_2D_STACK_BINDING_MESAX = 0x875E
+
+MESA_shader_debug enum:
+ DEBUG_OBJECT_MESA = 0x8759
+ DEBUG_PRINT_MESA = 0x875A
+ DEBUG_ASSERT_MESA = 0x875B
+
+# MESA_future_use: 0x875F
+
+###############################################################################
+
+# ATI: 0x8760-0x883F
+
+ATI_vertex_array_object enum:
+ STATIC_ATI = 0x8760
+ DYNAMIC_ATI = 0x8761
+ PRESERVE_ATI = 0x8762
+ DISCARD_ATI = 0x8763
+ OBJECT_BUFFER_SIZE_ATI = 0x8764
+ OBJECT_BUFFER_USAGE_ATI = 0x8765
+ ARRAY_OBJECT_BUFFER_ATI = 0x8766
+ ARRAY_OBJECT_OFFSET_ATI = 0x8767
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+ BUFFER_SIZE = 0x8764
+ BUFFER_USAGE = 0x8765
+
+ARB_vertex_buffer_object enum: (additional; aliases some ATI enums; see below)
+ BUFFER_SIZE_ARB = 0x8764
+ BUFFER_USAGE_ARB = 0x8765
+
+ATI_element_array enum:
+ ELEMENT_ARRAY_ATI = 0x8768
+ ELEMENT_ARRAY_TYPE_ATI = 0x8769
+ ELEMENT_ARRAY_POINTER_ATI = 0x876A
+
+# @@@ (extends ATI_element_array, I think???)
+APPLE_element_array enum:
+ ELEMENT_ARRAY_APPLE = 0x8768
+ ELEMENT_ARRAY_TYPE_APPLE = 0x8769
+ ELEMENT_ARRAY_POINTER_APPLE = 0x876A
+
+ATI_vertex_streams enum:
+ MAX_VERTEX_STREAMS_ATI = 0x876B
+ VERTEX_STREAM0_ATI = 0x876C
+ VERTEX_STREAM1_ATI = 0x876D
+ VERTEX_STREAM2_ATI = 0x876E
+ VERTEX_STREAM3_ATI = 0x876F
+ VERTEX_STREAM4_ATI = 0x8770
+ VERTEX_STREAM5_ATI = 0x8771
+ VERTEX_STREAM6_ATI = 0x8772
+ VERTEX_STREAM7_ATI = 0x8773
+ VERTEX_SOURCE_ATI = 0x8774
+
+ATI_envmap_bumpmap enum:
+ BUMP_ROT_MATRIX_ATI = 0x8775
+ BUMP_ROT_MATRIX_SIZE_ATI = 0x8776
+ BUMP_NUM_TEX_UNITS_ATI = 0x8777
+ BUMP_TEX_UNITS_ATI = 0x8778
+ DUDV_ATI = 0x8779
+ DU8DV8_ATI = 0x877A
+ BUMP_ENVMAP_ATI = 0x877B
+ BUMP_TARGET_ATI = 0x877C
+
+# ATI_future_use: 0x877D-0x877F
+
+EXT_vertex_shader enum:
+ VERTEX_SHADER_EXT = 0x8780
+ VERTEX_SHADER_BINDING_EXT = 0x8781
+ OP_INDEX_EXT = 0x8782
+ OP_NEGATE_EXT = 0x8783
+ OP_DOT3_EXT = 0x8784
+ OP_DOT4_EXT = 0x8785
+ OP_MUL_EXT = 0x8786
+ OP_ADD_EXT = 0x8787
+ OP_MADD_EXT = 0x8788
+ OP_FRAC_EXT = 0x8789
+ OP_MAX_EXT = 0x878A
+ OP_MIN_EXT = 0x878B
+ OP_SET_GE_EXT = 0x878C
+ OP_SET_LT_EXT = 0x878D
+ OP_CLAMP_EXT = 0x878E
+ OP_FLOOR_EXT = 0x878F
+ OP_ROUND_EXT = 0x8790
+ OP_EXP_BASE_2_EXT = 0x8791
+ OP_LOG_BASE_2_EXT = 0x8792
+ OP_POWER_EXT = 0x8793
+ OP_RECIP_EXT = 0x8794
+ OP_RECIP_SQRT_EXT = 0x8795
+ OP_SUB_EXT = 0x8796
+ OP_CROSS_PRODUCT_EXT = 0x8797
+ OP_MULTIPLY_MATRIX_EXT = 0x8798
+ OP_MOV_EXT = 0x8799
+ OUTPUT_VERTEX_EXT = 0x879A
+ OUTPUT_COLOR0_EXT = 0x879B
+ OUTPUT_COLOR1_EXT = 0x879C
+ OUTPUT_TEXTURE_COORD0_EXT = 0x879D
+ OUTPUT_TEXTURE_COORD1_EXT = 0x879E
+ OUTPUT_TEXTURE_COORD2_EXT = 0x879F
+ OUTPUT_TEXTURE_COORD3_EXT = 0x87A0
+ OUTPUT_TEXTURE_COORD4_EXT = 0x87A1
+ OUTPUT_TEXTURE_COORD5_EXT = 0x87A2
+ OUTPUT_TEXTURE_COORD6_EXT = 0x87A3
+ OUTPUT_TEXTURE_COORD7_EXT = 0x87A4
+ OUTPUT_TEXTURE_COORD8_EXT = 0x87A5
+ OUTPUT_TEXTURE_COORD9_EXT = 0x87A6
+ OUTPUT_TEXTURE_COORD10_EXT = 0x87A7
+ OUTPUT_TEXTURE_COORD11_EXT = 0x87A8
+ OUTPUT_TEXTURE_COORD12_EXT = 0x87A9
+ OUTPUT_TEXTURE_COORD13_EXT = 0x87AA
+ OUTPUT_TEXTURE_COORD14_EXT = 0x87AB
+ OUTPUT_TEXTURE_COORD15_EXT = 0x87AC
+ OUTPUT_TEXTURE_COORD16_EXT = 0x87AD
+ OUTPUT_TEXTURE_COORD17_EXT = 0x87AE
+ OUTPUT_TEXTURE_COORD18_EXT = 0x87AF
+ OUTPUT_TEXTURE_COORD19_EXT = 0x87B0
+ OUTPUT_TEXTURE_COORD20_EXT = 0x87B1
+ OUTPUT_TEXTURE_COORD21_EXT = 0x87B2
+ OUTPUT_TEXTURE_COORD22_EXT = 0x87B3
+ OUTPUT_TEXTURE_COORD23_EXT = 0x87B4
+ OUTPUT_TEXTURE_COORD24_EXT = 0x87B5
+ OUTPUT_TEXTURE_COORD25_EXT = 0x87B6
+ OUTPUT_TEXTURE_COORD26_EXT = 0x87B7
+ OUTPUT_TEXTURE_COORD27_EXT = 0x87B8
+ OUTPUT_TEXTURE_COORD28_EXT = 0x87B9
+ OUTPUT_TEXTURE_COORD29_EXT = 0x87BA
+ OUTPUT_TEXTURE_COORD30_EXT = 0x87BB
+ OUTPUT_TEXTURE_COORD31_EXT = 0x87BC
+ OUTPUT_FOG_EXT = 0x87BD
+ SCALAR_EXT = 0x87BE
+ VECTOR_EXT = 0x87BF
+ MATRIX_EXT = 0x87C0
+ VARIANT_EXT = 0x87C1
+ INVARIANT_EXT = 0x87C2
+ LOCAL_CONSTANT_EXT = 0x87C3
+ LOCAL_EXT = 0x87C4
+ MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87C5
+ MAX_VERTEX_SHADER_VARIANTS_EXT = 0x87C6
+ MAX_VERTEX_SHADER_INVARIANTS_EXT = 0x87C7
+ MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87C8
+ MAX_VERTEX_SHADER_LOCALS_EXT = 0x87C9
+ MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CA
+ MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = 0x87CB
+ MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC
+ MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = 0x87CD
+ MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = 0x87CE
+ VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CF
+ VERTEX_SHADER_VARIANTS_EXT = 0x87D0
+ VERTEX_SHADER_INVARIANTS_EXT = 0x87D1
+ VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87D2
+ VERTEX_SHADER_LOCALS_EXT = 0x87D3
+ VERTEX_SHADER_OPTIMIZED_EXT = 0x87D4
+ X_EXT = 0x87D5
+ Y_EXT = 0x87D6
+ Z_EXT = 0x87D7
+ W_EXT = 0x87D8
+ NEGATIVE_X_EXT = 0x87D9
+ NEGATIVE_Y_EXT = 0x87DA
+ NEGATIVE_Z_EXT = 0x87DB
+ NEGATIVE_W_EXT = 0x87DC
+ ZERO_EXT = 0x87DD
+ ONE_EXT = 0x87DE
+ NEGATIVE_ONE_EXT = 0x87DF
+ NORMALIZED_RANGE_EXT = 0x87E0
+ FULL_RANGE_EXT = 0x87E1
+ CURRENT_VERTEX_EXT = 0x87E2
+ MVP_MATRIX_EXT = 0x87E3
+ VARIANT_VALUE_EXT = 0x87E4
+ VARIANT_DATATYPE_EXT = 0x87E5
+ VARIANT_ARRAY_STRIDE_EXT = 0x87E6
+ VARIANT_ARRAY_TYPE_EXT = 0x87E7
+ VARIANT_ARRAY_EXT = 0x87E8
+ VARIANT_ARRAY_POINTER_EXT = 0x87E9
+ INVARIANT_VALUE_EXT = 0x87EA
+ INVARIANT_DATATYPE_EXT = 0x87EB
+ LOCAL_CONSTANT_VALUE_EXT = 0x87EC
+ LOCAL_CONSTANT_DATATYPE_EXT = 0x87ED
+
+AMD_compressed_ATC_texture enum: (OpenGL ES only) (additional; see below)
+ ATC_RGBA_INTERPOLATED_ALPHA_AMD = 0x87EE
+
+ATI_pn_triangles enum:
+ PN_TRIANGLES_ATI = 0x87F0
+ MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F1
+ PN_TRIANGLES_POINT_MODE_ATI = 0x87F2
+ PN_TRIANGLES_NORMAL_MODE_ATI = 0x87F3
+ PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F4
+ PN_TRIANGLES_POINT_MODE_LINEAR_ATI = 0x87F5
+ PN_TRIANGLES_POINT_MODE_CUBIC_ATI = 0x87F6
+ PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = 0x87F7
+ PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = 0x87F8
+
+AMD_compressed_3DC_texture enum: (OpenGL ES only)
+ 3DC_X_AMD = 0x87F9
+ 3DC_XY_AMD = 0x87FA
+
+ATI_meminfo enum:
+ VBO_FREE_MEMORY_ATI = 0x87FB
+ TEXTURE_FREE_MEMORY_ATI = 0x87FC
+ RENDERBUFFER_FREE_MEMORY_ATI = 0x87FD
+
+OES_get_program_binary enum: (OpenGL ES only;
+ NUM_PROGRAM_BINARY_FORMATS_OES = 0x87FE
+ PROGRAM_BINARY_FORMATS_OES = 0x87FF
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+ STENCIL_BACK_FUNC = 0x8800 # VERSION_2_0
+ STENCIL_BACK_FAIL = 0x8801 # VERSION_2_0
+ STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802 # VERSION_2_0
+ STENCIL_BACK_PASS_DEPTH_PASS = 0x8803 # VERSION_2_0
+ STENCIL_BACK_FAIL_ATI = 0x8801
+
+ATI_separate_stencil enum:
+ STENCIL_BACK_FUNC_ATI = 0x8800
+ STENCIL_BACK_PASS_DEPTH_FAIL_ATI = 0x8802
+ STENCIL_BACK_PASS_DEPTH_PASS_ATI = 0x8803
+
+ARB_fragment_program enum:
+ FRAGMENT_PROGRAM_ARB = 0x8804
+ PROGRAM_ALU_INSTRUCTIONS_ARB = 0x8805
+ PROGRAM_TEX_INSTRUCTIONS_ARB = 0x8806
+ PROGRAM_TEX_INDIRECTIONS_ARB = 0x8807
+ PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x8808
+ PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x8809
+ PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x880A
+ MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x880B
+ MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x880C
+ MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 0x880D
+ MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x880E
+ MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x880F
+ MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x8810
+
+# ATI_future_use: 0x8811-0x8813
+
+VERSION_3_0 enum:
+ RGBA32F = 0x8814 # VERSION_3_0
+ RGB32F = 0x8815 # VERSION_3_0
+ RGBA16F = 0x881A # VERSION_3_0
+ RGB16F = 0x881B # VERSION_3_0
+
+ARB_texture_float enum:
+ RGBA32F_ARB = 0x8814
+ RGB32F_ARB = 0x8815
+ ALPHA32F_ARB = 0x8816
+ INTENSITY32F_ARB = 0x8817
+ LUMINANCE32F_ARB = 0x8818
+ LUMINANCE_ALPHA32F_ARB = 0x8819
+ RGBA16F_ARB = 0x881A
+ RGB16F_ARB = 0x881B
+ ALPHA16F_ARB = 0x881C
+ INTENSITY16F_ARB = 0x881D
+ LUMINANCE16F_ARB = 0x881E
+ LUMINANCE_ALPHA16F_ARB = 0x881F
+
+ATI_texture_float enum:
+ RGBA_FLOAT32_ATI = 0x8814
+ RGB_FLOAT32_ATI = 0x8815
+ ALPHA_FLOAT32_ATI = 0x8816
+ INTENSITY_FLOAT32_ATI = 0x8817
+ LUMINANCE_FLOAT32_ATI = 0x8818
+ LUMINANCE_ALPHA_FLOAT32_ATI = 0x8819
+ RGBA_FLOAT16_ATI = 0x881A
+ RGB_FLOAT16_ATI = 0x881B
+ ALPHA_FLOAT16_ATI = 0x881C
+ INTENSITY_FLOAT16_ATI = 0x881D
+ LUMINANCE_FLOAT16_ATI = 0x881E
+ LUMINANCE_ALPHA_FLOAT16_ATI = 0x881F
+
+APPLE_float_pixels enum: (additional; see below)
+ RGBA_FLOAT32_APPLE = 0x8814
+ RGB_FLOAT32_APPLE = 0x8815
+ ALPHA_FLOAT32_APPLE = 0x8816
+ INTENSITY_FLOAT32_APPLE = 0x8817
+ LUMINANCE_FLOAT32_APPLE = 0x8818
+ LUMINANCE_ALPHA_FLOAT32_APPLE = 0x8819
+ RGBA_FLOAT16_APPLE = 0x881A
+ RGB_FLOAT16_APPLE = 0x881B
+ ALPHA_FLOAT16_APPLE = 0x881C
+ INTENSITY_FLOAT16_APPLE = 0x881D
+ LUMINANCE_FLOAT16_APPLE = 0x881E
+ LUMINANCE_ALPHA_FLOAT16_APPLE = 0x881F
+
+ARB_color_buffer_float enum:
+ RGBA_FLOAT_MODE_ARB = 0x8820 # Equivalent to TYPE_RGBA_FLOAT_ATI
+
+ATI_pixel_format_float enum: (really WGL_ATI_pixel_format_float)
+ TYPE_RGBA_FLOAT_ATI = 0x8820
+
+# ATI_future_use: 0x8821-0x8822
+
+QCOM_writeonly_rendering enum: (OpenGL ES only)
+ WRITEONLY_RENDERING_QCOM = 0x8823
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+ MAX_DRAW_BUFFERS = 0x8824 # VERSION_2_0
+ DRAW_BUFFER0 = 0x8825 # VERSION_2_0
+ DRAW_BUFFER1 = 0x8826 # VERSION_2_0
+ DRAW_BUFFER2 = 0x8827 # VERSION_2_0
+ DRAW_BUFFER3 = 0x8828 # VERSION_2_0
+ DRAW_BUFFER4 = 0x8829 # VERSION_2_0
+ DRAW_BUFFER5 = 0x882A # VERSION_2_0
+ DRAW_BUFFER6 = 0x882B # VERSION_2_0
+ DRAW_BUFFER7 = 0x882C # VERSION_2_0
+ DRAW_BUFFER8 = 0x882D # VERSION_2_0
+ DRAW_BUFFER9 = 0x882E # VERSION_2_0
+ DRAW_BUFFER10 = 0x882F # VERSION_2_0
+ DRAW_BUFFER11 = 0x8830 # VERSION_2_0
+ DRAW_BUFFER12 = 0x8831 # VERSION_2_0
+ DRAW_BUFFER13 = 0x8832 # VERSION_2_0
+ DRAW_BUFFER14 = 0x8833 # VERSION_2_0
+ DRAW_BUFFER15 = 0x8834 # VERSION_2_0
+
+ARB_draw_buffers enum:
+ MAX_DRAW_BUFFERS_ARB = 0x8824
+ DRAW_BUFFER0_ARB = 0x8825
+ DRAW_BUFFER1_ARB = 0x8826
+ DRAW_BUFFER2_ARB = 0x8827
+ DRAW_BUFFER3_ARB = 0x8828
+ DRAW_BUFFER4_ARB = 0x8829
+ DRAW_BUFFER5_ARB = 0x882A
+ DRAW_BUFFER6_ARB = 0x882B
+ DRAW_BUFFER7_ARB = 0x882C
+ DRAW_BUFFER8_ARB = 0x882D
+ DRAW_BUFFER9_ARB = 0x882E
+ DRAW_BUFFER10_ARB = 0x882F
+ DRAW_BUFFER11_ARB = 0x8830
+ DRAW_BUFFER12_ARB = 0x8831
+ DRAW_BUFFER13_ARB = 0x8832
+ DRAW_BUFFER14_ARB = 0x8833
+ DRAW_BUFFER15_ARB = 0x8834
+
+ATI_draw_buffers enum:
+ MAX_DRAW_BUFFERS_ATI = 0x8824
+ DRAW_BUFFER0_ATI = 0x8825
+ DRAW_BUFFER1_ATI = 0x8826
+ DRAW_BUFFER2_ATI = 0x8827
+ DRAW_BUFFER3_ATI = 0x8828
+ DRAW_BUFFER4_ATI = 0x8829
+ DRAW_BUFFER5_ATI = 0x882A
+ DRAW_BUFFER6_ATI = 0x882B
+ DRAW_BUFFER7_ATI = 0x882C
+ DRAW_BUFFER8_ATI = 0x882D
+ DRAW_BUFFER9_ATI = 0x882E
+ DRAW_BUFFER10_ATI = 0x882F
+ DRAW_BUFFER11_ATI = 0x8830
+ DRAW_BUFFER12_ATI = 0x8831
+ DRAW_BUFFER13_ATI = 0x8832
+ DRAW_BUFFER14_ATI = 0x8833
+ DRAW_BUFFER15_ATI = 0x8834
+
+ATI_pixel_format_float enum: (really WGL_ATI_pixel_format_float) (additional; see above)
+ COLOR_CLEAR_UNCLAMPED_VALUE_ATI = 0x8835
+
+# ATI_future_use: 0x8836-0x883F
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+ BLEND_EQUATION_ALPHA = 0x883D # VERSION_2_0
+
+EXT_blend_equation_separate enum:
+ BLEND_EQUATION_ALPHA_EXT = 0x883D
+
+# Aliases EXT_blend_equation_separate enum above
+OES_blend_equation_separate enum: (OpenGL ES only)
+ BLEND_EQUATION_ALPHA_OES = 0x883D
+
+###############################################################################
+
+# OpenGL ARB: 0x8840-0x884F
+
+ARB_matrix_palette enum:
+ MATRIX_PALETTE_ARB = 0x8840
+ MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x8841
+ MAX_PALETTE_MATRICES_ARB = 0x8842
+ CURRENT_PALETTE_MATRIX_ARB = 0x8843
+ MATRIX_INDEX_ARRAY_ARB = 0x8844
+ CURRENT_MATRIX_INDEX_ARB = 0x8845
+ MATRIX_INDEX_ARRAY_SIZE_ARB = 0x8846
+ MATRIX_INDEX_ARRAY_TYPE_ARB = 0x8847
+ MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x8848
+ MATRIX_INDEX_ARRAY_POINTER_ARB = 0x8849
+
+# Aliases ARB_matrix_palette enums above
+OES_matrix_palette enum: (OpenGL ES only; additional; see below)
+ MATRIX_PALETTE_OES = 0x8840
+ MAX_PALETTE_MATRICES_OES = 0x8842
+ CURRENT_PALETTE_MATRIX_OES = 0x8843
+ MATRIX_INDEX_ARRAY_OES = 0x8844
+ MATRIX_INDEX_ARRAY_SIZE_OES = 0x8846
+ MATRIX_INDEX_ARRAY_TYPE_OES = 0x8847
+ MATRIX_INDEX_ARRAY_STRIDE_OES = 0x8848
+ MATRIX_INDEX_ARRAY_POINTER_OES = 0x8849
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ TEXTURE_DEPTH_SIZE = 0x884A
+ DEPTH_TEXTURE_MODE = 0x884B
+
+ARB_depth_texture enum:
+ TEXTURE_DEPTH_SIZE_ARB = 0x884A
+ DEPTH_TEXTURE_MODE_ARB = 0x884B
+
+VERSION_3_0 enum: (aliases)
+ COMPARE_REF_TO_TEXTURE = 0x884E # VERSION_3_0 # alias GL_COMPARE_R_TO_TEXTURE_ARB
+
+VERSION_1_4 enum: (Promoted for OpenGL 1.4)
+ TEXTURE_COMPARE_MODE = 0x884C
+ TEXTURE_COMPARE_FUNC = 0x884D
+ COMPARE_R_TO_TEXTURE = 0x884E
+
+ARB_shadow enum:
+ TEXTURE_COMPARE_MODE_ARB = 0x884C
+ TEXTURE_COMPARE_FUNC_ARB = 0x884D
+ COMPARE_R_TO_TEXTURE_ARB = 0x884E
+
+EXT_texture_array enum: (additional; see below)
+ COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x884E
+
+VERSION_3_2 enum:
+ use ARB_seamless_cube_map TEXTURE_CUBE_MAP_SEAMLESS
+
+ARB_seamless_cube_map enum:
+ TEXTURE_CUBE_MAP_SEAMLESS = 0x884F
+
+###############################################################################
+
+# NVIDIA: 0x8850-0x891F
+
+NV_texture_shader3 enum:
+ OFFSET_PROJECTIVE_TEXTURE_2D_NV = 0x8850
+ OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = 0x8851
+ OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8852
+ OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = 0x8853
+ OFFSET_HILO_TEXTURE_2D_NV = 0x8854
+ OFFSET_HILO_TEXTURE_RECTANGLE_NV = 0x8855
+ OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = 0x8856
+ OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8857
+ DEPENDENT_HILO_TEXTURE_2D_NV = 0x8858
+ DEPENDENT_RGB_TEXTURE_3D_NV = 0x8859
+ DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = 0x885A
+ DOT_PRODUCT_PASS_THROUGH_NV = 0x885B
+ DOT_PRODUCT_TEXTURE_1D_NV = 0x885C
+ DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = 0x885D
+ HILO8_NV = 0x885E
+ SIGNED_HILO8_NV = 0x885F
+ FORCE_BLUE_TO_ONE_NV = 0x8860
+
+VERSION_2_0 enum: (Promoted for OpenGL 2.0)
+ POINT_SPRITE = 0x8861 # VERSION_2_0
+ COORD_REPLACE = 0x8862 # VERSION_2_0
+
+ARB_point_sprite enum:
+ POINT_SPRITE_ARB = 0x8861
+ COORD_REPLACE_ARB = 0x8862
+
+NV_point_sprite enum:
+ POINT_SPRITE_NV = 0x8861
+ COORD_REPLACE_NV = 0x8862
+
+# Aliases ARB_point_sprite enums above
+OES_point_sprite enum: (OpenGL ES only)
+ POINT_SPRITE_ARB = 0x8861
+ COORD_REPLACE_ARB = 0x8862
+
+NV_point_sprite enum:
+ POINT_SPRITE_R_MODE_NV = 0x8863
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+ QUERY_COUNTER_BITS = 0x8864
+ CURRENT_QUERY = 0x8865
+ QUERY_RESULT = 0x8866
+ QUERY_RESULT_AVAILABLE = 0x8867
+
+ARB_occlusion_query enum:
+ QUERY_COUNTER_BITS_ARB = 0x8864
+ CURRENT_QUERY_ARB = 0x8865
+ QUERY_RESULT_ARB = 0x8866
+ QUERY_RESULT_AVAILABLE_ARB = 0x8867
+
+NV_occlusion_query enum:
+ PIXEL_COUNTER_BITS_NV = 0x8864
+ CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865
+ PIXEL_COUNT_NV = 0x8866
+ PIXEL_COUNT_AVAILABLE_NV = 0x8867
+
+NV_fragment_program enum:
+ MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868
+
+VERSION_2_0 enum: (Promoted from ARB_vertex_shader)
+ MAX_VERTEX_ATTRIBS = 0x8869 # VERSION_2_0
+ VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A # VERSION_2_0
+
+ARB_vertex_program enum: (additional; see above)
+ MAX_VERTEX_ATTRIBS_ARB = 0x8869
+ VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = 0x886A
+
+# NV_future_use: 0x886B-0x886D
+
+NV_copy_depth_to_color enum:
+ DEPTH_STENCIL_TO_RGBA_NV = 0x886E
+ DEPTH_STENCIL_TO_BGRA_NV = 0x886F
+
+NV_fragment_program enum: (additional; see above)
+ FRAGMENT_PROGRAM_NV = 0x8870
+ MAX_TEXTURE_COORDS_NV = 0x8871
+ MAX_TEXTURE_IMAGE_UNITS_NV = 0x8872
+ FRAGMENT_PROGRAM_BINDING_NV = 0x8873
+ PROGRAM_ERROR_STRING_NV = 0x8874
+
+VERSION_2_0 enum: (Promoted from ARB_fragment_shader; only some values)
+ MAX_TEXTURE_COORDS = 0x8871 # VERSION_2_0
+ MAX_TEXTURE_IMAGE_UNITS = 0x8872 # VERSION_2_0
+
+ARB_vertex_program enum: (additional; see above)
+ARB_fragment_program enum: (additional; see above)
+ MAX_TEXTURE_COORDS_ARB = 0x8871 # ARB_fragment_program
+ MAX_TEXTURE_IMAGE_UNITS_ARB = 0x8872 # ARB_fragment_program
+ PROGRAM_ERROR_STRING_ARB = 0x8874 # ARB_vertex_program / ARB_fragment_program
+ PROGRAM_FORMAT_ASCII_ARB = 0x8875 # ARB_vertex_program / ARB_fragment_program
+ PROGRAM_FORMAT_ARB = 0x8876 # ARB_vertex_program / ARB_fragment_program
+
+# 0x8877 *should have been* assigned to PROGRAM_BINDING_ARB. Oops.
+
+NV_pixel_data_range enum:
+ WRITE_PIXEL_DATA_RANGE_NV = 0x8878
+ READ_PIXEL_DATA_RANGE_NV = 0x8879
+ WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A
+ READ_PIXEL_DATA_RANGE_LENGTH_NV = 0x887B
+ WRITE_PIXEL_DATA_RANGE_POINTER_NV = 0x887C
+ READ_PIXEL_DATA_RANGE_POINTER_NV = 0x887D
+
+# NV_future_use: 0x887E-0x887F
+
+NV_float_buffer enum:
+ FLOAT_R_NV = 0x8880
+ FLOAT_RG_NV = 0x8881
+ FLOAT_RGB_NV = 0x8882
+ FLOAT_RGBA_NV = 0x8883
+ FLOAT_R16_NV = 0x8884
+ FLOAT_R32_NV = 0x8885
+ FLOAT_RG16_NV = 0x8886
+ FLOAT_RG32_NV = 0x8887
+ FLOAT_RGB16_NV = 0x8888
+ FLOAT_RGB32_NV = 0x8889
+ FLOAT_RGBA16_NV = 0x888A
+ FLOAT_RGBA32_NV = 0x888B
+ TEXTURE_FLOAT_COMPONENTS_NV = 0x888C
+ FLOAT_CLEAR_COLOR_VALUE_NV = 0x888D
+ FLOAT_RGBA_MODE_NV = 0x888E
+
+NV_texture_expand_normal enum:
+ TEXTURE_UNSIGNED_REMAP_MODE_NV = 0x888F
+
+EXT_depth_bounds_test enum:
+ DEPTH_BOUNDS_TEST_EXT = 0x8890
+ DEPTH_BOUNDS_EXT = 0x8891
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+ ARRAY_BUFFER = 0x8892
+ ELEMENT_ARRAY_BUFFER = 0x8893
+ ARRAY_BUFFER_BINDING = 0x8894
+ ELEMENT_ARRAY_BUFFER_BINDING = 0x8895
+ VERTEX_ARRAY_BUFFER_BINDING = 0x8896
+ NORMAL_ARRAY_BUFFER_BINDING = 0x8897
+ COLOR_ARRAY_BUFFER_BINDING = 0x8898
+ INDEX_ARRAY_BUFFER_BINDING = 0x8899
+ TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889A
+ EDGE_FLAG_ARRAY_BUFFER_BINDING = 0x889B
+ SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 0x889C
+ FOG_COORD_ARRAY_BUFFER_BINDING = 0x889D # alias GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+ FOG_COORDINATE_ARRAY_BUFFER_BINDING = 0x889D
+ WEIGHT_ARRAY_BUFFER_BINDING = 0x889E
+ VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F
+
+ARB_vertex_buffer_object enum:
+ ARRAY_BUFFER_ARB = 0x8892
+ ELEMENT_ARRAY_BUFFER_ARB = 0x8893
+ ARRAY_BUFFER_BINDING_ARB = 0x8894
+ ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x8895
+ VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x8896
+ NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x8897
+ COLOR_ARRAY_BUFFER_BINDING_ARB = 0x8898
+ INDEX_ARRAY_BUFFER_BINDING_ARB = 0x8899
+ TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x889A
+ EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x889B
+ SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x889C
+ FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x889D
+ WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x889E
+ VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x889F
+
+# Aliases ARB_vertex_buffer_object enum above
+OES_matrix_palette enum: (OpenGL ES only; additional; see below)
+ WEIGHT_ARRAY_BUFFER_BINDING_OES = 0x889E
+
+ARB_vertex_program enum: (additional; see above)
+ARB_fragment_program enum: (additional; see above)
+ PROGRAM_INSTRUCTIONS_ARB = 0x88A0
+ MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1
+ PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2
+ MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3
+ PROGRAM_TEMPORARIES_ARB = 0x88A4
+ MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5
+ PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6
+ MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7
+ PROGRAM_PARAMETERS_ARB = 0x88A8
+ MAX_PROGRAM_PARAMETERS_ARB = 0x88A9
+ PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA
+ MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB
+ PROGRAM_ATTRIBS_ARB = 0x88AC
+ MAX_PROGRAM_ATTRIBS_ARB = 0x88AD
+ PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE
+ MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF
+ PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B0
+ MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B1
+ PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B2
+ MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B3
+ MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4
+ MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5
+ PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6
+ TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+ READ_ONLY = 0x88B8
+ WRITE_ONLY = 0x88B9
+ READ_WRITE = 0x88BA
+ BUFFER_ACCESS = 0x88BB
+ BUFFER_MAPPED = 0x88BC
+ BUFFER_MAP_POINTER = 0x88BD
+
+ARB_vertex_buffer_object enum: (additional; see above)
+ READ_ONLY_ARB = 0x88B8
+ WRITE_ONLY_ARB = 0x88B9
+ READ_WRITE_ARB = 0x88BA
+ BUFFER_ACCESS_ARB = 0x88BB
+ BUFFER_MAPPED_ARB = 0x88BC
+ BUFFER_MAP_POINTER_ARB = 0x88BD
+
+# Aliases ARB_vertex_buffer_object enums above
+OES_mapbuffer enum: (OpenGL ES only)
+ WRITE_ONLY_OES = 0x88B9
+ BUFFER_ACCESS_OES = 0x88BB
+ BUFFER_MAPPED_OES = 0x88BC
+ BUFFER_MAP_POINTER_OES = 0x88BD
+
+# NV_future_use: 0x88BE
+
+EXT_timer_query enum:
+ TIME_ELAPSED_EXT = 0x88BF
+
+ARB_vertex_program enum: (additional; see above)
+ARB_fragment_program enum: (additional; see above)
+ MATRIX0_ARB = 0x88C0
+ MATRIX1_ARB = 0x88C1
+ MATRIX2_ARB = 0x88C2
+ MATRIX3_ARB = 0x88C3
+ MATRIX4_ARB = 0x88C4
+ MATRIX5_ARB = 0x88C5
+ MATRIX6_ARB = 0x88C6
+ MATRIX7_ARB = 0x88C7
+ MATRIX8_ARB = 0x88C8
+ MATRIX9_ARB = 0x88C9
+ MATRIX10_ARB = 0x88CA
+ MATRIX11_ARB = 0x88CB
+ MATRIX12_ARB = 0x88CC
+ MATRIX13_ARB = 0x88CD
+ MATRIX14_ARB = 0x88CE
+ MATRIX15_ARB = 0x88CF
+ MATRIX16_ARB = 0x88D0
+ MATRIX17_ARB = 0x88D1
+ MATRIX18_ARB = 0x88D2
+ MATRIX19_ARB = 0x88D3
+ MATRIX20_ARB = 0x88D4
+ MATRIX21_ARB = 0x88D5
+ MATRIX22_ARB = 0x88D6
+ MATRIX23_ARB = 0x88D7
+ MATRIX24_ARB = 0x88D8
+ MATRIX25_ARB = 0x88D9
+ MATRIX26_ARB = 0x88DA
+ MATRIX27_ARB = 0x88DB
+ MATRIX28_ARB = 0x88DC
+ MATRIX29_ARB = 0x88DD
+ MATRIX30_ARB = 0x88DE
+ MATRIX31_ARB = 0x88DF
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+ STREAM_DRAW = 0x88E0
+ STREAM_READ = 0x88E1
+ STREAM_COPY = 0x88E2
+ STATIC_DRAW = 0x88E4
+ STATIC_READ = 0x88E5
+ STATIC_COPY = 0x88E6
+ DYNAMIC_DRAW = 0x88E8
+ DYNAMIC_READ = 0x88E9
+ DYNAMIC_COPY = 0x88EA
+
+ARB_vertex_buffer_object enum: (additional; see above)
+ STREAM_DRAW_ARB = 0x88E0
+ STREAM_READ_ARB = 0x88E1
+ STREAM_COPY_ARB = 0x88E2
+ STATIC_DRAW_ARB = 0x88E4
+ STATIC_READ_ARB = 0x88E5
+ STATIC_COPY_ARB = 0x88E6
+ DYNAMIC_DRAW_ARB = 0x88E8
+ DYNAMIC_READ_ARB = 0x88E9
+ DYNAMIC_COPY_ARB = 0x88EA
+
+VERSION_2_1 enum:
+ PIXEL_PACK_BUFFER = 0x88EB # VERSION_2_1
+ PIXEL_UNPACK_BUFFER = 0x88EC # VERSION_2_1
+ PIXEL_PACK_BUFFER_BINDING = 0x88ED # VERSION_2_1
+ PIXEL_UNPACK_BUFFER_BINDING = 0x88EF # VERSION_2_1
+
+ARB_pixel_buffer_object enum:
+ PIXEL_PACK_BUFFER_ARB = 0x88EB # ARB_pixel_buffer_object
+ PIXEL_UNPACK_BUFFER_ARB = 0x88EC # ARB_pixel_buffer_object
+ PIXEL_PACK_BUFFER_BINDING_ARB = 0x88ED # ARB_pixel_buffer_object
+ PIXEL_UNPACK_BUFFER_BINDING_ARB = 0x88EF # ARB_pixel_buffer_object
+
+EXT_pixel_buffer_object enum:
+ PIXEL_PACK_BUFFER_EXT = 0x88EB # EXT_pixel_buffer_object
+ PIXEL_UNPACK_BUFFER_EXT = 0x88EC # EXT_pixel_buffer_object
+ PIXEL_PACK_BUFFER_BINDING_EXT = 0x88ED # EXT_pixel_buffer_object
+ PIXEL_UNPACK_BUFFER_BINDING_EXT = 0x88EF # EXT_pixel_buffer_object
+
+# ARB_future_use: 0x88E3, 0x88E7, 0x88EE
+# (for extending ARB_vertex_buffer_object):
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object DEPTH24_STENCIL8
+ use ARB_framebuffer_object TEXTURE_STENCIL_SIZE
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ DEPTH24_STENCIL8 = 0x88F0 # VERSION_3_0 / ARB_fbo
+ TEXTURE_STENCIL_SIZE = 0x88F1 # VERSION_3_0 / ARB_fbo
+
+EXT_packed_depth_stencil enum: (additional; see above)
+ DEPTH24_STENCIL8_EXT = 0x88F0
+ TEXTURE_STENCIL_SIZE_EXT = 0x88F1
+
+# Aliases EXT_packed_depth_stencil enum above
+OES_packed_depth_stencil enum: (OpenGL ES only; additional; see above)
+ DEPTH24_STENCIL8_OES = 0x88F0
+
+EXT_stencil_clear_tag enum:
+ STENCIL_TAG_BITS_EXT = 0x88F2
+ STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3
+
+NV_vertex_program2_option enum: (duplicated in NV_fragment_prgoram2 below)
+ MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4
+ MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5
+
+NV_fragment_program2 enum:
+ MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4
+ MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5
+ MAX_PROGRAM_IF_DEPTH_NV = 0x88F6
+ MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7
+ MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8
+
+# NV_future_use: 0x88F9-0x88FC
+
+VERSION_3_0 enum:
+ VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD # VERSION_3_0
+
+NV_vertex_program4 enum:
+ VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x88FD
+
+ARB_instanced_arrays enum:
+ VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE
+
+VERSION_3_0 enum:
+ MAX_ARRAY_TEXTURE_LAYERS = 0x88FF # VERSION_3_0
+
+EXT_texture_array enum: (additional; see below)
+ MAX_ARRAY_TEXTURE_LAYERS_EXT = 0x88FF
+
+VERSION_3_0 enum:
+ MIN_PROGRAM_TEXEL_OFFSET = 0x8904 # VERSION_3_0
+ MAX_PROGRAM_TEXEL_OFFSET = 0x8905 # VERSION_3_0
+
+NV_gpu_program4 enum:
+ MIN_PROGRAM_TEXEL_OFFSET_NV = 0x8904
+ MAX_PROGRAM_TEXEL_OFFSET_NV = 0x8905
+ PROGRAM_ATTRIB_COMPONENTS_NV = 0x8906
+ PROGRAM_RESULT_COMPONENTS_NV = 0x8907
+ MAX_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8908
+ MAX_PROGRAM_RESULT_COMPONENTS_NV = 0x8909
+
+EXT_stencil_two_side enum:
+ STENCIL_TEST_TWO_SIDE_EXT = 0x8910
+ ACTIVE_STENCIL_FACE_EXT = 0x8911
+
+EXT_texture_mirror_clamp enum: (additional; see above):
+ MIRROR_CLAMP_TO_BORDER_EXT = 0x8912
+
+# NV_future_use: 0x8913
+
+VERSION_1_5 enum: (Promoted for OpenGL 1.5)
+ SAMPLES_PASSED = 0x8914
+
+ARB_occlusion_query enum: (additional; see above)
+ SAMPLES_PASSED_ARB = 0x8914
+
+# NV_future_use: 0x8915
+
+VERSION_3_2 enum:
+ GEOMETRY_VERTICES_OUT = 0x8916
+ GEOMETRY_INPUT_TYPE = 0x8917
+ GEOMETRY_OUTPUT_TYPE = 0x8918
+
+# NV_future_use: 0x8919
+
+VERSION_3_0 enum:
+ CLAMP_VERTEX_COLOR = 0x891A # VERSION_3_0
+ CLAMP_FRAGMENT_COLOR = 0x891B # VERSION_3_0
+ CLAMP_READ_COLOR = 0x891C # VERSION_3_0
+ FIXED_ONLY = 0x891D # VERSION_3_0
+
+ARB_color_buffer_float enum: (additional; see above)
+ CLAMP_VERTEX_COLOR_ARB = 0x891A
+ CLAMP_FRAGMENT_COLOR_ARB = 0x891B
+ CLAMP_READ_COLOR_ARB = 0x891C
+ FIXED_ONLY_ARB = 0x891D
+
+# NV_future_use: 0x891E-0x891F
+
+###############################################################################
+
+# ATI: 0x8920-0x897F
+
+ATI_fragment_shader enum:
+ FRAGMENT_SHADER_ATI = 0x8920
+ REG_0_ATI = 0x8921
+ REG_1_ATI = 0x8922
+ REG_2_ATI = 0x8923
+ REG_3_ATI = 0x8924
+ REG_4_ATI = 0x8925
+ REG_5_ATI = 0x8926
+ REG_6_ATI = 0x8927
+ REG_7_ATI = 0x8928
+ REG_8_ATI = 0x8929
+ REG_9_ATI = 0x892A
+ REG_10_ATI = 0x892B
+ REG_11_ATI = 0x892C
+ REG_12_ATI = 0x892D
+ REG_13_ATI = 0x892E
+ REG_14_ATI = 0x892F
+ REG_15_ATI = 0x8930
+ REG_16_ATI = 0x8931
+ REG_17_ATI = 0x8932
+ REG_18_ATI = 0x8933
+ REG_19_ATI = 0x8934
+ REG_20_ATI = 0x8935
+ REG_21_ATI = 0x8936
+ REG_22_ATI = 0x8937
+ REG_23_ATI = 0x8938
+ REG_24_ATI = 0x8939
+ REG_25_ATI = 0x893A
+ REG_26_ATI = 0x893B
+ REG_27_ATI = 0x893C
+ REG_28_ATI = 0x893D
+ REG_29_ATI = 0x893E
+ REG_30_ATI = 0x893F
+ REG_31_ATI = 0x8940
+ CON_0_ATI = 0x8941
+ CON_1_ATI = 0x8942
+ CON_2_ATI = 0x8943
+ CON_3_ATI = 0x8944
+ CON_4_ATI = 0x8945
+ CON_5_ATI = 0x8946
+ CON_6_ATI = 0x8947
+ CON_7_ATI = 0x8948
+ CON_8_ATI = 0x8949
+ CON_9_ATI = 0x894A
+ CON_10_ATI = 0x894B
+ CON_11_ATI = 0x894C
+ CON_12_ATI = 0x894D
+ CON_13_ATI = 0x894E
+ CON_14_ATI = 0x894F
+ CON_15_ATI = 0x8950
+ CON_16_ATI = 0x8951
+ CON_17_ATI = 0x8952
+ CON_18_ATI = 0x8953
+ CON_19_ATI = 0x8954
+ CON_20_ATI = 0x8955
+ CON_21_ATI = 0x8956
+ CON_22_ATI = 0x8957
+ CON_23_ATI = 0x8958
+ CON_24_ATI = 0x8959
+ CON_25_ATI = 0x895A
+ CON_26_ATI = 0x895B
+ CON_27_ATI = 0x895C
+ CON_28_ATI = 0x895D
+ CON_29_ATI = 0x895E
+ CON_30_ATI = 0x895F
+ CON_31_ATI = 0x8960
+ MOV_ATI = 0x8961
+ ADD_ATI = 0x8963
+ MUL_ATI = 0x8964
+ SUB_ATI = 0x8965
+ DOT3_ATI = 0x8966
+ DOT4_ATI = 0x8967
+ MAD_ATI = 0x8968
+ LERP_ATI = 0x8969
+ CND_ATI = 0x896A
+ CND0_ATI = 0x896B
+ DOT2_ADD_ATI = 0x896C
+ SECONDARY_INTERPOLATOR_ATI = 0x896D
+ NUM_FRAGMENT_REGISTERS_ATI = 0x896E
+ NUM_FRAGMENT_CONSTANTS_ATI = 0x896F
+ NUM_PASSES_ATI = 0x8970
+ NUM_INSTRUCTIONS_PER_PASS_ATI = 0x8971
+ NUM_INSTRUCTIONS_TOTAL_ATI = 0x8972
+ NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = 0x8973
+ NUM_LOOPBACK_COMPONENTS_ATI = 0x8974
+ COLOR_ALPHA_PAIRING_ATI = 0x8975
+ SWIZZLE_STR_ATI = 0x8976
+ SWIZZLE_STQ_ATI = 0x8977
+ SWIZZLE_STR_DR_ATI = 0x8978
+ SWIZZLE_STQ_DQ_ATI = 0x8979
+ SWIZZLE_STRQ_ATI = 0x897A
+ SWIZZLE_STRQ_DQ_ATI = 0x897B
+# ??? Not clear where to put new types of mask bits yet
+ RED_BIT_ATI = 0x00000001
+ GREEN_BIT_ATI = 0x00000002
+ BLUE_BIT_ATI = 0x00000004
+ 2X_BIT_ATI = 0x00000001
+ 4X_BIT_ATI = 0x00000002
+ 8X_BIT_ATI = 0x00000004
+ HALF_BIT_ATI = 0x00000008
+ QUARTER_BIT_ATI = 0x00000010
+ EIGHTH_BIT_ATI = 0x00000020
+ SATURATE_BIT_ATI = 0x00000040
+ 2X_BIT_ATI = 0x00000001
+ COMP_BIT_ATI = 0x00000002
+ NEGATE_BIT_ATI = 0x00000004
+ BIAS_BIT_ATI = 0x00000008
+
+# ATI_future_use: 0x897C-0x897F
+
+###############################################################################
+
+# Khronos OpenML WG / OpenGL ES WG: 0x8980-0x898F
+
+OML_interlace enum:
+ INTERLACE_OML = 0x8980
+ INTERLACE_READ_OML = 0x8981
+
+OML_subsample enum:
+ FORMAT_SUBSAMPLE_24_24_OML = 0x8982
+ FORMAT_SUBSAMPLE_244_244_OML = 0x8983
+
+OML_resample enum:
+ PACK_RESAMPLE_OML = 0x8984
+ UNPACK_RESAMPLE_OML = 0x8985
+ RESAMPLE_REPLICATE_OML = 0x8986
+ RESAMPLE_ZERO_FILL_OML = 0x8987
+ RESAMPLE_AVERAGE_OML = 0x8988
+ RESAMPLE_DECIMATE_OML = 0x8989
+
+OES_point_size_array enum: (OpenGL ES only)
+ POINT_SIZE_ARRAY_TYPE_OES = 0x898A
+ POINT_SIZE_ARRAY_STRIDE_OES = 0x898B
+ POINT_SIZE_ARRAY_POINTER_OES = 0x898C
+
+OES_matrix_get enum: (OpenGL ES only)
+ MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898D
+ PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898E
+ TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES = 0x898F
+
+###############################################################################
+
+# 3dlabs: 0x8990-0x899F
+
+###############################################################################
+
+# Matrox: 0x89A0-0x89FF
+
+###############################################################################
+
+# Apple: 0x8A00-0x8A7F
+
+APPLE_vertex_program_evaluators enum:
+ VERTEX_ATTRIB_MAP1_APPLE = 0x8A00
+ VERTEX_ATTRIB_MAP2_APPLE = 0x8A01
+ VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x8A02
+ VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x8A03
+ VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x8A04
+ VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x8A05
+ VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x8A06
+ VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x8A07
+ VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x8A08
+ VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x8A09
+
+APPLE_fence enum:
+ DRAW_PIXELS_APPLE = 0x8A0A
+ FENCE_APPLE = 0x8A0B
+
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+ ELEMENT_ARRAY_APPLE = 0x8A0C
+ ELEMENT_ARRAY_TYPE_APPLE = 0x8A0D
+ ELEMENT_ARRAY_POINTER_APPLE = 0x8A0E
+
+APPLE_float_pixels enum:
+ COLOR_FLOAT_APPLE = 0x8A0F
+
+# APPLE_future_use: 0x8A10
+## From Jeremy 2006/10/18 (Khronos bug 632) - unknown extension name
+# MIN_PBUFFER_VIEWPORT_DIMS_APPLE = 0x8A10
+# ELEMENT_BUFFER_BINDING_APPLE = 0x8A11
+# Apple says the extension that defined ELEMENT_BUFFER_BINDING_APPLE
+# never shipped and there's no actual collision with UNIFORM_BUFFER
+
+VERSION_3_1 enum:
+ use ARB_uniform_buffer_object UNIFORM_BUFFER
+
+ARB_uniform_buffer_object enum: (additional; see below)
+ UNIFORM_BUFFER = 0x8A11
+
+APPLE_flush_buffer_range enum:
+ BUFFER_SERIALIZED_MODIFY_APPLE = 0x8A12
+ BUFFER_FLUSHING_UNMAP_APPLE = 0x8A13
+
+APPLE_aux_depth_stencil enum:
+ AUX_DEPTH_STENCIL_APPLE = 0x8A14
+
+APPLE_row_bytes enum:
+ PACK_ROW_BYTES_APPLE = 0x8A15
+ UNPACK_ROW_BYTES_APPLE = 0x8A16
+
+# APPLE_future_use: 0x8A17-0x8A18
+
+APPLE_object_purgeable enum:
+ RELEASED_APPLE = 0x8A19
+ VOLATILE_APPLE = 0x8A1A
+ RETAINED_APPLE = 0x8A1B
+ UNDEFINED_APPLE = 0x8A1C
+ PURGEABLE_APPLE = 0x8A1D
+
+# APPLE_future_use: 0x8A1E
+
+APPLE_rgb_422 enum:
+ RGB_422_APPLE = 0x8A1F
+ use APPLE_ycbcr_422 UNSIGNED_SHORT_8_8_APPLE
+ use APPLE_ycbcr_422 UNSIGNED_SHORT_8_8_REV_APPLE
+
+# APPLE_future_use: 0x8A20--0x8A27
+
+VERSION_3_1 enum:
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_BINDING
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_START
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_SIZE
+ use ARB_uniform_buffer_object MAX_VERTEX_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object MAX_GEOMETRY_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object MAX_FRAGMENT_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object MAX_COMBINED_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object MAX_UNIFORM_BUFFER_BINDINGS
+ use ARB_uniform_buffer_object MAX_UNIFORM_BLOCK_SIZE
+ use ARB_uniform_buffer_object MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+ use ARB_uniform_buffer_object MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS
+ use ARB_uniform_buffer_object MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_OFFSET_ALIGNMENT
+ use ARB_uniform_buffer_object ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+ use ARB_uniform_buffer_object ACTIVE_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object UNIFORM_TYPE
+ use ARB_uniform_buffer_object UNIFORM_SIZE
+ use ARB_uniform_buffer_object UNIFORM_NAME_LENGTH
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_INDEX
+ use ARB_uniform_buffer_object UNIFORM_OFFSET
+ use ARB_uniform_buffer_object UNIFORM_ARRAY_STRIDE
+ use ARB_uniform_buffer_object UNIFORM_MATRIX_STRIDE
+ use ARB_uniform_buffer_object UNIFORM_IS_ROW_MAJOR
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_BINDING
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_DATA_SIZE
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_NAME_LENGTH
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_ACTIVE_UNIFORMS
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+ use ARB_uniform_buffer_object INVALID_INDEX
+
+ARB_uniform_buffer_object enum:
+ UNIFORM_BUFFER_BINDING = 0x8A28
+ UNIFORM_BUFFER_START = 0x8A29
+ UNIFORM_BUFFER_SIZE = 0x8A2A
+ MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B
+ MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C
+ MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D
+ MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E
+ MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F
+ MAX_UNIFORM_BLOCK_SIZE = 0x8A30
+ MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31
+ MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32
+ MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33
+ UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34
+ ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35
+ ACTIVE_UNIFORM_BLOCKS = 0x8A36
+ UNIFORM_TYPE = 0x8A37
+ UNIFORM_SIZE = 0x8A38
+ UNIFORM_NAME_LENGTH = 0x8A39
+ UNIFORM_BLOCK_INDEX = 0x8A3A
+ UNIFORM_OFFSET = 0x8A3B
+ UNIFORM_ARRAY_STRIDE = 0x8A3C
+ UNIFORM_MATRIX_STRIDE = 0x8A3D
+ UNIFORM_IS_ROW_MAJOR = 0x8A3E
+ UNIFORM_BLOCK_BINDING = 0x8A3F
+ UNIFORM_BLOCK_DATA_SIZE = 0x8A40
+ UNIFORM_BLOCK_NAME_LENGTH = 0x8A41
+ UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42
+ UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43
+ UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44
+ UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45
+ UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46
+ INVALID_INDEX = 0xFFFFFFFFu
+
+# APPLE_future_use: 0x8A47-0x8A7F
+
+###############################################################################
+
+# Matrox: 0x8A80-0x8AEF
+
+###############################################################################
+
+# Chromium (Brian Paul): 0x8AF0-0x8B2F
+
+###############################################################################
+
+# ARB HLSL shader extensions: 0x8B30-0x8B8F
+
+
+VERSION_3_1 enum: (Promoted from ARB_shader_objects + ARB_texture_rectangle)
+ SAMPLER_2D_RECT = 0x8B63 # ARB_shader_objects + ARB_texture_rectangle
+ SAMPLER_2D_RECT_SHADOW = 0x8B64 # ARB_shader_objects + ARB_texture_rectangle
+
+#@@ separate extensions
+VERSION_2_0 enum: (Promoted for OpenGL 2.0; only some values; renaming in many cases)
+ARB_shader_objects, ARB_vertex_shader, ARB_fragment_shader enum:
+NV_vertex_program3 enum: (reuses 0x8B4C)
+##Shader types + room for expansion
+ FRAGMENT_SHADER = 0x8B30 # VERSION_2_0
+ FRAGMENT_SHADER_ARB = 0x8B30 # ARB_fragment_shader
+ VERTEX_SHADER = 0x8B31 # VERSION_2_0
+ VERTEX_SHADER_ARB = 0x8B31 # ARB_vertex_shader
+# ARB_future_use: 0x8B32-0x8B3F (for shader types)
+##Container types + room for expansion
+ PROGRAM_OBJECT_ARB = 0x8B40 # ARB_shader_objects
+# ARB_future_use: 0x8B41-0x8B47 (for container types)
+##Misc. shader enums
+ SHADER_OBJECT_ARB = 0x8B48 # ARB_shader_objects
+ MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49 # VERSION_2_0
+ MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x8B49 # ARB_fragment_shader
+ MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A # VERSION_2_0
+ MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x8B4A # ARB_vertex_shader
+ MAX_VARYING_FLOATS = 0x8B4B # VERSION_2_0
+ MAX_VARYING_FLOATS_ARB = 0x8B4B # ARB_vertex_shader
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C # VERSION_2_0
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C # ARB_vertex_shader, NV_vertex_program3
+ MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D # VERSION_2_0
+ MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x8B4D # ARB_vertex_shader
+ OBJECT_TYPE_ARB = 0x8B4E # ARB_shader_objects
+ SHADER_TYPE = 0x8B4F # VERSION_2_0 (renamed)
+ OBJECT_SUBTYPE_ARB = 0x8B4F # ARB_shader_objects
+##Attribute types + room for expansion.
+ FLOAT_VEC2 = 0x8B50 # VERSION_2_0
+ FLOAT_VEC2_ARB = 0x8B50 # ARB_shader_objects
+ FLOAT_VEC3 = 0x8B51 # VERSION_2_0
+ FLOAT_VEC3_ARB = 0x8B51 # ARB_shader_objects
+ FLOAT_VEC4 = 0x8B52 # VERSION_2_0
+ FLOAT_VEC4_ARB = 0x8B52 # ARB_shader_objects
+ INT_VEC2 = 0x8B53 # VERSION_2_0
+ INT_VEC2_ARB = 0x8B53 # ARB_shader_objects
+ INT_VEC3 = 0x8B54 # VERSION_2_0
+ INT_VEC3_ARB = 0x8B54 # ARB_shader_objects
+ INT_VEC4 = 0x8B55 # VERSION_2_0
+ INT_VEC4_ARB = 0x8B55 # ARB_shader_objects
+ BOOL = 0x8B56 # VERSION_2_0
+ BOOL_ARB = 0x8B56 # ARB_shader_objects
+ BOOL_VEC2 = 0x8B57 # VERSION_2_0
+ BOOL_VEC2_ARB = 0x8B57 # ARB_shader_objects
+ BOOL_VEC3 = 0x8B58 # VERSION_2_0
+ BOOL_VEC3_ARB = 0x8B58 # ARB_shader_objects
+ BOOL_VEC4 = 0x8B59 # VERSION_2_0
+ BOOL_VEC4_ARB = 0x8B59 # ARB_shader_objects
+ FLOAT_MAT2 = 0x8B5A # VERSION_2_0
+ FLOAT_MAT2_ARB = 0x8B5A # ARB_shader_objects
+ FLOAT_MAT3 = 0x8B5B # VERSION_2_0
+ FLOAT_MAT3_ARB = 0x8B5B # ARB_shader_objects
+ FLOAT_MAT4 = 0x8B5C # VERSION_2_0
+ FLOAT_MAT4_ARB = 0x8B5C # ARB_shader_objects
+ SAMPLER_1D = 0x8B5D # VERSION_2_0
+ SAMPLER_1D_ARB = 0x8B5D # ARB_shader_objects
+ SAMPLER_2D = 0x8B5E # VERSION_2_0
+ SAMPLER_2D_ARB = 0x8B5E # ARB_shader_objects
+ SAMPLER_3D = 0x8B5F # VERSION_2_0
+ SAMPLER_3D_ARB = 0x8B5F # ARB_shader_objects
+ SAMPLER_CUBE = 0x8B60 # VERSION_2_0
+ SAMPLER_CUBE_ARB = 0x8B60 # ARB_shader_objects
+ SAMPLER_1D_SHADOW = 0x8B61 # VERSION_2_0
+ SAMPLER_1D_SHADOW_ARB = 0x8B61 # ARB_shader_objects
+ SAMPLER_2D_SHADOW = 0x8B62 # VERSION_2_0
+ SAMPLER_2D_SHADOW_ARB = 0x8B62 # ARB_shader_objects
+ SAMPLER_2D_RECT_ARB = 0x8B63 # ARB_shader_objects
+ SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64 # ARB_shader_objects
+ FLOAT_MAT2x3 = 0x8B65 # VERSION_2_1
+ FLOAT_MAT2x4 = 0x8B66 # VERSION_2_1
+ FLOAT_MAT3x2 = 0x8B67 # VERSION_2_1
+ FLOAT_MAT3x4 = 0x8B68 # VERSION_2_1
+ FLOAT_MAT4x2 = 0x8B69 # VERSION_2_1
+ FLOAT_MAT4x3 = 0x8B6A # VERSION_2_1
+# ARB_future_use: 0x8B6B-0x8B7F (for attribute types)
+ DELETE_STATUS = 0x8B80 # VERSION_2_0 (renamed)
+ OBJECT_DELETE_STATUS_ARB = 0x8B80 # ARB_shader_objects
+ COMPILE_STATUS = 0x8B81 # VERSION_2_0 (renamed)
+ OBJECT_COMPILE_STATUS_ARB = 0x8B81 # ARB_shader_objects
+ LINK_STATUS = 0x8B82 # VERSION_2_0 (renamed)
+ OBJECT_LINK_STATUS_ARB = 0x8B82 # ARB_shader_objects
+ VALIDATE_STATUS = 0x8B83 # VERSION_2_0 (renamed)
+ OBJECT_VALIDATE_STATUS_ARB = 0x8B83 # ARB_shader_objects
+ INFO_LOG_LENGTH = 0x8B84 # VERSION_2_0 (renamed)
+ OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84 # ARB_shader_objects
+ ATTACHED_SHADERS = 0x8B85 # VERSION_2_0 (renamed)
+ OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85 # ARB_shader_objects
+ ACTIVE_UNIFORMS = 0x8B86 # VERSION_2_0 (renamed)
+ OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86 # ARB_shader_objects
+ ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87 # VERSION_2_0 (renamed)
+ OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87 # ARB_shader_objects
+ SHADER_SOURCE_LENGTH = 0x8B88 # VERSION_2_0 (renamed)
+ OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88 # ARB_shader_objects
+ ACTIVE_ATTRIBUTES = 0x8B89 # VERSION_2_0 (renamed)
+ OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x8B89 # ARB_vertex_shader
+ ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A # VERSION_2_0 (renamed)
+ OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x8B8A # ARB_vertex_shader
+ FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B # VERSION_2_0
+ FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B # ARB_fragment_shader
+ SHADING_LANGUAGE_VERSION = 0x8B8C # VERSION_2_0
+ SHADING_LANGUAGE_VERSION_ARB = 0x8B8C # ARB_shading_language_100
+
+# Aliases ARB_shader_objects enum above
+OES_texture3D enum: (OpenGL ES only; additional; see above)
+ SAMPLER_3D_OES = 0x8B5F # ARB_shader_objects
+
+# Aliases ARB_fragment_shader enum above
+OES_standard_derivatives enum: (OpenGL ES only)
+ FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 0x8B8B
+
+VERSION_3_0 enum:
+ MAX_VARYING_COMPONENTS = 0x8B4B # VERSION_3_0 # alias GL_MAX_VARYING_FLOATS
+
+ARB_geometry_shader4 enum: (additional; see below; note: no ARB suffixes)
+ use VERSION_3_0 MAX_VARYING_COMPONENTS
+
+EXT_geometry_shader4 enum: (additional; see below)
+ MAX_VARYING_COMPONENTS_EXT = 0x8B4B
+
+VERSION_2_0 enum:
+ CURRENT_PROGRAM = 0x8B8D
+
+# Aliases CURRENT_PROGRAM
+EXT_separate_shader_objects enum:
+ ACTIVE_PROGRAM_EXT = 0x8B8D
+
+# ARB_future_use: 0x8B8E-0x8B8F
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8B90-0x8B9F
+
+OES_compressed_paletted_texture enum: (OpenGL ES only)
+ PALETTE4_RGB8_OES = 0x8B90
+ PALETTE4_RGBA8_OES = 0x8B91
+ PALETTE4_R5_G6_B5_OES = 0x8B92
+ PALETTE4_RGBA4_OES = 0x8B93
+ PALETTE4_RGB5_A1_OES = 0x8B94
+ PALETTE8_RGB8_OES = 0x8B95
+ PALETTE8_RGBA8_OES = 0x8B96
+ PALETTE8_R5_G6_B5_OES = 0x8B97
+ PALETTE8_RGBA4_OES = 0x8B98
+ PALETTE8_RGB5_A1_OES = 0x8B99
+
+OES_read_format enum: (OpenGL ES, also implemented in Mesa)
+ IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A
+ IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B
+
+OES_point_size_array enum: (OpenGL ES only; additional; see above)
+ POINT_SIZE_ARRAY_OES = 0x8B9C
+
+OES_draw_texture enum: (OpenGL ES only)
+ TEXTURE_CROP_RECT_OES = 0x8B9D
+
+OES_matrix_palette enum: (OpenGL ES only)
+ MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x8B9E
+
+OES_point_size_array enum: (OpenGL ES only; additional; see above)
+ POINT_SIZE_ARRAY_BUFFER_BINDING_OES = 0x8B9F
+
+###############################################################################
+
+# Seaweed: 0x8BA0-0x8BAF
+
+###############################################################################
+
+# Mesa: 0x8BB0-0x8BBF
+# Probably one of the two 0x8BB4 enums should be 0x8BB5, but the
+# extension spec is not complete in any event.
+MESA_program_debug enum:
+ FRAGMENT_PROGRAM_POSITION_MESA = 0x8BB0
+ FRAGMENT_PROGRAM_CALLBACK_MESA = 0x8BB1
+ FRAGMENT_PROGRAM_CALLBACK_FUNC_MESA = 0x8BB2
+ FRAGMENT_PROGRAM_CALLBACK_DATA_MESA = 0x8BB3
+ VERTEX_PROGRAM_CALLBACK_MESA = 0x8BB4
+ VERTEX_PROGRAM_POSITION_MESA = 0x8BB4
+ VERTEX_PROGRAM_CALLBACK_FUNC_MESA = 0x8BB6
+ VERTEX_PROGRAM_CALLBACK_DATA_MESA = 0x8BB7
+
+###############################################################################
+
+# ATI: 0x8BC0-0x8BFF
+
+AMD_performance_monitor enum:
+ COUNTER_TYPE_AMD = 0x8BC0
+ COUNTER_RANGE_AMD = 0x8BC1
+ UNSIGNED_INT64_AMD = 0x8BC2
+ PERCENTAGE_AMD = 0x8BC3
+ PERFMON_RESULT_AVAILABLE_AMD = 0x8BC4
+ PERFMON_RESULT_SIZE_AMD = 0x8BC5
+ PERFMON_RESULT_AMD = 0x8BC6
+
+# ATI_future_use: 0x8BC7-0x8BD1
+
+QCOM_extended_get enum: (OpenGL ES only)
+ TEXTURE_WIDTH_QCOM = 0x8BD2
+ TEXTURE_HEIGHT_QCOM = 0x8BD3
+ TEXTURE_DEPTH_QCOM = 0x8BD4
+ TEXTURE_INTERNAL_FORMAT_QCOM = 0x8BD5
+ TEXTURE_FORMAT_QCOM = 0x8BD6
+ TEXTURE_TYPE_QCOM = 0x8BD7
+ TEXTURE_IMAGE_VALID_QCOM = 0x8BD8
+ TEXTURE_NUM_LEVELS_QCOM = 0x8BD9
+ TEXTURE_TARGET_QCOM = 0x8BDA
+ TEXTURE_OBJECT_VALID_QCOM = 0x8BDB
+ STATE_RESTORE = 0x8BDC
+
+# ATI_future_use: 0x8BDD-0x8BFF
+
+###############################################################################
+
+# Imagination Tech.: 0x8C00-0x8C0F
+
+IMG_texture_compression_pvrtc enum: (OpenGL ES only)
+ COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 0x8C00
+ COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 0x8C01
+ COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 0x8C02
+ COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 0x8C03
+
+IMG_texture_env_enhanced_fixed_function enum: (OpenGL ES only)
+ MODULATE_COLOR_IMG = 0x8C04
+ RECIP_ADD_SIGNED_ALPHA_IMG = 0x8C05
+ TEXTURE_ALPHA_MODULATE_IMG = 0x8C06
+ FACTOR_ALPHA_MODULATE_IMG = 0x8C07
+ FRAGMENT_ALPHA_MODULATE_IMG = 0x8C08
+ ADD_BLEND_IMG = 0x8C09
+
+IMG_shader_binary: (OpenGL ES only)
+ SGX_BINARY_IMG = 0x8C0A
+
+# IMG_future_use: 0x8C0B-0x8C0F
+
+###############################################################################
+
+# NVIDIA: 0x8C10-0x8C8F (Pat Brown)
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object TEXTURE_RED_TYPE
+ use ARB_framebuffer_object TEXTURE_GREEN_TYPE
+ use ARB_framebuffer_object TEXTURE_BLUE_TYPE
+ use ARB_framebuffer_object TEXTURE_ALPHA_TYPE
+ use ARB_framebuffer_object TEXTURE_LUMINANCE_TYPE
+ use ARB_framebuffer_object TEXTURE_INTENSITY_TYPE
+ use ARB_framebuffer_object TEXTURE_DEPTH_TYPE
+ use ARB_framebuffer_object UNSIGNED_NORMALIZED
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ TEXTURE_RED_TYPE = 0x8C10 # VERSION_3_0 / ARB_fbo
+ TEXTURE_GREEN_TYPE = 0x8C11 # VERSION_3_0 / ARB_fbo
+ TEXTURE_BLUE_TYPE = 0x8C12 # VERSION_3_0 / ARB_fbo
+ TEXTURE_ALPHA_TYPE = 0x8C13 # VERSION_3_0 / ARB_fbo
+ TEXTURE_LUMINANCE_TYPE = 0x8C14 # VERSION_3_0 / ARB_fbo
+ TEXTURE_INTENSITY_TYPE = 0x8C15 # VERSION_3_0 / ARB_fbo
+ TEXTURE_DEPTH_TYPE = 0x8C16 # VERSION_3_0 / ARB_fbo
+ UNSIGNED_NORMALIZED = 0x8C17 # VERSION_3_0 / ARB_fbo
+
+ARB_texture_float enum: (additional; see above)
+ TEXTURE_RED_TYPE_ARB = 0x8C10
+ TEXTURE_GREEN_TYPE_ARB = 0x8C11
+ TEXTURE_BLUE_TYPE_ARB = 0x8C12
+ TEXTURE_ALPHA_TYPE_ARB = 0x8C13
+ TEXTURE_LUMINANCE_TYPE_ARB = 0x8C14
+ TEXTURE_INTENSITY_TYPE_ARB = 0x8C15
+ TEXTURE_DEPTH_TYPE_ARB = 0x8C16
+ UNSIGNED_NORMALIZED_ARB = 0x8C17
+
+VERSION_3_0 enum:
+ TEXTURE_1D_ARRAY = 0x8C18 # VERSION_3_0
+ PROXY_TEXTURE_1D_ARRAY = 0x8C19 # VERSION_3_0
+ TEXTURE_2D_ARRAY = 0x8C1A # VERSION_3_0
+ PROXY_TEXTURE_2D_ARRAY = 0x8C1B # VERSION_3_0
+ TEXTURE_BINDING_1D_ARRAY = 0x8C1C # VERSION_3_0
+ TEXTURE_BINDING_2D_ARRAY = 0x8C1D # VERSION_3_0
+
+EXT_texture_array enum:
+ TEXTURE_1D_ARRAY_EXT = 0x8C18
+ PROXY_TEXTURE_1D_ARRAY_EXT = 0x8C19
+ TEXTURE_2D_ARRAY_EXT = 0x8C1A
+ PROXY_TEXTURE_2D_ARRAY_EXT = 0x8C1B
+ TEXTURE_BINDING_1D_ARRAY_EXT = 0x8C1C
+ TEXTURE_BINDING_2D_ARRAY_EXT = 0x8C1D
+
+# NV_future_use: 0x8C1E-0x8C25
+
+VERSION_3_2 enum:
+ MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29
+
+ARB_geometry_shader4 enum: (additional; see below)
+ MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29
+
+NV_geometry_program4 enum:
+ GEOMETRY_PROGRAM_NV = 0x8C26
+ MAX_PROGRAM_OUTPUT_VERTICES_NV = 0x8C27
+ MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = 0x8C28
+ MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 0x8C29
+
+VERSION_3_1 enum:
+ TEXTURE_BUFFER = 0x8C2A
+ MAX_TEXTURE_BUFFER_SIZE = 0x8C2B
+ TEXTURE_BINDING_BUFFER = 0x8C2C
+ TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D
+ TEXTURE_BUFFER_FORMAT = 0x8C2E
+
+ARB_texture_buffer_object enum:
+ TEXTURE_BUFFER_ARB = 0x8C2A
+ MAX_TEXTURE_BUFFER_SIZE_ARB = 0x8C2B
+ TEXTURE_BINDING_BUFFER_ARB = 0x8C2C
+ TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x8C2D
+ TEXTURE_BUFFER_FORMAT_ARB = 0x8C2E
+
+EXT_texture_buffer_object enum:
+ TEXTURE_BUFFER_EXT = 0x8C2A
+ MAX_TEXTURE_BUFFER_SIZE_EXT = 0x8C2B
+ TEXTURE_BINDING_BUFFER_EXT = 0x8C2C
+ TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 0x8C2D
+ TEXTURE_BUFFER_FORMAT_EXT = 0x8C2E
+
+# NV_future_use: 0x8C2F-0x8C35
+
+ARB_sample_shading enum:
+ SAMPLE_SHADING_ARB = 0x8C36
+ MIN_SAMPLE_SHADING_VALUE_ARB = 0x8C37
+
+# NV_future_use: 0x8C38-0x8C39
+
+VERSION_3_0 enum:
+ R11F_G11F_B10F = 0x8C3A # VERSION_3_0
+ UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B # VERSION_3_0
+
+EXT_packed_float enum:
+ R11F_G11F_B10F_EXT = 0x8C3A
+ UNSIGNED_INT_10F_11F_11F_REV_EXT = 0x8C3B
+ RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C
+
+VERSION_3_0 enum:
+ RGB9_E5 = 0x8C3D # VERSION_3_0
+ UNSIGNED_INT_5_9_9_9_REV = 0x8C3E # VERSION_3_0
+ TEXTURE_SHARED_SIZE = 0x8C3F # VERSION_3_0
+
+EXT_texture_shared_exponent enum:
+ RGB9_E5_EXT = 0x8C3D
+ UNSIGNED_INT_5_9_9_9_REV_EXT = 0x8C3E
+ TEXTURE_SHARED_SIZE_EXT = 0x8C3F
+
+VERSION_2_1 enum: (Generic formats promoted for OpenGL 2.1)
+ SRGB = 0x8C40 # VERSION_2_1
+ SRGB8 = 0x8C41 # VERSION_2_1
+ SRGB_ALPHA = 0x8C42 # VERSION_2_1
+ SRGB8_ALPHA8 = 0x8C43 # VERSION_2_1
+ SLUMINANCE_ALPHA = 0x8C44 # VERSION_2_1
+ SLUMINANCE8_ALPHA8 = 0x8C45 # VERSION_2_1
+ SLUMINANCE = 0x8C46 # VERSION_2_1
+ SLUMINANCE8 = 0x8C47 # VERSION_2_1
+ COMPRESSED_SRGB = 0x8C48 # VERSION_2_1
+ COMPRESSED_SRGB_ALPHA = 0x8C49 # VERSION_2_1
+ COMPRESSED_SLUMINANCE = 0x8C4A # VERSION_2_1
+ COMPRESSED_SLUMINANCE_ALPHA = 0x8C4B # VERSION_2_1
+
+EXT_texture_sRGB enum:
+ SRGB_EXT = 0x8C40 # EXT_texture_sRGB
+ SRGB8_EXT = 0x8C41 # EXT_texture_sRGB
+ SRGB_ALPHA_EXT = 0x8C42 # EXT_texture_sRGB
+ SRGB8_ALPHA8_EXT = 0x8C43 # EXT_texture_sRGB
+ SLUMINANCE_ALPHA_EXT = 0x8C44 # EXT_texture_sRGB
+ SLUMINANCE8_ALPHA8_EXT = 0x8C45 # EXT_texture_sRGB
+ SLUMINANCE_EXT = 0x8C46 # EXT_texture_sRGB
+ SLUMINANCE8_EXT = 0x8C47 # EXT_texture_sRGB
+ COMPRESSED_SRGB_EXT = 0x8C48 # EXT_texture_sRGB
+ COMPRESSED_SRGB_ALPHA_EXT = 0x8C49 # EXT_texture_sRGB
+ COMPRESSED_SLUMINANCE_EXT = 0x8C4A # EXT_texture_sRGB
+ COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B # EXT_texture_sRGB
+ COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F
+
+# NV_future_use: 0x8C50-0x8C6F
+
+EXT_texture_compression_latc enum:
+ COMPRESSED_LUMINANCE_LATC1_EXT = 0x8C70
+ COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = 0x8C71
+ COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C72
+ COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C73
+
+# NV_future_use: 0x8C74-0x8C75
+
+#@@ separate extensions
+VERSION_3_0 enum:
+EXT_transform_feedback enum:
+NV_transform_feedback enum:
+ TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76 # VERSION_3_0
+ TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = 0x8C76
+ BACK_PRIMARY_COLOR_NV = 0x8C77
+ BACK_SECONDARY_COLOR_NV = 0x8C78
+ TEXTURE_COORD_NV = 0x8C79
+ CLIP_DISTANCE_NV = 0x8C7A
+ VERTEX_ID_NV = 0x8C7B
+ PRIMITIVE_ID_NV = 0x8C7C
+ GENERIC_ATTRIB_NV = 0x8C7D
+ TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x8C7E
+ TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F # VERSION_3_0
+ TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = 0x8C7F
+ TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x8C7F
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80 # VERSION_3_0
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = 0x8C80
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x8C80
+ ACTIVE_VARYINGS_NV = 0x8C81
+ ACTIVE_VARYING_MAX_LENGTH_NV = 0x8C82
+ TRANSFORM_FEEDBACK_VARYINGS = 0x8C83 # VERSION_3_0
+ TRANSFORM_FEEDBACK_VARYINGS_EXT = 0x8C83
+ TRANSFORM_FEEDBACK_VARYINGS_NV = 0x8C83
+ TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84 # VERSION_3_0
+ TRANSFORM_FEEDBACK_BUFFER_START_EXT = 0x8C84
+ TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x8C84
+ TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85 # VERSION_3_0
+ TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = 0x8C85
+ TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x8C85
+ TRANSFORM_FEEDBACK_RECORD_NV = 0x8C86
+ PRIMITIVES_GENERATED = 0x8C87 # VERSION_3_0
+ PRIMITIVES_GENERATED_EXT = 0x8C87
+ PRIMITIVES_GENERATED_NV = 0x8C87
+ TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88 # VERSION_3_0
+ TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = 0x8C88
+ TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x8C88
+ RASTERIZER_DISCARD = 0x8C89 # VERSION_3_0
+ RASTERIZER_DISCARD_EXT = 0x8C89
+ RASTERIZER_DISCARD_NV = 0x8C89
+ MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A # VERSION_3_0
+ MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A
+ MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV = 0x8C8A
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B # VERSION_3_0
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = 0x8C8B
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x8C8B
+ INTERLEAVED_ATTRIBS = 0x8C8C # VERSION_3_0
+ INTERLEAVED_ATTRIBS_EXT = 0x8C8C
+ INTERLEAVED_ATTRIBS_NV = 0x8C8C
+ SEPARATE_ATTRIBS = 0x8C8D # VERSION_3_0
+ SEPARATE_ATTRIBS_EXT = 0x8C8D
+ SEPARATE_ATTRIBS_NV = 0x8C8D
+ TRANSFORM_FEEDBACK_BUFFER = 0x8C8E # VERSION_3_0
+ TRANSFORM_FEEDBACK_BUFFER_EXT = 0x8C8E
+ TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E
+ TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F # VERSION_3_0
+ TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = 0x8C8F
+ TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F
+
+###############################################################################
+
+# ATI: 0x8C90-0x8C9F (Affie Munshi, OpenGL ES extensions)
+
+# Reassigned to Qualcomm at time of mobile/desktop split (bug 5874)
+# Qualcomm__future_use: 0x8C90-0x8C91
+
+AMD_compressed_ATC_texture enum: (OpenGL ES only)
+ ATC_RGB_AMD = 0x8C92
+ ATC_RGBA_EXPLICIT_ALPHA_AMD = 0x8C93
+
+# Reassigned to Qualcomm at time of mobile/desktop split (bug 5874)
+# Qualcomm_future_use: 0x8C94-0x8C9F
+
+###############################################################################
+
+# OpenGL ARB: 0x8CA0-0x8CAF
+
+VERSION_2_0 enum:
+ POINT_SPRITE_COORD_ORIGIN = 0x8CA0
+ LOWER_LEFT = 0x8CA1
+ UPPER_LEFT = 0x8CA2
+ STENCIL_BACK_REF = 0x8CA3
+ STENCIL_BACK_VALUE_MASK = 0x8CA4
+ STENCIL_BACK_WRITEMASK = 0x8CA5
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object FRAMEBUFFER_BINDING
+ use ARB_framebuffer_object DRAW_FRAMEBUFFER_BINDING
+ use ARB_framebuffer_object RENDERBUFFER_BINDING
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ FRAMEBUFFER_BINDING = 0x8CA6 # VERSION_3_0 / ARB_fbo
+ DRAW_FRAMEBUFFER_BINDING = 0x8CA6 # VERSION_3_0 / ARB_fbo # alias GL_FRAMEBUFFER_BINDING
+ RENDERBUFFER_BINDING = 0x8CA7 # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_object enum: (additional; see below)
+ FRAMEBUFFER_BINDING_EXT = 0x8CA6
+ RENDERBUFFER_BINDING_EXT = 0x8CA7
+
+EXT_framebuffer_blit enum: (additional; see below)
+ DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CA6 # EXT_framebuffer_blit # alias GL_FRAMEBUFFER_BINDING_EXT
+
+# Aliases EXT_framebuffer_object enums above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+ FRAMEBUFFER_BINDING_OES = 0x8CA6
+ RENDERBUFFER_BINDING_OES = 0x8CA7
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object READ_FRAMEBUFFER
+ use ARB_framebuffer_object DRAW_FRAMEBUFFER
+ use ARB_framebuffer_object READ_FRAMEBUFFER_BINDING
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ READ_FRAMEBUFFER = 0x8CA8 # VERSION_3_0 / ARB_fbo
+ DRAW_FRAMEBUFFER = 0x8CA9 # VERSION_3_0 / ARB_fbo
+ READ_FRAMEBUFFER_BINDING = 0x8CAA # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_blit enum:
+ READ_FRAMEBUFFER_EXT = 0x8CA8
+ DRAW_FRAMEBUFFER_EXT = 0x8CA9
+ DRAW_FRAMEBUFFER_BINDING_EXT = 0x8CA6 # alias GL_FRAMEBUFFER_BINDING_EXT
+ READ_FRAMEBUFFER_BINDING_EXT = 0x8CAA
+
+VERSION_3_0 enum:
+ use ARB_framebuffer_object RENDERBUFFER_SAMPLES
+
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+ RENDERBUFFER_SAMPLES = 0x8CAB # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_multisample enum:
+ RENDERBUFFER_SAMPLES_EXT = 0x8CAB
+
+NV_framebuffer_multisample_coverage enum: (additional; see below)
+ RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB
+
+# All enums except external format are incompatible with NV_depth_buffer_float
+VERSION_3_0 enum:
+ARB_depth_buffer_float enum: (note: no ARB suffixes)
+ DEPTH_COMPONENT32F = 0x8CAC
+ DEPTH32F_STENCIL8 = 0x8CAD
+
+# ARB_future_use: 0x8CAF
+
+###############################################################################
+
+# 3Dlabs: 0x8CB0-0x8CCF (Barthold Lichtenbelt, 2004/12/1)
+
+###############################################################################
+
+# OpenGL ARB: 0x8CD0-0x8D5F (Framebuffer object specification + headroom)
+
+#@@ separate extensions
+VERSION_3_0 enum:
+ARB_geometry_shader4 enum: (additional; see below; note: no ARB suffixes)
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+EXT_framebuffer_object enum: (additional; see above)
+ FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0
+ FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4
+ FRAMEBUFFER_COMPLETE = 0x8CD5 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_COMPLETE_EXT = 0x8CD5
+ FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6
+ FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7
+## Removed 2005/09/26 in revision #117 of the extension:
+## FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT = 0x8CD8
+ FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9
+ FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA
+ FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB
+ FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC
+ FRAMEBUFFER_UNSUPPORTED = 0x8CDD # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD
+## Removed 2005/05/31 in revision #113 of the extension:
+## FRAMEBUFFER_STATUS_ERROR_EXT = 0x8CDE
+ MAX_COLOR_ATTACHMENTS = 0x8CDF # VERSION_3_0 / ARB_fbo
+ MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF
+ COLOR_ATTACHMENT0 = 0x8CE0 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT0_EXT = 0x8CE0
+ COLOR_ATTACHMENT1 = 0x8CE1 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT1_EXT = 0x8CE1
+ COLOR_ATTACHMENT2 = 0x8CE2 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT2_EXT = 0x8CE2
+ COLOR_ATTACHMENT3 = 0x8CE3 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT3_EXT = 0x8CE3
+ COLOR_ATTACHMENT4 = 0x8CE4 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT4_EXT = 0x8CE4
+ COLOR_ATTACHMENT5 = 0x8CE5 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT5_EXT = 0x8CE5
+ COLOR_ATTACHMENT6 = 0x8CE6 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT6_EXT = 0x8CE6
+ COLOR_ATTACHMENT7 = 0x8CE7 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT7_EXT = 0x8CE7
+ COLOR_ATTACHMENT8 = 0x8CE8 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT8_EXT = 0x8CE8
+ COLOR_ATTACHMENT9 = 0x8CE9 # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT9_EXT = 0x8CE9
+ COLOR_ATTACHMENT10 = 0x8CEA # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT10_EXT = 0x8CEA
+ COLOR_ATTACHMENT11 = 0x8CEB # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT11_EXT = 0x8CEB
+ COLOR_ATTACHMENT12 = 0x8CEC # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT12_EXT = 0x8CEC
+ COLOR_ATTACHMENT13 = 0x8CED # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT13_EXT = 0x8CED
+ COLOR_ATTACHMENT14 = 0x8CEE # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT14_EXT = 0x8CEE
+ COLOR_ATTACHMENT15 = 0x8CEF # VERSION_3_0 / ARB_fbo
+ COLOR_ATTACHMENT15_EXT = 0x8CEF
+# 0x8CF0-0x8CFF reserved for color attachments 16-31, if needed
+ DEPTH_ATTACHMENT = 0x8D00 # VERSION_3_0 / ARB_fbo
+ DEPTH_ATTACHMENT_EXT = 0x8D00
+# 0x8D01-0x8D1F reserved for depth attachments 1-31, if needed
+ STENCIL_ATTACHMENT = 0x8D20 # VERSION_3_0 / ARB_fbo
+ STENCIL_ATTACHMENT_EXT = 0x8D20
+# 0x8D21-0x8D3F reserved for stencil attachments 1-31, if needed
+ FRAMEBUFFER = 0x8D40 # VERSION_3_0 / ARB_fbo
+ FRAMEBUFFER_EXT = 0x8D40
+ RENDERBUFFER = 0x8D41 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_EXT = 0x8D41
+ RENDERBUFFER_WIDTH = 0x8D42 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_WIDTH_EXT = 0x8D42
+ RENDERBUFFER_HEIGHT = 0x8D43 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_HEIGHT_EXT = 0x8D43
+ RENDERBUFFER_INTERNAL_FORMAT = 0x8D44 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44
+# 0x8D45 unused (reserved for STENCIL_INDEX_EXT, but now use core STENCIL_INDEX instead)
+ STENCIL_INDEX1 = 0x8D46 # VERSION_3_0 / ARB_fbo
+ STENCIL_INDEX1_EXT = 0x8D46
+ STENCIL_INDEX4 = 0x8D47 # VERSION_3_0 / ARB_fbo
+ STENCIL_INDEX4_EXT = 0x8D47
+ STENCIL_INDEX8 = 0x8D48 # VERSION_3_0 / ARB_fbo
+ STENCIL_INDEX8_EXT = 0x8D48
+ STENCIL_INDEX16 = 0x8D49 # VERSION_3_0 / ARB_fbo
+ STENCIL_INDEX16_EXT = 0x8D49
+# 0x8D4A-0x8D4D reserved for additional stencil formats
+# Added 2005/05/31 in revision #113 of the extension:
+ RENDERBUFFER_RED_SIZE = 0x8D50 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_RED_SIZE_EXT = 0x8D50
+ RENDERBUFFER_GREEN_SIZE = 0x8D51 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51
+ RENDERBUFFER_BLUE_SIZE = 0x8D52 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52
+ RENDERBUFFER_ALPHA_SIZE = 0x8D53 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53
+ RENDERBUFFER_DEPTH_SIZE = 0x8D54 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54
+ RENDERBUFFER_STENCIL_SIZE = 0x8D55 # VERSION_3_0 / ARB_fbo
+ RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55
+
+# Aliases EXT_framebuffer_object enum above
+# @@@??? does this appear in OES_texture3D, or OES_framebuffer_object?
+# extension spec & gl2ext.h disagree!
+OES_texture3D enum: (OpenGL ES only; additional; see above)
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = 0x8CD4
+
+# Aliases EXT_framebuffer_object enums above
+OES_framebuffer_object enum: (OpenGL ES only; additional; see below)
+ FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES = 0x8CD0
+ FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES = 0x8CD1
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES = 0x8CD2
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES = 0x8CD3
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES = 0x8CD4
+ FRAMEBUFFER_COMPLETE_OES = 0x8CD5
+ FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES = 0x8CD6
+ FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES = 0x8CD7
+ FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES = 0x8CD9
+ FRAMEBUFFER_INCOMPLETE_FORMATS_OES = 0x8CDA
+ FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES = 0x8CDB
+ FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES = 0x8CDC
+ FRAMEBUFFER_UNSUPPORTED_OES = 0x8CDD
+ COLOR_ATTACHMENT0_OES = 0x8CE0
+ DEPTH_ATTACHMENT_OES = 0x8D00
+ STENCIL_ATTACHMENT_OES = 0x8D20
+ FRAMEBUFFER_OES = 0x8D40
+ RENDERBUFFER_OES = 0x8D41
+ RENDERBUFFER_WIDTH_OES = 0x8D42
+ RENDERBUFFER_HEIGHT_OES = 0x8D43
+ RENDERBUFFER_INTERNAL_FORMAT_OES = 0x8D44
+ STENCIL_INDEX1_OES = 0x8D46
+ STENCIL_INDEX4_OES = 0x8D47
+ STENCIL_INDEX8_OES = 0x8D48
+ RENDERBUFFER_RED_SIZE_OES = 0x8D50
+ RENDERBUFFER_GREEN_SIZE_OES = 0x8D51
+ RENDERBUFFER_BLUE_SIZE_OES = 0x8D52
+ RENDERBUFFER_ALPHA_SIZE_OES = 0x8D53
+ RENDERBUFFER_DEPTH_SIZE_OES = 0x8D54
+ RENDERBUFFER_STENCIL_SIZE_OES = 0x8D55
+
+OES_stencil1 enum: (OpenGL ES only; additional; see below)
+ use OES_framebuffer_object STENCIL_INDEX1_OES
+
+OES_stencil4 enum: (OpenGL ES only; additional; see below)
+ use OES_framebuffer_object STENCIL_INDEX4_OES
+
+OES_stencil8 enum: (OpenGL ES only; additional; see below)
+ use OES_framebuffer_object STENCIL_INDEX8_OES
+
+VERSION_3_0 enum:
+ARB_framebuffer_object enum: (note: no ARB suffixes)
+# Added 2006/10/10 in revision #6b of the extension.
+ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56 # VERSION_3_0 / ARB_fbo
+ MAX_SAMPLES = 0x8D57 # VERSION_3_0 / ARB_fbo
+
+EXT_framebuffer_multisample enum: (additional; see above)
+ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56
+ MAX_SAMPLES_EXT = 0x8D57
+
+# 0x8D58-0x8D5F reserved for additional FBO enums
+
+NV_geometry_program4 enum: (additional; see above)
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = 0x8CD4
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8D60-0x8D6F
+
+OES_texture_cube_map enum: (OpenGL ES only)
+ TEXTURE_GEN_STR_OES = 0x8D60
+
+OES_texture_float enum: (OpenGL ES only)
+ HALF_FLOAT_OES = 0x8D61
+
+OES_vertex_half_float enum: (OpenGL ES only)
+ use OES_texture_float HALF_FLOAT_OES
+
+OES_framebuffer_object enum: (OpenGL ES only)
+ RGB565_OES = 0x8D62
+
+# Khronos_future_use: 0x8D63
+
+OES_compressed_ETC1_RGB8_texture enum: (OpenGL ES only)
+ ETC1_RGB8_OES = 0x8D64
+
+OES_EGL_image_external enum: (OpenGL ES only) (Khronos bug 4621)
+ TEXTURE_EXTERNAL_OES = 0x8D65
+ SAMPLER_EXTERNAL_OES = 0x8D66
+ TEXTURE_BINDING_EXTERNAL_OES = 0x8D67
+ REQUIRED_TEXTURE_IMAGE_UNITS_OES = 0x8D68
+
+# Khronos_future_use: 0x8D69-0x8D6F
+
+###############################################################################
+
+# NVIDIA: 0x8D70-0x8DEF
+# Reserved per email from Pat Brown 2005/10/13
+
+#@@ separate extensions
+VERSION_3_0 enum:
+EXT_texture_integer enum:
+ RGBA32UI = 0x8D70 # VERSION_3_0
+ RGBA32UI_EXT = 0x8D70
+ RGB32UI = 0x8D71 # VERSION_3_0
+ RGB32UI_EXT = 0x8D71
+ ALPHA32UI_EXT = 0x8D72
+ INTENSITY32UI_EXT = 0x8D73
+ LUMINANCE32UI_EXT = 0x8D74
+ LUMINANCE_ALPHA32UI_EXT = 0x8D75
+ RGBA16UI = 0x8D76 # VERSION_3_0
+ RGBA16UI_EXT = 0x8D76
+ RGB16UI = 0x8D77 # VERSION_3_0
+ RGB16UI_EXT = 0x8D77
+ ALPHA16UI_EXT = 0x8D78
+ INTENSITY16UI_EXT = 0x8D79
+ LUMINANCE16UI_EXT = 0x8D7A
+ LUMINANCE_ALPHA16UI_EXT = 0x8D7B
+ RGBA8UI = 0x8D7C # VERSION_3_0
+ RGBA8UI_EXT = 0x8D7C
+ RGB8UI = 0x8D7D # VERSION_3_0
+ RGB8UI_EXT = 0x8D7D
+ ALPHA8UI_EXT = 0x8D7E
+ INTENSITY8UI_EXT = 0x8D7F
+ LUMINANCE8UI_EXT = 0x8D80
+ LUMINANCE_ALPHA8UI_EXT = 0x8D81
+ RGBA32I = 0x8D82 # VERSION_3_0
+ RGBA32I_EXT = 0x8D82
+ RGB32I = 0x8D83 # VERSION_3_0
+ RGB32I_EXT = 0x8D83
+ ALPHA32I_EXT = 0x8D84
+ INTENSITY32I_EXT = 0x8D85
+ LUMINANCE32I_EXT = 0x8D86
+ LUMINANCE_ALPHA32I_EXT = 0x8D87
+ RGBA16I = 0x8D88 # VERSION_3_0
+ RGBA16I_EXT = 0x8D88
+ RGB16I = 0x8D89 # VERSION_3_0
+ RGB16I_EXT = 0x8D89
+ ALPHA16I_EXT = 0x8D8A
+ INTENSITY16I_EXT = 0x8D8B
+ LUMINANCE16I_EXT = 0x8D8C
+ LUMINANCE_ALPHA16I_EXT = 0x8D8D
+ RGBA8I = 0x8D8E # VERSION_3_0
+ RGBA8I_EXT = 0x8D8E
+ RGB8I = 0x8D8F # VERSION_3_0
+ RGB8I_EXT = 0x8D8F
+ ALPHA8I_EXT = 0x8D90
+ INTENSITY8I_EXT = 0x8D91
+ LUMINANCE8I_EXT = 0x8D92
+ LUMINANCE_ALPHA8I_EXT = 0x8D93
+ RED_INTEGER = 0x8D94 # VERSION_3_0
+ RED_INTEGER_EXT = 0x8D94
+ GREEN_INTEGER = 0x8D95 # VERSION_3_0
+ GREEN_INTEGER_EXT = 0x8D95
+ BLUE_INTEGER = 0x8D96 # VERSION_3_0
+ BLUE_INTEGER_EXT = 0x8D96
+ ALPHA_INTEGER = 0x8D97 # VERSION_3_0
+ ALPHA_INTEGER_EXT = 0x8D97
+ RGB_INTEGER = 0x8D98 # VERSION_3_0
+ RGB_INTEGER_EXT = 0x8D98
+ RGBA_INTEGER = 0x8D99 # VERSION_3_0
+ RGBA_INTEGER_EXT = 0x8D99
+ BGR_INTEGER = 0x8D9A # VERSION_3_0
+ BGR_INTEGER_EXT = 0x8D9A
+ BGRA_INTEGER = 0x8D9B # VERSION_3_0
+ BGRA_INTEGER_EXT = 0x8D9B
+ LUMINANCE_INTEGER_EXT = 0x8D9C
+ LUMINANCE_ALPHA_INTEGER_EXT = 0x8D9D
+ RGBA_INTEGER_MODE_EXT = 0x8D9E
+
+# NV_future_use: 0x8D9F
+
+NV_parameter_buffer_object enum:
+ MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = 0x8DA0
+ MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = 0x8DA1
+ VERTEX_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA2
+ GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA3
+ FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA4
+
+NV_gpu_program4 enum: (additional; see above)
+ MAX_PROGRAM_GENERIC_ATTRIBS_NV = 0x8DA5
+ MAX_PROGRAM_GENERIC_RESULTS_NV = 0x8DA6
+
+VERSION_3_2 enum:
+ FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7
+ FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8
+
+ARB_geometry_shader4 enum: (additional; see below)
+ FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7
+ FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8
+ FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9
+
+NV_geometry_program4 enum: (additional; see above)
+ FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 0x8DA7
+ FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 0x8DA8
+ FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = 0x8DA9
+
+# NV_future_use: 0x8DAA
+
+VERSION_3_0 enum:
+ARB_depth_buffer_float enum: (additional; see above; some values different from NV; note: no ARB suffixes)
+ FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD
+
+NV_depth_buffer_float enum:
+ DEPTH_COMPONENT32F_NV = 0x8DAB
+ DEPTH32F_STENCIL8_NV = 0x8DAC
+ FLOAT_32_UNSIGNED_INT_24_8_REV_NV = 0x8DAD
+ DEPTH_BUFFER_FLOAT_MODE_NV = 0x8DAF
+
+# NV_future_use: 0x8DAE
+# NV_future_use: 0x8DB0-0x8DB8
+
+VERSION_3_0 enum:
+ARB_framebuffer_sRGB enum: (note: no ARB suffixes)
+ FRAMEBUFFER_SRGB = 0x8DB9 # VERSION_3_0 / ARB_sRGB
+
+EXT_framebuffer_sRGB enum:
+ FRAMEBUFFER_SRGB_EXT = 0x8DB9
+ FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA
+
+VERSION_3_0 enum:
+ARB_texture_compression_rgtc enum: (note: no ARB suffixes)
+ COMPRESSED_RED_RGTC1 = 0x8DBB # VERSION_3_0 / ARB_tcrgtc
+ COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC # VERSION_3_0 / ARB_tcrgtc
+ COMPRESSED_RG_RGTC2 = 0x8DBD # VERSION_3_0 / ARB_tcrgtc
+ COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE # VERSION_3_0 / ARB_tcrgtc
+
+EXT_texture_compression_rgtc enum:
+ COMPRESSED_RED_RGTC1_EXT = 0x8DBB
+ COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC
+ COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD
+ COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE
+
+# NV_future_use: 0x8DBF
+
+VERSION_3_0 enum:
+ SAMPLER_1D_ARRAY = 0x8DC0 # VERSION_3_0
+ SAMPLER_2D_ARRAY = 0x8DC1 # VERSION_3_0
+ SAMPLER_1D_ARRAY_SHADOW = 0x8DC3 # VERSION_3_0
+ SAMPLER_2D_ARRAY_SHADOW = 0x8DC4 # VERSION_3_0
+ SAMPLER_CUBE_SHADOW = 0x8DC5 # VERSION_3_0
+ UNSIGNED_INT_VEC2 = 0x8DC6 # VERSION_3_0
+ UNSIGNED_INT_VEC3 = 0x8DC7 # VERSION_3_0
+ UNSIGNED_INT_VEC4 = 0x8DC8 # VERSION_3_0
+ INT_SAMPLER_1D = 0x8DC9 # VERSION_3_0
+ INT_SAMPLER_2D = 0x8DCA # VERSION_3_0
+ INT_SAMPLER_3D = 0x8DCB # VERSION_3_0
+ INT_SAMPLER_CUBE = 0x8DCC # VERSION_3_0
+ INT_SAMPLER_1D_ARRAY = 0x8DCE # VERSION_3_0
+ INT_SAMPLER_2D_ARRAY = 0x8DCF # VERSION_3_0
+ UNSIGNED_INT_SAMPLER_1D = 0x8DD1 # VERSION_3_0
+ UNSIGNED_INT_SAMPLER_2D = 0x8DD2 # VERSION_3_0
+ UNSIGNED_INT_SAMPLER_3D = 0x8DD3 # VERSION_3_0
+ UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4 # VERSION_3_0
+ UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6 # VERSION_3_0
+ UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7 # VERSION_3_0
+
+VERSION_3_1 enum: (Promoted from EXT_gpu_shader4 + ARB_texture_rectangle / ARB_uniform_buffer_object)
+ SAMPLER_BUFFER = 0x8DC2 # EXT_gpu_shader4 + ARB_texture_buffer_object
+ INT_SAMPLER_2D_RECT = 0x8DCD # EXT_gpu_shader4 + ARB_texture_rectangle
+ INT_SAMPLER_BUFFER = 0x8DD0 # EXT_gpu_shader4 + ARB_texture_buffer_object
+ UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5 # EXT_gpu_shader4 + ARB_texture_rectangle
+ UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8 # EXT_gpu_shader4 + ARB_texture_buffer_object
+
+EXT_gpu_shader4 enum:
+ SAMPLER_1D_ARRAY_EXT = 0x8DC0
+ SAMPLER_2D_ARRAY_EXT = 0x8DC1
+ SAMPLER_BUFFER_EXT = 0x8DC2
+ SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3
+ SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4
+ SAMPLER_CUBE_SHADOW_EXT = 0x8DC5
+ UNSIGNED_INT_VEC2_EXT = 0x8DC6
+ UNSIGNED_INT_VEC3_EXT = 0x8DC7
+ UNSIGNED_INT_VEC4_EXT = 0x8DC8
+ INT_SAMPLER_1D_EXT = 0x8DC9
+ INT_SAMPLER_2D_EXT = 0x8DCA
+ INT_SAMPLER_3D_EXT = 0x8DCB
+ INT_SAMPLER_CUBE_EXT = 0x8DCC
+ INT_SAMPLER_2D_RECT_EXT = 0x8DCD
+ INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE
+ INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF
+ INT_SAMPLER_BUFFER_EXT = 0x8DD0
+ UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1
+ UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2
+ UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3
+ UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4
+ UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5
+ UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6
+ UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7
+ UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8
+
+VERSION_3_2 enum:
+ GEOMETRY_SHADER = 0x8DD9
+
+ARB_geometry_shader4 enum:
+ GEOMETRY_SHADER_ARB = 0x8DD9
+
+EXT_geometry_shader4 enum:
+ GEOMETRY_SHADER_EXT = 0x8DD9
+
+ARB_geometry_shader4 enum: (additional; see above)
+ GEOMETRY_VERTICES_OUT_ARB = 0x8DDA
+ GEOMETRY_INPUT_TYPE_ARB = 0x8DDB
+ GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC
+
+NV_geometry_program4 enum: (additional; see above)
+ GEOMETRY_VERTICES_OUT_EXT = 0x8DDA
+ GEOMETRY_INPUT_TYPE_EXT = 0x8DDB
+ GEOMETRY_OUTPUT_TYPE_EXT = 0x8DDC
+
+ARB_geometry_shader4 enum: (additional; see above)
+ MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD
+ MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE
+ MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF
+ MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0
+ MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1
+
+VERSION_3_2 enum:
+ MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF
+ MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0
+ MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1
+
+EXT_geometry_shader4 enum: (additional; see above)
+ MAX_GEOMETRY_VARYING_COMPONENTS_EXT = 0x8DDD
+ MAX_VERTEX_VARYING_COMPONENTS_EXT = 0x8DDE
+ MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8DDF
+ MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 0x8DE0
+ MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8DE1
+
+EXT_bindable_uniform enum:
+ MAX_VERTEX_BINDABLE_UNIFORMS_EXT = 0x8DE2
+ MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = 0x8DE3
+ MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = 0x8DE4
+
+# NV_future_use: 0x8DE5-0x8DEC
+
+EXT_bindable_uniform enum: (additional; see above)
+ MAX_BINDABLE_UNIFORM_SIZE_EXT = 0x8DED
+ UNIFORM_BUFFER_EXT = 0x8DEE
+ UNIFORM_BUFFER_BINDING_EXT = 0x8DEF
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8DF0-0x8E0F
+
+# Khronos_future_use: 0x8DF0-0x8DF5
+
+OES_vertex_type_10_10_10_2 enum: (OpenGL ES only)
+ UNSIGNED_INT_10_10_10_2_OES = 0x8DF6
+ INT_10_10_10_2_OES = 0x8DF7
+
+# Khronos_future_use: 0x8DF8-0x8E0F
+
+###############################################################################
+
+# NVIDIA: 0x8E10-0x8E8F
+# Reserved per email from Michael Gold 2006/8/7
+
+NV_framebuffer_multisample_coverage enum:
+ RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10
+ MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11
+ MULTISAMPLE_COVERAGE_MODES_NV = 0x8E12
+
+VERSION_3_0 enum:
+ QUERY_WAIT = 0x8E13 # VERSION_3_0
+ QUERY_NO_WAIT = 0x8E14 # VERSION_3_0
+ QUERY_BY_REGION_WAIT = 0x8E15 # VERSION_3_0
+ QUERY_BY_REGION_NO_WAIT = 0x8E16 # VERSION_3_0
+
+GL_NV_conditional_render enum:
+ QUERY_WAIT_NV = 0x8E13
+ QUERY_NO_WAIT_NV = 0x8E14
+ QUERY_BY_REGION_WAIT_NV = 0x8E15
+ QUERY_BY_REGION_NO_WAIT_NV = 0x8E16
+
+# NV_future_use: 0x8E17-0x8E21
+
+NV_transform_feedback2 enum:
+ TRANSFORM_FEEDBACK_NV = 0x8E22
+ TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23
+ TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24
+ TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25
+
+NV_present_video enum:
+ FRAME_NV = 0x8E26
+ FIELDS_NV = 0x8E27
+ CURRENT_TIME_NV = 0x8E28
+ NUM_FILL_STREAMS_NV = 0x8E29
+ PRESENT_TIME_NV = 0x8E2A
+ PRESENT_DURATION_NV = 0x8E2B
+
+NV_depth_nonlinear enum: (OpenGL ES only)
+ DEPTH_COMPONENT16_NONLINEAR_NV = 0x8E2C
+
+EXT_direct_state_access enum:
+ PROGRAM_MATRIX_EXT = 0x8E2D
+ TRANSPOSE_PROGRAM_MATRIX_EXT = 0x8E2E
+ PROGRAM_MATRIX_STACK_DEPTH_EXT = 0x8E2F
+
+# NV_future_use: 0x8E30-0x8E41
+
+EXT_texture_swizzle enum:
+ TEXTURE_SWIZZLE_R_EXT = 0x8E42
+ TEXTURE_SWIZZLE_G_EXT = 0x8E43
+ TEXTURE_SWIZZLE_B_EXT = 0x8E44
+ TEXTURE_SWIZZLE_A_EXT = 0x8E45
+ TEXTURE_SWIZZLE_RGBA_EXT = 0x8E46
+
+# NV_future_use: 0x8E47-0x8E4B
+
+VERSION_3_2 enum:
+ use ARB_provoking_vertex QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
+ use ARB_provoking_vertex FIRST_VERTEX_CONVENTION
+ use ARB_provoking_vertex LAST_VERTEX_CONVENTION
+ use ARB_provoking_vertex PROVOKING_VERTEX
+
+ARB_provoking_vertex enum:
+ QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C
+ FIRST_VERTEX_CONVENTION = 0x8E4D
+ LAST_VERTEX_CONVENTION = 0x8E4E
+ PROVOKING_VERTEX = 0x8E4F
+
+EXT_provoking_vertex enum:
+ QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = 0x8E4C
+ FIRST_VERTEX_CONVENTION_EXT = 0x8E4D
+ LAST_VERTEX_CONVENTION_EXT = 0x8E4E
+ PROVOKING_VERTEX_EXT = 0x8E4F
+
+VERSION_3_2 enum:
+ use ARB_texture_multisample SAMPLE_POSITION
+ use ARB_texture_multisample SAMPLE_MASK
+ use ARB_texture_multisample SAMPLE_MASK_VALUE
+ use ARB_texture_multisample MAX_SAMPLE_MASK_WORDS
+
+ARB_texture_multisample enum:
+ SAMPLE_POSITION = 0x8E50
+ SAMPLE_MASK = 0x8E51
+ SAMPLE_MASK_VALUE = 0x8E52
+ MAX_SAMPLE_MASK_WORDS = 0x8E59
+
+NV_explicit_multisample enum:
+ SAMPLE_POSITION_NV = 0x8E50
+ SAMPLE_MASK_NV = 0x8E51
+ SAMPLE_MASK_VALUE_NV = 0x8E52
+ TEXTURE_BINDING_RENDERBUFFER_NV = 0x8E53
+ TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = 0x8E54
+ TEXTURE_RENDERBUFFER_NV = 0x8E55
+ SAMPLER_RENDERBUFFER_NV = 0x8E56
+ INT_SAMPLER_RENDERBUFFER_NV = 0x8E57
+ UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58
+ MAX_SAMPLE_MASK_WORDS_NV = 0x8E59
+
+# NV_future_use: 0x8E5A-0x8E5D
+
+ARB_texture_gather enum:
+ MIN_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5E
+ MAX_PROGRAM_TEXTURE_GATHER_OFFSET = 0x8E5F
+
+# NV_future_use: 0x8E60-0x8E8F
+
+###############################################################################
+
+# QNX: 0x8E90-0x8E9F
+# For GL_QNX_texture_tiling, GL_QNX_complex_polygon, GL_QNX_stippled_lines
+# (Khronos bug 696)
+
+# QNX_future_use: 0x8E90-0x8E9F
+
+###############################################################################
+
+# Imagination Tech.: 0x8EA0-0x8EAF
+
+###############################################################################
+
+# Khronos OpenGL ES WG: 0x8EB0-0x8EBF
+# Assigned for Affie Munshi on 2007/07/20
+
+###############################################################################
+
+# Vincent: 0x8EC0-0x8ECF
+
+###############################################################################
+
+# NVIDIA: 0x8ED0-0x8F4F
+# Assigned for Pat Brown (Khronos bug 3191)
+
+NV_coverage_sample enum: (OpenGL ES only)
+ COVERAGE_COMPONENT_NV = 0x8ED0
+ COVERAGE_COMPONENT4_NV = 0x8ED1
+ COVERAGE_ATTACHMENT_NV = 0x8ED2
+ COVERAGE_BUFFERS_NV = 0x8ED3
+ COVERAGE_SAMPLES_NV = 0x8ED4
+ COVERAGE_ALL_FRAGMENTS_NV = 0x8ED5
+ COVERAGE_EDGE_FRAGMENTS_NV = 0x8ED6
+ COVERAGE_AUTOMATIC_NV = 0x8ED7
+ COVERAGE_BUFFER_BIT_NV = 0x00008000
+
+# NV_future_use: 0x8ED8-0x8F1C
+
+NV_shader_buffer_load enum:
+ BUFFER_GPU_ADDRESS_NV = 0x8F1D
+
+NV_vertex_buffer_unified_memory enum:
+ VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E
+ ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F
+ VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20
+ VERTEX_ARRAY_ADDRESS_NV = 0x8F21
+ NORMAL_ARRAY_ADDRESS_NV = 0x8F22
+ COLOR_ARRAY_ADDRESS_NV = 0x8F23
+ INDEX_ARRAY_ADDRESS_NV = 0x8F24
+ TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25
+ EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26
+ SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27
+ FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28
+ ELEMENT_ARRAY_ADDRESS_NV = 0x8F29
+ VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A
+ VERTEX_ARRAY_LENGTH_NV = 0x8F2B
+ NORMAL_ARRAY_LENGTH_NV = 0x8F2C
+ COLOR_ARRAY_LENGTH_NV = 0x8F2D
+ INDEX_ARRAY_LENGTH_NV = 0x8F2E
+ TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F
+ EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30
+ SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31
+ FOG_COORD_ARRAY_LENGTH_NV = 0x8F32
+ ELEMENT_ARRAY_LENGTH_NV = 0x8F33
+
+NV_shader_buffer_load enum: (additional; see above)
+ GPU_ADDRESS_NV = 0x8F34
+ MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35
+
+ARB_copy_buffer enum:
+ COPY_READ_BUFFER = 0x8F36
+ COPY_WRITE_BUFFER = 0x8F37
+
+VERSION_3_1 enum:
+ use ARB_copy_buffer COPY_READ_BUFFER
+ use ARB_copy_buffer COPY_WRITE_BUFFER
+
+# NVIDIA_future_use: 0x8F38-0x8F4F
+
+###############################################################################
+
+# 3Dlabs: 0x8F50-0x8F5F
+# Assigned for Jon Kennedy (Khronos public bug 75)
+
+###############################################################################
+
+# ARM: 0x8F60-0x8F6F
+# Assigned for Remi Pedersen (Khronos bug 3745)
+
+###############################################################################
+
+# HI Corp: 0x8F70-0x8F7F
+# Assigned for Mark Callow (Khronos bug 4055)
+
+###############################################################################
+
+# Zebra Imaging: 0x8F80-0x8F8F
+# Assigned for Mike Weiblen (Khronos public bug 91)
+
+###############################################################################
+
+# OpenGL ARB: 0x8F90-0x8F9F (SNORM textures, 3.1 primitive restart server state)
+
+VERSION_3_1 enum:
+ RED_SNORM = 0x8F90 # VERSION_3_1
+ RG_SNORM = 0x8F91 # VERSION_3_1
+ RGB_SNORM = 0x8F92 # VERSION_3_1
+ RGBA_SNORM = 0x8F93 # VERSION_3_1
+ R8_SNORM = 0x8F94 # VERSION_3_1
+ RG8_SNORM = 0x8F95 # VERSION_3_1
+ RGB8_SNORM = 0x8F96 # VERSION_3_1
+ RGBA8_SNORM = 0x8F97 # VERSION_3_1
+ R16_SNORM = 0x8F98 # VERSION_3_1
+ RG16_SNORM = 0x8F99 # VERSION_3_1
+ RGB16_SNORM = 0x8F9A # VERSION_3_1
+ RGBA16_SNORM = 0x8F9B # VERSION_3_1
+ SIGNED_NORMALIZED = 0x8F9C # VERSION_3_1
+ PRIMITIVE_RESTART = 0x8F9D # Different from NV_primitive_restart value
+ PRIMITIVE_RESTART_INDEX = 0x8F9E # Different from NV_primitive_restart value
+
+ARB_texture_gather enum: (additional; see above)
+ MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS = 0x8F9F
+
+###############################################################################
+
+# Qualcomm: 0x8FA0-0x8FBF
+# Assigned for Maurice Ribble (Khronos bug 4512)
+
+QCOM_driver_control enum: (OpenGL ES only)
+ PERFMON_GLOBAL_MODE_QCOM = 0x8FA0
+
+# QCOM_future_use: 0x8FA1-0x8FBF
+
+###############################################################################
+
+# Vivante: 0x8FC0-0x8FDF
+# Assigned for Frido Garritsen (Khronos bug 4526)
+
+###############################################################################
+
+# NVIDIA: 0x8FE0-0x8FFF
+# Assigned for Pat Brown (Khronos bug 4935)
+
+# NV_future_use: 0x8FE0-0x8FFF
+
+###############################################################################
+
+# AMD: 0x9000-0x901F
+# Assigned for Bill Licea-Kane
+
+AMD_vertex_shader_tesselator enum:
+ SAMPLER_BUFFER_AMD = 0x9001
+ INT_SAMPLER_BUFFER_AMD = 0x9002
+ UNSIGNED_INT_SAMPLER_BUFFER_AMD = 0x9003
+ TESSELLATION_MODE_AMD = 0x9004
+ TESSELLATION_FACTOR_AMD = 0x9005
+ DISCRETE_AMD = 0x9006
+ CONTINUOUS_AMD = 0x9007
+
+# AMD_future_use: 0x9008
+
+ARB_texture_cube_map_array enum:
+ TEXTURE_CUBE_MAP_ARRAY = 0x9009
+ TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A
+ PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B
+ SAMPLER_CUBE_MAP_ARRAY = 0x900C
+ SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D
+ INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E
+ UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F
+
+EXT_texture_snorm enum:
+ ALPHA_SNORM = 0x9010
+ LUMINANCE_SNORM = 0x9011
+ LUMINANCE_ALPHA_SNORM = 0x9012
+ INTENSITY_SNORM = 0x9013
+ ALPHA8_SNORM = 0x9014
+ LUMINANCE8_SNORM = 0x9015
+ LUMINANCE8_ALPHA8_SNORM = 0x9016
+ INTENSITY8_SNORM = 0x9017
+ ALPHA16_SNORM = 0x9018
+ LUMINANCE16_SNORM = 0x9019
+ LUMINANCE16_ALPHA16_SNORM = 0x901A
+ INTENSITY16_SNORM = 0x901B
+
+# AMD_future_use: 0x901C-0x901F
+
+###############################################################################
+
+# NVIDIA: 0x9020-0x90FF
+# Assigned for Pat Brown (Khronos bug 4935)
+
+NV_video_capture enum:
+ VIDEO_BUFFER_NV = 0x9020
+ VIDEO_BUFFER_BINDING_NV = 0x9021
+ FIELD_UPPER_NV = 0x9022
+ FIELD_LOWER_NV = 0x9023
+ NUM_VIDEO_CAPTURE_STREAMS_NV = 0x9024
+ NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x9025
+ VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x9026
+ LAST_VIDEO_CAPTURE_STATUS_NV = 0x9027
+ VIDEO_BUFFER_PITCH_NV = 0x9028
+ VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x9029
+ VIDEO_COLOR_CONVERSION_MAX_NV = 0x902A
+ VIDEO_COLOR_CONVERSION_MIN_NV = 0x902B
+ VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x902C
+ VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x902D
+ PARTIAL_SUCCESS_NV = 0x902E
+ SUCCESS_NV = 0x902F
+ FAILURE_NV = 0x9030
+ YCBYCR8_422_NV = 0x9031
+ YCBAYCR8A_4224_NV = 0x9032
+ Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x9033
+ Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x9034
+ Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x9035
+ Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x9036
+ Z4Y12Z4CB12Z4CR12_444_NV = 0x9037
+ VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x9038
+ VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x9039
+ VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x903A
+ VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x903B
+ VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x903C
+
+# NV_future_use: 0x903D-0x90FF
+
+###############################################################################
+
+# OpenGL ARB: 0x9100-0x912F
+
+VERSION_3_2 enum:
+ use ARB_texture_multisample TEXTURE_2D_MULTISAMPLE
+ use ARB_texture_multisample PROXY_TEXTURE_2D_MULTISAMPLE
+ use ARB_texture_multisample TEXTURE_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample TEXTURE_BINDING_2D_MULTISAMPLE
+ use ARB_texture_multisample TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample TEXTURE_SAMPLES
+ use ARB_texture_multisample TEXTURE_FIXED_SAMPLE_LOCATIONS
+ use ARB_texture_multisample SAMPLER_2D_MULTISAMPLE
+ use ARB_texture_multisample INT_SAMPLER_2D_MULTISAMPLE
+ use ARB_texture_multisample UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
+ use ARB_texture_multisample SAMPLER_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample MAX_COLOR_TEXTURE_SAMPLES
+ use ARB_texture_multisample MAX_DEPTH_TEXTURE_SAMPLES
+ use ARB_texture_multisample MAX_INTEGER_SAMPLES
+
+ARB_texture_multisample enum:
+ TEXTURE_2D_MULTISAMPLE = 0x9100
+ PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101
+ TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102
+ PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103
+ TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104
+ TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105
+ TEXTURE_SAMPLES = 0x9106
+ TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107
+ SAMPLER_2D_MULTISAMPLE = 0x9108
+ INT_SAMPLER_2D_MULTISAMPLE = 0x9109
+ UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A
+ SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B
+ INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C
+ UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D
+ MAX_COLOR_TEXTURE_SAMPLES = 0x910E
+ MAX_DEPTH_TEXTURE_SAMPLES = 0x910F
+ MAX_INTEGER_SAMPLES = 0x9110
+
+VERSION_3_2 enum:
+ use ARB_sync MAX_SERVER_WAIT_TIMEOUT
+ use ARB_sync OBJECT_TYPE
+ use ARB_sync SYNC_CONDITION
+ use ARB_sync SYNC_STATUS
+ use ARB_sync SYNC_FLAGS
+ use ARB_sync SYNC_FENCE
+ use ARB_sync SYNC_GPU_COMMANDS_COMPLETE
+ use ARB_sync UNSIGNALED
+ use ARB_sync SIGNALED
+ use ARB_sync ALREADY_SIGNALED
+ use ARB_sync TIMEOUT_EXPIRED
+ use ARB_sync CONDITION_SATISFIED
+ use ARB_sync WAIT_FAILED
+ use ARB_sync TIMEOUT_IGNORED
+ use ARB_sync SYNC_FLUSH_COMMANDS_BIT
+ use ARB_sync TIMEOUT_IGNORED
+
+ARB_sync enum:
+ MAX_SERVER_WAIT_TIMEOUT = 0x9111
+ OBJECT_TYPE = 0x9112
+ SYNC_CONDITION = 0x9113
+ SYNC_STATUS = 0x9114
+ SYNC_FLAGS = 0x9115
+ SYNC_FENCE = 0x9116
+ SYNC_GPU_COMMANDS_COMPLETE = 0x9117
+ UNSIGNALED = 0x9118
+ SIGNALED = 0x9119
+ ALREADY_SIGNALED = 0x911A
+ TIMEOUT_EXPIRED = 0x911B
+ CONDITION_SATISFIED = 0x911C
+ WAIT_FAILED = 0x911D
+ SYNC_FLUSH_COMMANDS_BIT = 0x00000001
+ TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFFull
+
+VERSION_3_0 enum:
+ BUFFER_ACCESS_FLAGS = 0x911F
+ BUFFER_MAP_LENGTH = 0x9120
+ BUFFER_MAP_OFFSET = 0x9121
+
+VERSION_3_2 enum:
+ MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122
+ MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123
+ MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124
+ MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125
+
+VERSION_3_2 enum:
+ CONTEXT_CORE_PROFILE_BIT = 0x00000001
+ CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002
+ CONTEXT_PROFILE_MASK = 0x9126
+
+# ARB_future_use: 0x9127-0x912F
+
+###############################################################################
+
+# Imagination Tech.: 0x9130-0x913F (Khronos bug 882)
+
+IMG_program_binary enum: (OpenGL ES only)
+ SGX_PROGRAM_BINARY_IMG = 0x9130
+
+# IMG_future_use: 0x9131-0x9132
+
+IMG_multisampled_render_to_texture enum: (OpenGL ES only)
+ RENDERBUFFER_SAMPLES_IMG = 0x9133
+ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG = 0x9134
+ MAX_SAMPLES_IMG = 0x9135
+ TEXTURE_SAMPLES_IMG = 0x9136
+
+# IMG_future_use: 0x9137-0x913F
+
+###############################################################################
+
+# AMD: 0x9140-0x91BF (Khronos bugs 5899, 6004)
+
+# AMD_future_use: 0x9140-0x91BF
+# AMD_future_use: 0x91C0-0x923F
+
+###############################################################################
+### Please remember that new enumerant allocations must be obtained by request
+### to the Khronos API registrar (see comments at the top of this file)
+### File requests in the Khronos Bugzilla, OpenGL project, Registry component.
+###############################################################################
+
+# Any_vendor_future_use: 0x9140-0xFFFF
+#
+# This range must be the last range in the file. To generate a new
+# range, allocate multiples of 16 from the beginning of the
+# Any_vendor_future_use range and update enum.spec
+
+# (NOTE: first fill the gap from 0x8FE0-0x8FFF before proceeding here)
+
+###############################################################################
+
+# ARB: 100000-100999 (GLU enumerants only)
+# ARB: 101000-101999 (Conformance tests only)
+
+###############################################################################
+
+# IBM: 103000-103999
+# CULL_VERTEX_IBM = 103050
+# VERTEX_ARRAY_LIST_IBM = 103070
+# NORMAL_ARRAY_LIST_IBM = 103071
+# COLOR_ARRAY_LIST_IBM = 103072
+# INDEX_ARRAY_LIST_IBM = 103073
+# TEXTURE_COORD_ARRAY_LIST_IBM = 103074
+# EDGE_FLAG_ARRAY_LIST_IBM = 103075
+# FOG_COORDINATE_ARRAY_LIST_IBM = 103076
+# SECONDARY_COLOR_ARRAY_LIST_IBM = 103077
+# VERTEX_ARRAY_LIST_STRIDE_IBM = 103080
+# NORMAL_ARRAY_LIST_STRIDE_IBM = 103081
+# COLOR_ARRAY_LIST_STRIDE_IBM = 103082
+# INDEX_ARRAY_LIST_STRIDE_IBM = 103083
+# TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084
+# EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085
+# FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086
+# SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087
+
+###############################################################################
+
+# NEC: 104000-104999
+# Compaq: 105000-105999 (Compaq was acquired by HP)
+# KPC: 106000-106999 (Kubota is out of business)
+# PGI: 107000-107999 (Portable was acquired by Template Graphics)
+# E&S: 108000-108999
+
+###############################################################################
diff --git a/src/glx/apple/specs/enumext.spec b/src/glx/apple/specs/enumext.spec
new file mode 100644
index 0000000000..6302ed446f
--- /dev/null
+++ b/src/glx/apple/specs/enumext.spec
@@ -0,0 +1,6542 @@
+# enumext.spec - list of GL enumerants for glext.h header
+#
+# $Revision: 10971 $ on $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $
+
+# This is derived from the master GL enumerant registry (enum.spec).
+#
+# Unlike enum.spec, enumext.spec is
+# (1) Grouped by GL core version or extension number
+# (2) While it includes all extension and core enumerants, the
+# generator scripts for glext.h leave out VERSION_1_1
+# tokens since it's assumed all <gl.h> today support at least
+# OpenGL 1.1
+# (3) Has no 'Extensions' section, since enums are always
+# conditionally protected against multiple definition
+# by glextenum.pl.
+# (4) Is processed by glextenum.pl, which has evolved
+# from enum.pl - should merge back into one script.
+
+# The release number encoded into glext.h is now defined in
+# glextrelease.txt.
+
+###############################################################################
+#
+# OpenGL 1.0/1.1 enums (there is no VERSION_1_0 token)
+#
+###############################################################################
+
+VERSION_1_1 enum:
+passthru: /* AttribMask */
+ DEPTH_BUFFER_BIT = 0x00000100 # AttribMask
+ STENCIL_BUFFER_BIT = 0x00000400 # AttribMask
+ COLOR_BUFFER_BIT = 0x00004000 # AttribMask
+passthru: /* Boolean */
+ FALSE = 0 # Boolean
+ TRUE = 1 # Boolean
+passthru: /* BeginMode */
+ POINTS = 0x0000 # BeginMode
+ LINES = 0x0001 # BeginMode
+ LINE_LOOP = 0x0002 # BeginMode
+ LINE_STRIP = 0x0003 # BeginMode
+ TRIANGLES = 0x0004 # BeginMode
+ TRIANGLE_STRIP = 0x0005 # BeginMode
+ TRIANGLE_FAN = 0x0006 # BeginMode
+passthru: /* AlphaFunction */
+ NEVER = 0x0200 # AlphaFunction
+ LESS = 0x0201 # AlphaFunction
+ EQUAL = 0x0202 # AlphaFunction
+ LEQUAL = 0x0203 # AlphaFunction
+ GREATER = 0x0204 # AlphaFunction
+ NOTEQUAL = 0x0205 # AlphaFunction
+ GEQUAL = 0x0206 # AlphaFunction
+ ALWAYS = 0x0207 # AlphaFunction
+passthru: /* BlendingFactorDest */
+ ZERO = 0 # BlendingFactorDest
+ ONE = 1 # BlendingFactorDest
+ SRC_COLOR = 0x0300 # BlendingFactorDest
+ ONE_MINUS_SRC_COLOR = 0x0301 # BlendingFactorDest
+ SRC_ALPHA = 0x0302 # BlendingFactorDest
+ ONE_MINUS_SRC_ALPHA = 0x0303 # BlendingFactorDest
+ DST_ALPHA = 0x0304 # BlendingFactorDest
+ ONE_MINUS_DST_ALPHA = 0x0305 # BlendingFactorDest
+passthru: /* BlendingFactorSrc */
+ DST_COLOR = 0x0306 # BlendingFactorSrc
+ ONE_MINUS_DST_COLOR = 0x0307 # BlendingFactorSrc
+ SRC_ALPHA_SATURATE = 0x0308 # BlendingFactorSrc
+passthru: /* DrawBufferMode */
+ NONE = 0 # DrawBufferMode
+ FRONT_LEFT = 0x0400 # DrawBufferMode
+ FRONT_RIGHT = 0x0401 # DrawBufferMode
+ BACK_LEFT = 0x0402 # DrawBufferMode
+ BACK_RIGHT = 0x0403 # DrawBufferMode
+ FRONT = 0x0404 # DrawBufferMode
+ BACK = 0x0405 # DrawBufferMode
+ LEFT = 0x0406 # DrawBufferMode
+ RIGHT = 0x0407 # DrawBufferMode
+ FRONT_AND_BACK = 0x0408 # DrawBufferMode
+passthru: /* ErrorCode */
+ NO_ERROR = 0 # ErrorCode
+ INVALID_ENUM = 0x0500 # ErrorCode
+ INVALID_VALUE = 0x0501 # ErrorCode
+ INVALID_OPERATION = 0x0502 # ErrorCode
+ OUT_OF_MEMORY = 0x0505 # ErrorCode
+passthru: /* FrontFaceDirection */
+ CW = 0x0900 # FrontFaceDirection
+ CCW = 0x0901 # FrontFaceDirection
+passthru: /* GetPName */
+ POINT_SIZE = 0x0B11 # 1 F # GetPName
+ POINT_SIZE_RANGE = 0x0B12 # 2 F # GetPName
+ POINT_SIZE_GRANULARITY = 0x0B13 # 1 F # GetPName
+ LINE_SMOOTH = 0x0B20 # 1 I # GetPName
+ LINE_WIDTH = 0x0B21 # 1 F # GetPName
+ LINE_WIDTH_RANGE = 0x0B22 # 2 F # GetPName
+ LINE_WIDTH_GRANULARITY = 0x0B23 # 1 F # GetPName
+ POLYGON_SMOOTH = 0x0B41 # 1 I # GetPName
+ CULL_FACE = 0x0B44 # 1 I # GetPName
+ CULL_FACE_MODE = 0x0B45 # 1 I # GetPName
+ FRONT_FACE = 0x0B46 # 1 I # GetPName
+ DEPTH_RANGE = 0x0B70 # 2 F # GetPName
+ DEPTH_TEST = 0x0B71 # 1 I # GetPName
+ DEPTH_WRITEMASK = 0x0B72 # 1 I # GetPName
+ DEPTH_CLEAR_VALUE = 0x0B73 # 1 F # GetPName
+ DEPTH_FUNC = 0x0B74 # 1 I # GetPName
+ STENCIL_TEST = 0x0B90 # 1 I # GetPName
+ STENCIL_CLEAR_VALUE = 0x0B91 # 1 I # GetPName
+ STENCIL_FUNC = 0x0B92 # 1 I # GetPName
+ STENCIL_VALUE_MASK = 0x0B93 # 1 I # GetPName
+ STENCIL_FAIL = 0x0B94 # 1 I # GetPName
+ STENCIL_PASS_DEPTH_FAIL = 0x0B95 # 1 I # GetPName
+ STENCIL_PASS_DEPTH_PASS = 0x0B96 # 1 I # GetPName
+ STENCIL_REF = 0x0B97 # 1 I # GetPName
+ STENCIL_WRITEMASK = 0x0B98 # 1 I # GetPName
+ VIEWPORT = 0x0BA2 # 4 I # GetPName
+ DITHER = 0x0BD0 # 1 I # GetPName
+ BLEND_DST = 0x0BE0 # 1 I # GetPName
+ BLEND_SRC = 0x0BE1 # 1 I # GetPName
+ BLEND = 0x0BE2 # 1 I # GetPName
+ LOGIC_OP_MODE = 0x0BF0 # 1 I # GetPName
+ COLOR_LOGIC_OP = 0x0BF2 # 1 I # GetPName
+ DRAW_BUFFER = 0x0C01 # 1 I # GetPName
+ READ_BUFFER = 0x0C02 # 1 I # GetPName
+ SCISSOR_BOX = 0x0C10 # 4 I # GetPName
+ SCISSOR_TEST = 0x0C11 # 1 I # GetPName
+ COLOR_CLEAR_VALUE = 0x0C22 # 4 F # GetPName
+ COLOR_WRITEMASK = 0x0C23 # 4 I # GetPName
+ DOUBLEBUFFER = 0x0C32 # 1 I # GetPName
+ STEREO = 0x0C33 # 1 I # GetPName
+ LINE_SMOOTH_HINT = 0x0C52 # 1 I # GetPName
+ POLYGON_SMOOTH_HINT = 0x0C53 # 1 I # GetPName
+ UNPACK_SWAP_BYTES = 0x0CF0 # 1 I # GetPName
+ UNPACK_LSB_FIRST = 0x0CF1 # 1 I # GetPName
+ UNPACK_ROW_LENGTH = 0x0CF2 # 1 I # GetPName
+ UNPACK_SKIP_ROWS = 0x0CF3 # 1 I # GetPName
+ UNPACK_SKIP_PIXELS = 0x0CF4 # 1 I # GetPName
+ UNPACK_ALIGNMENT = 0x0CF5 # 1 I # GetPName
+ PACK_SWAP_BYTES = 0x0D00 # 1 I # GetPName
+ PACK_LSB_FIRST = 0x0D01 # 1 I # GetPName
+ PACK_ROW_LENGTH = 0x0D02 # 1 I # GetPName
+ PACK_SKIP_ROWS = 0x0D03 # 1 I # GetPName
+ PACK_SKIP_PIXELS = 0x0D04 # 1 I # GetPName
+ PACK_ALIGNMENT = 0x0D05 # 1 I # GetPName
+ MAX_TEXTURE_SIZE = 0x0D33 # 1 I # GetPName
+ MAX_VIEWPORT_DIMS = 0x0D3A # 2 F # GetPName
+ SUBPIXEL_BITS = 0x0D50 # 1 I # GetPName
+ TEXTURE_1D = 0x0DE0 # 1 I # GetPName
+ TEXTURE_2D = 0x0DE1 # 1 I # GetPName
+ POLYGON_OFFSET_UNITS = 0x2A00 # 1 F # GetPName
+ POLYGON_OFFSET_POINT = 0x2A01 # 1 I # GetPName
+ POLYGON_OFFSET_LINE = 0x2A02 # 1 I # GetPName
+ POLYGON_OFFSET_FILL = 0x8037 # 1 I # GetPName
+ POLYGON_OFFSET_FACTOR = 0x8038 # 1 F # GetPName
+ TEXTURE_BINDING_1D = 0x8068 # 1 I # GetPName
+ TEXTURE_BINDING_2D = 0x8069 # 1 I # GetPName
+passthru: /* GetTextureParameter */
+ TEXTURE_WIDTH = 0x1000 # GetTextureParameter
+ TEXTURE_HEIGHT = 0x1001 # GetTextureParameter
+ TEXTURE_INTERNAL_FORMAT = 0x1003 # GetTextureParameter
+ TEXTURE_BORDER_COLOR = 0x1004 # GetTextureParameter
+ TEXTURE_RED_SIZE = 0x805C # GetTextureParameter
+ TEXTURE_GREEN_SIZE = 0x805D # GetTextureParameter
+ TEXTURE_BLUE_SIZE = 0x805E # GetTextureParameter
+ TEXTURE_ALPHA_SIZE = 0x805F # GetTextureParameter
+passthru: /* HintMode */
+ DONT_CARE = 0x1100 # HintMode
+ FASTEST = 0x1101 # HintMode
+ NICEST = 0x1102 # HintMode
+passthru: /* DataType */
+ BYTE = 0x1400 # DataType
+ UNSIGNED_BYTE = 0x1401 # DataType
+ SHORT = 0x1402 # DataType
+ UNSIGNED_SHORT = 0x1403 # DataType
+ INT = 0x1404 # DataType
+ UNSIGNED_INT = 0x1405 # DataType
+ FLOAT = 0x1406 # DataType
+ DOUBLE = 0x140A # DataType
+passthru: /* LogicOp */
+ CLEAR = 0x1500 # LogicOp
+ AND = 0x1501 # LogicOp
+ AND_REVERSE = 0x1502 # LogicOp
+ COPY = 0x1503 # LogicOp
+ AND_INVERTED = 0x1504 # LogicOp
+ NOOP = 0x1505 # LogicOp
+ XOR = 0x1506 # LogicOp
+ OR = 0x1507 # LogicOp
+ NOR = 0x1508 # LogicOp
+ EQUIV = 0x1509 # LogicOp
+ INVERT = 0x150A # LogicOp
+ OR_REVERSE = 0x150B # LogicOp
+ COPY_INVERTED = 0x150C # LogicOp
+ OR_INVERTED = 0x150D # LogicOp
+ NAND = 0x150E # LogicOp
+ SET = 0x150F # LogicOp
+passthru: /* MatrixMode (for gl3.h, FBO attachment type) */
+ TEXTURE = 0x1702 # MatrixMode
+passthru: /* PixelCopyType */
+ COLOR = 0x1800 # PixelCopyType
+ DEPTH = 0x1801 # PixelCopyType
+ STENCIL = 0x1802 # PixelCopyType
+passthru: /* PixelFormat */
+ STENCIL_INDEX = 0x1901 # PixelFormat
+ DEPTH_COMPONENT = 0x1902 # PixelFormat
+ RED = 0x1903 # PixelFormat
+ GREEN = 0x1904 # PixelFormat
+ BLUE = 0x1905 # PixelFormat
+ ALPHA = 0x1906 # PixelFormat
+ RGB = 0x1907 # PixelFormat
+ RGBA = 0x1908 # PixelFormat
+passthru: /* PolygonMode */
+ POINT = 0x1B00 # PolygonMode
+ LINE = 0x1B01 # PolygonMode
+ FILL = 0x1B02 # PolygonMode
+passthru: /* StencilOp */
+ KEEP = 0x1E00 # StencilOp
+ REPLACE = 0x1E01 # StencilOp
+ INCR = 0x1E02 # StencilOp
+ DECR = 0x1E03 # StencilOp
+passthru: /* StringName */
+ VENDOR = 0x1F00 # StringName
+ RENDERER = 0x1F01 # StringName
+ VERSION = 0x1F02 # StringName
+ EXTENSIONS = 0x1F03 # StringName
+passthru: /* TextureMagFilter */
+ NEAREST = 0x2600 # TextureMagFilter
+ LINEAR = 0x2601 # TextureMagFilter
+passthru: /* TextureMinFilter */
+ NEAREST_MIPMAP_NEAREST = 0x2700 # TextureMinFilter
+ LINEAR_MIPMAP_NEAREST = 0x2701 # TextureMinFilter
+ NEAREST_MIPMAP_LINEAR = 0x2702 # TextureMinFilter
+ LINEAR_MIPMAP_LINEAR = 0x2703 # TextureMinFilter
+passthru: /* TextureParameterName */
+ TEXTURE_MAG_FILTER = 0x2800 # TextureParameterName
+ TEXTURE_MIN_FILTER = 0x2801 # TextureParameterName
+ TEXTURE_WRAP_S = 0x2802 # TextureParameterName
+ TEXTURE_WRAP_T = 0x2803 # TextureParameterName
+passthru: /* TextureTarget */
+ PROXY_TEXTURE_1D = 0x8063 # TextureTarget
+ PROXY_TEXTURE_2D = 0x8064 # TextureTarget
+passthru: /* TextureWrapMode */
+ REPEAT = 0x2901 # TextureWrapMode
+passthru: /* PixelInternalFormat */
+ R3_G3_B2 = 0x2A10 # PixelInternalFormat
+ RGB4 = 0x804F # PixelInternalFormat
+ RGB5 = 0x8050 # PixelInternalFormat
+ RGB8 = 0x8051 # PixelInternalFormat
+ RGB10 = 0x8052 # PixelInternalFormat
+ RGB12 = 0x8053 # PixelInternalFormat
+ RGB16 = 0x8054 # PixelInternalFormat
+ RGBA2 = 0x8055 # PixelInternalFormat
+ RGBA4 = 0x8056 # PixelInternalFormat
+ RGB5_A1 = 0x8057 # PixelInternalFormat
+ RGBA8 = 0x8058 # PixelInternalFormat
+ RGB10_A2 = 0x8059 # PixelInternalFormat
+ RGBA12 = 0x805A # PixelInternalFormat
+ RGBA16 = 0x805B # PixelInternalFormat
+
+VERSION_1_1_DEPRECATED enum:
+passthru: /* AttribMask */
+ CURRENT_BIT = 0x00000001 # AttribMask
+ POINT_BIT = 0x00000002 # AttribMask
+ LINE_BIT = 0x00000004 # AttribMask
+ POLYGON_BIT = 0x00000008 # AttribMask
+ POLYGON_STIPPLE_BIT = 0x00000010 # AttribMask
+ PIXEL_MODE_BIT = 0x00000020 # AttribMask
+ LIGHTING_BIT = 0x00000040 # AttribMask
+ FOG_BIT = 0x00000080 # AttribMask
+ ACCUM_BUFFER_BIT = 0x00000200 # AttribMask
+ VIEWPORT_BIT = 0x00000800 # AttribMask
+ TRANSFORM_BIT = 0x00001000 # AttribMask
+ ENABLE_BIT = 0x00002000 # AttribMask
+ HINT_BIT = 0x00008000 # AttribMask
+ EVAL_BIT = 0x00010000 # AttribMask
+ LIST_BIT = 0x00020000 # AttribMask
+ TEXTURE_BIT = 0x00040000 # AttribMask
+ SCISSOR_BIT = 0x00080000 # AttribMask
+ ALL_ATTRIB_BITS = 0xFFFFFFFF # AttribMask
+passthru: /* ClientAttribMask */
+ CLIENT_PIXEL_STORE_BIT = 0x00000001 # ClientAttribMask
+ CLIENT_VERTEX_ARRAY_BIT = 0x00000002 # ClientAttribMask
+ CLIENT_ALL_ATTRIB_BITS = 0xFFFFFFFF # ClientAttribMask
+passthru: /* BeginMode */
+ QUADS = 0x0007 # BeginMode
+ QUAD_STRIP = 0x0008 # BeginMode
+ POLYGON = 0x0009 # BeginMode
+passthru: /* AccumOp */
+ ACCUM = 0x0100 # AccumOp
+ LOAD = 0x0101 # AccumOp
+ RETURN = 0x0102 # AccumOp
+ MULT = 0x0103 # AccumOp
+ ADD = 0x0104 # AccumOp
+passthru: /* DrawBufferMode */
+ AUX0 = 0x0409 # DrawBufferMode
+ AUX1 = 0x040A # DrawBufferMode
+ AUX2 = 0x040B # DrawBufferMode
+ AUX3 = 0x040C # DrawBufferMode
+passthru: /* ErrorCode */
+ STACK_OVERFLOW = 0x0503 # ErrorCode
+ STACK_UNDERFLOW = 0x0504 # ErrorCode
+passthru: /* FeedbackType */
+ 2D = 0x0600 # FeedbackType
+ 3D = 0x0601 # FeedbackType
+ 3D_COLOR = 0x0602 # FeedbackType
+ 3D_COLOR_TEXTURE = 0x0603 # FeedbackType
+ 4D_COLOR_TEXTURE = 0x0604 # FeedbackType
+passthru: /* FeedBackToken */
+ PASS_THROUGH_TOKEN = 0x0700 # FeedBackToken
+ POINT_TOKEN = 0x0701 # FeedBackToken
+ LINE_TOKEN = 0x0702 # FeedBackToken
+ POLYGON_TOKEN = 0x0703 # FeedBackToken
+ BITMAP_TOKEN = 0x0704 # FeedBackToken
+ DRAW_PIXEL_TOKEN = 0x0705 # FeedBackToken
+ COPY_PIXEL_TOKEN = 0x0706 # FeedBackToken
+ LINE_RESET_TOKEN = 0x0707 # FeedBackToken
+passthru: /* FogMode */
+ EXP = 0x0800 # FogMode
+ EXP2 = 0x0801 # FogMode
+passthru: /* GetMapQuery */
+ COEFF = 0x0A00 # GetMapQuery
+ ORDER = 0x0A01 # GetMapQuery
+ DOMAIN = 0x0A02 # GetMapQuery
+passthru: /* GetPixelMap */
+ PIXEL_MAP_I_TO_I = 0x0C70 # GetPixelMap
+ PIXEL_MAP_S_TO_S = 0x0C71 # GetPixelMap
+ PIXEL_MAP_I_TO_R = 0x0C72 # GetPixelMap
+ PIXEL_MAP_I_TO_G = 0x0C73 # GetPixelMap
+ PIXEL_MAP_I_TO_B = 0x0C74 # GetPixelMap
+ PIXEL_MAP_I_TO_A = 0x0C75 # GetPixelMap
+ PIXEL_MAP_R_TO_R = 0x0C76 # GetPixelMap
+ PIXEL_MAP_G_TO_G = 0x0C77 # GetPixelMap
+ PIXEL_MAP_B_TO_B = 0x0C78 # GetPixelMap
+ PIXEL_MAP_A_TO_A = 0x0C79 # GetPixelMap
+passthru: /* GetPointervPName */
+ VERTEX_ARRAY_POINTER = 0x808E # GetPointervPName
+ NORMAL_ARRAY_POINTER = 0x808F # GetPointervPName
+ COLOR_ARRAY_POINTER = 0x8090 # GetPointervPName
+ INDEX_ARRAY_POINTER = 0x8091 # GetPointervPName
+ TEXTURE_COORD_ARRAY_POINTER = 0x8092 # GetPointervPName
+ EDGE_FLAG_ARRAY_POINTER = 0x8093 # GetPointervPName
+ FEEDBACK_BUFFER_POINTER = 0x0DF0 # GetPointervPName
+ SELECTION_BUFFER_POINTER = 0x0DF3 # GetPointervPName
+passthru: /* GetPName */
+ CURRENT_COLOR = 0x0B00 # 4 F # GetPName
+ CURRENT_INDEX = 0x0B01 # 1 F # GetPName
+ CURRENT_NORMAL = 0x0B02 # 3 F # GetPName
+ CURRENT_TEXTURE_COORDS = 0x0B03 # 4 F # GetPName
+ CURRENT_RASTER_COLOR = 0x0B04 # 4 F # GetPName
+ CURRENT_RASTER_INDEX = 0x0B05 # 1 F # GetPName
+ CURRENT_RASTER_TEXTURE_COORDS = 0x0B06 # 4 F # GetPName
+ CURRENT_RASTER_POSITION = 0x0B07 # 4 F # GetPName
+ CURRENT_RASTER_POSITION_VALID = 0x0B08 # 1 I # GetPName
+ CURRENT_RASTER_DISTANCE = 0x0B09 # 1 F # GetPName
+ POINT_SMOOTH = 0x0B10 # 1 I # GetPName
+ LINE_STIPPLE = 0x0B24 # 1 I # GetPName
+ LINE_STIPPLE_PATTERN = 0x0B25 # 1 I # GetPName
+ LINE_STIPPLE_REPEAT = 0x0B26 # 1 I # GetPName
+ LIST_MODE = 0x0B30 # 1 I # GetPName
+ MAX_LIST_NESTING = 0x0B31 # 1 I # GetPName
+ LIST_BASE = 0x0B32 # 1 I # GetPName
+ LIST_INDEX = 0x0B33 # 1 I # GetPName
+ POLYGON_MODE = 0x0B40 # 2 I # GetPName
+ POLYGON_STIPPLE = 0x0B42 # 1 I # GetPName
+ EDGE_FLAG = 0x0B43 # 1 I # GetPName
+ LIGHTING = 0x0B50 # 1 I # GetPName
+ LIGHT_MODEL_LOCAL_VIEWER = 0x0B51 # 1 I # GetPName
+ LIGHT_MODEL_TWO_SIDE = 0x0B52 # 1 I # GetPName
+ LIGHT_MODEL_AMBIENT = 0x0B53 # 4 F # GetPName
+ SHADE_MODEL = 0x0B54 # 1 I # GetPName
+ COLOR_MATERIAL_FACE = 0x0B55 # 1 I # GetPName
+ COLOR_MATERIAL_PARAMETER = 0x0B56 # 1 I # GetPName
+ COLOR_MATERIAL = 0x0B57 # 1 I # GetPName
+ FOG = 0x0B60 # 1 I # GetPName
+ FOG_INDEX = 0x0B61 # 1 I # GetPName
+ FOG_DENSITY = 0x0B62 # 1 F # GetPName
+ FOG_START = 0x0B63 # 1 F # GetPName
+ FOG_END = 0x0B64 # 1 F # GetPName
+ FOG_MODE = 0x0B65 # 1 I # GetPName
+ FOG_COLOR = 0x0B66 # 4 F # GetPName
+ ACCUM_CLEAR_VALUE = 0x0B80 # 4 F # GetPName
+ MATRIX_MODE = 0x0BA0 # 1 I # GetPName
+ NORMALIZE = 0x0BA1 # 1 I # GetPName
+ MODELVIEW_STACK_DEPTH = 0x0BA3 # 1 I # GetPName
+ PROJECTION_STACK_DEPTH = 0x0BA4 # 1 I # GetPName
+ TEXTURE_STACK_DEPTH = 0x0BA5 # 1 I # GetPName
+ MODELVIEW_MATRIX = 0x0BA6 # 16 F # GetPName
+ PROJECTION_MATRIX = 0x0BA7 # 16 F # GetPName
+ TEXTURE_MATRIX = 0x0BA8 # 16 F # GetPName
+ ATTRIB_STACK_DEPTH = 0x0BB0 # 1 I # GetPName
+ CLIENT_ATTRIB_STACK_DEPTH = 0x0BB1 # 1 I # GetPName
+ ALPHA_TEST = 0x0BC0 # 1 I # GetPName
+ ALPHA_TEST_FUNC = 0x0BC1 # 1 I # GetPName
+ ALPHA_TEST_REF = 0x0BC2 # 1 F # GetPName
+ INDEX_LOGIC_OP = 0x0BF1 # 1 I # GetPName
+ LOGIC_OP = 0x0BF1 # 1 I # GetPName
+ AUX_BUFFERS = 0x0C00 # 1 I # GetPName
+ INDEX_CLEAR_VALUE = 0x0C20 # 1 I # GetPName
+ INDEX_WRITEMASK = 0x0C21 # 1 I # GetPName
+ INDEX_MODE = 0x0C30 # 1 I # GetPName
+ RGBA_MODE = 0x0C31 # 1 I # GetPName
+ RENDER_MODE = 0x0C40 # 1 I # GetPName
+ PERSPECTIVE_CORRECTION_HINT = 0x0C50 # 1 I # GetPName
+ POINT_SMOOTH_HINT = 0x0C51 # 1 I # GetPName
+ FOG_HINT = 0x0C54 # 1 I # GetPName
+ TEXTURE_GEN_S = 0x0C60 # 1 I # GetPName
+ TEXTURE_GEN_T = 0x0C61 # 1 I # GetPName
+ TEXTURE_GEN_R = 0x0C62 # 1 I # GetPName
+ TEXTURE_GEN_Q = 0x0C63 # 1 I # GetPName
+ PIXEL_MAP_I_TO_I_SIZE = 0x0CB0 # 1 I # GetPName
+ PIXEL_MAP_S_TO_S_SIZE = 0x0CB1 # 1 I # GetPName
+ PIXEL_MAP_I_TO_R_SIZE = 0x0CB2 # 1 I # GetPName
+ PIXEL_MAP_I_TO_G_SIZE = 0x0CB3 # 1 I # GetPName
+ PIXEL_MAP_I_TO_B_SIZE = 0x0CB4 # 1 I # GetPName
+ PIXEL_MAP_I_TO_A_SIZE = 0x0CB5 # 1 I # GetPName
+ PIXEL_MAP_R_TO_R_SIZE = 0x0CB6 # 1 I # GetPName
+ PIXEL_MAP_G_TO_G_SIZE = 0x0CB7 # 1 I # GetPName
+ PIXEL_MAP_B_TO_B_SIZE = 0x0CB8 # 1 I # GetPName
+ PIXEL_MAP_A_TO_A_SIZE = 0x0CB9 # 1 I # GetPName
+ MAP_COLOR = 0x0D10 # 1 I # GetPName
+ MAP_STENCIL = 0x0D11 # 1 I # GetPName
+ INDEX_SHIFT = 0x0D12 # 1 I # GetPName
+ INDEX_OFFSET = 0x0D13 # 1 I # GetPName
+ RED_SCALE = 0x0D14 # 1 F # GetPName
+ RED_BIAS = 0x0D15 # 1 F # GetPName
+ ZOOM_X = 0x0D16 # 1 F # GetPName
+ ZOOM_Y = 0x0D17 # 1 F # GetPName
+ GREEN_SCALE = 0x0D18 # 1 F # GetPName
+ GREEN_BIAS = 0x0D19 # 1 F # GetPName
+ BLUE_SCALE = 0x0D1A # 1 F # GetPName
+ BLUE_BIAS = 0x0D1B # 1 F # GetPName
+ ALPHA_SCALE = 0x0D1C # 1 F # GetPName
+ ALPHA_BIAS = 0x0D1D # 1 F # GetPName
+ DEPTH_SCALE = 0x0D1E # 1 F # GetPName
+ DEPTH_BIAS = 0x0D1F # 1 F # GetPName
+ MAX_EVAL_ORDER = 0x0D30 # 1 I # GetPName
+ MAX_LIGHTS = 0x0D31 # 1 I # GetPName
+ MAX_CLIP_PLANES = 0x0D32 # 1 I # GetPName
+ MAX_PIXEL_MAP_TABLE = 0x0D34 # 1 I # GetPName
+ MAX_ATTRIB_STACK_DEPTH = 0x0D35 # 1 I # GetPName
+ MAX_MODELVIEW_STACK_DEPTH = 0x0D36 # 1 I # GetPName
+ MAX_NAME_STACK_DEPTH = 0x0D37 # 1 I # GetPName
+ MAX_PROJECTION_STACK_DEPTH = 0x0D38 # 1 I # GetPName
+ MAX_TEXTURE_STACK_DEPTH = 0x0D39 # 1 I # GetPName
+ MAX_CLIENT_ATTRIB_STACK_DEPTH = 0x0D3B # 1 I # GetPName
+ INDEX_BITS = 0x0D51 # 1 I # GetPName
+ RED_BITS = 0x0D52 # 1 I # GetPName
+ GREEN_BITS = 0x0D53 # 1 I # GetPName
+ BLUE_BITS = 0x0D54 # 1 I # GetPName
+ ALPHA_BITS = 0x0D55 # 1 I # GetPName
+ DEPTH_BITS = 0x0D56 # 1 I # GetPName
+ STENCIL_BITS = 0x0D57 # 1 I # GetPName
+ ACCUM_RED_BITS = 0x0D58 # 1 I # GetPName
+ ACCUM_GREEN_BITS = 0x0D59 # 1 I # GetPName
+ ACCUM_BLUE_BITS = 0x0D5A # 1 I # GetPName
+ ACCUM_ALPHA_BITS = 0x0D5B # 1 I # GetPName
+ NAME_STACK_DEPTH = 0x0D70 # 1 I # GetPName
+ AUTO_NORMAL = 0x0D80 # 1 I # GetPName
+ MAP1_COLOR_4 = 0x0D90 # 1 I # GetPName
+ MAP1_INDEX = 0x0D91 # 1 I # GetPName
+ MAP1_NORMAL = 0x0D92 # 1 I # GetPName
+ MAP1_TEXTURE_COORD_1 = 0x0D93 # 1 I # GetPName
+ MAP1_TEXTURE_COORD_2 = 0x0D94 # 1 I # GetPName
+ MAP1_TEXTURE_COORD_3 = 0x0D95 # 1 I # GetPName
+ MAP1_TEXTURE_COORD_4 = 0x0D96 # 1 I # GetPName
+ MAP1_VERTEX_3 = 0x0D97 # 1 I # GetPName
+ MAP1_VERTEX_4 = 0x0D98 # 1 I # GetPName
+ MAP2_COLOR_4 = 0x0DB0 # 1 I # GetPName
+ MAP2_INDEX = 0x0DB1 # 1 I # GetPName
+ MAP2_NORMAL = 0x0DB2 # 1 I # GetPName
+ MAP2_TEXTURE_COORD_1 = 0x0DB3 # 1 I # GetPName
+ MAP2_TEXTURE_COORD_2 = 0x0DB4 # 1 I # GetPName
+ MAP2_TEXTURE_COORD_3 = 0x0DB5 # 1 I # GetPName
+ MAP2_TEXTURE_COORD_4 = 0x0DB6 # 1 I # GetPName
+ MAP2_VERTEX_3 = 0x0DB7 # 1 I # GetPName
+ MAP2_VERTEX_4 = 0x0DB8 # 1 I # GetPName
+ MAP1_GRID_DOMAIN = 0x0DD0 # 2 F # GetPName
+ MAP1_GRID_SEGMENTS = 0x0DD1 # 1 I # GetPName
+ MAP2_GRID_DOMAIN = 0x0DD2 # 4 F # GetPName
+ MAP2_GRID_SEGMENTS = 0x0DD3 # 2 I # GetPName
+ FEEDBACK_BUFFER_SIZE = 0x0DF1 # 1 I # GetPName
+ FEEDBACK_BUFFER_TYPE = 0x0DF2 # 1 I # GetPName
+ SELECTION_BUFFER_SIZE = 0x0DF4 # 1 I # GetPName
+ VERTEX_ARRAY = 0x8074 # 1 I # GetPName
+ NORMAL_ARRAY = 0x8075 # 1 I # GetPName
+ COLOR_ARRAY = 0x8076 # 1 I # GetPName
+ INDEX_ARRAY = 0x8077 # 1 I # GetPName
+ TEXTURE_COORD_ARRAY = 0x8078 # 1 I # GetPName
+ EDGE_FLAG_ARRAY = 0x8079 # 1 I # GetPName
+ VERTEX_ARRAY_SIZE = 0x807A # 1 I # GetPName
+ VERTEX_ARRAY_TYPE = 0x807B # 1 I # GetPName
+ VERTEX_ARRAY_STRIDE = 0x807C # 1 I # GetPName
+ NORMAL_ARRAY_TYPE = 0x807E # 1 I # GetPName
+ NORMAL_ARRAY_STRIDE = 0x807F # 1 I # GetPName
+ COLOR_ARRAY_SIZE = 0x8081 # 1 I # GetPName
+ COLOR_ARRAY_TYPE = 0x8082 # 1 I # GetPName
+ COLOR_ARRAY_STRIDE = 0x8083 # 1 I # GetPName
+ INDEX_ARRAY_TYPE = 0x8085 # 1 I # GetPName
+ INDEX_ARRAY_STRIDE = 0x8086 # 1 I # GetPName
+ TEXTURE_COORD_ARRAY_SIZE = 0x8088 # 1 I # GetPName
+ TEXTURE_COORD_ARRAY_TYPE = 0x8089 # 1 I # GetPName
+ TEXTURE_COORD_ARRAY_STRIDE = 0x808A # 1 I # GetPName
+ EDGE_FLAG_ARRAY_STRIDE = 0x808C # 1 I # GetPName
+passthru: /* GetTextureParameter */
+ TEXTURE_COMPONENTS = 0x1003 # GetTextureParameter
+ TEXTURE_BORDER = 0x1005 # GetTextureParameter
+ TEXTURE_LUMINANCE_SIZE = 0x8060 # GetTextureParameter
+ TEXTURE_INTENSITY_SIZE = 0x8061 # GetTextureParameter
+ TEXTURE_PRIORITY = 0x8066 # GetTextureParameter
+ TEXTURE_RESIDENT = 0x8067 # GetTextureParameter
+passthru: /* LightParameter */
+ AMBIENT = 0x1200 # LightParameter
+ DIFFUSE = 0x1201 # LightParameter
+ SPECULAR = 0x1202 # LightParameter
+ POSITION = 0x1203 # LightParameter
+ SPOT_DIRECTION = 0x1204 # LightParameter
+ SPOT_EXPONENT = 0x1205 # LightParameter
+ SPOT_CUTOFF = 0x1206 # LightParameter
+ CONSTANT_ATTENUATION = 0x1207 # LightParameter
+ LINEAR_ATTENUATION = 0x1208 # LightParameter
+ QUADRATIC_ATTENUATION = 0x1209 # LightParameter
+passthru: /* ListMode */
+ COMPILE = 0x1300 # ListMode
+ COMPILE_AND_EXECUTE = 0x1301 # ListMode
+passthru: /* DataType */
+ 2_BYTES = 0x1407 # DataType
+ 3_BYTES = 0x1408 # DataType
+ 4_BYTES = 0x1409 # DataType
+passthru: /* MaterialParameter */
+ EMISSION = 0x1600 # MaterialParameter
+ SHININESS = 0x1601 # MaterialParameter
+ AMBIENT_AND_DIFFUSE = 0x1602 # MaterialParameter
+ COLOR_INDEXES = 0x1603 # MaterialParameter
+passthru: /* MatrixMode */
+ MODELVIEW = 0x1700 # MatrixMode
+ PROJECTION = 0x1701 # MatrixMode
+passthru: /* PixelFormat */
+ COLOR_INDEX = 0x1900 # PixelFormat
+ LUMINANCE = 0x1909 # PixelFormat
+ LUMINANCE_ALPHA = 0x190A # PixelFormat
+passthru: /* PixelType */
+ BITMAP = 0x1A00 # PixelType
+passthru: /* RenderingMode */
+ RENDER = 0x1C00 # RenderingMode
+ FEEDBACK = 0x1C01 # RenderingMode
+ SELECT = 0x1C02 # RenderingMode
+passthru: /* ShadingModel */
+ FLAT = 0x1D00 # ShadingModel
+ SMOOTH = 0x1D01 # ShadingModel
+passthru: /* TextureCoordName */
+ S = 0x2000 # TextureCoordName
+ T = 0x2001 # TextureCoordName
+ R = 0x2002 # TextureCoordName
+ Q = 0x2003 # TextureCoordName
+passthru: /* TextureEnvMode */
+ MODULATE = 0x2100 # TextureEnvMode
+ DECAL = 0x2101 # TextureEnvMode
+passthru: /* TextureEnvParameter */
+ TEXTURE_ENV_MODE = 0x2200 # TextureEnvParameter
+ TEXTURE_ENV_COLOR = 0x2201 # TextureEnvParameter
+passthru: /* TextureEnvTarget */
+ TEXTURE_ENV = 0x2300 # TextureEnvTarget
+passthru: /* TextureGenMode */
+ EYE_LINEAR = 0x2400 # TextureGenMode
+ OBJECT_LINEAR = 0x2401 # TextureGenMode
+ SPHERE_MAP = 0x2402 # TextureGenMode
+passthru: /* TextureGenParameter */
+ TEXTURE_GEN_MODE = 0x2500 # TextureGenParameter
+ OBJECT_PLANE = 0x2501 # TextureGenParameter
+ EYE_PLANE = 0x2502 # TextureGenParameter
+passthru: /* TextureWrapMode */
+ CLAMP = 0x2900 # TextureWrapMode
+passthru: /* PixelInternalFormat */
+ ALPHA4 = 0x803B # PixelInternalFormat
+ ALPHA8 = 0x803C # PixelInternalFormat
+ ALPHA12 = 0x803D # PixelInternalFormat
+ ALPHA16 = 0x803E # PixelInternalFormat
+ LUMINANCE4 = 0x803F # PixelInternalFormat
+ LUMINANCE8 = 0x8040 # PixelInternalFormat
+ LUMINANCE12 = 0x8041 # PixelInternalFormat
+ LUMINANCE16 = 0x8042 # PixelInternalFormat
+ LUMINANCE4_ALPHA4 = 0x8043 # PixelInternalFormat
+ LUMINANCE6_ALPHA2 = 0x8044 # PixelInternalFormat
+ LUMINANCE8_ALPHA8 = 0x8045 # PixelInternalFormat
+ LUMINANCE12_ALPHA4 = 0x8046 # PixelInternalFormat
+ LUMINANCE12_ALPHA12 = 0x8047 # PixelInternalFormat
+ LUMINANCE16_ALPHA16 = 0x8048 # PixelInternalFormat
+ INTENSITY = 0x8049 # PixelInternalFormat
+ INTENSITY4 = 0x804A # PixelInternalFormat
+ INTENSITY8 = 0x804B # PixelInternalFormat
+ INTENSITY12 = 0x804C # PixelInternalFormat
+ INTENSITY16 = 0x804D # PixelInternalFormat
+passthru: /* InterleavedArrayFormat */
+ V2F = 0x2A20 # InterleavedArrayFormat
+ V3F = 0x2A21 # InterleavedArrayFormat
+ C4UB_V2F = 0x2A22 # InterleavedArrayFormat
+ C4UB_V3F = 0x2A23 # InterleavedArrayFormat
+ C3F_V3F = 0x2A24 # InterleavedArrayFormat
+ N3F_V3F = 0x2A25 # InterleavedArrayFormat
+ C4F_N3F_V3F = 0x2A26 # InterleavedArrayFormat
+ T2F_V3F = 0x2A27 # InterleavedArrayFormat
+ T4F_V4F = 0x2A28 # InterleavedArrayFormat
+ T2F_C4UB_V3F = 0x2A29 # InterleavedArrayFormat
+ T2F_C3F_V3F = 0x2A2A # InterleavedArrayFormat
+ T2F_N3F_V3F = 0x2A2B # InterleavedArrayFormat
+ T2F_C4F_N3F_V3F = 0x2A2C # InterleavedArrayFormat
+ T4F_C4F_N3F_V4F = 0x2A2D # InterleavedArrayFormat
+passthru: /* ClipPlaneName */
+ CLIP_PLANE0 = 0x3000 # 1 I # ClipPlaneName
+ CLIP_PLANE1 = 0x3001 # 1 I # ClipPlaneName
+ CLIP_PLANE2 = 0x3002 # 1 I # ClipPlaneName
+ CLIP_PLANE3 = 0x3003 # 1 I # ClipPlaneName
+ CLIP_PLANE4 = 0x3004 # 1 I # ClipPlaneName
+ CLIP_PLANE5 = 0x3005 # 1 I # ClipPlaneName
+passthru: /* LightName */
+ LIGHT0 = 0x4000 # 1 I # LightName
+ LIGHT1 = 0x4001 # 1 I # LightName
+ LIGHT2 = 0x4002 # 1 I # LightName
+ LIGHT3 = 0x4003 # 1 I # LightName
+ LIGHT4 = 0x4004 # 1 I # LightName
+ LIGHT5 = 0x4005 # 1 I # LightName
+ LIGHT6 = 0x4006 # 1 I # LightName
+ LIGHT7 = 0x4007 # 1 I # LightName
+
+
+###############################################################################
+#
+# OpenGL 1.2 enums
+#
+###############################################################################
+
+VERSION_1_2 enum:
+ UNSIGNED_BYTE_3_3_2 = 0x8032 # Equivalent to EXT_packed_pixels
+ UNSIGNED_SHORT_4_4_4_4 = 0x8033
+ UNSIGNED_SHORT_5_5_5_1 = 0x8034
+ UNSIGNED_INT_8_8_8_8 = 0x8035
+ UNSIGNED_INT_10_10_10_2 = 0x8036
+ TEXTURE_BINDING_3D = 0x806A # 1 I
+ PACK_SKIP_IMAGES = 0x806B # 1 I
+ PACK_IMAGE_HEIGHT = 0x806C # 1 F
+ UNPACK_SKIP_IMAGES = 0x806D # 1 I
+ UNPACK_IMAGE_HEIGHT = 0x806E # 1 F
+ TEXTURE_3D = 0x806F # 1 I
+ PROXY_TEXTURE_3D = 0x8070
+ TEXTURE_DEPTH = 0x8071
+ TEXTURE_WRAP_R = 0x8072
+ MAX_3D_TEXTURE_SIZE = 0x8073 # 1 I
+ UNSIGNED_BYTE_2_3_3_REV = 0x8362 # New for OpenGL 1.2
+ UNSIGNED_SHORT_5_6_5 = 0x8363
+ UNSIGNED_SHORT_5_6_5_REV = 0x8364
+ UNSIGNED_SHORT_4_4_4_4_REV = 0x8365
+ UNSIGNED_SHORT_1_5_5_5_REV = 0x8366
+ UNSIGNED_INT_8_8_8_8_REV = 0x8367
+ UNSIGNED_INT_2_10_10_10_REV = 0x8368
+ BGR = 0x80E0
+ BGRA = 0x80E1
+ MAX_ELEMENTS_VERTICES = 0x80E8
+ MAX_ELEMENTS_INDICES = 0x80E9
+ CLAMP_TO_EDGE = 0x812F # Equivalent to SGIS_texture_edge_clamp
+ TEXTURE_MIN_LOD = 0x813A # Equivalent to SGIS_texture_lod
+ TEXTURE_MAX_LOD = 0x813B
+ TEXTURE_BASE_LEVEL = 0x813C
+ TEXTURE_MAX_LEVEL = 0x813D
+ SMOOTH_POINT_SIZE_RANGE = 0x0B12 # 2 F
+ SMOOTH_POINT_SIZE_GRANULARITY = 0x0B13 # 1 F
+ SMOOTH_LINE_WIDTH_RANGE = 0x0B22 # 2 F
+ SMOOTH_LINE_WIDTH_GRANULARITY = 0x0B23 # 1 F
+ ALIASED_LINE_WIDTH_RANGE = 0x846E # 2 F
+
+VERSION_1_2_DEPRECATED enum:
+ RESCALE_NORMAL = 0x803A # 1 I # Equivalent to EXT_rescale_normal
+ LIGHT_MODEL_COLOR_CONTROL = 0x81F8 # 1 I
+ SINGLE_COLOR = 0x81F9
+ SEPARATE_SPECULAR_COLOR = 0x81FA
+ ALIASED_POINT_SIZE_RANGE = 0x846D # 2 F
+
+ARB_imaging enum:
+ CONSTANT_COLOR = 0x8001 # Equivalent to EXT_blend_color
+ ONE_MINUS_CONSTANT_COLOR = 0x8002
+ CONSTANT_ALPHA = 0x8003
+ ONE_MINUS_CONSTANT_ALPHA = 0x8004
+ BLEND_COLOR = 0x8005 # 4 F
+ FUNC_ADD = 0x8006 # Equivalent to EXT_blend_minmax
+ MIN = 0x8007
+ MAX = 0x8008
+ BLEND_EQUATION = 0x8009 # 1 I
+ FUNC_SUBTRACT = 0x800A # Equivalent to EXT_blend_subtract
+ FUNC_REVERSE_SUBTRACT = 0x800B
+
+ARB_imaging_DEPRECATED enum:
+ CONVOLUTION_1D = 0x8010 # 1 I # Equivalent to EXT_convolution
+ CONVOLUTION_2D = 0x8011 # 1 I
+ SEPARABLE_2D = 0x8012 # 1 I
+ CONVOLUTION_BORDER_MODE = 0x8013
+ CONVOLUTION_FILTER_SCALE = 0x8014
+ CONVOLUTION_FILTER_BIAS = 0x8015
+ REDUCE = 0x8016
+ CONVOLUTION_FORMAT = 0x8017
+ CONVOLUTION_WIDTH = 0x8018
+ CONVOLUTION_HEIGHT = 0x8019
+ MAX_CONVOLUTION_WIDTH = 0x801A
+ MAX_CONVOLUTION_HEIGHT = 0x801B
+ POST_CONVOLUTION_RED_SCALE = 0x801C # 1 F
+ POST_CONVOLUTION_GREEN_SCALE = 0x801D # 1 F
+ POST_CONVOLUTION_BLUE_SCALE = 0x801E # 1 F
+ POST_CONVOLUTION_ALPHA_SCALE = 0x801F # 1 F
+ POST_CONVOLUTION_RED_BIAS = 0x8020 # 1 F
+ POST_CONVOLUTION_GREEN_BIAS = 0x8021 # 1 F
+ POST_CONVOLUTION_BLUE_BIAS = 0x8022 # 1 F
+ POST_CONVOLUTION_ALPHA_BIAS = 0x8023 # 1 F
+ HISTOGRAM = 0x8024 # 1 I # Equivalent to EXT_histogram
+ PROXY_HISTOGRAM = 0x8025
+ HISTOGRAM_WIDTH = 0x8026
+ HISTOGRAM_FORMAT = 0x8027
+ HISTOGRAM_RED_SIZE = 0x8028
+ HISTOGRAM_GREEN_SIZE = 0x8029
+ HISTOGRAM_BLUE_SIZE = 0x802A
+ HISTOGRAM_ALPHA_SIZE = 0x802B
+ HISTOGRAM_LUMINANCE_SIZE = 0x802C
+ HISTOGRAM_SINK = 0x802D
+ MINMAX = 0x802E # 1 I
+ MINMAX_FORMAT = 0x802F
+ MINMAX_SINK = 0x8030
+ TABLE_TOO_LARGE = 0x8031
+ COLOR_MATRIX = 0x80B1 # 16 F # Equivalent to SGI_color_matrix
+ COLOR_MATRIX_STACK_DEPTH = 0x80B2 # 1 I
+ MAX_COLOR_MATRIX_STACK_DEPTH = 0x80B3 # 1 I
+ POST_COLOR_MATRIX_RED_SCALE = 0x80B4 # 1 F
+ POST_COLOR_MATRIX_GREEN_SCALE = 0x80B5 # 1 F
+ POST_COLOR_MATRIX_BLUE_SCALE = 0x80B6 # 1 F
+ POST_COLOR_MATRIX_ALPHA_SCALE = 0x80B7 # 1 F
+ POST_COLOR_MATRIX_RED_BIAS = 0x80B8 # 1 F
+ POST_COLOR_MATRIX_GREEN_BIAS = 0x80B9 # 1 F
+ POST_COLOR_MATRIX_BLUE_BIAS = 0x80BA # 1 F
+ POST_COLOR_MATRIX_ALPHA_BIAS = 0x80BB # 1 F
+ COLOR_TABLE = 0x80D0 # 1 I # Equivalent to SGI_color_table
+ POST_CONVOLUTION_COLOR_TABLE = 0x80D1 # 1 I
+ POST_COLOR_MATRIX_COLOR_TABLE = 0x80D2 # 1 I
+ PROXY_COLOR_TABLE = 0x80D3
+ PROXY_POST_CONVOLUTION_COLOR_TABLE = 0x80D4
+ PROXY_POST_COLOR_MATRIX_COLOR_TABLE = 0x80D5
+ COLOR_TABLE_SCALE = 0x80D6
+ COLOR_TABLE_BIAS = 0x80D7
+ COLOR_TABLE_FORMAT = 0x80D8
+ COLOR_TABLE_WIDTH = 0x80D9
+ COLOR_TABLE_RED_SIZE = 0x80DA
+ COLOR_TABLE_GREEN_SIZE = 0x80DB
+ COLOR_TABLE_BLUE_SIZE = 0x80DC
+ COLOR_TABLE_ALPHA_SIZE = 0x80DD
+ COLOR_TABLE_LUMINANCE_SIZE = 0x80DE
+ COLOR_TABLE_INTENSITY_SIZE = 0x80DF
+ CONSTANT_BORDER = 0x8151
+ REPLICATE_BORDER = 0x8153
+ CONVOLUTION_BORDER_COLOR = 0x8154
+
+
+###############################################################################
+#
+# OpenGL 1.3 enums
+#
+###############################################################################
+
+VERSION_1_3 enum:
+ TEXTURE0 = 0x84C0 # Promoted from ARB_multitexture
+ TEXTURE1 = 0x84C1
+ TEXTURE2 = 0x84C2
+ TEXTURE3 = 0x84C3
+ TEXTURE4 = 0x84C4
+ TEXTURE5 = 0x84C5
+ TEXTURE6 = 0x84C6
+ TEXTURE7 = 0x84C7
+ TEXTURE8 = 0x84C8
+ TEXTURE9 = 0x84C9
+ TEXTURE10 = 0x84CA
+ TEXTURE11 = 0x84CB
+ TEXTURE12 = 0x84CC
+ TEXTURE13 = 0x84CD
+ TEXTURE14 = 0x84CE
+ TEXTURE15 = 0x84CF
+ TEXTURE16 = 0x84D0
+ TEXTURE17 = 0x84D1
+ TEXTURE18 = 0x84D2
+ TEXTURE19 = 0x84D3
+ TEXTURE20 = 0x84D4
+ TEXTURE21 = 0x84D5
+ TEXTURE22 = 0x84D6
+ TEXTURE23 = 0x84D7
+ TEXTURE24 = 0x84D8
+ TEXTURE25 = 0x84D9
+ TEXTURE26 = 0x84DA
+ TEXTURE27 = 0x84DB
+ TEXTURE28 = 0x84DC
+ TEXTURE29 = 0x84DD
+ TEXTURE30 = 0x84DE
+ TEXTURE31 = 0x84DF
+ ACTIVE_TEXTURE = 0x84E0 # 1 I
+ MULTISAMPLE = 0x809D # Promoted from ARB_multisample
+ SAMPLE_ALPHA_TO_COVERAGE = 0x809E
+ SAMPLE_ALPHA_TO_ONE = 0x809F
+ SAMPLE_COVERAGE = 0x80A0
+ SAMPLE_BUFFERS = 0x80A8
+ SAMPLES = 0x80A9
+ SAMPLE_COVERAGE_VALUE = 0x80AA
+ SAMPLE_COVERAGE_INVERT = 0x80AB
+ TEXTURE_CUBE_MAP = 0x8513
+ TEXTURE_BINDING_CUBE_MAP = 0x8514
+ TEXTURE_CUBE_MAP_POSITIVE_X = 0x8515
+ TEXTURE_CUBE_MAP_NEGATIVE_X = 0x8516
+ TEXTURE_CUBE_MAP_POSITIVE_Y = 0x8517
+ TEXTURE_CUBE_MAP_NEGATIVE_Y = 0x8518
+ TEXTURE_CUBE_MAP_POSITIVE_Z = 0x8519
+ TEXTURE_CUBE_MAP_NEGATIVE_Z = 0x851A
+ PROXY_TEXTURE_CUBE_MAP = 0x851B
+ MAX_CUBE_MAP_TEXTURE_SIZE = 0x851C
+ COMPRESSED_RGB = 0x84ED
+ COMPRESSED_RGBA = 0x84EE
+ TEXTURE_COMPRESSION_HINT = 0x84EF
+ TEXTURE_COMPRESSED_IMAGE_SIZE = 0x86A0
+ TEXTURE_COMPRESSED = 0x86A1
+ NUM_COMPRESSED_TEXTURE_FORMATS = 0x86A2
+ COMPRESSED_TEXTURE_FORMATS = 0x86A3
+ CLAMP_TO_BORDER = 0x812D # Promoted from ARB_texture_border_clamp
+
+VERSION_1_3_DEPRECATED enum:
+ CLIENT_ACTIVE_TEXTURE = 0x84E1 # 1 I
+ MAX_TEXTURE_UNITS = 0x84E2 # 1 I
+ TRANSPOSE_MODELVIEW_MATRIX = 0x84E3 # 16 F # Promoted from ARB_transpose_matrix
+ TRANSPOSE_PROJECTION_MATRIX = 0x84E4 # 16 F
+ TRANSPOSE_TEXTURE_MATRIX = 0x84E5 # 16 F
+ TRANSPOSE_COLOR_MATRIX = 0x84E6 # 16 F
+ MULTISAMPLE_BIT = 0x20000000
+ NORMAL_MAP = 0x8511 # Promoted from ARB_texture_cube_map
+ REFLECTION_MAP = 0x8512
+ COMPRESSED_ALPHA = 0x84E9 # Promoted from ARB_texture_compression
+ COMPRESSED_LUMINANCE = 0x84EA
+ COMPRESSED_LUMINANCE_ALPHA = 0x84EB
+ COMPRESSED_INTENSITY = 0x84EC
+ COMBINE = 0x8570 # Promoted from ARB_texture_env_combine
+ COMBINE_RGB = 0x8571
+ COMBINE_ALPHA = 0x8572
+ SOURCE0_RGB = 0x8580
+ SOURCE1_RGB = 0x8581
+ SOURCE2_RGB = 0x8582
+ SOURCE0_ALPHA = 0x8588
+ SOURCE1_ALPHA = 0x8589
+ SOURCE2_ALPHA = 0x858A
+ OPERAND0_RGB = 0x8590
+ OPERAND1_RGB = 0x8591
+ OPERAND2_RGB = 0x8592
+ OPERAND0_ALPHA = 0x8598
+ OPERAND1_ALPHA = 0x8599
+ OPERAND2_ALPHA = 0x859A
+ RGB_SCALE = 0x8573
+ ADD_SIGNED = 0x8574
+ INTERPOLATE = 0x8575
+ SUBTRACT = 0x84E7
+ CONSTANT = 0x8576
+ PRIMARY_COLOR = 0x8577
+ PREVIOUS = 0x8578
+ DOT3_RGB = 0x86AE # Promoted from ARB_texture_env_dot3
+ DOT3_RGBA = 0x86AF
+
+
+###############################################################################
+#
+# OpenGL 1.4 enums
+#
+###############################################################################
+
+VERSION_1_4 enum:
+ BLEND_DST_RGB = 0x80C8
+ BLEND_SRC_RGB = 0x80C9
+ BLEND_DST_ALPHA = 0x80CA
+ BLEND_SRC_ALPHA = 0x80CB
+ POINT_FADE_THRESHOLD_SIZE = 0x8128 # 1 F
+ DEPTH_COMPONENT16 = 0x81A5
+ DEPTH_COMPONENT24 = 0x81A6
+ DEPTH_COMPONENT32 = 0x81A7
+ MIRRORED_REPEAT = 0x8370
+ MAX_TEXTURE_LOD_BIAS = 0x84FD
+ TEXTURE_LOD_BIAS = 0x8501
+ INCR_WRAP = 0x8507
+ DECR_WRAP = 0x8508
+ TEXTURE_DEPTH_SIZE = 0x884A
+ TEXTURE_COMPARE_MODE = 0x884C
+ TEXTURE_COMPARE_FUNC = 0x884D
+
+VERSION_1_4_DEPRECATED enum:
+ POINT_SIZE_MIN = 0x8126 # 1 F
+ POINT_SIZE_MAX = 0x8127 # 1 F
+ POINT_DISTANCE_ATTENUATION = 0x8129 # 3 F
+ GENERATE_MIPMAP = 0x8191
+ GENERATE_MIPMAP_HINT = 0x8192 # 1 I
+ FOG_COORDINATE_SOURCE = 0x8450 # 1 I
+ FOG_COORDINATE = 0x8451
+ FRAGMENT_DEPTH = 0x8452
+ CURRENT_FOG_COORDINATE = 0x8453 # 1 F
+ FOG_COORDINATE_ARRAY_TYPE = 0x8454 # 1 I
+ FOG_COORDINATE_ARRAY_STRIDE = 0x8455 # 1 I
+ FOG_COORDINATE_ARRAY_POINTER = 0x8456
+ FOG_COORDINATE_ARRAY = 0x8457 # 1 I
+ COLOR_SUM = 0x8458 # 1 I
+ CURRENT_SECONDARY_COLOR = 0x8459 # 3 F
+ SECONDARY_COLOR_ARRAY_SIZE = 0x845A # 1 I
+ SECONDARY_COLOR_ARRAY_TYPE = 0x845B # 1 I
+ SECONDARY_COLOR_ARRAY_STRIDE = 0x845C # 1 I
+ SECONDARY_COLOR_ARRAY_POINTER = 0x845D
+ SECONDARY_COLOR_ARRAY = 0x845E # 1 I
+ TEXTURE_FILTER_CONTROL = 0x8500
+ DEPTH_TEXTURE_MODE = 0x884B
+ COMPARE_R_TO_TEXTURE = 0x884E
+
+
+###############################################################################
+#
+# OpenGL 1.5 enums
+#
+###############################################################################
+
+VERSION_1_5 enum:
+ BUFFER_SIZE = 0x8764 # ARB_vertex_buffer_object
+ BUFFER_USAGE = 0x8765 # ARB_vertex_buffer_object
+ QUERY_COUNTER_BITS = 0x8864 # ARB_occlusion_query
+ CURRENT_QUERY = 0x8865 # ARB_occlusion_query
+ QUERY_RESULT = 0x8866 # ARB_occlusion_query
+ QUERY_RESULT_AVAILABLE = 0x8867 # ARB_occlusion_query
+ ARRAY_BUFFER = 0x8892 # ARB_vertex_buffer_object
+ ELEMENT_ARRAY_BUFFER = 0x8893 # ARB_vertex_buffer_object
+ ARRAY_BUFFER_BINDING = 0x8894 # ARB_vertex_buffer_object
+ ELEMENT_ARRAY_BUFFER_BINDING = 0x8895 # ARB_vertex_buffer_object
+ VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 0x889F # ARB_vertex_buffer_object
+ READ_ONLY = 0x88B8 # ARB_vertex_buffer_object
+ WRITE_ONLY = 0x88B9 # ARB_vertex_buffer_object
+ READ_WRITE = 0x88BA # ARB_vertex_buffer_object
+ BUFFER_ACCESS = 0x88BB # ARB_vertex_buffer_object
+ BUFFER_MAPPED = 0x88BC # ARB_vertex_buffer_object
+ BUFFER_MAP_POINTER = 0x88BD # ARB_vertex_buffer_object
+ STREAM_DRAW = 0x88E0 # ARB_vertex_buffer_object
+ STREAM_READ = 0x88E1 # ARB_vertex_buffer_object
+ STREAM_COPY = 0x88E2 # ARB_vertex_buffer_object
+ STATIC_DRAW = 0x88E4 # ARB_vertex_buffer_object
+ STATIC_READ = 0x88E5 # ARB_vertex_buffer_object
+ STATIC_COPY = 0x88E6 # ARB_vertex_buffer_object
+ DYNAMIC_DRAW = 0x88E8 # ARB_vertex_buffer_object
+ DYNAMIC_READ = 0x88E9 # ARB_vertex_buffer_object
+ DYNAMIC_COPY = 0x88EA # ARB_vertex_buffer_object
+ SAMPLES_PASSED = 0x8914 # ARB_occlusion_query
+
+VERSION_1_5_DEPRECATED enum:
+ VERTEX_ARRAY_BUFFER_BINDING = 0x8896 # ARB_vertex_buffer_object
+ NORMAL_ARRAY_BUFFER_BINDING = 0x8897 # ARB_vertex_buffer_object
+ COLOR_ARRAY_BUFFER_BINDING = 0x8898 # ARB_vertex_buffer_object
+ INDEX_ARRAY_BUFFER_BINDING = 0x8899 # ARB_vertex_buffer_object
+ TEXTURE_COORD_ARRAY_BUFFER_BINDING = 0x889A # ARB_vertex_buffer_object
+ EDGE_FLAG_ARRAY_BUFFER_BINDING = 0x889B # ARB_vertex_buffer_object
+ SECONDARY_COLOR_ARRAY_BUFFER_BINDING = 0x889C # ARB_vertex_buffer_object
+ FOG_COORDINATE_ARRAY_BUFFER_BINDING = 0x889D # ARB_vertex_buffer_object
+ WEIGHT_ARRAY_BUFFER_BINDING = 0x889E # ARB_vertex_buffer_object
+ FOG_COORD_SRC = 0x8450 # alias GL_FOG_COORDINATE_SOURCE
+ FOG_COORD = 0x8451 # alias GL_FOG_COORDINATE
+ CURRENT_FOG_COORD = 0x8453 # alias GL_CURRENT_FOG_COORDINATE
+ FOG_COORD_ARRAY_TYPE = 0x8454 # alias GL_FOG_COORDINATE_ARRAY_TYPE
+ FOG_COORD_ARRAY_STRIDE = 0x8455 # alias GL_FOG_COORDINATE_ARRAY_STRIDE
+ FOG_COORD_ARRAY_POINTER = 0x8456 # alias GL_FOG_COORDINATE_ARRAY_POINTER
+ FOG_COORD_ARRAY = 0x8457 # alias GL_FOG_COORDINATE_ARRAY
+ FOG_COORD_ARRAY_BUFFER_BINDING = 0x889D # alias GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING
+# New naming scheme
+ SRC0_RGB = 0x8580 # alias GL_SOURCE0_RGB
+ SRC1_RGB = 0x8581 # alias GL_SOURCE1_RGB
+ SRC2_RGB = 0x8582 # alias GL_SOURCE2_RGB
+ SRC0_ALPHA = 0x8588 # alias GL_SOURCE0_ALPHA
+ SRC1_ALPHA = 0x8589 # alias GL_SOURCE1_ALPHA
+ SRC2_ALPHA = 0x858A # alias GL_SOURCE2_ALPHA
+
+###############################################################################
+#
+# OpenGL 2.0 enums
+#
+###############################################################################
+
+VERSION_2_0 enum:
+ BLEND_EQUATION_RGB = 0x8009 # EXT_blend_equation_separate # alias GL_BLEND_EQUATION
+ VERTEX_ATTRIB_ARRAY_ENABLED = 0x8622 # ARB_vertex_shader
+ VERTEX_ATTRIB_ARRAY_SIZE = 0x8623 # ARB_vertex_shader
+ VERTEX_ATTRIB_ARRAY_STRIDE = 0x8624 # ARB_vertex_shader
+ VERTEX_ATTRIB_ARRAY_TYPE = 0x8625 # ARB_vertex_shader
+ CURRENT_VERTEX_ATTRIB = 0x8626 # ARB_vertex_shader
+ VERTEX_PROGRAM_POINT_SIZE = 0x8642 # ARB_vertex_shader
+ VERTEX_ATTRIB_ARRAY_POINTER = 0x8645 # ARB_vertex_shader
+ STENCIL_BACK_FUNC = 0x8800 # ARB_stencil_two_side
+ STENCIL_BACK_FAIL = 0x8801 # ARB_stencil_two_side
+ STENCIL_BACK_PASS_DEPTH_FAIL = 0x8802 # ARB_stencil_two_side
+ STENCIL_BACK_PASS_DEPTH_PASS = 0x8803 # ARB_stencil_two_side
+ MAX_DRAW_BUFFERS = 0x8824 # ARB_draw_buffers
+ DRAW_BUFFER0 = 0x8825 # ARB_draw_buffers
+ DRAW_BUFFER1 = 0x8826 # ARB_draw_buffers
+ DRAW_BUFFER2 = 0x8827 # ARB_draw_buffers
+ DRAW_BUFFER3 = 0x8828 # ARB_draw_buffers
+ DRAW_BUFFER4 = 0x8829 # ARB_draw_buffers
+ DRAW_BUFFER5 = 0x882A # ARB_draw_buffers
+ DRAW_BUFFER6 = 0x882B # ARB_draw_buffers
+ DRAW_BUFFER7 = 0x882C # ARB_draw_buffers
+ DRAW_BUFFER8 = 0x882D # ARB_draw_buffers
+ DRAW_BUFFER9 = 0x882E # ARB_draw_buffers
+ DRAW_BUFFER10 = 0x882F # ARB_draw_buffers
+ DRAW_BUFFER11 = 0x8830 # ARB_draw_buffers
+ DRAW_BUFFER12 = 0x8831 # ARB_draw_buffers
+ DRAW_BUFFER13 = 0x8832 # ARB_draw_buffers
+ DRAW_BUFFER14 = 0x8833 # ARB_draw_buffers
+ DRAW_BUFFER15 = 0x8834 # ARB_draw_buffers
+ BLEND_EQUATION_ALPHA = 0x883D # EXT_blend_equation_separate
+ MAX_VERTEX_ATTRIBS = 0x8869 # ARB_vertex_shader
+ VERTEX_ATTRIB_ARRAY_NORMALIZED = 0x886A # ARB_vertex_shader
+ MAX_TEXTURE_IMAGE_UNITS = 0x8872 # ARB_vertex_shader, ARB_fragment_shader
+ FRAGMENT_SHADER = 0x8B30 # ARB_fragment_shader
+ VERTEX_SHADER = 0x8B31 # ARB_vertex_shader
+ MAX_FRAGMENT_UNIFORM_COMPONENTS = 0x8B49 # ARB_fragment_shader
+ MAX_VERTEX_UNIFORM_COMPONENTS = 0x8B4A # ARB_vertex_shader
+ MAX_VARYING_FLOATS = 0x8B4B # ARB_vertex_shader
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS = 0x8B4C # ARB_vertex_shader
+ MAX_COMBINED_TEXTURE_IMAGE_UNITS = 0x8B4D # ARB_vertex_shader
+ SHADER_TYPE = 0x8B4F # ARB_shader_objects
+ FLOAT_VEC2 = 0x8B50 # ARB_shader_objects
+ FLOAT_VEC3 = 0x8B51 # ARB_shader_objects
+ FLOAT_VEC4 = 0x8B52 # ARB_shader_objects
+ INT_VEC2 = 0x8B53 # ARB_shader_objects
+ INT_VEC3 = 0x8B54 # ARB_shader_objects
+ INT_VEC4 = 0x8B55 # ARB_shader_objects
+ BOOL = 0x8B56 # ARB_shader_objects
+ BOOL_VEC2 = 0x8B57 # ARB_shader_objects
+ BOOL_VEC3 = 0x8B58 # ARB_shader_objects
+ BOOL_VEC4 = 0x8B59 # ARB_shader_objects
+ FLOAT_MAT2 = 0x8B5A # ARB_shader_objects
+ FLOAT_MAT3 = 0x8B5B # ARB_shader_objects
+ FLOAT_MAT4 = 0x8B5C # ARB_shader_objects
+ SAMPLER_1D = 0x8B5D # ARB_shader_objects
+ SAMPLER_2D = 0x8B5E # ARB_shader_objects
+ SAMPLER_3D = 0x8B5F # ARB_shader_objects
+ SAMPLER_CUBE = 0x8B60 # ARB_shader_objects
+ SAMPLER_1D_SHADOW = 0x8B61 # ARB_shader_objects
+ SAMPLER_2D_SHADOW = 0x8B62 # ARB_shader_objects
+ DELETE_STATUS = 0x8B80 # ARB_shader_objects
+ COMPILE_STATUS = 0x8B81 # ARB_shader_objects
+ LINK_STATUS = 0x8B82 # ARB_shader_objects
+ VALIDATE_STATUS = 0x8B83 # ARB_shader_objects
+ INFO_LOG_LENGTH = 0x8B84 # ARB_shader_objects
+ ATTACHED_SHADERS = 0x8B85 # ARB_shader_objects
+ ACTIVE_UNIFORMS = 0x8B86 # ARB_shader_objects
+ ACTIVE_UNIFORM_MAX_LENGTH = 0x8B87 # ARB_shader_objects
+ SHADER_SOURCE_LENGTH = 0x8B88 # ARB_shader_objects
+ ACTIVE_ATTRIBUTES = 0x8B89 # ARB_vertex_shader
+ ACTIVE_ATTRIBUTE_MAX_LENGTH = 0x8B8A # ARB_vertex_shader
+ FRAGMENT_SHADER_DERIVATIVE_HINT = 0x8B8B # ARB_fragment_shader
+ SHADING_LANGUAGE_VERSION = 0x8B8C # ARB_shading_language_100
+ CURRENT_PROGRAM = 0x8B8D # ARB_shader_objects (added for 2.0)
+ POINT_SPRITE_COORD_ORIGIN = 0x8CA0 # ARB_point_sprite (added for 2.0)
+ LOWER_LEFT = 0x8CA1 # ARB_point_sprite (added for 2.0)
+ UPPER_LEFT = 0x8CA2 # ARB_point_sprite (added for 2.0)
+ STENCIL_BACK_REF = 0x8CA3 # ARB_stencil_two_side
+ STENCIL_BACK_VALUE_MASK = 0x8CA4 # ARB_stencil_two_side
+ STENCIL_BACK_WRITEMASK = 0x8CA5 # ARB_stencil_two_side
+
+VERSION_2_0_DEPRECATED enum:
+ VERTEX_PROGRAM_TWO_SIDE = 0x8643 # ARB_vertex_shader
+ POINT_SPRITE = 0x8861 # ARB_point_sprite
+ COORD_REPLACE = 0x8862 # ARB_point_sprite
+ MAX_TEXTURE_COORDS = 0x8871 # ARB_vertex_shader, ARB_fragment_shader
+
+
+###############################################################################
+#
+# OpenGL 2.1 enums
+#
+###############################################################################
+
+VERSION_2_1 enum:
+ PIXEL_PACK_BUFFER = 0x88EB # ARB_pixel_buffer_object
+ PIXEL_UNPACK_BUFFER = 0x88EC # ARB_pixel_buffer_object
+ PIXEL_PACK_BUFFER_BINDING = 0x88ED # ARB_pixel_buffer_object
+ PIXEL_UNPACK_BUFFER_BINDING = 0x88EF # ARB_pixel_buffer_object
+ FLOAT_MAT2x3 = 0x8B65 # New for 2.1
+ FLOAT_MAT2x4 = 0x8B66 # New for 2.1
+ FLOAT_MAT3x2 = 0x8B67 # New for 2.1
+ FLOAT_MAT3x4 = 0x8B68 # New for 2.1
+ FLOAT_MAT4x2 = 0x8B69 # New for 2.1
+ FLOAT_MAT4x3 = 0x8B6A # New for 2.1
+ SRGB = 0x8C40 # EXT_texture_sRGB
+ SRGB8 = 0x8C41 # EXT_texture_sRGB
+ SRGB_ALPHA = 0x8C42 # EXT_texture_sRGB
+ SRGB8_ALPHA8 = 0x8C43 # EXT_texture_sRGB
+ COMPRESSED_SRGB = 0x8C48 # EXT_texture_sRGB
+ COMPRESSED_SRGB_ALPHA = 0x8C49 # EXT_texture_sRGB
+
+VERSION_2_1_DEPRECATED enum:
+ CURRENT_RASTER_SECONDARY_COLOR = 0x845F # New for 2.1
+ SLUMINANCE_ALPHA = 0x8C44 # EXT_texture_sRGB
+ SLUMINANCE8_ALPHA8 = 0x8C45 # EXT_texture_sRGB
+ SLUMINANCE = 0x8C46 # EXT_texture_sRGB
+ SLUMINANCE8 = 0x8C47 # EXT_texture_sRGB
+ COMPRESSED_SLUMINANCE = 0x8C4A # EXT_texture_sRGB
+ COMPRESSED_SLUMINANCE_ALPHA = 0x8C4B # EXT_texture_sRGB
+
+
+###############################################################################
+#
+# OpenGL 3.0 enums
+#
+###############################################################################
+
+VERSION_3_0 enum:
+ COMPARE_REF_TO_TEXTURE = 0x884E # alias GL_COMPARE_R_TO_TEXTURE_ARB
+ CLIP_DISTANCE0 = 0x3000 # alias GL_CLIP_PLANE0
+ CLIP_DISTANCE1 = 0x3001 # alias GL_CLIP_PLANE1
+ CLIP_DISTANCE2 = 0x3002 # alias GL_CLIP_PLANE2
+ CLIP_DISTANCE3 = 0x3003 # alias GL_CLIP_PLANE3
+ CLIP_DISTANCE4 = 0x3004 # alias GL_CLIP_PLANE4
+ CLIP_DISTANCE5 = 0x3005 # alias GL_CLIP_PLANE5
+ CLIP_DISTANCE6 = 0x3006
+ CLIP_DISTANCE7 = 0x3007
+ MAX_CLIP_DISTANCES = 0x0D32 # alias GL_MAX_CLIP_PLANES
+ MAJOR_VERSION = 0x821B
+ MINOR_VERSION = 0x821C
+ NUM_EXTENSIONS = 0x821D
+ CONTEXT_FLAGS = 0x821E
+ DEPTH_BUFFER = 0x8223
+ STENCIL_BUFFER = 0x8224
+ COMPRESSED_RED = 0x8225
+ COMPRESSED_RG = 0x8226
+ CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT = 0x0001
+ RGBA32F = 0x8814
+ RGB32F = 0x8815
+ RGBA16F = 0x881A
+ RGB16F = 0x881B
+ VERTEX_ATTRIB_ARRAY_INTEGER = 0x88FD
+ MAX_ARRAY_TEXTURE_LAYERS = 0x88FF
+ MIN_PROGRAM_TEXEL_OFFSET = 0x8904
+ MAX_PROGRAM_TEXEL_OFFSET = 0x8905
+ CLAMP_READ_COLOR = 0x891C
+ FIXED_ONLY = 0x891D
+ MAX_VARYING_COMPONENTS = 0x8B4B # alias GL_MAX_VARYING_FLOATS
+ TEXTURE_1D_ARRAY = 0x8C18
+ PROXY_TEXTURE_1D_ARRAY = 0x8C19
+ TEXTURE_2D_ARRAY = 0x8C1A
+ PROXY_TEXTURE_2D_ARRAY = 0x8C1B
+ TEXTURE_BINDING_1D_ARRAY = 0x8C1C
+ TEXTURE_BINDING_2D_ARRAY = 0x8C1D
+ R11F_G11F_B10F = 0x8C3A
+ UNSIGNED_INT_10F_11F_11F_REV = 0x8C3B
+ RGB9_E5 = 0x8C3D
+ UNSIGNED_INT_5_9_9_9_REV = 0x8C3E
+ TEXTURE_SHARED_SIZE = 0x8C3F
+ TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH = 0x8C76
+ TRANSFORM_FEEDBACK_BUFFER_MODE = 0x8C7F
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 0x8C80
+ TRANSFORM_FEEDBACK_VARYINGS = 0x8C83
+ TRANSFORM_FEEDBACK_BUFFER_START = 0x8C84
+ TRANSFORM_FEEDBACK_BUFFER_SIZE = 0x8C85
+ PRIMITIVES_GENERATED = 0x8C87
+ TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 0x8C88
+ RASTERIZER_DISCARD = 0x8C89
+ MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 0x8C8A
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 0x8C8B
+ INTERLEAVED_ATTRIBS = 0x8C8C
+ SEPARATE_ATTRIBS = 0x8C8D
+ TRANSFORM_FEEDBACK_BUFFER = 0x8C8E
+ TRANSFORM_FEEDBACK_BUFFER_BINDING = 0x8C8F
+ RGBA32UI = 0x8D70
+ RGB32UI = 0x8D71
+ RGBA16UI = 0x8D76
+ RGB16UI = 0x8D77
+ RGBA8UI = 0x8D7C
+ RGB8UI = 0x8D7D
+ RGBA32I = 0x8D82
+ RGB32I = 0x8D83
+ RGBA16I = 0x8D88
+ RGB16I = 0x8D89
+ RGBA8I = 0x8D8E
+ RGB8I = 0x8D8F
+ RED_INTEGER = 0x8D94
+ GREEN_INTEGER = 0x8D95
+ BLUE_INTEGER = 0x8D96
+ RGB_INTEGER = 0x8D98
+ RGBA_INTEGER = 0x8D99
+ BGR_INTEGER = 0x8D9A
+ BGRA_INTEGER = 0x8D9B
+ SAMPLER_1D_ARRAY = 0x8DC0
+ SAMPLER_2D_ARRAY = 0x8DC1
+ SAMPLER_1D_ARRAY_SHADOW = 0x8DC3
+ SAMPLER_2D_ARRAY_SHADOW = 0x8DC4
+ SAMPLER_CUBE_SHADOW = 0x8DC5
+ UNSIGNED_INT_VEC2 = 0x8DC6
+ UNSIGNED_INT_VEC3 = 0x8DC7
+ UNSIGNED_INT_VEC4 = 0x8DC8
+ INT_SAMPLER_1D = 0x8DC9
+ INT_SAMPLER_2D = 0x8DCA
+ INT_SAMPLER_3D = 0x8DCB
+ INT_SAMPLER_CUBE = 0x8DCC
+ INT_SAMPLER_1D_ARRAY = 0x8DCE
+ INT_SAMPLER_2D_ARRAY = 0x8DCF
+ UNSIGNED_INT_SAMPLER_1D = 0x8DD1
+ UNSIGNED_INT_SAMPLER_2D = 0x8DD2
+ UNSIGNED_INT_SAMPLER_3D = 0x8DD3
+ UNSIGNED_INT_SAMPLER_CUBE = 0x8DD4
+ UNSIGNED_INT_SAMPLER_1D_ARRAY = 0x8DD6
+ UNSIGNED_INT_SAMPLER_2D_ARRAY = 0x8DD7
+ QUERY_WAIT = 0x8E13
+ QUERY_NO_WAIT = 0x8E14
+ QUERY_BY_REGION_WAIT = 0x8E15
+ QUERY_BY_REGION_NO_WAIT = 0x8E16
+ BUFFER_ACCESS_FLAGS = 0x911F
+ BUFFER_MAP_LENGTH = 0x9120
+ BUFFER_MAP_OFFSET = 0x9121
+passthru: /* Reuse tokens from ARB_depth_buffer_float */
+ use ARB_depth_buffer_float DEPTH_COMPONENT32F
+ use ARB_depth_buffer_float DEPTH32F_STENCIL8
+ use ARB_depth_buffer_float FLOAT_32_UNSIGNED_INT_24_8_REV
+passthru: /* Reuse tokens from ARB_framebuffer_object */
+ use ARB_framebuffer_object INVALID_FRAMEBUFFER_OPERATION
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_RED_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_GREEN_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_BLUE_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_DEFAULT
+ use ARB_framebuffer_object FRAMEBUFFER_UNDEFINED
+ use ARB_framebuffer_object DEPTH_STENCIL_ATTACHMENT
+ use ARB_framebuffer_object INDEX
+ use ARB_framebuffer_object MAX_RENDERBUFFER_SIZE
+ use ARB_framebuffer_object DEPTH_STENCIL
+ use ARB_framebuffer_object UNSIGNED_INT_24_8
+ use ARB_framebuffer_object DEPTH24_STENCIL8
+ use ARB_framebuffer_object TEXTURE_STENCIL_SIZE
+ use ARB_framebuffer_object TEXTURE_RED_TYPE
+ use ARB_framebuffer_object TEXTURE_GREEN_TYPE
+ use ARB_framebuffer_object TEXTURE_BLUE_TYPE
+ use ARB_framebuffer_object TEXTURE_ALPHA_TYPE
+ use ARB_framebuffer_object TEXTURE_DEPTH_TYPE
+ use ARB_framebuffer_object UNSIGNED_NORMALIZED
+ use ARB_framebuffer_object FRAMEBUFFER_BINDING
+ use ARB_framebuffer_object DRAW_FRAMEBUFFER_BINDING
+ use ARB_framebuffer_object RENDERBUFFER_BINDING
+ use ARB_framebuffer_object READ_FRAMEBUFFER
+ use ARB_framebuffer_object DRAW_FRAMEBUFFER
+ use ARB_framebuffer_object READ_FRAMEBUFFER_BINDING
+ use ARB_framebuffer_object RENDERBUFFER_SAMPLES
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_OBJECT_NAME
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+ use ARB_framebuffer_object FRAMEBUFFER_COMPLETE
+ use ARB_framebuffer_object FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+ use ARB_framebuffer_object FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+ use ARB_framebuffer_object FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER
+ use ARB_framebuffer_object FRAMEBUFFER_INCOMPLETE_READ_BUFFER
+ use ARB_framebuffer_object FRAMEBUFFER_UNSUPPORTED
+ use ARB_framebuffer_object MAX_COLOR_ATTACHMENTS
+ use ARB_framebuffer_object COLOR_ATTACHMENT0
+ use ARB_framebuffer_object COLOR_ATTACHMENT1
+ use ARB_framebuffer_object COLOR_ATTACHMENT2
+ use ARB_framebuffer_object COLOR_ATTACHMENT3
+ use ARB_framebuffer_object COLOR_ATTACHMENT4
+ use ARB_framebuffer_object COLOR_ATTACHMENT5
+ use ARB_framebuffer_object COLOR_ATTACHMENT6
+ use ARB_framebuffer_object COLOR_ATTACHMENT7
+ use ARB_framebuffer_object COLOR_ATTACHMENT8
+ use ARB_framebuffer_object COLOR_ATTACHMENT9
+ use ARB_framebuffer_object COLOR_ATTACHMENT10
+ use ARB_framebuffer_object COLOR_ATTACHMENT11
+ use ARB_framebuffer_object COLOR_ATTACHMENT12
+ use ARB_framebuffer_object COLOR_ATTACHMENT13
+ use ARB_framebuffer_object COLOR_ATTACHMENT14
+ use ARB_framebuffer_object COLOR_ATTACHMENT15
+ use ARB_framebuffer_object DEPTH_ATTACHMENT
+ use ARB_framebuffer_object STENCIL_ATTACHMENT
+ use ARB_framebuffer_object FRAMEBUFFER
+ use ARB_framebuffer_object RENDERBUFFER
+ use ARB_framebuffer_object RENDERBUFFER_WIDTH
+ use ARB_framebuffer_object RENDERBUFFER_HEIGHT
+ use ARB_framebuffer_object RENDERBUFFER_INTERNAL_FORMAT
+ use ARB_framebuffer_object STENCIL_INDEX1
+ use ARB_framebuffer_object STENCIL_INDEX4
+ use ARB_framebuffer_object STENCIL_INDEX8
+ use ARB_framebuffer_object STENCIL_INDEX16
+ use ARB_framebuffer_object RENDERBUFFER_RED_SIZE
+ use ARB_framebuffer_object RENDERBUFFER_GREEN_SIZE
+ use ARB_framebuffer_object RENDERBUFFER_BLUE_SIZE
+ use ARB_framebuffer_object RENDERBUFFER_ALPHA_SIZE
+ use ARB_framebuffer_object RENDERBUFFER_DEPTH_SIZE
+ use ARB_framebuffer_object RENDERBUFFER_STENCIL_SIZE
+ use ARB_framebuffer_object FRAMEBUFFER_INCOMPLETE_MULTISAMPLE
+ use ARB_framebuffer_object MAX_SAMPLES
+passthru: /* Reuse tokens from ARB_framebuffer_sRGB */
+ use ARB_framebuffer_sRGB FRAMEBUFFER_SRGB
+passthru: /* Reuse tokens from ARB_half_float_vertex */
+ use ARB_half_float_vertex HALF_FLOAT
+passthru: /* Reuse tokens from ARB_map_buffer_range */
+ use ARB_map_buffer_range MAP_READ_BIT
+ use ARB_map_buffer_range MAP_WRITE_BIT
+ use ARB_map_buffer_range MAP_INVALIDATE_RANGE_BIT
+ use ARB_map_buffer_range MAP_INVALIDATE_BUFFER_BIT
+ use ARB_map_buffer_range MAP_FLUSH_EXPLICIT_BIT
+ use ARB_map_buffer_range MAP_UNSYNCHRONIZED_BIT
+passthru: /* Reuse tokens from ARB_texture_compression_rgtc */
+ use ARB_texture_compression_rgtc COMPRESSED_RED_RGTC1
+ use ARB_texture_compression_rgtc COMPRESSED_SIGNED_RED_RGTC1
+ use ARB_texture_compression_rgtc COMPRESSED_RG_RGTC2
+ use ARB_texture_compression_rgtc COMPRESSED_SIGNED_RG_RGTC2
+passthru: /* Reuse tokens from ARB_texture_rg */
+ use ARB_texture_rg RG
+ use ARB_texture_rg RG_INTEGER
+ use ARB_texture_rg R8
+ use ARB_texture_rg R16
+ use ARB_texture_rg RG8
+ use ARB_texture_rg RG16
+ use ARB_texture_rg R16F
+ use ARB_texture_rg R32F
+ use ARB_texture_rg RG16F
+ use ARB_texture_rg RG32F
+ use ARB_texture_rg R8I
+ use ARB_texture_rg R8UI
+ use ARB_texture_rg R16I
+ use ARB_texture_rg R16UI
+ use ARB_texture_rg R32I
+ use ARB_texture_rg R32UI
+ use ARB_texture_rg RG8I
+ use ARB_texture_rg RG8UI
+ use ARB_texture_rg RG16I
+ use ARB_texture_rg RG16UI
+ use ARB_texture_rg RG32I
+ use ARB_texture_rg RG32UI
+passthru: /* Reuse tokens from ARB_vertex_array_object */
+ use ARB_vertex_array_object VERTEX_ARRAY_BINDING
+
+VERSION_3_0_DEPRECATED enum:
+ CLAMP_VERTEX_COLOR = 0x891A
+ CLAMP_FRAGMENT_COLOR = 0x891B
+ ALPHA_INTEGER = 0x8D97
+passthru: /* Reuse tokens from ARB_framebuffer_object */
+ use ARB_framebuffer_object TEXTURE_LUMINANCE_TYPE
+ use ARB_framebuffer_object TEXTURE_INTENSITY_TYPE
+
+
+###############################################################################
+#
+# OpenGL 3.1 enums
+#
+###############################################################################
+
+VERSION_3_1 enum:
+ SAMPLER_2D_RECT = 0x8B63 # ARB_shader_objects + ARB_texture_rectangle
+ SAMPLER_2D_RECT_SHADOW = 0x8B64 # ARB_shader_objects + ARB_texture_rectangle
+ SAMPLER_BUFFER = 0x8DC2 # EXT_gpu_shader4 + ARB_texture_buffer_object
+ INT_SAMPLER_2D_RECT = 0x8DCD # EXT_gpu_shader4 + ARB_texture_rectangle
+ INT_SAMPLER_BUFFER = 0x8DD0 # EXT_gpu_shader4 + ARB_texture_buffer_object
+ UNSIGNED_INT_SAMPLER_2D_RECT = 0x8DD5 # EXT_gpu_shader4 + ARB_texture_rectangle
+ UNSIGNED_INT_SAMPLER_BUFFER = 0x8DD8 # EXT_gpu_shader4 + ARB_texture_buffer_object
+ TEXTURE_BUFFER = 0x8C2A # ARB_texture_buffer_object
+ MAX_TEXTURE_BUFFER_SIZE = 0x8C2B # ARB_texture_buffer_object
+ TEXTURE_BINDING_BUFFER = 0x8C2C # ARB_texture_buffer_object
+ TEXTURE_BUFFER_DATA_STORE_BINDING = 0x8C2D # ARB_texture_buffer_object
+ TEXTURE_BUFFER_FORMAT = 0x8C2E # ARB_texture_buffer_object
+ TEXTURE_RECTANGLE = 0x84F5 # ARB_texture_rectangle
+ TEXTURE_BINDING_RECTANGLE = 0x84F6 # ARB_texture_rectangle
+ PROXY_TEXTURE_RECTANGLE = 0x84F7 # ARB_texture_rectangle
+ MAX_RECTANGLE_TEXTURE_SIZE = 0x84F8 # ARB_texture_rectangle
+ RED_SNORM = 0x8F90 # 3.1
+ RG_SNORM = 0x8F91 # 3.1
+ RGB_SNORM = 0x8F92 # 3.1
+ RGBA_SNORM = 0x8F93 # 3.1
+ R8_SNORM = 0x8F94 # 3.1
+ RG8_SNORM = 0x8F95 # 3.1
+ RGB8_SNORM = 0x8F96 # 3.1
+ RGBA8_SNORM = 0x8F97 # 3.1
+ R16_SNORM = 0x8F98 # 3.1
+ RG16_SNORM = 0x8F99 # 3.1
+ RGB16_SNORM = 0x8F9A # 3.1
+ RGBA16_SNORM = 0x8F9B # 3.1
+ SIGNED_NORMALIZED = 0x8F9C # 3.1
+ PRIMITIVE_RESTART = 0x8F9D # 3.1 (different from NV_primitive_restart)
+ PRIMITIVE_RESTART_INDEX = 0x8F9E # 3.1 (different from NV_primitive_restart)
+passthru: /* Reuse tokens from ARB_copy_buffer */
+ use ARB_copy_buffer COPY_READ_BUFFER
+ use ARB_copy_buffer COPY_WRITE_BUFFER
+passthru: /* Would reuse tokens from ARB_draw_instanced, but it has none */
+passthru: /* Reuse tokens from ARB_uniform_buffer_object */
+ use ARB_uniform_buffer_object UNIFORM_BUFFER
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_BINDING
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_START
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_SIZE
+ use ARB_uniform_buffer_object MAX_VERTEX_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object MAX_FRAGMENT_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object MAX_COMBINED_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object MAX_UNIFORM_BUFFER_BINDINGS
+ use ARB_uniform_buffer_object MAX_UNIFORM_BLOCK_SIZE
+ use ARB_uniform_buffer_object MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS
+ use ARB_uniform_buffer_object MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS
+ use ARB_uniform_buffer_object UNIFORM_BUFFER_OFFSET_ALIGNMENT
+ use ARB_uniform_buffer_object ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH
+ use ARB_uniform_buffer_object ACTIVE_UNIFORM_BLOCKS
+ use ARB_uniform_buffer_object UNIFORM_TYPE
+ use ARB_uniform_buffer_object UNIFORM_SIZE
+ use ARB_uniform_buffer_object UNIFORM_NAME_LENGTH
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_INDEX
+ use ARB_uniform_buffer_object UNIFORM_OFFSET
+ use ARB_uniform_buffer_object UNIFORM_ARRAY_STRIDE
+ use ARB_uniform_buffer_object UNIFORM_MATRIX_STRIDE
+ use ARB_uniform_buffer_object UNIFORM_IS_ROW_MAJOR
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_BINDING
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_DATA_SIZE
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_NAME_LENGTH
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_ACTIVE_UNIFORMS
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER
+ use ARB_uniform_buffer_object UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER
+ use ARB_uniform_buffer_object INVALID_INDEX
+
+
+###############################################################################
+#
+# OpenGL 3.2 enums
+#
+###############################################################################
+
+VERSION_3_2 enum:
+ CONTEXT_CORE_PROFILE_BIT = 0x00000001
+ CONTEXT_COMPATIBILITY_PROFILE_BIT = 0x00000002
+ LINES_ADJACENCY = 0x000A
+ LINE_STRIP_ADJACENCY = 0x000B
+ TRIANGLES_ADJACENCY = 0x000C
+ TRIANGLE_STRIP_ADJACENCY = 0x000D
+ PROGRAM_POINT_SIZE = 0x8642
+ MAX_GEOMETRY_TEXTURE_IMAGE_UNITS = 0x8C29
+ FRAMEBUFFER_ATTACHMENT_LAYERED = 0x8DA7
+ FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = 0x8DA8
+ GEOMETRY_SHADER = 0x8DD9
+ GEOMETRY_VERTICES_OUT = 0x8916
+ GEOMETRY_INPUT_TYPE = 0x8917
+ GEOMETRY_OUTPUT_TYPE = 0x8918
+ MAX_GEOMETRY_UNIFORM_COMPONENTS = 0x8DDF
+ MAX_GEOMETRY_OUTPUT_VERTICES = 0x8DE0
+ MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS = 0x8DE1
+ MAX_VERTEX_OUTPUT_COMPONENTS = 0x9122
+ MAX_GEOMETRY_INPUT_COMPONENTS = 0x9123
+ MAX_GEOMETRY_OUTPUT_COMPONENTS = 0x9124
+ MAX_FRAGMENT_INPUT_COMPONENTS = 0x9125
+ CONTEXT_PROFILE_MASK = 0x9126
+ use VERSION_3_0 MAX_VARYING_COMPONENTS
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+passthru: /* Reuse tokens from ARB_depth_clamp */
+ use ARB_depth_clamp DEPTH_CLAMP
+passthru: /* Would reuse tokens from ARB_draw_elements_base_vertex, but it has none */
+passthru: /* Would reuse tokens from ARB_fragment_coord_conventions, but it has none */
+passthru: /* Reuse tokens from ARB_provoking_vertex */
+ use ARB_provoking_vertex QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION
+ use ARB_provoking_vertex FIRST_VERTEX_CONVENTION
+ use ARB_provoking_vertex LAST_VERTEX_CONVENTION
+ use ARB_provoking_vertex PROVOKING_VERTEX
+passthru: /* Reuse tokens from ARB_seamless_cube_map */
+ use ARB_seamless_cube_map TEXTURE_CUBE_MAP_SEAMLESS
+passthru: /* Reuse tokens from ARB_sync */
+ use ARB_sync MAX_SERVER_WAIT_TIMEOUT
+ use ARB_sync OBJECT_TYPE
+ use ARB_sync SYNC_CONDITION
+ use ARB_sync SYNC_STATUS
+ use ARB_sync SYNC_FLAGS
+ use ARB_sync SYNC_FENCE
+ use ARB_sync SYNC_GPU_COMMANDS_COMPLETE
+ use ARB_sync UNSIGNALED
+ use ARB_sync SIGNALED
+ use ARB_sync ALREADY_SIGNALED
+ use ARB_sync TIMEOUT_EXPIRED
+ use ARB_sync CONDITION_SATISFIED
+ use ARB_sync WAIT_FAILED
+ use ARB_sync TIMEOUT_IGNORED
+ use ARB_sync SYNC_FLUSH_COMMANDS_BIT
+ use ARB_sync TIMEOUT_IGNORED
+passthru: /* Reuse tokens from ARB_texture_multisample */
+ use ARB_texture_multisample SAMPLE_POSITION
+ use ARB_texture_multisample SAMPLE_MASK
+ use ARB_texture_multisample SAMPLE_MASK_VALUE
+ use ARB_texture_multisample MAX_SAMPLE_MASK_WORDS
+ use ARB_texture_multisample TEXTURE_2D_MULTISAMPLE
+ use ARB_texture_multisample PROXY_TEXTURE_2D_MULTISAMPLE
+ use ARB_texture_multisample TEXTURE_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample TEXTURE_BINDING_2D_MULTISAMPLE
+ use ARB_texture_multisample TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample TEXTURE_SAMPLES
+ use ARB_texture_multisample TEXTURE_FIXED_SAMPLE_LOCATIONS
+ use ARB_texture_multisample SAMPLER_2D_MULTISAMPLE
+ use ARB_texture_multisample INT_SAMPLER_2D_MULTISAMPLE
+ use ARB_texture_multisample UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE
+ use ARB_texture_multisample SAMPLER_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY
+ use ARB_texture_multisample MAX_COLOR_TEXTURE_SAMPLES
+ use ARB_texture_multisample MAX_DEPTH_TEXTURE_SAMPLES
+ use ARB_texture_multisample MAX_INTEGER_SAMPLES
+passthru: /* Don't need to reuse tokens from ARB_vertex_array_bgra since they're already in 1.2 core */
+
+###############################################################################
+#
+# OpenGL 3.3 enums
+#
+###############################################################################
+
+VERSION_3_3 enum:
+passthru: /* Reuse tokens from ARB_blend_func_extended */
+ use ARB_blend_func_extended SRC1_COLOR
+ use ARB_blend_func_extended ONE_MINUS_SRC1_COLOR
+ use ARB_blend_func_extended ONE_MINUS_SRC1_ALPHA
+ use ARB_blend_func_extended MAX_DUAL_SOURCE_DRAW_BUFFERS
+passthru: /* Would reuse tokens from ARB_explicit_attrib_location, but it has none */
+passthru: /* Reuse tokens from ARB_occlusion_query2 */
+ use ARB_occlusion_query2 ANY_SAMPLES_PASSED
+passthru: /* Reuse tokens from ARB_sampler_objects */
+ use ARB_sampler_objects SAMPLER_BINDING
+passthru: /* Would reuse tokens from ARB_shader_bit_encoding, but it has none */
+passthru: /* Reuse tokens from ARB_texture_rgb10_a2ui */
+ use ARB_texture_rgb10_a2ui RGB10_A2UI
+passthru: /* Reuse tokens from ARB_texture_swizzle */
+ use ARB_texture_swizzle TEXTURE_SWIZZLE_R
+ use ARB_texture_swizzle TEXTURE_SWIZZLE_G
+ use ARB_texture_swizzle TEXTURE_SWIZZLE_B
+ use ARB_texture_swizzle TEXTURE_SWIZZLE_A
+ use ARB_texture_swizzle TEXTURE_SWIZZLE_RGBA
+passthru: /* Reuse tokens from ARB_timer_query */
+ use ARB_timer_query TIME_ELAPSED
+ use ARB_timer_query TIMESTAMP
+passthru: /* Reuse tokens from ARB_vertex_type_2_10_10_10_rev */
+ use ARB_vertex_type_2_10_10_10_rev INT_2_10_10_10_REV
+
+###############################################################################
+#
+# OpenGL 4.0 enums
+#
+###############################################################################
+
+VERSION_4_0 enum:
+passthru: /* Reuse tokens from ARB_draw_indirect */
+ use ARB_draw_indirect DRAW_INDIRECT_BUFFER
+ use ARB_draw_indirect DRAW_INDIRECT_BUFFER_BINDING
+passthru: /* Reuse tokens from ARB_gpu_shader5 */
+ use ARB_gpu_shader5 GEOMETRY_SHADER_INVOCATIONS
+ use ARB_gpu_shader5 MAX_GEOMETRY_SHADER_INVOCATIONS
+ use ARB_gpu_shader5 MIN_FRAGMENT_INTERPOLATION_OFFSET
+ use ARB_gpu_shader5 MAX_FRAGMENT_INTERPOLATION_OFFSET
+ use ARB_gpu_shader5 FRAGMENT_INTERPOLATION_OFFSET_BITS
+ use ARB_gpu_shader5 MAX_VERTEX_STREAMS
+passthru: /* Reuse tokens from ARB_gpu_shader_fp64 */
+ use ARB_gpu_shader_fp64 DOUBLE_VEC2
+ use ARB_gpu_shader_fp64 DOUBLE_VEC3
+ use ARB_gpu_shader_fp64 DOUBLE_VEC4
+ use ARB_gpu_shader_fp64 DOUBLE_MAT2
+ use ARB_gpu_shader_fp64 DOUBLE_MAT3
+ use ARB_gpu_shader_fp64 DOUBLE_MAT4
+ use ARB_gpu_shader_fp64 DOUBLE_MAT2x3
+ use ARB_gpu_shader_fp64 DOUBLE_MAT2x4
+ use ARB_gpu_shader_fp64 DOUBLE_MAT3x2
+ use ARB_gpu_shader_fp64 DOUBLE_MAT3x4
+ use ARB_gpu_shader_fp64 DOUBLE_MAT4x2
+ use ARB_gpu_shader_fp64 DOUBLE_MAT4x3
+passthru: /* Reuse tokens from ARB_shader_subroutine */
+ use ARB_shader_subroutine ACTIVE_SUBROUTINES
+ use ARB_shader_subroutine ACTIVE_SUBROUTINE_UNIFORMS
+ use ARB_shader_subroutine ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS
+ use ARB_shader_subroutine ACTIVE_SUBROUTINE_MAX_LENGTH
+ use ARB_shader_subroutine ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH
+ use ARB_shader_subroutine MAX_SUBROUTINES
+ use ARB_shader_subroutine MAX_SUBROUTINE_UNIFORM_LOCATIONS
+ use ARB_shader_subroutine NUM_COMPATIBLE_SUBROUTINES
+ use ARB_shader_subroutine COMPATIBLE_SUBROUTINES
+passthru: /* Reuse tokens from ARB_tessellation_shader */
+ use ARB_tessellation_shader PATCHES
+ use ARB_tessellation_shader PATCH_VERTICES
+ use ARB_tessellation_shader PATCH_DEFAULT_INNER_LEVEL
+ use ARB_tessellation_shader PATCH_DEFAULT_OUTER_LEVEL
+ use ARB_tessellation_shader TESS_CONTROL_OUTPUT_VERTICES
+ use ARB_tessellation_shader TESS_GEN_MODE
+ use ARB_tessellation_shader TESS_GEN_SPACING
+ use ARB_tessellation_shader TESS_GEN_VERTEX_ORDER
+ use ARB_tessellation_shader TESS_GEN_POINT_MODE
+ use ARB_tessellation_shader ISOLINES
+ use ARB_tessellation_shader FRACTIONAL_ODD
+ use ARB_tessellation_shader FRACTIONAL_EVEN
+ use ARB_tessellation_shader MAX_PATCH_VERTICES
+ use ARB_tessellation_shader MAX_TESS_GEN_LEVEL
+ use ARB_tessellation_shader MAX_TESS_CONTROL_UNIFORM_COMPONENTS
+ use ARB_tessellation_shader MAX_TESS_EVALUATION_UNIFORM_COMPONENTS
+ use ARB_tessellation_shader MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS
+ use ARB_tessellation_shader MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS
+ use ARB_tessellation_shader MAX_TESS_CONTROL_OUTPUT_COMPONENTS
+ use ARB_tessellation_shader MAX_TESS_PATCH_COMPONENTS
+ use ARB_tessellation_shader MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS
+ use ARB_tessellation_shader MAX_TESS_EVALUATION_OUTPUT_COMPONENTS
+ use ARB_tessellation_shader MAX_TESS_CONTROL_UNIFORM_BLOCKS
+ use ARB_tessellation_shader MAX_TESS_EVALUATION_UNIFORM_BLOCKS
+ use ARB_tessellation_shader MAX_TESS_CONTROL_INPUT_COMPONENTS
+ use ARB_tessellation_shader MAX_TESS_EVALUATION_INPUT_COMPONENTS
+ use ARB_tessellation_shader MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS
+ use ARB_tessellation_shader MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS
+ use ARB_tessellation_shader UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER
+ use ARB_tessellation_shader UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER
+ use ARB_tessellation_shader TESS_EVALUATION_SHADER
+ use ARB_tessellation_shader TESS_CONTROL_SHADER
+passthru: /* Would reuse tokens from ARB_texture_buffer_object_rgb32, but it has none */
+passthru: /* Reuse tokens from ARB_transform_feedback2 */
+ use ARB_tessellation_shader TRANSFORM_FEEDBACK
+ use ARB_tessellation_shader TRANSFORM_FEEDBACK_BUFFER_PAUSED
+ use ARB_tessellation_shader TRANSFORM_FEEDBACK_BUFFER_ACTIVE
+ use ARB_tessellation_shader TRANSFORM_FEEDBACK_BINDING
+passthru: /* Reuse tokens from ARB_transform_feedback3 */
+ use ARB_tessellation_shader MAX_TRANSFORM_FEEDBACK_BUFFERS
+ use ARB_tessellation_shader MAX_VERTEX_STREAMS
+
+
+###############################################################################
+#
+# ARB extensions, in ARB extension order
+#
+###############################################################################
+
+###############################################################################
+
+# ARB Extension #1
+ARB_multitexture enum:
+ TEXTURE0_ARB = 0x84C0
+ TEXTURE1_ARB = 0x84C1
+ TEXTURE2_ARB = 0x84C2
+ TEXTURE3_ARB = 0x84C3
+ TEXTURE4_ARB = 0x84C4
+ TEXTURE5_ARB = 0x84C5
+ TEXTURE6_ARB = 0x84C6
+ TEXTURE7_ARB = 0x84C7
+ TEXTURE8_ARB = 0x84C8
+ TEXTURE9_ARB = 0x84C9
+ TEXTURE10_ARB = 0x84CA
+ TEXTURE11_ARB = 0x84CB
+ TEXTURE12_ARB = 0x84CC
+ TEXTURE13_ARB = 0x84CD
+ TEXTURE14_ARB = 0x84CE
+ TEXTURE15_ARB = 0x84CF
+ TEXTURE16_ARB = 0x84D0
+ TEXTURE17_ARB = 0x84D1
+ TEXTURE18_ARB = 0x84D2
+ TEXTURE19_ARB = 0x84D3
+ TEXTURE20_ARB = 0x84D4
+ TEXTURE21_ARB = 0x84D5
+ TEXTURE22_ARB = 0x84D6
+ TEXTURE23_ARB = 0x84D7
+ TEXTURE24_ARB = 0x84D8
+ TEXTURE25_ARB = 0x84D9
+ TEXTURE26_ARB = 0x84DA
+ TEXTURE27_ARB = 0x84DB
+ TEXTURE28_ARB = 0x84DC
+ TEXTURE29_ARB = 0x84DD
+ TEXTURE30_ARB = 0x84DE
+ TEXTURE31_ARB = 0x84DF
+ ACTIVE_TEXTURE_ARB = 0x84E0 # 1 I
+ CLIENT_ACTIVE_TEXTURE_ARB = 0x84E1 # 1 I
+ MAX_TEXTURE_UNITS_ARB = 0x84E2 # 1 I
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #2 - GLX_ARB_get_proc_address
+
+###############################################################################
+
+# ARB Extension #3
+ARB_transpose_matrix enum:
+ TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3 # 16 F
+ TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4 # 16 F
+ TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5 # 16 F
+ TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6 # 16 F
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #4 - WGL_ARB_buffer_region
+
+###############################################################################
+
+# ARB Extension #5
+ARB_multisample enum:
+ MULTISAMPLE_ARB = 0x809D
+ SAMPLE_ALPHA_TO_COVERAGE_ARB = 0x809E
+ SAMPLE_ALPHA_TO_ONE_ARB = 0x809F
+ SAMPLE_COVERAGE_ARB = 0x80A0
+ SAMPLE_BUFFERS_ARB = 0x80A8
+ SAMPLES_ARB = 0x80A9
+ SAMPLE_COVERAGE_VALUE_ARB = 0x80AA
+ SAMPLE_COVERAGE_INVERT_ARB = 0x80AB
+ MULTISAMPLE_BIT_ARB = 0x20000000
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #6
+ARB_texture_env_add enum:
+
+###############################################################################
+
+# ARB Extension #7
+ARB_texture_cube_map enum:
+ NORMAL_MAP_ARB = 0x8511
+ REFLECTION_MAP_ARB = 0x8512
+ TEXTURE_CUBE_MAP_ARB = 0x8513
+ TEXTURE_BINDING_CUBE_MAP_ARB = 0x8514
+ TEXTURE_CUBE_MAP_POSITIVE_X_ARB = 0x8515
+ TEXTURE_CUBE_MAP_NEGATIVE_X_ARB = 0x8516
+ TEXTURE_CUBE_MAP_POSITIVE_Y_ARB = 0x8517
+ TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB = 0x8518
+ TEXTURE_CUBE_MAP_POSITIVE_Z_ARB = 0x8519
+ TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB = 0x851A
+ PROXY_TEXTURE_CUBE_MAP_ARB = 0x851B
+ MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 0x851C
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #8 - WGL_ARB_extensions_string
+# ARB Extension #9 - WGL_ARB_pixel_format
+# ARB Extension #10 - WGL_ARB_make_current_read
+# ARB Extension #11 - WGL_ARB_pbuffer
+
+###############################################################################
+
+# ARB Extension #12
+ARB_texture_compression enum:
+ COMPRESSED_ALPHA_ARB = 0x84E9
+ COMPRESSED_LUMINANCE_ARB = 0x84EA
+ COMPRESSED_LUMINANCE_ALPHA_ARB = 0x84EB
+ COMPRESSED_INTENSITY_ARB = 0x84EC
+ COMPRESSED_RGB_ARB = 0x84ED
+ COMPRESSED_RGBA_ARB = 0x84EE
+ TEXTURE_COMPRESSION_HINT_ARB = 0x84EF
+ TEXTURE_COMPRESSED_IMAGE_SIZE_ARB = 0x86A0
+ TEXTURE_COMPRESSED_ARB = 0x86A1
+ NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A2
+ COMPRESSED_TEXTURE_FORMATS_ARB = 0x86A3
+
+###############################################################################
+
+# ARB Extension #13
+# Promoted from #36 SGIS_texture_border_clamp
+ARB_texture_border_clamp enum:
+ CLAMP_TO_BORDER_ARB = 0x812D
+
+###############################################################################
+
+# ARB Extension #14 - promoted from #54 EXT_point_parameters
+# Promoted from #54 {SGIS,EXT}_point_parameters
+ARB_point_parameters enum:
+ POINT_SIZE_MIN_ARB = 0x8126 # 1 F
+ POINT_SIZE_MAX_ARB = 0x8127 # 1 F
+ POINT_FADE_THRESHOLD_SIZE_ARB = 0x8128 # 1 F
+ POINT_DISTANCE_ATTENUATION_ARB = 0x8129 # 3 F
+
+###############################################################################
+
+# ARB Extension #15
+ARB_vertex_blend enum:
+ MAX_VERTEX_UNITS_ARB = 0x86A4
+ ACTIVE_VERTEX_UNITS_ARB = 0x86A5
+ WEIGHT_SUM_UNITY_ARB = 0x86A6
+ VERTEX_BLEND_ARB = 0x86A7
+ CURRENT_WEIGHT_ARB = 0x86A8
+ WEIGHT_ARRAY_TYPE_ARB = 0x86A9
+ WEIGHT_ARRAY_STRIDE_ARB = 0x86AA
+ WEIGHT_ARRAY_SIZE_ARB = 0x86AB
+ WEIGHT_ARRAY_POINTER_ARB = 0x86AC
+ WEIGHT_ARRAY_ARB = 0x86AD
+ MODELVIEW0_ARB = 0x1700
+ MODELVIEW1_ARB = 0x850A
+ MODELVIEW2_ARB = 0x8722
+ MODELVIEW3_ARB = 0x8723
+ MODELVIEW4_ARB = 0x8724
+ MODELVIEW5_ARB = 0x8725
+ MODELVIEW6_ARB = 0x8726
+ MODELVIEW7_ARB = 0x8727
+ MODELVIEW8_ARB = 0x8728
+ MODELVIEW9_ARB = 0x8729
+ MODELVIEW10_ARB = 0x872A
+ MODELVIEW11_ARB = 0x872B
+ MODELVIEW12_ARB = 0x872C
+ MODELVIEW13_ARB = 0x872D
+ MODELVIEW14_ARB = 0x872E
+ MODELVIEW15_ARB = 0x872F
+ MODELVIEW16_ARB = 0x8730
+ MODELVIEW17_ARB = 0x8731
+ MODELVIEW18_ARB = 0x8732
+ MODELVIEW19_ARB = 0x8733
+ MODELVIEW20_ARB = 0x8734
+ MODELVIEW21_ARB = 0x8735
+ MODELVIEW22_ARB = 0x8736
+ MODELVIEW23_ARB = 0x8737
+ MODELVIEW24_ARB = 0x8738
+ MODELVIEW25_ARB = 0x8739
+ MODELVIEW26_ARB = 0x873A
+ MODELVIEW27_ARB = 0x873B
+ MODELVIEW28_ARB = 0x873C
+ MODELVIEW29_ARB = 0x873D
+ MODELVIEW30_ARB = 0x873E
+ MODELVIEW31_ARB = 0x873F
+
+###############################################################################
+
+# ARB Extension #16
+ARB_matrix_palette enum:
+ MATRIX_PALETTE_ARB = 0x8840
+ MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x8841
+ MAX_PALETTE_MATRICES_ARB = 0x8842
+ CURRENT_PALETTE_MATRIX_ARB = 0x8843
+ MATRIX_INDEX_ARRAY_ARB = 0x8844
+ CURRENT_MATRIX_INDEX_ARB = 0x8845
+ MATRIX_INDEX_ARRAY_SIZE_ARB = 0x8846
+ MATRIX_INDEX_ARRAY_TYPE_ARB = 0x8847
+ MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x8848
+ MATRIX_INDEX_ARRAY_POINTER_ARB = 0x8849
+
+###############################################################################
+
+# ARB Extension #17
+# Shares enum values with EXT_texture_env_combine
+ARB_texture_env_combine enum:
+ COMBINE_ARB = 0x8570
+ COMBINE_RGB_ARB = 0x8571
+ COMBINE_ALPHA_ARB = 0x8572
+ SOURCE0_RGB_ARB = 0x8580
+ SOURCE1_RGB_ARB = 0x8581
+ SOURCE2_RGB_ARB = 0x8582
+ SOURCE0_ALPHA_ARB = 0x8588
+ SOURCE1_ALPHA_ARB = 0x8589
+ SOURCE2_ALPHA_ARB = 0x858A
+ OPERAND0_RGB_ARB = 0x8590
+ OPERAND1_RGB_ARB = 0x8591
+ OPERAND2_RGB_ARB = 0x8592
+ OPERAND0_ALPHA_ARB = 0x8598
+ OPERAND1_ALPHA_ARB = 0x8599
+ OPERAND2_ALPHA_ARB = 0x859A
+ RGB_SCALE_ARB = 0x8573
+ ADD_SIGNED_ARB = 0x8574
+ INTERPOLATE_ARB = 0x8575
+ SUBTRACT_ARB = 0x84E7
+ CONSTANT_ARB = 0x8576
+ PRIMARY_COLOR_ARB = 0x8577
+ PREVIOUS_ARB = 0x8578
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #18
+ARB_texture_env_crossbar enum:
+
+###############################################################################
+
+# ARB Extension #19
+# Promoted from #220 EXT_texture_env_dot3; enum values changed
+ARB_texture_env_dot3 enum:
+ DOT3_RGB_ARB = 0x86AE
+ DOT3_RGBA_ARB = 0x86AF
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #20 - WGL_ARB_render_texture
+
+###############################################################################
+
+# ARB Extension #21
+ARB_texture_mirrored_repeat enum:
+ MIRRORED_REPEAT_ARB = 0x8370
+
+###############################################################################
+
+# ARB Extension #22
+ARB_depth_texture enum:
+ DEPTH_COMPONENT16_ARB = 0x81A5
+ DEPTH_COMPONENT24_ARB = 0x81A6
+ DEPTH_COMPONENT32_ARB = 0x81A7
+ TEXTURE_DEPTH_SIZE_ARB = 0x884A
+ DEPTH_TEXTURE_MODE_ARB = 0x884B
+
+###############################################################################
+
+# ARB Extension #23
+ARB_shadow enum:
+ TEXTURE_COMPARE_MODE_ARB = 0x884C
+ TEXTURE_COMPARE_FUNC_ARB = 0x884D
+ COMPARE_R_TO_TEXTURE_ARB = 0x884E
+
+###############################################################################
+
+# ARB Extension #24
+ARB_shadow_ambient enum:
+ TEXTURE_COMPARE_FAIL_VALUE_ARB = 0x80BF
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #25
+ARB_window_pos enum:
+
+###############################################################################
+
+# ARB Extension #26
+# ARB_vertex_program enums are shared by ARB_fragment_program are so marked.
+# Unfortunately, PROGRAM_BINDING_ARB does accidentally reuse 0x8677 -
+# this was a spec editing typo that's now uncorrectable.
+ARB_vertex_program enum:
+ COLOR_SUM_ARB = 0x8458
+ VERTEX_PROGRAM_ARB = 0x8620
+ VERTEX_ATTRIB_ARRAY_ENABLED_ARB = 0x8622
+ VERTEX_ATTRIB_ARRAY_SIZE_ARB = 0x8623
+ VERTEX_ATTRIB_ARRAY_STRIDE_ARB = 0x8624
+ VERTEX_ATTRIB_ARRAY_TYPE_ARB = 0x8625
+ CURRENT_VERTEX_ATTRIB_ARB = 0x8626
+ PROGRAM_LENGTH_ARB = 0x8627 # shared
+ PROGRAM_STRING_ARB = 0x8628 # shared
+ MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E # shared
+ MAX_PROGRAM_MATRICES_ARB = 0x862F # shared
+ CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640 # shared
+ CURRENT_MATRIX_ARB = 0x8641 # shared
+ VERTEX_PROGRAM_POINT_SIZE_ARB = 0x8642
+ VERTEX_PROGRAM_TWO_SIDE_ARB = 0x8643
+ VERTEX_ATTRIB_ARRAY_POINTER_ARB = 0x8645
+ PROGRAM_ERROR_POSITION_ARB = 0x864B # shared
+ PROGRAM_BINDING_ARB = 0x8677 # shared
+ MAX_VERTEX_ATTRIBS_ARB = 0x8869
+ VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB = 0x886A
+ PROGRAM_ERROR_STRING_ARB = 0x8874 # shared
+ PROGRAM_FORMAT_ASCII_ARB = 0x8875 # shared
+ PROGRAM_FORMAT_ARB = 0x8876 # shared
+ PROGRAM_INSTRUCTIONS_ARB = 0x88A0 # shared
+ MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1 # shared
+ PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2 # shared
+ MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3 # shared
+ PROGRAM_TEMPORARIES_ARB = 0x88A4 # shared
+ MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5 # shared
+ PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6 # shared
+ MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7 # shared
+ PROGRAM_PARAMETERS_ARB = 0x88A8 # shared
+ MAX_PROGRAM_PARAMETERS_ARB = 0x88A9 # shared
+ PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA # shared
+ MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB # shared
+ PROGRAM_ATTRIBS_ARB = 0x88AC # shared
+ MAX_PROGRAM_ATTRIBS_ARB = 0x88AD # shared
+ PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE # shared
+ MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF # shared
+ PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B0 # shared
+ MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B1 # shared
+ PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B2 # shared
+ MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B3 # shared
+ MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4 # shared
+ MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5 # shared
+ PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6 # shared
+ TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7 # shared
+ MATRIX0_ARB = 0x88C0 # shared
+ MATRIX1_ARB = 0x88C1 # shared
+ MATRIX2_ARB = 0x88C2 # shared
+ MATRIX3_ARB = 0x88C3 # shared
+ MATRIX4_ARB = 0x88C4 # shared
+ MATRIX5_ARB = 0x88C5 # shared
+ MATRIX6_ARB = 0x88C6 # shared
+ MATRIX7_ARB = 0x88C7 # shared
+ MATRIX8_ARB = 0x88C8 # shared
+ MATRIX9_ARB = 0x88C9 # shared
+ MATRIX10_ARB = 0x88CA # shared
+ MATRIX11_ARB = 0x88CB # shared
+ MATRIX12_ARB = 0x88CC # shared
+ MATRIX13_ARB = 0x88CD # shared
+ MATRIX14_ARB = 0x88CE # shared
+ MATRIX15_ARB = 0x88CF # shared
+ MATRIX16_ARB = 0x88D0 # shared
+ MATRIX17_ARB = 0x88D1 # shared
+ MATRIX18_ARB = 0x88D2 # shared
+ MATRIX19_ARB = 0x88D3 # shared
+ MATRIX20_ARB = 0x88D4 # shared
+ MATRIX21_ARB = 0x88D5 # shared
+ MATRIX22_ARB = 0x88D6 # shared
+ MATRIX23_ARB = 0x88D7 # shared
+ MATRIX24_ARB = 0x88D8 # shared
+ MATRIX25_ARB = 0x88D9 # shared
+ MATRIX26_ARB = 0x88DA # shared
+ MATRIX27_ARB = 0x88DB # shared
+ MATRIX28_ARB = 0x88DC # shared
+ MATRIX29_ARB = 0x88DD # shared
+ MATRIX30_ARB = 0x88DE # shared
+ MATRIX31_ARB = 0x88DF # shared
+
+###############################################################################
+
+# ARB Extension #27
+# Some ARB_fragment_program enums are shared with ARB_vertex_program,
+# and are only included in that #define block, for now.
+ARB_fragment_program enum:
+# PROGRAM_LENGTH_ARB = 0x8627 # shared
+# PROGRAM_STRING_ARB = 0x8628 # shared
+# MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB = 0x862E # shared
+# MAX_PROGRAM_MATRICES_ARB = 0x862F # shared
+# CURRENT_MATRIX_STACK_DEPTH_ARB = 0x8640 # shared
+# CURRENT_MATRIX_ARB = 0x8641 # shared
+# PROGRAM_ERROR_POSITION_ARB = 0x864B # shared
+# PROGRAM_BINDING_ARB = 0x8677 # shared
+ FRAGMENT_PROGRAM_ARB = 0x8804
+ PROGRAM_ALU_INSTRUCTIONS_ARB = 0x8805
+ PROGRAM_TEX_INSTRUCTIONS_ARB = 0x8806
+ PROGRAM_TEX_INDIRECTIONS_ARB = 0x8807
+ PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x8808
+ PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x8809
+ PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x880A
+ MAX_PROGRAM_ALU_INSTRUCTIONS_ARB = 0x880B
+ MAX_PROGRAM_TEX_INSTRUCTIONS_ARB = 0x880C
+ MAX_PROGRAM_TEX_INDIRECTIONS_ARB = 0x880D
+ MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB = 0x880E
+ MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB = 0x880F
+ MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB = 0x8810
+ MAX_TEXTURE_COORDS_ARB = 0x8871
+ MAX_TEXTURE_IMAGE_UNITS_ARB = 0x8872
+# PROGRAM_ERROR_STRING_ARB = 0x8874 # shared
+# PROGRAM_FORMAT_ASCII_ARB = 0x8875 # shared
+# PROGRAM_FORMAT_ARB = 0x8876 # shared
+# PROGRAM_INSTRUCTIONS_ARB = 0x88A0 # shared
+# MAX_PROGRAM_INSTRUCTIONS_ARB = 0x88A1 # shared
+# PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A2 # shared
+# MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB = 0x88A3 # shared
+# PROGRAM_TEMPORARIES_ARB = 0x88A4 # shared
+# MAX_PROGRAM_TEMPORARIES_ARB = 0x88A5 # shared
+# PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A6 # shared
+# MAX_PROGRAM_NATIVE_TEMPORARIES_ARB = 0x88A7 # shared
+# PROGRAM_PARAMETERS_ARB = 0x88A8 # shared
+# MAX_PROGRAM_PARAMETERS_ARB = 0x88A9 # shared
+# PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AA # shared
+# MAX_PROGRAM_NATIVE_PARAMETERS_ARB = 0x88AB # shared
+# PROGRAM_ATTRIBS_ARB = 0x88AC # shared
+# MAX_PROGRAM_ATTRIBS_ARB = 0x88AD # shared
+# PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AE # shared
+# MAX_PROGRAM_NATIVE_ATTRIBS_ARB = 0x88AF # shared
+# PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B0 # shared
+# MAX_PROGRAM_ADDRESS_REGISTERS_ARB = 0x88B1 # shared
+# PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B2 # shared
+# MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB = 0x88B3 # shared
+# MAX_PROGRAM_LOCAL_PARAMETERS_ARB = 0x88B4 # shared
+# MAX_PROGRAM_ENV_PARAMETERS_ARB = 0x88B5 # shared
+# PROGRAM_UNDER_NATIVE_LIMITS_ARB = 0x88B6 # shared
+# TRANSPOSE_CURRENT_MATRIX_ARB = 0x88B7 # shared
+# MATRIX0_ARB = 0x88C0 # shared
+# MATRIX1_ARB = 0x88C1 # shared
+# MATRIX2_ARB = 0x88C2 # shared
+# MATRIX3_ARB = 0x88C3 # shared
+# MATRIX4_ARB = 0x88C4 # shared
+# MATRIX5_ARB = 0x88C5 # shared
+# MATRIX6_ARB = 0x88C6 # shared
+# MATRIX7_ARB = 0x88C7 # shared
+# MATRIX8_ARB = 0x88C8 # shared
+# MATRIX9_ARB = 0x88C9 # shared
+# MATRIX10_ARB = 0x88CA # shared
+# MATRIX11_ARB = 0x88CB # shared
+# MATRIX12_ARB = 0x88CC # shared
+# MATRIX13_ARB = 0x88CD # shared
+# MATRIX14_ARB = 0x88CE # shared
+# MATRIX15_ARB = 0x88CF # shared
+# MATRIX16_ARB = 0x88D0 # shared
+# MATRIX17_ARB = 0x88D1 # shared
+# MATRIX18_ARB = 0x88D2 # shared
+# MATRIX19_ARB = 0x88D3 # shared
+# MATRIX20_ARB = 0x88D4 # shared
+# MATRIX21_ARB = 0x88D5 # shared
+# MATRIX22_ARB = 0x88D6 # shared
+# MATRIX23_ARB = 0x88D7 # shared
+# MATRIX24_ARB = 0x88D8 # shared
+# MATRIX25_ARB = 0x88D9 # shared
+# MATRIX26_ARB = 0x88DA # shared
+# MATRIX27_ARB = 0x88DB # shared
+# MATRIX28_ARB = 0x88DC # shared
+# MATRIX29_ARB = 0x88DD # shared
+# MATRIX30_ARB = 0x88DE # shared
+# MATRIX31_ARB = 0x88DF # shared
+
+
+###############################################################################
+
+# ARB Extension #28
+ARB_vertex_buffer_object enum:
+ BUFFER_SIZE_ARB = 0x8764
+ BUFFER_USAGE_ARB = 0x8765
+ ARRAY_BUFFER_ARB = 0x8892
+ ELEMENT_ARRAY_BUFFER_ARB = 0x8893
+ ARRAY_BUFFER_BINDING_ARB = 0x8894
+ ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x8895
+ VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x8896
+ NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x8897
+ COLOR_ARRAY_BUFFER_BINDING_ARB = 0x8898
+ INDEX_ARRAY_BUFFER_BINDING_ARB = 0x8899
+ TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x889A
+ EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x889B
+ SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x889C
+ FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x889D
+ WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x889E
+ VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x889F
+ READ_ONLY_ARB = 0x88B8
+ WRITE_ONLY_ARB = 0x88B9
+ READ_WRITE_ARB = 0x88BA
+ BUFFER_ACCESS_ARB = 0x88BB
+ BUFFER_MAPPED_ARB = 0x88BC
+ BUFFER_MAP_POINTER_ARB = 0x88BD
+ STREAM_DRAW_ARB = 0x88E0
+ STREAM_READ_ARB = 0x88E1
+ STREAM_COPY_ARB = 0x88E2
+ STATIC_DRAW_ARB = 0x88E4
+ STATIC_READ_ARB = 0x88E5
+ STATIC_COPY_ARB = 0x88E6
+ DYNAMIC_DRAW_ARB = 0x88E8
+ DYNAMIC_READ_ARB = 0x88E9
+ DYNAMIC_COPY_ARB = 0x88EA
+
+###############################################################################
+
+# ARB Extension #29
+ARB_occlusion_query enum:
+ QUERY_COUNTER_BITS_ARB = 0x8864
+ CURRENT_QUERY_ARB = 0x8865
+ QUERY_RESULT_ARB = 0x8866
+ QUERY_RESULT_AVAILABLE_ARB = 0x8867
+ SAMPLES_PASSED_ARB = 0x8914
+
+###############################################################################
+
+# ARB Extension #30
+ARB_shader_objects enum:
+ PROGRAM_OBJECT_ARB = 0x8B40
+ SHADER_OBJECT_ARB = 0x8B48
+ OBJECT_TYPE_ARB = 0x8B4E
+ OBJECT_SUBTYPE_ARB = 0x8B4F
+ FLOAT_VEC2_ARB = 0x8B50
+ FLOAT_VEC3_ARB = 0x8B51
+ FLOAT_VEC4_ARB = 0x8B52
+ INT_VEC2_ARB = 0x8B53
+ INT_VEC3_ARB = 0x8B54
+ INT_VEC4_ARB = 0x8B55
+ BOOL_ARB = 0x8B56
+ BOOL_VEC2_ARB = 0x8B57
+ BOOL_VEC3_ARB = 0x8B58
+ BOOL_VEC4_ARB = 0x8B59
+ FLOAT_MAT2_ARB = 0x8B5A
+ FLOAT_MAT3_ARB = 0x8B5B
+ FLOAT_MAT4_ARB = 0x8B5C
+ SAMPLER_1D_ARB = 0x8B5D
+ SAMPLER_2D_ARB = 0x8B5E
+ SAMPLER_3D_ARB = 0x8B5F
+ SAMPLER_CUBE_ARB = 0x8B60
+ SAMPLER_1D_SHADOW_ARB = 0x8B61
+ SAMPLER_2D_SHADOW_ARB = 0x8B62
+ SAMPLER_2D_RECT_ARB = 0x8B63
+ SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64
+ OBJECT_DELETE_STATUS_ARB = 0x8B80
+ OBJECT_COMPILE_STATUS_ARB = 0x8B81
+ OBJECT_LINK_STATUS_ARB = 0x8B82
+ OBJECT_VALIDATE_STATUS_ARB = 0x8B83
+ OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84
+ OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85
+ OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86
+ OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87
+ OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88
+
+###############################################################################
+
+# ARB Extension #31
+# Additional enums are reused from ARB_vertex/fragment_program and ARB_shader_objects
+ARB_vertex_shader enum:
+ VERTEX_SHADER_ARB = 0x8B31
+ MAX_VERTEX_UNIFORM_COMPONENTS_ARB = 0x8B4A
+ MAX_VARYING_FLOATS_ARB = 0x8B4B
+ MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB = 0x8B4C
+ MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB = 0x8B4D
+ OBJECT_ACTIVE_ATTRIBUTES_ARB = 0x8B89
+ OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB = 0x8B8A
+
+###############################################################################
+
+# ARB Extension #32
+# Additional enums are reused from ARB_fragment_program and ARB_shader_objects
+ARB_fragment_shader enum:
+ FRAGMENT_SHADER_ARB = 0x8B30
+ MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB = 0x8B49
+ FRAGMENT_SHADER_DERIVATIVE_HINT_ARB = 0x8B8B
+
+###############################################################################
+
+# ARB Extension #33
+ARB_shading_language_100 enum:
+ SHADING_LANGUAGE_VERSION_ARB = 0x8B8C
+
+###############################################################################
+
+# ARB Extension #34
+# No new tokens
+ARB_texture_non_power_of_two enum:
+
+###############################################################################
+
+# ARB Extension #35
+ARB_point_sprite enum:
+ POINT_SPRITE_ARB = 0x8861
+ COORD_REPLACE_ARB = 0x8862
+
+###############################################################################
+
+# ARB Extension #36
+# No new tokens
+ARB_fragment_program_shadow enum:
+
+###############################################################################
+
+# ARB Extension #37
+ARB_draw_buffers enum:
+ MAX_DRAW_BUFFERS_ARB = 0x8824
+ DRAW_BUFFER0_ARB = 0x8825
+ DRAW_BUFFER1_ARB = 0x8826
+ DRAW_BUFFER2_ARB = 0x8827
+ DRAW_BUFFER3_ARB = 0x8828
+ DRAW_BUFFER4_ARB = 0x8829
+ DRAW_BUFFER5_ARB = 0x882A
+ DRAW_BUFFER6_ARB = 0x882B
+ DRAW_BUFFER7_ARB = 0x882C
+ DRAW_BUFFER8_ARB = 0x882D
+ DRAW_BUFFER9_ARB = 0x882E
+ DRAW_BUFFER10_ARB = 0x882F
+ DRAW_BUFFER11_ARB = 0x8830
+ DRAW_BUFFER12_ARB = 0x8831
+ DRAW_BUFFER13_ARB = 0x8832
+ DRAW_BUFFER14_ARB = 0x8833
+ DRAW_BUFFER15_ARB = 0x8834
+
+###############################################################################
+
+# ARB Extension #38
+ARB_texture_rectangle enum:
+ TEXTURE_RECTANGLE_ARB = 0x84F5
+ TEXTURE_BINDING_RECTANGLE_ARB = 0x84F6
+ PROXY_TEXTURE_RECTANGLE_ARB = 0x84F7
+ MAX_RECTANGLE_TEXTURE_SIZE_ARB = 0x84F8
+
+###############################################################################
+
+# ARB Extension #39
+ARB_color_buffer_float enum:
+ RGBA_FLOAT_MODE_ARB = 0x8820
+ CLAMP_VERTEX_COLOR_ARB = 0x891A
+ CLAMP_FRAGMENT_COLOR_ARB = 0x891B
+ CLAMP_READ_COLOR_ARB = 0x891C
+ FIXED_ONLY_ARB = 0x891D
+
+###############################################################################
+
+# ARB Extension #40
+ARB_half_float_pixel enum:
+ HALF_FLOAT_ARB = 0x140B
+
+###############################################################################
+
+# ARB Extension #41
+ARB_texture_float enum:
+ TEXTURE_RED_TYPE_ARB = 0x8C10
+ TEXTURE_GREEN_TYPE_ARB = 0x8C11
+ TEXTURE_BLUE_TYPE_ARB = 0x8C12
+ TEXTURE_ALPHA_TYPE_ARB = 0x8C13
+ TEXTURE_LUMINANCE_TYPE_ARB = 0x8C14
+ TEXTURE_INTENSITY_TYPE_ARB = 0x8C15
+ TEXTURE_DEPTH_TYPE_ARB = 0x8C16
+ UNSIGNED_NORMALIZED_ARB = 0x8C17
+ RGBA32F_ARB = 0x8814
+ RGB32F_ARB = 0x8815
+ ALPHA32F_ARB = 0x8816
+ INTENSITY32F_ARB = 0x8817
+ LUMINANCE32F_ARB = 0x8818
+ LUMINANCE_ALPHA32F_ARB = 0x8819
+ RGBA16F_ARB = 0x881A
+ RGB16F_ARB = 0x881B
+ ALPHA16F_ARB = 0x881C
+ INTENSITY16F_ARB = 0x881D
+ LUMINANCE16F_ARB = 0x881E
+ LUMINANCE_ALPHA16F_ARB = 0x881F
+
+###############################################################################
+
+# ARB Extension #42
+ARB_pixel_buffer_object enum:
+ PIXEL_PACK_BUFFER_ARB = 0x88EB
+ PIXEL_UNPACK_BUFFER_ARB = 0x88EC
+ PIXEL_PACK_BUFFER_BINDING_ARB = 0x88ED
+ PIXEL_UNPACK_BUFFER_BINDING_ARB = 0x88EF
+
+###############################################################################
+
+# ARB Extension #43
+ARB_depth_buffer_float enum:
+ DEPTH_COMPONENT32F = 0x8CAC
+ DEPTH32F_STENCIL8 = 0x8CAD
+ FLOAT_32_UNSIGNED_INT_24_8_REV = 0x8DAD
+
+###############################################################################
+
+# ARB Extension #44
+# No new tokens
+ARB_draw_instanced enum:
+
+###############################################################################
+
+# ARB Extension #45
+ARB_framebuffer_object enum:
+ INVALID_FRAMEBUFFER_OPERATION = 0x0506
+ FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 0x8210
+ FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 0x8211
+ FRAMEBUFFER_ATTACHMENT_RED_SIZE = 0x8212
+ FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 0x8213
+ FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 0x8214
+ FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 0x8215
+ FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 0x8216
+ FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 0x8217
+ FRAMEBUFFER_DEFAULT = 0x8218
+ FRAMEBUFFER_UNDEFINED = 0x8219
+ DEPTH_STENCIL_ATTACHMENT = 0x821A
+ MAX_RENDERBUFFER_SIZE = 0x84E8
+ DEPTH_STENCIL = 0x84F9
+ UNSIGNED_INT_24_8 = 0x84FA
+ DEPTH24_STENCIL8 = 0x88F0
+ TEXTURE_STENCIL_SIZE = 0x88F1
+ TEXTURE_RED_TYPE = 0x8C10
+ TEXTURE_GREEN_TYPE = 0x8C11
+ TEXTURE_BLUE_TYPE = 0x8C12
+ TEXTURE_ALPHA_TYPE = 0x8C13
+ TEXTURE_DEPTH_TYPE = 0x8C16
+ UNSIGNED_NORMALIZED = 0x8C17
+ FRAMEBUFFER_BINDING = 0x8CA6
+ DRAW_FRAMEBUFFER_BINDING = GL_FRAMEBUFFER_BINDING
+ RENDERBUFFER_BINDING = 0x8CA7
+ READ_FRAMEBUFFER = 0x8CA8
+ DRAW_FRAMEBUFFER = 0x8CA9
+ READ_FRAMEBUFFER_BINDING = 0x8CAA
+ RENDERBUFFER_SAMPLES = 0x8CAB
+ FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 0x8CD0
+ FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 0x8CD1
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 0x8CD2
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 0x8CD3
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 0x8CD4
+ FRAMEBUFFER_COMPLETE = 0x8CD5
+ FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 0x8CD6
+ FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 0x8CD7
+ FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = 0x8CDB
+ FRAMEBUFFER_INCOMPLETE_READ_BUFFER = 0x8CDC
+ FRAMEBUFFER_UNSUPPORTED = 0x8CDD
+ MAX_COLOR_ATTACHMENTS = 0x8CDF
+ COLOR_ATTACHMENT0 = 0x8CE0
+ COLOR_ATTACHMENT1 = 0x8CE1
+ COLOR_ATTACHMENT2 = 0x8CE2
+ COLOR_ATTACHMENT3 = 0x8CE3
+ COLOR_ATTACHMENT4 = 0x8CE4
+ COLOR_ATTACHMENT5 = 0x8CE5
+ COLOR_ATTACHMENT6 = 0x8CE6
+ COLOR_ATTACHMENT7 = 0x8CE7
+ COLOR_ATTACHMENT8 = 0x8CE8
+ COLOR_ATTACHMENT9 = 0x8CE9
+ COLOR_ATTACHMENT10 = 0x8CEA
+ COLOR_ATTACHMENT11 = 0x8CEB
+ COLOR_ATTACHMENT12 = 0x8CEC
+ COLOR_ATTACHMENT13 = 0x8CED
+ COLOR_ATTACHMENT14 = 0x8CEE
+ COLOR_ATTACHMENT15 = 0x8CEF
+ DEPTH_ATTACHMENT = 0x8D00
+ STENCIL_ATTACHMENT = 0x8D20
+ FRAMEBUFFER = 0x8D40
+ RENDERBUFFER = 0x8D41
+ RENDERBUFFER_WIDTH = 0x8D42
+ RENDERBUFFER_HEIGHT = 0x8D43
+ RENDERBUFFER_INTERNAL_FORMAT = 0x8D44
+ STENCIL_INDEX1 = 0x8D46
+ STENCIL_INDEX4 = 0x8D47
+ STENCIL_INDEX8 = 0x8D48
+ STENCIL_INDEX16 = 0x8D49
+ RENDERBUFFER_RED_SIZE = 0x8D50
+ RENDERBUFFER_GREEN_SIZE = 0x8D51
+ RENDERBUFFER_BLUE_SIZE = 0x8D52
+ RENDERBUFFER_ALPHA_SIZE = 0x8D53
+ RENDERBUFFER_DEPTH_SIZE = 0x8D54
+ RENDERBUFFER_STENCIL_SIZE = 0x8D55
+ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 0x8D56
+ MAX_SAMPLES = 0x8D57
+
+ARB_framebuffer_object_DEPRECATED enum:
+ INDEX = 0x8222
+ TEXTURE_LUMINANCE_TYPE = 0x8C14
+ TEXTURE_INTENSITY_TYPE = 0x8C15
+
+###############################################################################
+
+# ARB Extension #46
+ARB_framebuffer_sRGB enum:
+ FRAMEBUFFER_SRGB = 0x8DB9
+
+###############################################################################
+
+# ARB Extension #47
+ARB_geometry_shader4 enum:
+ LINES_ADJACENCY_ARB = 0x000A
+ LINE_STRIP_ADJACENCY_ARB = 0x000B
+ TRIANGLES_ADJACENCY_ARB = 0x000C
+ TRIANGLE_STRIP_ADJACENCY_ARB = 0x000D
+ PROGRAM_POINT_SIZE_ARB = 0x8642
+ MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_ARB = 0x8C29
+ FRAMEBUFFER_ATTACHMENT_LAYERED_ARB = 0x8DA7
+ FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_ARB = 0x8DA8
+ FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB = 0x8DA9
+ GEOMETRY_SHADER_ARB = 0x8DD9
+ GEOMETRY_VERTICES_OUT_ARB = 0x8DDA
+ GEOMETRY_INPUT_TYPE_ARB = 0x8DDB
+ GEOMETRY_OUTPUT_TYPE_ARB = 0x8DDC
+ MAX_GEOMETRY_VARYING_COMPONENTS_ARB = 0x8DDD
+ MAX_VERTEX_VARYING_COMPONENTS_ARB = 0x8DDE
+ MAX_GEOMETRY_UNIFORM_COMPONENTS_ARB = 0x8DDF
+ MAX_GEOMETRY_OUTPUT_VERTICES_ARB = 0x8DE0
+ MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_ARB = 0x8DE1
+ use VERSION_3_0 MAX_VARYING_COMPONENTS
+ use ARB_framebuffer_object FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER
+
+###############################################################################
+
+# ARB Extension #48
+ARB_half_float_vertex enum:
+ HALF_FLOAT = 0x140B
+
+###############################################################################
+
+# ARB Extension #49
+ARB_instanced_arrays enum:
+ VERTEX_ATTRIB_ARRAY_DIVISOR_ARB = 0x88FE
+
+###############################################################################
+
+# ARB Extension #50
+ARB_map_buffer_range enum:
+ MAP_READ_BIT = 0x0001
+ MAP_WRITE_BIT = 0x0002
+ MAP_INVALIDATE_RANGE_BIT = 0x0004
+ MAP_INVALIDATE_BUFFER_BIT = 0x0008
+ MAP_FLUSH_EXPLICIT_BIT = 0x0010
+ MAP_UNSYNCHRONIZED_BIT = 0x0020
+
+###############################################################################
+
+# ARB Extension #51
+ARB_texture_buffer_object enum:
+ TEXTURE_BUFFER_ARB = 0x8C2A
+ MAX_TEXTURE_BUFFER_SIZE_ARB = 0x8C2B
+ TEXTURE_BINDING_BUFFER_ARB = 0x8C2C
+ TEXTURE_BUFFER_DATA_STORE_BINDING_ARB = 0x8C2D
+ TEXTURE_BUFFER_FORMAT_ARB = 0x8C2E
+
+###############################################################################
+
+# ARB Extension #52
+ARB_texture_compression_rgtc enum:
+ COMPRESSED_RED_RGTC1 = 0x8DBB
+ COMPRESSED_SIGNED_RED_RGTC1 = 0x8DBC
+ COMPRESSED_RG_RGTC2 = 0x8DBD
+ COMPRESSED_SIGNED_RG_RGTC2 = 0x8DBE
+
+###############################################################################
+
+# ARB Extension #53
+ARB_texture_rg enum:
+ RG = 0x8227
+ RG_INTEGER = 0x8228
+ R8 = 0x8229
+ R16 = 0x822A
+ RG8 = 0x822B
+ RG16 = 0x822C
+ R16F = 0x822D
+ R32F = 0x822E
+ RG16F = 0x822F
+ RG32F = 0x8230
+ R8I = 0x8231
+ R8UI = 0x8232
+ R16I = 0x8233
+ R16UI = 0x8234
+ R32I = 0x8235
+ R32UI = 0x8236
+ RG8I = 0x8237
+ RG8UI = 0x8238
+ RG16I = 0x8239
+ RG16UI = 0x823A
+ RG32I = 0x823B
+ RG32UI = 0x823C
+
+###############################################################################
+
+# ARB Extension #54
+ARB_vertex_array_object enum:
+ VERTEX_ARRAY_BINDING = 0x85B5
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #55 - WGL_ARB_create_context
+# ARB Extension #56 - GLX_ARB_create_context
+
+###############################################################################
+
+# ARB Extension #57
+ARB_uniform_buffer_object enum:
+ UNIFORM_BUFFER = 0x8A11
+ UNIFORM_BUFFER_BINDING = 0x8A28
+ UNIFORM_BUFFER_START = 0x8A29
+ UNIFORM_BUFFER_SIZE = 0x8A2A
+ MAX_VERTEX_UNIFORM_BLOCKS = 0x8A2B
+ MAX_GEOMETRY_UNIFORM_BLOCKS = 0x8A2C
+ MAX_FRAGMENT_UNIFORM_BLOCKS = 0x8A2D
+ MAX_COMBINED_UNIFORM_BLOCKS = 0x8A2E
+ MAX_UNIFORM_BUFFER_BINDINGS = 0x8A2F
+ MAX_UNIFORM_BLOCK_SIZE = 0x8A30
+ MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 0x8A31
+ MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS = 0x8A32
+ MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 0x8A33
+ UNIFORM_BUFFER_OFFSET_ALIGNMENT = 0x8A34
+ ACTIVE_UNIFORM_BLOCK_MAX_NAME_LENGTH = 0x8A35
+ ACTIVE_UNIFORM_BLOCKS = 0x8A36
+ UNIFORM_TYPE = 0x8A37
+ UNIFORM_SIZE = 0x8A38
+ UNIFORM_NAME_LENGTH = 0x8A39
+ UNIFORM_BLOCK_INDEX = 0x8A3A
+ UNIFORM_OFFSET = 0x8A3B
+ UNIFORM_ARRAY_STRIDE = 0x8A3C
+ UNIFORM_MATRIX_STRIDE = 0x8A3D
+ UNIFORM_IS_ROW_MAJOR = 0x8A3E
+ UNIFORM_BLOCK_BINDING = 0x8A3F
+ UNIFORM_BLOCK_DATA_SIZE = 0x8A40
+ UNIFORM_BLOCK_NAME_LENGTH = 0x8A41
+ UNIFORM_BLOCK_ACTIVE_UNIFORMS = 0x8A42
+ UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 0x8A43
+ UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 0x8A44
+ UNIFORM_BLOCK_REFERENCED_BY_GEOMETRY_SHADER = 0x8A45
+ UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 0x8A46
+ INVALID_INDEX = 0xFFFFFFFFu
+
+###############################################################################
+
+# ARB Extension #58
+# No new tokens
+ARB_compatibility enum:
+passthru: /* ARB_compatibility just defines tokens from core 3.0 */
+
+###############################################################################
+
+# ARB Extension #59
+ARB_copy_buffer enum:
+ COPY_READ_BUFFER = 0x8F36
+ COPY_WRITE_BUFFER = 0x8F37
+
+###############################################################################
+
+# ARB Extension #60
+# No new tokens
+ARB_shader_texture_lod enum:
+
+###############################################################################
+
+# ARB Extension #61
+ARB_depth_clamp enum:
+ DEPTH_CLAMP = 0x864F
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #62
+ARB_draw_elements_base_vertex enum:
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #63
+ARB_fragment_coord_conventions enum:
+
+###############################################################################
+
+# ARB Extension #64
+ARB_provoking_vertex enum:
+ QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION = 0x8E4C
+ FIRST_VERTEX_CONVENTION = 0x8E4D
+ LAST_VERTEX_CONVENTION = 0x8E4E
+ PROVOKING_VERTEX = 0x8E4F
+
+###############################################################################
+
+# ARB Extension #65
+ARB_seamless_cube_map enum:
+ TEXTURE_CUBE_MAP_SEAMLESS = 0x884F
+
+###############################################################################
+
+# ARB Extension #66
+ARB_sync enum:
+ MAX_SERVER_WAIT_TIMEOUT = 0x9111
+ OBJECT_TYPE = 0x9112
+ SYNC_CONDITION = 0x9113
+ SYNC_STATUS = 0x9114
+ SYNC_FLAGS = 0x9115
+ SYNC_FENCE = 0x9116
+ SYNC_GPU_COMMANDS_COMPLETE = 0x9117
+ UNSIGNALED = 0x9118
+ SIGNALED = 0x9119
+ ALREADY_SIGNALED = 0x911A
+ TIMEOUT_EXPIRED = 0x911B
+ CONDITION_SATISFIED = 0x911C
+ WAIT_FAILED = 0x911D
+ SYNC_FLUSH_COMMANDS_BIT = 0x00000001
+ TIMEOUT_IGNORED = 0xFFFFFFFFFFFFFFFFull
+
+###############################################################################
+
+# ARB Extension #67
+ARB_texture_multisample enum:
+ SAMPLE_POSITION = 0x8E50
+ SAMPLE_MASK = 0x8E51
+ SAMPLE_MASK_VALUE = 0x8E52
+ MAX_SAMPLE_MASK_WORDS = 0x8E59
+ TEXTURE_2D_MULTISAMPLE = 0x9100
+ PROXY_TEXTURE_2D_MULTISAMPLE = 0x9101
+ TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9102
+ PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY = 0x9103
+ TEXTURE_BINDING_2D_MULTISAMPLE = 0x9104
+ TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY = 0x9105
+ TEXTURE_SAMPLES = 0x9106
+ TEXTURE_FIXED_SAMPLE_LOCATIONS = 0x9107
+ SAMPLER_2D_MULTISAMPLE = 0x9108
+ INT_SAMPLER_2D_MULTISAMPLE = 0x9109
+ UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE = 0x910A
+ SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910B
+ INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910C
+ UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY = 0x910D
+ MAX_COLOR_TEXTURE_SAMPLES = 0x910E
+ MAX_DEPTH_TEXTURE_SAMPLES = 0x910F
+ MAX_INTEGER_SAMPLES = 0x9110
+
+###############################################################################
+
+# ARB Extension #68
+ARB_vertex_array_bgra enum:
+ use VERSION_1_2 BGRA
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #69
+ARB_draw_buffers_blend enum:
+#@@@ Add ARB suffixes here & functions!
+
+###############################################################################
+
+# ARB Extension #70
+#@@@ Add ARB suffixes here & functions!
+ARB_sample_shading enum:
+ SAMPLE_SHADING = 0x8C36
+ MIN_SAMPLE_SHADING_VALUE = 0x8C37
+
+###############################################################################
+
+# ARB Extension #71
+#@@@ Add ARB suffixes here & functions!
+ARB_texture_cube_map_array enum:
+ TEXTURE_CUBE_MAP_ARRAY = 0x9009
+ TEXTURE_BINDING_CUBE_MAP_ARRAY = 0x900A
+ PROXY_TEXTURE_CUBE_MAP_ARRAY = 0x900B
+ SAMPLER_CUBE_MAP_ARRAY = 0x900C
+ SAMPLER_CUBE_MAP_ARRAY_SHADOW = 0x900D
+ INT_SAMPLER_CUBE_MAP_ARRAY = 0x900E
+ UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY = 0x900F
+
+###############################################################################
+
+# ARB Extension #72
+#@@@ Add ARB suffixes here & functions!
+ARB_texture_gather enum:
+ MIN_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5E
+ MAX_PROGRAM_TEXTURE_GATHER_OFFSET_ARB = 0x8E5F
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #73
+ARB_texture_query_lod enum:
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #74 - WGL_ARB_create_context_profile
+# ARB Extension #75 - GLX_ARB_create_context_profile
+
+###############################################################################
+
+# ARB Extension #76
+ARB_shading_language_include enum:
+ SHADER_INCLUDE_ARB = 0x8DAE
+ NAMED_STRING_LENGTH_ARB = 0x8DE9
+ NAMED_STRING_TYPE_ARB = 0x8DEA
+
+###############################################################################
+
+# ARB Extension #77
+ARB_texture_compression_bptc enum:
+ COMPRESSED_RGBA_BPTC_UNORM_ARB = 0x8E8C
+ COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB = 0x8E8D
+ COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB = 0x8E8E
+ COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_ARB = 0x8E8F
+
+###############################################################################
+
+# ARB Extension #78
+ARB_blend_func_extended enum:
+ SRC1_COLOR = 0x88F9
+ use VERSION_1_5_DEPRECATED SRC1_ALPHA
+ ONE_MINUS_SRC1_COLOR = 0x88FA
+ ONE_MINUS_SRC1_ALPHA = 0x88FB
+ MAX_DUAL_SOURCE_DRAW_BUFFERS = 0x88FC
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #79
+ARB_explicit_attrib_location enum:
+
+###############################################################################
+
+# ARB Extension #80
+ARB_occlusion_query2 enum:
+ ANY_SAMPLES_PASSED = 0x8C2F
+
+###############################################################################
+
+# ARB Extension #81
+ARB_sampler_objects enum:
+ SAMPLER_BINDING = 0x8919
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #82
+ARB_shader_bit_encoding enum:
+
+###############################################################################
+
+# ARB Extension #83
+ARB_texture_rgb10_a2ui enum:
+ RGB10_A2UI = 0x906F
+
+###############################################################################
+
+# ARB Extension #84
+ARB_texture_swizzle enum:
+ TEXTURE_SWIZZLE_R = 0x8E42
+ TEXTURE_SWIZZLE_G = 0x8E43
+ TEXTURE_SWIZZLE_B = 0x8E44
+ TEXTURE_SWIZZLE_A = 0x8E45
+ TEXTURE_SWIZZLE_RGBA = 0x8E46
+
+###############################################################################
+
+# ARB Extension #85
+ARB_timer_query enum:
+ TIME_ELAPSED = 0x88BF
+ TIMESTAMP = 0x8E28
+
+###############################################################################
+
+# ARB Extension #86
+ARB_vertex_type_2_10_10_10_rev enum:
+ use VERSION_1_2 UNSIGNED_INT_2_10_10_10_REV
+ INT_2_10_10_10_REV = 0x8D9F
+
+###############################################################################
+
+# ARB Extension #87
+ARB_draw_indirect enum:
+ DRAW_INDIRECT_BUFFER = 0x8F3F
+ DRAW_INDIRECT_BUFFER_BINDING = 0x8F43
+
+###############################################################################
+
+# ARB Extension #88
+ARB_gpu_shader5 enum:
+ GEOMETRY_SHADER_INVOCATIONS = 0x887F
+ MAX_GEOMETRY_SHADER_INVOCATIONS = 0x8E5A
+ MIN_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5B
+ MAX_FRAGMENT_INTERPOLATION_OFFSET = 0x8E5C
+ FRAGMENT_INTERPOLATION_OFFSET_BITS = 0x8E5D
+ MAX_VERTEX_STREAMS = 0x8E71
+
+###############################################################################
+
+# ARB Extension #89
+ARB_gpu_shader_fp64 enum:
+ use VERSION_1_1 DOUBLE
+ DOUBLE_VEC2 = 0x8FFC
+ DOUBLE_VEC3 = 0x8FFD
+ DOUBLE_VEC4 = 0x8FFE
+ DOUBLE_MAT2 = 0x8F46
+ DOUBLE_MAT3 = 0x8F47
+ DOUBLE_MAT4 = 0x8F48
+ DOUBLE_MAT2x3 = 0x8F49
+ DOUBLE_MAT2x4 = 0x8F4A
+ DOUBLE_MAT3x2 = 0x8F4B
+ DOUBLE_MAT3x4 = 0x8F4C
+ DOUBLE_MAT4x2 = 0x8F4D
+ DOUBLE_MAT4x3 = 0x8F4E
+
+###############################################################################
+
+# ARB Extension #90
+ARB_shader_subroutine enum:
+ ACTIVE_SUBROUTINES = 0x8DE5
+ ACTIVE_SUBROUTINE_UNIFORMS = 0x8DE6
+ ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS = 0x8E47
+ ACTIVE_SUBROUTINE_MAX_LENGTH = 0x8E48
+ ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH = 0x8E49
+ MAX_SUBROUTINES = 0x8DE7
+ MAX_SUBROUTINE_UNIFORM_LOCATIONS = 0x8DE8
+ NUM_COMPATIBLE_SUBROUTINES = 0x8E4A
+ COMPATIBLE_SUBROUTINES = 0x8E4B
+ use ARB_uniform_buffer_object UNIFORM_SIZE
+ use ARB_uniform_buffer_object UNIFORM_NAME_LENGTH
+
+###############################################################################
+
+# ARB Extension #91
+ARB_tessellation_shader enum:
+ PATCHES = 0x000E
+ PATCH_VERTICES = 0x8E72
+ PATCH_DEFAULT_INNER_LEVEL = 0x8E73
+ PATCH_DEFAULT_OUTER_LEVEL = 0x8E74
+ TESS_CONTROL_OUTPUT_VERTICES = 0x8E75
+ TESS_GEN_MODE = 0x8E76
+ TESS_GEN_SPACING = 0x8E77
+ TESS_GEN_VERTEX_ORDER = 0x8E78
+ TESS_GEN_POINT_MODE = 0x8E79
+ use VERSION_1_1 TRIANGLES
+ use VERSION_1_1 QUADS
+ ISOLINES = 0x8E7A
+ use VERSION_1_1 EQUAL
+ FRACTIONAL_ODD = 0x8E7B
+ FRACTIONAL_EVEN = 0x8E7C
+ use VERSION_1_1 CCW
+ use VERSION_1_1 CW
+ MAX_PATCH_VERTICES = 0x8E7D
+ MAX_TESS_GEN_LEVEL = 0x8E7E
+ MAX_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E7F
+ MAX_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E80
+ MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS = 0x8E81
+ MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS = 0x8E82
+ MAX_TESS_CONTROL_OUTPUT_COMPONENTS = 0x8E83
+ MAX_TESS_PATCH_COMPONENTS = 0x8E84
+ MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS = 0x8E85
+ MAX_TESS_EVALUATION_OUTPUT_COMPONENTS = 0x8E86
+ MAX_TESS_CONTROL_UNIFORM_BLOCKS = 0x8E89
+ MAX_TESS_EVALUATION_UNIFORM_BLOCKS = 0x8E8A
+ MAX_TESS_CONTROL_INPUT_COMPONENTS = 0x886C
+ MAX_TESS_EVALUATION_INPUT_COMPONENTS = 0x886D
+ MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS = 0x8E1E
+ MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS = 0x8E1F
+ UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER = 0x84F0
+ UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER = 0x84F1
+ TESS_EVALUATION_SHADER = 0x8E87
+ TESS_CONTROL_SHADER = 0x8E88
+
+###############################################################################
+
+# ARB Extension #92
+ARB_texture_buffer_object_rgb32 enum:
+ use VERSION_3_0 RGB32F
+ use VERSION_3_0 RGB32UI
+ use VERSION_3_0 RGB32I
+
+###############################################################################
+
+# ARB Extension #93
+ARB_transform_feedback2 enum:
+ TRANSFORM_FEEDBACK = 0x8E22
+ TRANSFORM_FEEDBACK_BUFFER_PAUSED = 0x8E23
+ TRANSFORM_FEEDBACK_BUFFER_ACTIVE = 0x8E24
+ TRANSFORM_FEEDBACK_BINDING = 0x8E25
+
+###############################################################################
+
+# ARB Extension #94
+ARB_transform_feedback3 enum:
+ MAX_TRANSFORM_FEEDBACK_BUFFERS = 0x8E70
+ MAX_VERTEX_STREAMS = 0x8E71
+
+
+###############################################################################
+#
+# non-ARB extensions follow, in registry order
+#
+###############################################################################
+
+###############################################################################
+
+# Extension #1
+EXT_abgr enum:
+ ABGR_EXT = 0x8000
+
+###############################################################################
+
+# Extension #2
+EXT_blend_color enum:
+ CONSTANT_COLOR_EXT = 0x8001
+ ONE_MINUS_CONSTANT_COLOR_EXT = 0x8002
+ CONSTANT_ALPHA_EXT = 0x8003
+ ONE_MINUS_CONSTANT_ALPHA_EXT = 0x8004
+ BLEND_COLOR_EXT = 0x8005 # 4 F
+
+###############################################################################
+
+# Extension #3
+EXT_polygon_offset enum:
+ POLYGON_OFFSET_EXT = 0x8037
+ POLYGON_OFFSET_FACTOR_EXT = 0x8038
+ POLYGON_OFFSET_BIAS_EXT = 0x8039 # 1 F
+
+###############################################################################
+
+# Extension #4
+EXT_texture enum:
+ ALPHA4_EXT = 0x803B
+ ALPHA8_EXT = 0x803C
+ ALPHA12_EXT = 0x803D
+ ALPHA16_EXT = 0x803E
+ LUMINANCE4_EXT = 0x803F
+ LUMINANCE8_EXT = 0x8040
+ LUMINANCE12_EXT = 0x8041
+ LUMINANCE16_EXT = 0x8042
+ LUMINANCE4_ALPHA4_EXT = 0x8043
+ LUMINANCE6_ALPHA2_EXT = 0x8044
+ LUMINANCE8_ALPHA8_EXT = 0x8045
+ LUMINANCE12_ALPHA4_EXT = 0x8046
+ LUMINANCE12_ALPHA12_EXT = 0x8047
+ LUMINANCE16_ALPHA16_EXT = 0x8048
+ INTENSITY_EXT = 0x8049
+ INTENSITY4_EXT = 0x804A
+ INTENSITY8_EXT = 0x804B
+ INTENSITY12_EXT = 0x804C
+ INTENSITY16_EXT = 0x804D
+ RGB2_EXT = 0x804E
+ RGB4_EXT = 0x804F
+ RGB5_EXT = 0x8050
+ RGB8_EXT = 0x8051
+ RGB10_EXT = 0x8052
+ RGB12_EXT = 0x8053
+ RGB16_EXT = 0x8054
+ RGBA2_EXT = 0x8055
+ RGBA4_EXT = 0x8056
+ RGB5_A1_EXT = 0x8057
+ RGBA8_EXT = 0x8058
+ RGB10_A2_EXT = 0x8059
+ RGBA12_EXT = 0x805A
+ RGBA16_EXT = 0x805B
+ TEXTURE_RED_SIZE_EXT = 0x805C
+ TEXTURE_GREEN_SIZE_EXT = 0x805D
+ TEXTURE_BLUE_SIZE_EXT = 0x805E
+ TEXTURE_ALPHA_SIZE_EXT = 0x805F
+ TEXTURE_LUMINANCE_SIZE_EXT = 0x8060
+ TEXTURE_INTENSITY_SIZE_EXT = 0x8061
+ REPLACE_EXT = 0x8062
+ PROXY_TEXTURE_1D_EXT = 0x8063
+ PROXY_TEXTURE_2D_EXT = 0x8064
+ TEXTURE_TOO_LARGE_EXT = 0x8065
+
+###############################################################################
+
+# Extension #5 - skipped
+
+###############################################################################
+
+# Extension #6
+EXT_texture3D enum:
+ PACK_SKIP_IMAGES_EXT = 0x806B # 1 I
+ PACK_IMAGE_HEIGHT_EXT = 0x806C # 1 F
+ UNPACK_SKIP_IMAGES_EXT = 0x806D # 1 I
+ UNPACK_IMAGE_HEIGHT_EXT = 0x806E # 1 F
+ TEXTURE_3D_EXT = 0x806F # 1 I
+ PROXY_TEXTURE_3D_EXT = 0x8070
+ TEXTURE_DEPTH_EXT = 0x8071
+ TEXTURE_WRAP_R_EXT = 0x8072
+ MAX_3D_TEXTURE_SIZE_EXT = 0x8073 # 1 I
+
+###############################################################################
+
+# Extension #7
+SGIS_texture_filter4 enum:
+ FILTER4_SGIS = 0x8146
+ TEXTURE_FILTER4_SIZE_SGIS = 0x8147
+
+###############################################################################
+
+# Extension #8 - skipped
+
+###############################################################################
+
+# No new tokens
+# Extension #9
+EXT_subtexture enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #10
+EXT_copy_texture enum:
+
+###############################################################################
+
+# Extension #11
+EXT_histogram enum:
+ HISTOGRAM_EXT = 0x8024 # 1 I
+ PROXY_HISTOGRAM_EXT = 0x8025
+ HISTOGRAM_WIDTH_EXT = 0x8026
+ HISTOGRAM_FORMAT_EXT = 0x8027
+ HISTOGRAM_RED_SIZE_EXT = 0x8028
+ HISTOGRAM_GREEN_SIZE_EXT = 0x8029
+ HISTOGRAM_BLUE_SIZE_EXT = 0x802A
+ HISTOGRAM_ALPHA_SIZE_EXT = 0x802B
+ HISTOGRAM_LUMINANCE_SIZE_EXT = 0x802C
+ HISTOGRAM_SINK_EXT = 0x802D
+ MINMAX_EXT = 0x802E # 1 I
+ MINMAX_FORMAT_EXT = 0x802F
+ MINMAX_SINK_EXT = 0x8030
+ TABLE_TOO_LARGE_EXT = 0x8031
+
+###############################################################################
+
+# Extension #12
+EXT_convolution enum:
+ CONVOLUTION_1D_EXT = 0x8010 # 1 I
+ CONVOLUTION_2D_EXT = 0x8011 # 1 I
+ SEPARABLE_2D_EXT = 0x8012 # 1 I
+ CONVOLUTION_BORDER_MODE_EXT = 0x8013
+ CONVOLUTION_FILTER_SCALE_EXT = 0x8014
+ CONVOLUTION_FILTER_BIAS_EXT = 0x8015
+ REDUCE_EXT = 0x8016
+ CONVOLUTION_FORMAT_EXT = 0x8017
+ CONVOLUTION_WIDTH_EXT = 0x8018
+ CONVOLUTION_HEIGHT_EXT = 0x8019
+ MAX_CONVOLUTION_WIDTH_EXT = 0x801A
+ MAX_CONVOLUTION_HEIGHT_EXT = 0x801B
+ POST_CONVOLUTION_RED_SCALE_EXT = 0x801C # 1 F
+ POST_CONVOLUTION_GREEN_SCALE_EXT = 0x801D # 1 F
+ POST_CONVOLUTION_BLUE_SCALE_EXT = 0x801E # 1 F
+ POST_CONVOLUTION_ALPHA_SCALE_EXT = 0x801F # 1 F
+ POST_CONVOLUTION_RED_BIAS_EXT = 0x8020 # 1 F
+ POST_CONVOLUTION_GREEN_BIAS_EXT = 0x8021 # 1 F
+ POST_CONVOLUTION_BLUE_BIAS_EXT = 0x8022 # 1 F
+ POST_CONVOLUTION_ALPHA_BIAS_EXT = 0x8023 # 1 F
+
+###############################################################################
+
+# Extension #13
+SGI_color_matrix enum:
+ COLOR_MATRIX_SGI = 0x80B1 # 16 F
+ COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B2 # 1 I
+ MAX_COLOR_MATRIX_STACK_DEPTH_SGI = 0x80B3 # 1 I
+ POST_COLOR_MATRIX_RED_SCALE_SGI = 0x80B4 # 1 F
+ POST_COLOR_MATRIX_GREEN_SCALE_SGI = 0x80B5 # 1 F
+ POST_COLOR_MATRIX_BLUE_SCALE_SGI = 0x80B6 # 1 F
+ POST_COLOR_MATRIX_ALPHA_SCALE_SGI = 0x80B7 # 1 F
+ POST_COLOR_MATRIX_RED_BIAS_SGI = 0x80B8 # 1 F
+ POST_COLOR_MATRIX_GREEN_BIAS_SGI = 0x80B9 # 1 F
+ POST_COLOR_MATRIX_BLUE_BIAS_SGI = 0x80BA # 1 F
+ POST_COLOR_MATRIX_ALPHA_BIAS_SGI = 0x80BB # 1 F
+
+###############################################################################
+
+# Extension #14
+SGI_color_table enum:
+ COLOR_TABLE_SGI = 0x80D0 # 1 I
+ POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D1 # 1 I
+ POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D2 # 1 I
+ PROXY_COLOR_TABLE_SGI = 0x80D3
+ PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI = 0x80D4
+ PROXY_POST_COLOR_MATRIX_COLOR_TABLE_SGI = 0x80D5
+ COLOR_TABLE_SCALE_SGI = 0x80D6
+ COLOR_TABLE_BIAS_SGI = 0x80D7
+ COLOR_TABLE_FORMAT_SGI = 0x80D8
+ COLOR_TABLE_WIDTH_SGI = 0x80D9
+ COLOR_TABLE_RED_SIZE_SGI = 0x80DA
+ COLOR_TABLE_GREEN_SIZE_SGI = 0x80DB
+ COLOR_TABLE_BLUE_SIZE_SGI = 0x80DC
+ COLOR_TABLE_ALPHA_SIZE_SGI = 0x80DD
+ COLOR_TABLE_LUMINANCE_SIZE_SGI = 0x80DE
+ COLOR_TABLE_INTENSITY_SIZE_SGI = 0x80DF
+
+###############################################################################
+
+# Extension #15
+SGIS_pixel_texture enum:
+ PIXEL_TEXTURE_SGIS = 0x8353 # 1 I
+ PIXEL_FRAGMENT_RGB_SOURCE_SGIS = 0x8354 # 1 I
+ PIXEL_FRAGMENT_ALPHA_SOURCE_SGIS = 0x8355 # 1 I
+ PIXEL_GROUP_COLOR_SGIS = 0x8356 # 1 I
+
+###############################################################################
+
+# Extension #15a
+SGIX_pixel_texture enum:
+ PIXEL_TEX_GEN_SGIX = 0x8139 # 1 I
+ PIXEL_TEX_GEN_MODE_SGIX = 0x832B # 1 I
+
+###############################################################################
+
+# Extension #16
+SGIS_texture4D enum:
+ PACK_SKIP_VOLUMES_SGIS = 0x8130 # 1 I
+ PACK_IMAGE_DEPTH_SGIS = 0x8131 # 1 I
+ UNPACK_SKIP_VOLUMES_SGIS = 0x8132 # 1 I
+ UNPACK_IMAGE_DEPTH_SGIS = 0x8133 # 1 I
+ TEXTURE_4D_SGIS = 0x8134 # 1 I
+ PROXY_TEXTURE_4D_SGIS = 0x8135
+ TEXTURE_4DSIZE_SGIS = 0x8136
+ TEXTURE_WRAP_Q_SGIS = 0x8137
+ MAX_4D_TEXTURE_SIZE_SGIS = 0x8138 # 1 I
+ TEXTURE_4D_BINDING_SGIS = 0x814F # 1 I
+
+###############################################################################
+
+# Extension #17
+SGI_texture_color_table enum:
+ TEXTURE_COLOR_TABLE_SGI = 0x80BC # 1 I
+ PROXY_TEXTURE_COLOR_TABLE_SGI = 0x80BD
+
+###############################################################################
+
+# Extension #18
+EXT_cmyka enum:
+ CMYK_EXT = 0x800C
+ CMYKA_EXT = 0x800D
+ PACK_CMYK_HINT_EXT = 0x800E # 1 I
+ UNPACK_CMYK_HINT_EXT = 0x800F # 1 I
+
+###############################################################################
+
+# Extension #19 - skipped
+
+###############################################################################
+
+# Extension #20
+EXT_texture_object enum:
+ TEXTURE_PRIORITY_EXT = 0x8066
+ TEXTURE_RESIDENT_EXT = 0x8067
+ TEXTURE_1D_BINDING_EXT = 0x8068
+ TEXTURE_2D_BINDING_EXT = 0x8069
+ TEXTURE_3D_BINDING_EXT = 0x806A # 1 I
+
+###############################################################################
+
+# Extension #21
+SGIS_detail_texture enum:
+ DETAIL_TEXTURE_2D_SGIS = 0x8095
+ DETAIL_TEXTURE_2D_BINDING_SGIS = 0x8096 # 1 I
+ LINEAR_DETAIL_SGIS = 0x8097
+ LINEAR_DETAIL_ALPHA_SGIS = 0x8098
+ LINEAR_DETAIL_COLOR_SGIS = 0x8099
+ DETAIL_TEXTURE_LEVEL_SGIS = 0x809A
+ DETAIL_TEXTURE_MODE_SGIS = 0x809B
+ DETAIL_TEXTURE_FUNC_POINTS_SGIS = 0x809C
+
+###############################################################################
+
+# Extension #22
+SGIS_sharpen_texture enum:
+ LINEAR_SHARPEN_SGIS = 0x80AD
+ LINEAR_SHARPEN_ALPHA_SGIS = 0x80AE
+ LINEAR_SHARPEN_COLOR_SGIS = 0x80AF
+ SHARPEN_TEXTURE_FUNC_POINTS_SGIS = 0x80B0
+
+###############################################################################
+
+# Extension #23
+EXT_packed_pixels enum:
+ UNSIGNED_BYTE_3_3_2_EXT = 0x8032
+ UNSIGNED_SHORT_4_4_4_4_EXT = 0x8033
+ UNSIGNED_SHORT_5_5_5_1_EXT = 0x8034
+ UNSIGNED_INT_8_8_8_8_EXT = 0x8035
+ UNSIGNED_INT_10_10_10_2_EXT = 0x8036
+
+###############################################################################
+
+# Extension #24
+SGIS_texture_lod enum:
+ TEXTURE_MIN_LOD_SGIS = 0x813A
+ TEXTURE_MAX_LOD_SGIS = 0x813B
+ TEXTURE_BASE_LEVEL_SGIS = 0x813C
+ TEXTURE_MAX_LEVEL_SGIS = 0x813D
+
+###############################################################################
+
+# Extension #25
+SGIS_multisample enum:
+ MULTISAMPLE_SGIS = 0x809D # 1 I
+ SAMPLE_ALPHA_TO_MASK_SGIS = 0x809E # 1 I
+ SAMPLE_ALPHA_TO_ONE_SGIS = 0x809F # 1 I
+ SAMPLE_MASK_SGIS = 0x80A0 # 1 I
+ 1PASS_SGIS = 0x80A1
+ 2PASS_0_SGIS = 0x80A2
+ 2PASS_1_SGIS = 0x80A3
+ 4PASS_0_SGIS = 0x80A4
+ 4PASS_1_SGIS = 0x80A5
+ 4PASS_2_SGIS = 0x80A6
+ 4PASS_3_SGIS = 0x80A7
+ SAMPLE_BUFFERS_SGIS = 0x80A8 # 1 I
+ SAMPLES_SGIS = 0x80A9 # 1 I
+ SAMPLE_MASK_VALUE_SGIS = 0x80AA # 1 F
+ SAMPLE_MASK_INVERT_SGIS = 0x80AB # 1 I
+ SAMPLE_PATTERN_SGIS = 0x80AC # 1 I
+
+###############################################################################
+
+# Extension #26 - no specification?
+# SGIS_premultiply_blend enum:
+
+##############################################################################
+
+# Extension #27
+# Diamond ships an otherwise identical IBM_rescale_normal extension;
+# Dan Brokenshire says this is deprecated and should not be advertised.
+EXT_rescale_normal enum:
+ RESCALE_NORMAL_EXT = 0x803A # 1 I
+
+###############################################################################
+
+# Extension #28 - GLX_EXT_visual_info
+
+###############################################################################
+
+# Extension #29 - skipped
+
+###############################################################################
+
+# Extension #30
+EXT_vertex_array enum:
+ VERTEX_ARRAY_EXT = 0x8074
+ NORMAL_ARRAY_EXT = 0x8075
+ COLOR_ARRAY_EXT = 0x8076
+ INDEX_ARRAY_EXT = 0x8077
+ TEXTURE_COORD_ARRAY_EXT = 0x8078
+ EDGE_FLAG_ARRAY_EXT = 0x8079
+ VERTEX_ARRAY_SIZE_EXT = 0x807A
+ VERTEX_ARRAY_TYPE_EXT = 0x807B
+ VERTEX_ARRAY_STRIDE_EXT = 0x807C
+ VERTEX_ARRAY_COUNT_EXT = 0x807D # 1 I
+ NORMAL_ARRAY_TYPE_EXT = 0x807E
+ NORMAL_ARRAY_STRIDE_EXT = 0x807F
+ NORMAL_ARRAY_COUNT_EXT = 0x8080 # 1 I
+ COLOR_ARRAY_SIZE_EXT = 0x8081
+ COLOR_ARRAY_TYPE_EXT = 0x8082
+ COLOR_ARRAY_STRIDE_EXT = 0x8083
+ COLOR_ARRAY_COUNT_EXT = 0x8084 # 1 I
+ INDEX_ARRAY_TYPE_EXT = 0x8085
+ INDEX_ARRAY_STRIDE_EXT = 0x8086
+ INDEX_ARRAY_COUNT_EXT = 0x8087 # 1 I
+ TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088
+ TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089
+ TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A
+ TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B # 1 I
+ EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C
+ EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D # 1 I
+ VERTEX_ARRAY_POINTER_EXT = 0x808E
+ NORMAL_ARRAY_POINTER_EXT = 0x808F
+ COLOR_ARRAY_POINTER_EXT = 0x8090
+ INDEX_ARRAY_POINTER_EXT = 0x8091
+ TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092
+ EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093
+
+###############################################################################
+
+# Extension #31
+EXT_misc_attribute enum:
+# MISC_BIT = 0x????
+
+###############################################################################
+
+# Extension #32
+SGIS_generate_mipmap enum:
+ GENERATE_MIPMAP_SGIS = 0x8191
+ GENERATE_MIPMAP_HINT_SGIS = 0x8192 # 1 I
+
+###############################################################################
+
+# Extension #33
+SGIX_clipmap enum:
+ LINEAR_CLIPMAP_LINEAR_SGIX = 0x8170
+ TEXTURE_CLIPMAP_CENTER_SGIX = 0x8171
+ TEXTURE_CLIPMAP_FRAME_SGIX = 0x8172
+ TEXTURE_CLIPMAP_OFFSET_SGIX = 0x8173
+ TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8174
+ TEXTURE_CLIPMAP_LOD_OFFSET_SGIX = 0x8175
+ TEXTURE_CLIPMAP_DEPTH_SGIX = 0x8176
+ MAX_CLIPMAP_DEPTH_SGIX = 0x8177 # 1 I
+ MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX = 0x8178 # 1 I
+ NEAREST_CLIPMAP_NEAREST_SGIX = 0x844D
+ NEAREST_CLIPMAP_LINEAR_SGIX = 0x844E
+ LINEAR_CLIPMAP_NEAREST_SGIX = 0x844F
+
+###############################################################################
+
+# Extension #34
+SGIX_shadow enum:
+ TEXTURE_COMPARE_SGIX = 0x819A
+ TEXTURE_COMPARE_OPERATOR_SGIX = 0x819B
+ TEXTURE_LEQUAL_R_SGIX = 0x819C
+ TEXTURE_GEQUAL_R_SGIX = 0x819D
+
+###############################################################################
+
+# Extension #35
+SGIS_texture_edge_clamp enum:
+ CLAMP_TO_EDGE_SGIS = 0x812F
+
+###############################################################################
+
+# Extension #36
+# Promoted to ARB_texture_border_clamp
+SGIS_texture_border_clamp enum:
+ CLAMP_TO_BORDER_SGIS = 0x812D
+
+###############################################################################
+
+# Extension #37
+EXT_blend_minmax enum:
+ FUNC_ADD_EXT = 0x8006
+ MIN_EXT = 0x8007
+ MAX_EXT = 0x8008
+ BLEND_EQUATION_EXT = 0x8009 # 1 I
+
+###############################################################################
+
+# Extension #38
+EXT_blend_subtract enum:
+ FUNC_SUBTRACT_EXT = 0x800A
+ FUNC_REVERSE_SUBTRACT_EXT = 0x800B
+
+###############################################################################
+
+# No new tokens
+# Extension #39
+EXT_blend_logic_op enum:
+
+###############################################################################
+
+# Extension #40 - GLX_SGI_swap_control
+# Extension #41 - GLX_SGI_video_sync
+# Extension #42 - GLX_SGI_make_current_read
+# Extension #43 - GLX_SGIX_video_source
+# Extension #44 - GLX_EXT_visual_rating
+
+###############################################################################
+
+# Extension #45
+SGIX_interlace enum:
+ INTERLACE_SGIX = 0x8094 # 1 I
+
+###############################################################################
+
+# Extension #46
+SGIX_pixel_tiles enum:
+ PIXEL_TILE_BEST_ALIGNMENT_SGIX = 0x813E # 1 I
+ PIXEL_TILE_CACHE_INCREMENT_SGIX = 0x813F # 1 I
+ PIXEL_TILE_WIDTH_SGIX = 0x8140 # 1 I
+ PIXEL_TILE_HEIGHT_SGIX = 0x8141 # 1 I
+ PIXEL_TILE_GRID_WIDTH_SGIX = 0x8142 # 1 I
+ PIXEL_TILE_GRID_HEIGHT_SGIX = 0x8143 # 1 I
+ PIXEL_TILE_GRID_DEPTH_SGIX = 0x8144 # 1 I
+ PIXEL_TILE_CACHE_SIZE_SGIX = 0x8145 # 1 I
+
+###############################################################################
+
+# Extension #47 - GLX_EXT_import_context
+
+###############################################################################
+
+# Extension #48 - skipped
+
+###############################################################################
+
+# Extension #49 - GLX_SGIX_fbconfig
+# Extension #50 - GLX_SGIX_pbuffer
+
+###############################################################################
+
+# Extension #51
+SGIS_texture_select enum:
+ DUAL_ALPHA4_SGIS = 0x8110
+ DUAL_ALPHA8_SGIS = 0x8111
+ DUAL_ALPHA12_SGIS = 0x8112
+ DUAL_ALPHA16_SGIS = 0x8113
+ DUAL_LUMINANCE4_SGIS = 0x8114
+ DUAL_LUMINANCE8_SGIS = 0x8115
+ DUAL_LUMINANCE12_SGIS = 0x8116
+ DUAL_LUMINANCE16_SGIS = 0x8117
+ DUAL_INTENSITY4_SGIS = 0x8118
+ DUAL_INTENSITY8_SGIS = 0x8119
+ DUAL_INTENSITY12_SGIS = 0x811A
+ DUAL_INTENSITY16_SGIS = 0x811B
+ DUAL_LUMINANCE_ALPHA4_SGIS = 0x811C
+ DUAL_LUMINANCE_ALPHA8_SGIS = 0x811D
+ QUAD_ALPHA4_SGIS = 0x811E
+ QUAD_ALPHA8_SGIS = 0x811F
+ QUAD_LUMINANCE4_SGIS = 0x8120
+ QUAD_LUMINANCE8_SGIS = 0x8121
+ QUAD_INTENSITY4_SGIS = 0x8122
+ QUAD_INTENSITY8_SGIS = 0x8123
+ DUAL_TEXTURE_SELECT_SGIS = 0x8124
+ QUAD_TEXTURE_SELECT_SGIS = 0x8125
+
+###############################################################################
+
+# Extension #52
+SGIX_sprite enum:
+ SPRITE_SGIX = 0x8148 # 1 I
+ SPRITE_MODE_SGIX = 0x8149 # 1 I
+ SPRITE_AXIS_SGIX = 0x814A # 3 F
+ SPRITE_TRANSLATION_SGIX = 0x814B # 3 F
+ SPRITE_AXIAL_SGIX = 0x814C
+ SPRITE_OBJECT_ALIGNED_SGIX = 0x814D
+ SPRITE_EYE_ALIGNED_SGIX = 0x814E
+
+###############################################################################
+
+# Extension #53
+SGIX_texture_multi_buffer enum:
+ TEXTURE_MULTI_BUFFER_HINT_SGIX = 0x812E
+
+###############################################################################
+
+# Extension #54
+# EXT form promoted from SGIS form; both are included
+EXT_point_parameters enum:
+ POINT_SIZE_MIN_EXT = 0x8126 # 1 F
+ POINT_SIZE_MAX_EXT = 0x8127 # 1 F
+ POINT_FADE_THRESHOLD_SIZE_EXT = 0x8128 # 1 F
+ DISTANCE_ATTENUATION_EXT = 0x8129 # 3 F
+
+SGIS_point_parameters enum:
+ POINT_SIZE_MIN_SGIS = 0x8126 # 1 F
+ POINT_SIZE_MAX_SGIS = 0x8127 # 1 F
+ POINT_FADE_THRESHOLD_SIZE_SGIS = 0x8128 # 1 F
+ DISTANCE_ATTENUATION_SGIS = 0x8129 # 3 F
+
+###############################################################################
+
+# Extension #55
+SGIX_instruments enum:
+ INSTRUMENT_BUFFER_POINTER_SGIX = 0x8180
+ INSTRUMENT_MEASUREMENTS_SGIX = 0x8181 # 1 I
+
+###############################################################################
+
+# Extension #56
+SGIX_texture_scale_bias enum:
+ POST_TEXTURE_FILTER_BIAS_SGIX = 0x8179
+ POST_TEXTURE_FILTER_SCALE_SGIX = 0x817A
+ POST_TEXTURE_FILTER_BIAS_RANGE_SGIX = 0x817B # 2 F
+ POST_TEXTURE_FILTER_SCALE_RANGE_SGIX = 0x817C # 2 F
+
+###############################################################################
+
+# Extension #57
+SGIX_framezoom enum:
+ FRAMEZOOM_SGIX = 0x818B # 1 I
+ FRAMEZOOM_FACTOR_SGIX = 0x818C # 1 I
+ MAX_FRAMEZOOM_FACTOR_SGIX = 0x818D # 1 I
+
+###############################################################################
+
+# No new tokens
+# Extension #58
+SGIX_tag_sample_buffer enum:
+
+###############################################################################
+
+# Extension #59
+FfdMaskSGIX enum:
+ TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001
+ GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002
+SGIX_polynomial_ffd enum:
+ GEOMETRY_DEFORMATION_SGIX = 0x8194
+ TEXTURE_DEFORMATION_SGIX = 0x8195
+ DEFORMATIONS_MASK_SGIX = 0x8196 # 1 I
+ MAX_DEFORMATION_ORDER_SGIX = 0x8197
+
+###############################################################################
+
+# Extension #60
+SGIX_reference_plane enum:
+ REFERENCE_PLANE_SGIX = 0x817D # 1 I
+ REFERENCE_PLANE_EQUATION_SGIX = 0x817E # 4 F
+
+###############################################################################
+
+# No new tokens
+# Extension #61
+SGIX_flush_raster enum:
+
+###############################################################################
+
+# Extension #62 - GLX_SGIX_cushion
+
+###############################################################################
+
+# Extension #63
+SGIX_depth_texture enum:
+ DEPTH_COMPONENT16_SGIX = 0x81A5
+ DEPTH_COMPONENT24_SGIX = 0x81A6
+ DEPTH_COMPONENT32_SGIX = 0x81A7
+
+###############################################################################
+
+# Extension #64
+SGIS_fog_function enum:
+ FOG_FUNC_SGIS = 0x812A
+ FOG_FUNC_POINTS_SGIS = 0x812B # 1 I
+ MAX_FOG_FUNC_POINTS_SGIS = 0x812C # 1 I
+
+###############################################################################
+
+# Extension #65
+SGIX_fog_offset enum:
+ FOG_OFFSET_SGIX = 0x8198 # 1 I
+ FOG_OFFSET_VALUE_SGIX = 0x8199 # 4 F
+
+###############################################################################
+
+# Extension #66
+HP_image_transform enum:
+ IMAGE_SCALE_X_HP = 0x8155
+ IMAGE_SCALE_Y_HP = 0x8156
+ IMAGE_TRANSLATE_X_HP = 0x8157
+ IMAGE_TRANSLATE_Y_HP = 0x8158
+ IMAGE_ROTATE_ANGLE_HP = 0x8159
+ IMAGE_ROTATE_ORIGIN_X_HP = 0x815A
+ IMAGE_ROTATE_ORIGIN_Y_HP = 0x815B
+ IMAGE_MAG_FILTER_HP = 0x815C
+ IMAGE_MIN_FILTER_HP = 0x815D
+ IMAGE_CUBIC_WEIGHT_HP = 0x815E
+ CUBIC_HP = 0x815F
+ AVERAGE_HP = 0x8160
+ IMAGE_TRANSFORM_2D_HP = 0x8161
+ POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8162
+ PROXY_POST_IMAGE_TRANSFORM_COLOR_TABLE_HP = 0x8163
+
+###############################################################################
+
+# Extension #67
+HP_convolution_border_modes enum:
+ IGNORE_BORDER_HP = 0x8150
+ CONSTANT_BORDER_HP = 0x8151
+ REPLICATE_BORDER_HP = 0x8153
+ CONVOLUTION_BORDER_COLOR_HP = 0x8154
+
+###############################################################################
+
+# Extension #68
+# (Unknown token values???)
+INGR_palette_buffer enum:
+
+###############################################################################
+
+# Extension #69
+SGIX_texture_add_env enum:
+ TEXTURE_ENV_BIAS_SGIX = 0x80BE
+
+###############################################################################
+
+# Extension #70 - skipped
+# Extension #71 - skipped
+# Extension #72 - skipped
+# Extension #73 - skipped
+
+###############################################################################
+
+# No new tokens
+# Extension #74
+EXT_color_subtable enum:
+
+###############################################################################
+
+# Extension #75 - GLU_EXT_object_space_tess
+
+###############################################################################
+
+# Extension #76
+PGI_vertex_hints enum:
+ VERTEX_DATA_HINT_PGI = 0x1A22A
+ VERTEX_CONSISTENT_HINT_PGI = 0x1A22B
+ MATERIAL_SIDE_HINT_PGI = 0x1A22C
+ MAX_VERTEX_HINT_PGI = 0x1A22D
+ COLOR3_BIT_PGI = 0x00010000
+ COLOR4_BIT_PGI = 0x00020000
+ EDGEFLAG_BIT_PGI = 0x00040000
+ INDEX_BIT_PGI = 0x00080000
+ MAT_AMBIENT_BIT_PGI = 0x00100000
+ MAT_AMBIENT_AND_DIFFUSE_BIT_PGI = 0x00200000
+ MAT_DIFFUSE_BIT_PGI = 0x00400000
+ MAT_EMISSION_BIT_PGI = 0x00800000
+ MAT_COLOR_INDEXES_BIT_PGI = 0x01000000
+ MAT_SHININESS_BIT_PGI = 0x02000000
+ MAT_SPECULAR_BIT_PGI = 0x04000000
+ NORMAL_BIT_PGI = 0x08000000
+ TEXCOORD1_BIT_PGI = 0x10000000
+ TEXCOORD2_BIT_PGI = 0x20000000
+ TEXCOORD3_BIT_PGI = 0x40000000
+ TEXCOORD4_BIT_PGI = 0x80000000
+ VERTEX23_BIT_PGI = 0x00000004
+ VERTEX4_BIT_PGI = 0x00000008
+
+###############################################################################
+
+# Extension #77
+PGI_misc_hints enum:
+ PREFER_DOUBLEBUFFER_HINT_PGI = 0x1A1F8
+ CONSERVE_MEMORY_HINT_PGI = 0x1A1FD
+ RECLAIM_MEMORY_HINT_PGI = 0x1A1FE
+ NATIVE_GRAPHICS_HANDLE_PGI = 0x1A202
+ NATIVE_GRAPHICS_BEGIN_HINT_PGI = 0x1A203
+ NATIVE_GRAPHICS_END_HINT_PGI = 0x1A204
+ ALWAYS_FAST_HINT_PGI = 0x1A20C
+ ALWAYS_SOFT_HINT_PGI = 0x1A20D
+ ALLOW_DRAW_OBJ_HINT_PGI = 0x1A20E
+ ALLOW_DRAW_WIN_HINT_PGI = 0x1A20F
+ ALLOW_DRAW_FRG_HINT_PGI = 0x1A210
+ ALLOW_DRAW_MEM_HINT_PGI = 0x1A211
+ STRICT_DEPTHFUNC_HINT_PGI = 0x1A216
+ STRICT_LIGHTING_HINT_PGI = 0x1A217
+ STRICT_SCISSOR_HINT_PGI = 0x1A218
+ FULL_STIPPLE_HINT_PGI = 0x1A219
+ CLIP_NEAR_HINT_PGI = 0x1A220
+ CLIP_FAR_HINT_PGI = 0x1A221
+ WIDE_LINE_HINT_PGI = 0x1A222
+ BACK_NORMALS_HINT_PGI = 0x1A223
+
+###############################################################################
+
+# Extension #78
+EXT_paletted_texture enum:
+ COLOR_INDEX1_EXT = 0x80E2
+ COLOR_INDEX2_EXT = 0x80E3
+ COLOR_INDEX4_EXT = 0x80E4
+ COLOR_INDEX8_EXT = 0x80E5
+ COLOR_INDEX12_EXT = 0x80E6
+ COLOR_INDEX16_EXT = 0x80E7
+ TEXTURE_INDEX_SIZE_EXT = 0x80ED
+
+###############################################################################
+
+# Extension #79
+EXT_clip_volume_hint enum:
+ CLIP_VOLUME_CLIPPING_HINT_EXT = 0x80F0
+
+###############################################################################
+
+# Extension #80
+SGIX_list_priority enum:
+ LIST_PRIORITY_SGIX = 0x8182
+
+###############################################################################
+
+# Extension #81
+SGIX_ir_instrument1 enum:
+ IR_INSTRUMENT1_SGIX = 0x817F # 1 I
+
+###############################################################################
+
+# Extension #82
+SGIX_calligraphic_fragment enum:
+ CALLIGRAPHIC_FRAGMENT_SGIX = 0x8183 # 1 I
+
+###############################################################################
+
+# Extension #83 - GLX_SGIX_video_resize
+
+###############################################################################
+
+# Extension #84
+SGIX_texture_lod_bias enum:
+ TEXTURE_LOD_BIAS_S_SGIX = 0x818E
+ TEXTURE_LOD_BIAS_T_SGIX = 0x818F
+ TEXTURE_LOD_BIAS_R_SGIX = 0x8190
+
+###############################################################################
+
+# Extension #85 - skipped
+
+###############################################################################
+
+# Extension #86 - GLX_SGIX_dmbuffer
+
+###############################################################################
+
+# Extension #87 - skipped
+# Extension #88 - skipped
+# Extension #89 - skipped
+
+###############################################################################
+
+# Extension #90
+SGIX_shadow_ambient enum:
+ SHADOW_AMBIENT_SGIX = 0x80BF
+
+###############################################################################
+
+# Extension #91 - GLX_SGIX_swap_group
+# Extension #92 - GLX_SGIX_swap_barrier
+
+###############################################################################
+
+# No new tokens
+# Extension #93
+EXT_index_texture enum:
+
+###############################################################################
+
+# Extension #94
+# Promoted from SGI?
+EXT_index_material enum:
+ INDEX_MATERIAL_EXT = 0x81B8
+ INDEX_MATERIAL_PARAMETER_EXT = 0x81B9
+ INDEX_MATERIAL_FACE_EXT = 0x81BA
+
+###############################################################################
+
+# Extension #95
+# Promoted from SGI?
+EXT_index_func enum:
+ INDEX_TEST_EXT = 0x81B5
+ INDEX_TEST_FUNC_EXT = 0x81B6
+ INDEX_TEST_REF_EXT = 0x81B7
+
+###############################################################################
+
+# Extension #96
+# Promoted from SGI?
+EXT_index_array_formats enum:
+ IUI_V2F_EXT = 0x81AD
+ IUI_V3F_EXT = 0x81AE
+ IUI_N3F_V2F_EXT = 0x81AF
+ IUI_N3F_V3F_EXT = 0x81B0
+ T2F_IUI_V2F_EXT = 0x81B1
+ T2F_IUI_V3F_EXT = 0x81B2
+ T2F_IUI_N3F_V2F_EXT = 0x81B3
+ T2F_IUI_N3F_V3F_EXT = 0x81B4
+
+###############################################################################
+
+# Extension #97
+# Promoted from SGI?
+EXT_compiled_vertex_array enum:
+ ARRAY_ELEMENT_LOCK_FIRST_EXT = 0x81A8
+ ARRAY_ELEMENT_LOCK_COUNT_EXT = 0x81A9
+
+###############################################################################
+
+# Extension #98
+# Promoted from SGI?
+EXT_cull_vertex enum:
+ CULL_VERTEX_EXT = 0x81AA
+ CULL_VERTEX_EYE_POSITION_EXT = 0x81AB
+ CULL_VERTEX_OBJECT_POSITION_EXT = 0x81AC
+
+###############################################################################
+
+# Extension #99 - skipped
+
+###############################################################################
+
+# Extension #100 - GLU_EXT_nurbs_tessellator
+
+###############################################################################
+
+# Extension #101
+SGIX_ycrcb enum:
+ YCRCB_422_SGIX = 0x81BB
+ YCRCB_444_SGIX = 0x81BC
+
+###############################################################################
+
+# Extension #102
+SGIX_fragment_lighting enum:
+ FRAGMENT_LIGHTING_SGIX = 0x8400 # 1 I
+ FRAGMENT_COLOR_MATERIAL_SGIX = 0x8401 # 1 I
+ FRAGMENT_COLOR_MATERIAL_FACE_SGIX = 0x8402 # 1 I
+ FRAGMENT_COLOR_MATERIAL_PARAMETER_SGIX = 0x8403 # 1 I
+ MAX_FRAGMENT_LIGHTS_SGIX = 0x8404 # 1 I
+ MAX_ACTIVE_LIGHTS_SGIX = 0x8405 # 1 I
+ CURRENT_RASTER_NORMAL_SGIX = 0x8406 # 1 I
+ LIGHT_ENV_MODE_SGIX = 0x8407 # 1 I
+ FRAGMENT_LIGHT_MODEL_LOCAL_VIEWER_SGIX = 0x8408 # 1 I
+ FRAGMENT_LIGHT_MODEL_TWO_SIDE_SGIX = 0x8409 # 1 I
+ FRAGMENT_LIGHT_MODEL_AMBIENT_SGIX = 0x840A # 4 F
+ FRAGMENT_LIGHT_MODEL_NORMAL_INTERPOLATION_SGIX = 0x840B # 1 I
+ FRAGMENT_LIGHT0_SGIX = 0x840C # 1 I
+ FRAGMENT_LIGHT1_SGIX = 0x840D
+ FRAGMENT_LIGHT2_SGIX = 0x840E
+ FRAGMENT_LIGHT3_SGIX = 0x840F
+ FRAGMENT_LIGHT4_SGIX = 0x8410
+ FRAGMENT_LIGHT5_SGIX = 0x8411
+ FRAGMENT_LIGHT6_SGIX = 0x8412
+ FRAGMENT_LIGHT7_SGIX = 0x8413
+
+###############################################################################
+
+# Extension #103 - skipped
+# Extension #104 - skipped
+# Extension #105 - skipped
+# Extension #106 - skipped
+# Extension #107 - skipped
+# Extension #108 - skipped
+# Extension #109 - skipped
+
+###############################################################################
+
+# Extension #110
+IBM_rasterpos_clip enum:
+ RASTER_POSITION_UNCLIPPED_IBM = 0x19262
+
+###############################################################################
+
+# Extension #111
+HP_texture_lighting enum:
+ TEXTURE_LIGHTING_MODE_HP = 0x8167
+ TEXTURE_POST_SPECULAR_HP = 0x8168
+ TEXTURE_PRE_SPECULAR_HP = 0x8169
+
+###############################################################################
+
+# Extension #112
+EXT_draw_range_elements enum:
+ MAX_ELEMENTS_VERTICES_EXT = 0x80E8
+ MAX_ELEMENTS_INDICES_EXT = 0x80E9
+
+###############################################################################
+
+# Extension #113
+WIN_phong_shading enum:
+ PHONG_WIN = 0x80EA
+ PHONG_HINT_WIN = 0x80EB
+
+###############################################################################
+
+# Extension #114
+WIN_specular_fog enum:
+ FOG_SPECULAR_TEXTURE_WIN = 0x80EC
+
+###############################################################################
+
+# Extension #115 - skipped
+# Extension #116 - skipped
+
+###############################################################################
+
+# Extension #117
+EXT_light_texture enum:
+ FRAGMENT_MATERIAL_EXT = 0x8349
+ FRAGMENT_NORMAL_EXT = 0x834A
+ FRAGMENT_COLOR_EXT = 0x834C
+ ATTENUATION_EXT = 0x834D
+ SHADOW_ATTENUATION_EXT = 0x834E
+ TEXTURE_APPLICATION_MODE_EXT = 0x834F # 1 I
+ TEXTURE_LIGHT_EXT = 0x8350 # 1 I
+ TEXTURE_MATERIAL_FACE_EXT = 0x8351 # 1 I
+ TEXTURE_MATERIAL_PARAMETER_EXT = 0x8352 # 1 I
+ use EXT_fog_coord FRAGMENT_DEPTH_EXT
+
+###############################################################################
+
+# Extension #118 - skipped
+
+###############################################################################
+
+# Extension #119
+SGIX_blend_alpha_minmax enum:
+ ALPHA_MIN_SGIX = 0x8320
+ ALPHA_MAX_SGIX = 0x8321
+
+###############################################################################
+
+# Extension #120 - skipped
+# Extension #121 - skipped
+# Extension #122 - skipped
+# Extension #123 - skipped
+# Extension #124 - skipped
+# Extension #125 - skipped
+
+###############################################################################
+
+# Extension #126
+SGIX_impact_pixel_texture enum:
+ PIXEL_TEX_GEN_Q_CEILING_SGIX = 0x8184
+ PIXEL_TEX_GEN_Q_ROUND_SGIX = 0x8185
+ PIXEL_TEX_GEN_Q_FLOOR_SGIX = 0x8186
+ PIXEL_TEX_GEN_ALPHA_REPLACE_SGIX = 0x8187
+ PIXEL_TEX_GEN_ALPHA_NO_REPLACE_SGIX = 0x8188
+ PIXEL_TEX_GEN_ALPHA_LS_SGIX = 0x8189
+ PIXEL_TEX_GEN_ALPHA_MS_SGIX = 0x818A
+
+###############################################################################
+
+# Extension #127 - skipped
+# Extension #128 - skipped
+
+###############################################################################
+
+# Extension #129
+EXT_bgra enum:
+ BGR_EXT = 0x80E0
+ BGRA_EXT = 0x80E1
+
+###############################################################################
+
+# Extension #130 - skipped
+# Extension #131 - skipped
+
+###############################################################################
+
+# Extension #132
+SGIX_async enum:
+ ASYNC_MARKER_SGIX = 0x8329
+
+###############################################################################
+
+# Extension #133
+SGIX_async_pixel enum:
+ ASYNC_TEX_IMAGE_SGIX = 0x835C
+ ASYNC_DRAW_PIXELS_SGIX = 0x835D
+ ASYNC_READ_PIXELS_SGIX = 0x835E
+ MAX_ASYNC_TEX_IMAGE_SGIX = 0x835F
+ MAX_ASYNC_DRAW_PIXELS_SGIX = 0x8360
+ MAX_ASYNC_READ_PIXELS_SGIX = 0x8361
+
+###############################################################################
+
+# Extension #134
+SGIX_async_histogram enum:
+ ASYNC_HISTOGRAM_SGIX = 0x832C
+ MAX_ASYNC_HISTOGRAM_SGIX = 0x832D
+
+###############################################################################
+
+# Intel has not implemented this; enums never assigned
+# Extension #135
+INTEL_texture_scissor enum:
+# TEXTURE_SCISSOR_INTEL = 0x????
+# TEXTURE_SCISSOR_INTEL = 0x????
+# TEXTURE_SCISSOR_FUNC_INTEL = 0x????
+# TEXTURE_SCISSOR_S_INTEL = 0x????
+# TEXTURE_SCISSOR_T_INTEL = 0x????
+# TEXTURE_SCISSOR_R_INTEL = 0x????
+
+###############################################################################
+
+# Extension #136
+INTEL_parallel_arrays enum:
+ PARALLEL_ARRAYS_INTEL = 0x83F4
+ VERTEX_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F5
+ NORMAL_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F6
+ COLOR_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F7
+ TEXTURE_COORD_ARRAY_PARALLEL_POINTERS_INTEL = 0x83F8
+
+###############################################################################
+
+# Extension #137
+HP_occlusion_test enum:
+ OCCLUSION_TEST_HP = 0x8165
+ OCCLUSION_TEST_RESULT_HP = 0x8166
+
+###############################################################################
+
+# Extension #138
+EXT_pixel_transform enum:
+ PIXEL_TRANSFORM_2D_EXT = 0x8330
+ PIXEL_MAG_FILTER_EXT = 0x8331
+ PIXEL_MIN_FILTER_EXT = 0x8332
+ PIXEL_CUBIC_WEIGHT_EXT = 0x8333
+ CUBIC_EXT = 0x8334
+ AVERAGE_EXT = 0x8335
+ PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8336
+ MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT = 0x8337
+ PIXEL_TRANSFORM_2D_MATRIX_EXT = 0x8338
+
+###############################################################################
+
+# Unknown enum values
+# Extension #139
+EXT_pixel_transform_color_table enum:
+
+# PIXEL_TRANSFORM_COLOR_TABLE_EXT
+# PROXY_PIXEL_TRANSFORM_COLOR_TABLE_EXT
+
+###############################################################################
+
+# Extension #140 - skipped
+
+###############################################################################
+
+# Extension #141
+EXT_shared_texture_palette enum:
+ SHARED_TEXTURE_PALETTE_EXT = 0x81FB
+
+###############################################################################
+
+# Extension #142 - GLX_SGIS_blended_overlay
+
+###############################################################################
+
+# Extension #143 - SGIS_shared_multisample
+# MULTISAMPLE_SUB_RECT_POSITION_SGIS = <TBD>
+# MULTISAMPLE_SUB_RECT_DIMS_SGIS = <TBD>
+
+###############################################################################
+
+# Extension #144
+EXT_separate_specular_color enum:
+ LIGHT_MODEL_COLOR_CONTROL_EXT = 0x81F8
+ SINGLE_COLOR_EXT = 0x81F9
+ SEPARATE_SPECULAR_COLOR_EXT = 0x81FA
+
+###############################################################################
+
+# Extension #145
+EXT_secondary_color enum:
+ COLOR_SUM_EXT = 0x8458 # 1 I
+ CURRENT_SECONDARY_COLOR_EXT = 0x8459 # 3 F
+ SECONDARY_COLOR_ARRAY_SIZE_EXT = 0x845A # 1 I
+ SECONDARY_COLOR_ARRAY_TYPE_EXT = 0x845B # 1 I
+ SECONDARY_COLOR_ARRAY_STRIDE_EXT = 0x845C # 1 I
+ SECONDARY_COLOR_ARRAY_POINTER_EXT = 0x845D
+ SECONDARY_COLOR_ARRAY_EXT = 0x845E # 1 I
+
+###############################################################################
+
+# Dead extension - EXT_texture_env_combine was finished instead
+# Extension #146
+#EXT_texture_env enum:
+
+###############################################################################
+
+# Extension #147
+EXT_texture_perturb_normal enum:
+ PERTURB_EXT = 0x85AE
+ TEXTURE_NORMAL_EXT = 0x85AF
+
+###############################################################################
+
+# No new tokens
+# Extension #148
+# Diamond ships an otherwise identical IBM_multi_draw_arrays extension;
+# Dan Brokenshire says this is deprecated and should not be advertised.
+EXT_multi_draw_arrays enum:
+
+###############################################################################
+
+# Extension #149
+EXT_fog_coord enum:
+ FOG_COORDINATE_SOURCE_EXT = 0x8450 # 1 I
+ FOG_COORDINATE_EXT = 0x8451
+ FRAGMENT_DEPTH_EXT = 0x8452
+ CURRENT_FOG_COORDINATE_EXT = 0x8453 # 1 F
+ FOG_COORDINATE_ARRAY_TYPE_EXT = 0x8454 # 1 I
+ FOG_COORDINATE_ARRAY_STRIDE_EXT = 0x8455 # 1 I
+ FOG_COORDINATE_ARRAY_POINTER_EXT = 0x8456
+ FOG_COORDINATE_ARRAY_EXT = 0x8457 # 1 I
+
+###############################################################################
+
+# Extension #150 - skipped
+# Extension #151 - skipped
+# Extension #152 - skipped
+# Extension #153 - skipped
+# Extension #154 - skipped
+
+###############################################################################
+
+# Extension #155
+REND_screen_coordinates enum:
+ SCREEN_COORDINATES_REND = 0x8490
+ INVERTED_SCREEN_W_REND = 0x8491
+
+###############################################################################
+
+# Extension #156
+EXT_coordinate_frame enum:
+ TANGENT_ARRAY_EXT = 0x8439
+ BINORMAL_ARRAY_EXT = 0x843A
+ CURRENT_TANGENT_EXT = 0x843B
+ CURRENT_BINORMAL_EXT = 0x843C
+ TANGENT_ARRAY_TYPE_EXT = 0x843E
+ TANGENT_ARRAY_STRIDE_EXT = 0x843F
+ BINORMAL_ARRAY_TYPE_EXT = 0x8440
+ BINORMAL_ARRAY_STRIDE_EXT = 0x8441
+ TANGENT_ARRAY_POINTER_EXT = 0x8442
+ BINORMAL_ARRAY_POINTER_EXT = 0x8443
+ MAP1_TANGENT_EXT = 0x8444
+ MAP2_TANGENT_EXT = 0x8445
+ MAP1_BINORMAL_EXT = 0x8446
+ MAP2_BINORMAL_EXT = 0x8447
+
+###############################################################################
+
+# Extension #157 - skipped
+
+###############################################################################
+
+# Extension #158
+EXT_texture_env_combine enum:
+ COMBINE_EXT = 0x8570
+ COMBINE_RGB_EXT = 0x8571
+ COMBINE_ALPHA_EXT = 0x8572
+ RGB_SCALE_EXT = 0x8573
+ ADD_SIGNED_EXT = 0x8574
+ INTERPOLATE_EXT = 0x8575
+ CONSTANT_EXT = 0x8576
+ PRIMARY_COLOR_EXT = 0x8577
+ PREVIOUS_EXT = 0x8578
+ SOURCE0_RGB_EXT = 0x8580
+ SOURCE1_RGB_EXT = 0x8581
+ SOURCE2_RGB_EXT = 0x8582
+ SOURCE0_ALPHA_EXT = 0x8588
+ SOURCE1_ALPHA_EXT = 0x8589
+ SOURCE2_ALPHA_EXT = 0x858A
+ OPERAND0_RGB_EXT = 0x8590
+ OPERAND1_RGB_EXT = 0x8591
+ OPERAND2_RGB_EXT = 0x8592
+ OPERAND0_ALPHA_EXT = 0x8598
+ OPERAND1_ALPHA_EXT = 0x8599
+ OPERAND2_ALPHA_EXT = 0x859A
+
+###############################################################################
+
+# Extension #159
+APPLE_specular_vector enum:
+ LIGHT_MODEL_SPECULAR_VECTOR_APPLE = 0x85B0
+
+###############################################################################
+
+# Extension #160
+APPLE_transform_hint enum:
+ TRANSFORM_HINT_APPLE = 0x85B1
+
+###############################################################################
+
+# Extension #161
+SGIX_fog_scale enum:
+ FOG_SCALE_SGIX = 0x81FC
+ FOG_SCALE_VALUE_SGIX = 0x81FD
+
+###############################################################################
+
+# Extension #162 - skipped
+
+###############################################################################
+
+# Extension #163
+SUNX_constant_data enum:
+ UNPACK_CONSTANT_DATA_SUNX = 0x81D5
+ TEXTURE_CONSTANT_DATA_SUNX = 0x81D6
+
+###############################################################################
+
+# Extension #164
+SUN_global_alpha enum:
+ GLOBAL_ALPHA_SUN = 0x81D9
+ GLOBAL_ALPHA_FACTOR_SUN = 0x81DA
+
+###############################################################################
+
+# Extension #165
+SUN_triangle_list enum:
+ RESTART_SUN = 0x0001
+ REPLACE_MIDDLE_SUN = 0x0002
+ REPLACE_OLDEST_SUN = 0x0003
+ TRIANGLE_LIST_SUN = 0x81D7
+ REPLACEMENT_CODE_SUN = 0x81D8
+ REPLACEMENT_CODE_ARRAY_SUN = 0x85C0
+ REPLACEMENT_CODE_ARRAY_TYPE_SUN = 0x85C1
+ REPLACEMENT_CODE_ARRAY_STRIDE_SUN = 0x85C2
+ REPLACEMENT_CODE_ARRAY_POINTER_SUN = 0x85C3
+ R1UI_V3F_SUN = 0x85C4
+ R1UI_C4UB_V3F_SUN = 0x85C5
+ R1UI_C3F_V3F_SUN = 0x85C6
+ R1UI_N3F_V3F_SUN = 0x85C7
+ R1UI_C4F_N3F_V3F_SUN = 0x85C8
+ R1UI_T2F_V3F_SUN = 0x85C9
+ R1UI_T2F_N3F_V3F_SUN = 0x85CA
+ R1UI_T2F_C4F_N3F_V3F_SUN = 0x85CB
+
+###############################################################################
+
+# No new tokens
+# Extension #166
+SUN_vertex enum:
+
+###############################################################################
+
+# Extension #167 - WGL_EXT_display_color_table
+# Extension #168 - WGL_EXT_extensions_string
+# Extension #169 - WGL_EXT_make_current_read
+# Extension #170 - WGL_EXT_pixel_format
+# Extension #171 - WGL_EXT_pbuffer
+# Extension #172 - WGL_EXT_swap_control
+
+###############################################################################
+
+# Extension #173
+EXT_blend_func_separate enum:
+ BLEND_DST_RGB_EXT = 0x80C8
+ BLEND_SRC_RGB_EXT = 0x80C9
+ BLEND_DST_ALPHA_EXT = 0x80CA
+ BLEND_SRC_ALPHA_EXT = 0x80CB
+
+###############################################################################
+
+# Extension #174
+INGR_color_clamp enum:
+ RED_MIN_CLAMP_INGR = 0x8560
+ GREEN_MIN_CLAMP_INGR = 0x8561
+ BLUE_MIN_CLAMP_INGR = 0x8562
+ ALPHA_MIN_CLAMP_INGR = 0x8563
+ RED_MAX_CLAMP_INGR = 0x8564
+ GREEN_MAX_CLAMP_INGR = 0x8565
+ BLUE_MAX_CLAMP_INGR = 0x8566
+ ALPHA_MAX_CLAMP_INGR = 0x8567
+
+###############################################################################
+
+# Extension #175
+INGR_interlace_read enum:
+ INTERLACE_READ_INGR = 0x8568
+
+###############################################################################
+
+# Extension #176
+EXT_stencil_wrap enum:
+ INCR_WRAP_EXT = 0x8507
+ DECR_WRAP_EXT = 0x8508
+
+###############################################################################
+
+# Extension #177 - skipped
+
+###############################################################################
+
+# Extension #178
+EXT_422_pixels enum:
+ 422_EXT = 0x80CC
+ 422_REV_EXT = 0x80CD
+ 422_AVERAGE_EXT = 0x80CE
+ 422_REV_AVERAGE_EXT = 0x80CF
+
+###############################################################################
+
+# Extension #179
+NV_texgen_reflection enum:
+ NORMAL_MAP_NV = 0x8511
+ REFLECTION_MAP_NV = 0x8512
+
+###############################################################################
+
+# Extension #180 - skipped
+# Extension #181 - skipped
+
+###############################################################################
+
+# Is this shipping? No extension number assigned.
+# Extension #?
+EXT_texture_cube_map enum:
+ NORMAL_MAP_EXT = 0x8511
+ REFLECTION_MAP_EXT = 0x8512
+ TEXTURE_CUBE_MAP_EXT = 0x8513
+ TEXTURE_BINDING_CUBE_MAP_EXT = 0x8514
+ TEXTURE_CUBE_MAP_POSITIVE_X_EXT = 0x8515
+ TEXTURE_CUBE_MAP_NEGATIVE_X_EXT = 0x8516
+ TEXTURE_CUBE_MAP_POSITIVE_Y_EXT = 0x8517
+ TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT = 0x8518
+ TEXTURE_CUBE_MAP_POSITIVE_Z_EXT = 0x8519
+ TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT = 0x851A
+ PROXY_TEXTURE_CUBE_MAP_EXT = 0x851B
+ MAX_CUBE_MAP_TEXTURE_SIZE_EXT = 0x851C
+
+###############################################################################
+
+# Extension #182
+SUN_convolution_border_modes enum:
+ WRAP_BORDER_SUN = 0x81D4
+
+###############################################################################
+
+# Extension #183 - GLX_SUN_transparent_index
+
+###############################################################################
+
+# Extension #184 - skipped
+
+###############################################################################
+
+# No new tokens
+# Extension #185
+EXT_texture_env_add enum:
+
+###############################################################################
+
+# Extension #186
+EXT_texture_lod_bias enum:
+ MAX_TEXTURE_LOD_BIAS_EXT = 0x84FD
+ TEXTURE_FILTER_CONTROL_EXT = 0x8500
+ TEXTURE_LOD_BIAS_EXT = 0x8501
+
+###############################################################################
+
+# Extension #187
+EXT_texture_filter_anisotropic enum:
+ TEXTURE_MAX_ANISOTROPY_EXT = 0x84FE
+ MAX_TEXTURE_MAX_ANISOTROPY_EXT = 0x84FF
+
+###############################################################################
+
+# Extension #188
+EXT_vertex_weighting enum:
+ MODELVIEW0_STACK_DEPTH_EXT = GL_MODELVIEW_STACK_DEPTH
+ MODELVIEW1_STACK_DEPTH_EXT = 0x8502
+ MODELVIEW0_MATRIX_EXT = GL_MODELVIEW_MATRIX
+ MODELVIEW1_MATRIX_EXT = 0x8506
+ VERTEX_WEIGHTING_EXT = 0x8509
+ MODELVIEW0_EXT = GL_MODELVIEW
+ MODELVIEW1_EXT = 0x850A
+ CURRENT_VERTEX_WEIGHT_EXT = 0x850B
+ VERTEX_WEIGHT_ARRAY_EXT = 0x850C
+ VERTEX_WEIGHT_ARRAY_SIZE_EXT = 0x850D
+ VERTEX_WEIGHT_ARRAY_TYPE_EXT = 0x850E
+ VERTEX_WEIGHT_ARRAY_STRIDE_EXT = 0x850F
+ VERTEX_WEIGHT_ARRAY_POINTER_EXT = 0x8510
+
+###############################################################################
+
+# Extension #189
+NV_light_max_exponent enum:
+ MAX_SHININESS_NV = 0x8504
+ MAX_SPOT_EXPONENT_NV = 0x8505
+
+###############################################################################
+
+# Extension #190
+NV_vertex_array_range enum:
+ VERTEX_ARRAY_RANGE_NV = 0x851D
+ VERTEX_ARRAY_RANGE_LENGTH_NV = 0x851E
+ VERTEX_ARRAY_RANGE_VALID_NV = 0x851F
+ MAX_VERTEX_ARRAY_RANGE_ELEMENT_NV = 0x8520
+ VERTEX_ARRAY_RANGE_POINTER_NV = 0x8521
+
+###############################################################################
+
+# Extension #191
+NV_register_combiners enum:
+ REGISTER_COMBINERS_NV = 0x8522
+ VARIABLE_A_NV = 0x8523
+ VARIABLE_B_NV = 0x8524
+ VARIABLE_C_NV = 0x8525
+ VARIABLE_D_NV = 0x8526
+ VARIABLE_E_NV = 0x8527
+ VARIABLE_F_NV = 0x8528
+ VARIABLE_G_NV = 0x8529
+ CONSTANT_COLOR0_NV = 0x852A
+ CONSTANT_COLOR1_NV = 0x852B
+ PRIMARY_COLOR_NV = 0x852C
+ SECONDARY_COLOR_NV = 0x852D
+ SPARE0_NV = 0x852E
+ SPARE1_NV = 0x852F
+ DISCARD_NV = 0x8530
+ E_TIMES_F_NV = 0x8531
+ SPARE0_PLUS_SECONDARY_COLOR_NV = 0x8532
+ UNSIGNED_IDENTITY_NV = 0x8536
+ UNSIGNED_INVERT_NV = 0x8537
+ EXPAND_NORMAL_NV = 0x8538
+ EXPAND_NEGATE_NV = 0x8539
+ HALF_BIAS_NORMAL_NV = 0x853A
+ HALF_BIAS_NEGATE_NV = 0x853B
+ SIGNED_IDENTITY_NV = 0x853C
+ SIGNED_NEGATE_NV = 0x853D
+ SCALE_BY_TWO_NV = 0x853E
+ SCALE_BY_FOUR_NV = 0x853F
+ SCALE_BY_ONE_HALF_NV = 0x8540
+ BIAS_BY_NEGATIVE_ONE_HALF_NV = 0x8541
+ COMBINER_INPUT_NV = 0x8542
+ COMBINER_MAPPING_NV = 0x8543
+ COMBINER_COMPONENT_USAGE_NV = 0x8544
+ COMBINER_AB_DOT_PRODUCT_NV = 0x8545
+ COMBINER_CD_DOT_PRODUCT_NV = 0x8546
+ COMBINER_MUX_SUM_NV = 0x8547
+ COMBINER_SCALE_NV = 0x8548
+ COMBINER_BIAS_NV = 0x8549
+ COMBINER_AB_OUTPUT_NV = 0x854A
+ COMBINER_CD_OUTPUT_NV = 0x854B
+ COMBINER_SUM_OUTPUT_NV = 0x854C
+ MAX_GENERAL_COMBINERS_NV = 0x854D
+ NUM_GENERAL_COMBINERS_NV = 0x854E
+ COLOR_SUM_CLAMP_NV = 0x854F
+ COMBINER0_NV = 0x8550
+ COMBINER1_NV = 0x8551
+ COMBINER2_NV = 0x8552
+ COMBINER3_NV = 0x8553
+ COMBINER4_NV = 0x8554
+ COMBINER5_NV = 0x8555
+ COMBINER6_NV = 0x8556
+ COMBINER7_NV = 0x8557
+ use ARB_multitexture TEXTURE0_ARB
+ use ARB_multitexture TEXTURE1_ARB
+ use BlendingFactorDest ZERO
+ use DrawBufferMode NONE
+ use GetPName FOG
+
+###############################################################################
+
+# Extension #192
+NV_fog_distance enum:
+ FOG_DISTANCE_MODE_NV = 0x855A
+ EYE_RADIAL_NV = 0x855B
+ EYE_PLANE_ABSOLUTE_NV = 0x855C
+ use TextureGenParameter EYE_PLANE
+
+###############################################################################
+
+# Extension #193
+NV_texgen_emboss enum:
+ EMBOSS_LIGHT_NV = 0x855D
+ EMBOSS_CONSTANT_NV = 0x855E
+ EMBOSS_MAP_NV = 0x855F
+
+###############################################################################
+
+# No new tokens
+# Extension #194
+NV_blend_square enum:
+
+###############################################################################
+
+# Extension #195
+NV_texture_env_combine4 enum:
+ COMBINE4_NV = 0x8503
+ SOURCE3_RGB_NV = 0x8583
+ SOURCE3_ALPHA_NV = 0x858B
+ OPERAND3_RGB_NV = 0x8593
+ OPERAND3_ALPHA_NV = 0x859B
+
+###############################################################################
+
+# No new tokens
+# Extension #196
+MESA_resize_buffers enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #197
+MESA_window_pos enum:
+
+###############################################################################
+
+# Extension #198
+EXT_texture_compression_s3tc enum:
+ COMPRESSED_RGB_S3TC_DXT1_EXT = 0x83F0
+ COMPRESSED_RGBA_S3TC_DXT1_EXT = 0x83F1
+ COMPRESSED_RGBA_S3TC_DXT3_EXT = 0x83F2
+ COMPRESSED_RGBA_S3TC_DXT5_EXT = 0x83F3
+
+###############################################################################
+
+# Extension #199
+IBM_cull_vertex enum:
+ CULL_VERTEX_IBM = 103050
+
+###############################################################################
+
+# No new tokens
+# Extension #200
+IBM_multimode_draw_arrays enum:
+
+###############################################################################
+
+# Extension #201
+IBM_vertex_array_lists enum:
+ VERTEX_ARRAY_LIST_IBM = 103070
+ NORMAL_ARRAY_LIST_IBM = 103071
+ COLOR_ARRAY_LIST_IBM = 103072
+ INDEX_ARRAY_LIST_IBM = 103073
+ TEXTURE_COORD_ARRAY_LIST_IBM = 103074
+ EDGE_FLAG_ARRAY_LIST_IBM = 103075
+ FOG_COORDINATE_ARRAY_LIST_IBM = 103076
+ SECONDARY_COLOR_ARRAY_LIST_IBM = 103077
+ VERTEX_ARRAY_LIST_STRIDE_IBM = 103080
+ NORMAL_ARRAY_LIST_STRIDE_IBM = 103081
+ COLOR_ARRAY_LIST_STRIDE_IBM = 103082
+ INDEX_ARRAY_LIST_STRIDE_IBM = 103083
+ TEXTURE_COORD_ARRAY_LIST_STRIDE_IBM = 103084
+ EDGE_FLAG_ARRAY_LIST_STRIDE_IBM = 103085
+ FOG_COORDINATE_ARRAY_LIST_STRIDE_IBM = 103086
+ SECONDARY_COLOR_ARRAY_LIST_STRIDE_IBM = 103087
+
+###############################################################################
+
+# Extension #202
+SGIX_subsample enum:
+ PACK_SUBSAMPLE_RATE_SGIX = 0x85A0
+ UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1
+ PIXEL_SUBSAMPLE_4444_SGIX = 0x85A2
+ PIXEL_SUBSAMPLE_2424_SGIX = 0x85A3
+ PIXEL_SUBSAMPLE_4242_SGIX = 0x85A4
+
+###############################################################################
+
+# Extension #203
+SGIX_ycrcb_subsample enum:
+ PACK_SUBSAMPLE_RATE_SGIX = 0x85A0
+ UNPACK_SUBSAMPLE_RATE_SGIX = 0x85A1
+ PIXEL_SUBSAMPLE_4444_SGIX = 0x85A2
+ PIXEL_SUBSAMPLE_2424_SGIX = 0x85A3
+ PIXEL_SUBSAMPLE_4242_SGIX = 0x85A4
+
+###############################################################################
+
+# Extension #204
+SGIX_ycrcba enum:
+ YCRCB_SGIX = 0x8318
+ YCRCBA_SGIX = 0x8319
+
+###############################################################################
+
+# Extension #205
+SGI_depth_pass_instrument enum:
+ DEPTH_PASS_INSTRUMENT_SGIX = 0x8310
+ DEPTH_PASS_INSTRUMENT_COUNTERS_SGIX = 0x8311
+ DEPTH_PASS_INSTRUMENT_MAX_SGIX = 0x8312
+
+###############################################################################
+
+# Extension #206
+3DFX_texture_compression_FXT1 enum:
+ COMPRESSED_RGB_FXT1_3DFX = 0x86B0
+ COMPRESSED_RGBA_FXT1_3DFX = 0x86B1
+
+###############################################################################
+
+# Extension #207
+3DFX_multisample enum:
+ MULTISAMPLE_3DFX = 0x86B2
+ SAMPLE_BUFFERS_3DFX = 0x86B3
+ SAMPLES_3DFX = 0x86B4
+ MULTISAMPLE_BIT_3DFX = 0x20000000
+
+###############################################################################
+
+# No new tokens
+# Extension #208
+3DFX_tbuffer enum:
+
+###############################################################################
+
+# Extension #209
+EXT_multisample enum:
+ MULTISAMPLE_EXT = 0x809D
+ SAMPLE_ALPHA_TO_MASK_EXT = 0x809E
+ SAMPLE_ALPHA_TO_ONE_EXT = 0x809F
+ SAMPLE_MASK_EXT = 0x80A0
+ 1PASS_EXT = 0x80A1
+ 2PASS_0_EXT = 0x80A2
+ 2PASS_1_EXT = 0x80A3
+ 4PASS_0_EXT = 0x80A4
+ 4PASS_1_EXT = 0x80A5
+ 4PASS_2_EXT = 0x80A6
+ 4PASS_3_EXT = 0x80A7
+ SAMPLE_BUFFERS_EXT = 0x80A8 # 1 I
+ SAMPLES_EXT = 0x80A9 # 1 I
+ SAMPLE_MASK_VALUE_EXT = 0x80AA # 1 F
+ SAMPLE_MASK_INVERT_EXT = 0x80AB # 1 I
+ SAMPLE_PATTERN_EXT = 0x80AC # 1 I
+ MULTISAMPLE_BIT_EXT = 0x20000000
+
+###############################################################################
+
+# Extension #210
+SGIX_vertex_preclip enum:
+ VERTEX_PRECLIP_SGIX = 0x83EE
+ VERTEX_PRECLIP_HINT_SGIX = 0x83EF
+
+###############################################################################
+
+# Extension #211
+SGIX_convolution_accuracy enum:
+ CONVOLUTION_HINT_SGIX = 0x8316 # 1 I
+
+###############################################################################
+
+# Extension #212
+SGIX_resample enum:
+ PACK_RESAMPLE_SGIX = 0x842C
+ UNPACK_RESAMPLE_SGIX = 0x842D
+ RESAMPLE_REPLICATE_SGIX = 0x842E
+ RESAMPLE_ZERO_FILL_SGIX = 0x842F
+ RESAMPLE_DECIMATE_SGIX = 0x8430
+
+###############################################################################
+
+# Extension #213
+SGIS_point_line_texgen enum:
+ EYE_DISTANCE_TO_POINT_SGIS = 0x81F0
+ OBJECT_DISTANCE_TO_POINT_SGIS = 0x81F1
+ EYE_DISTANCE_TO_LINE_SGIS = 0x81F2
+ OBJECT_DISTANCE_TO_LINE_SGIS = 0x81F3
+ EYE_POINT_SGIS = 0x81F4
+ OBJECT_POINT_SGIS = 0x81F5
+ EYE_LINE_SGIS = 0x81F6
+ OBJECT_LINE_SGIS = 0x81F7
+
+###############################################################################
+
+# Extension #214
+SGIS_texture_color_mask enum:
+ TEXTURE_COLOR_WRITEMASK_SGIS = 0x81EF
+
+###############################################################################
+
+# Extension #220
+# Promoted to ARB_texture_env_dot3, enum values changed
+EXT_texture_env_dot3 enum:
+ DOT3_RGB_EXT = 0x8740
+ DOT3_RGBA_EXT = 0x8741
+
+###############################################################################
+
+# Extension #221
+ATI_texture_mirror_once enum:
+ MIRROR_CLAMP_ATI = 0x8742
+ MIRROR_CLAMP_TO_EDGE_ATI = 0x8743
+
+###############################################################################
+
+# Extension #222
+NV_fence enum:
+ ALL_COMPLETED_NV = 0x84F2
+ FENCE_STATUS_NV = 0x84F3
+ FENCE_CONDITION_NV = 0x84F4
+
+###############################################################################
+
+# Extension #224
+IBM_texture_mirrored_repeat enum:
+ MIRRORED_REPEAT_IBM = 0x8370
+
+###############################################################################
+
+# Extension #225
+NV_evaluators enum:
+ EVAL_2D_NV = 0x86C0
+ EVAL_TRIANGULAR_2D_NV = 0x86C1
+ MAP_TESSELLATION_NV = 0x86C2
+ MAP_ATTRIB_U_ORDER_NV = 0x86C3
+ MAP_ATTRIB_V_ORDER_NV = 0x86C4
+ EVAL_FRACTIONAL_TESSELLATION_NV = 0x86C5
+ EVAL_VERTEX_ATTRIB0_NV = 0x86C6
+ EVAL_VERTEX_ATTRIB1_NV = 0x86C7
+ EVAL_VERTEX_ATTRIB2_NV = 0x86C8
+ EVAL_VERTEX_ATTRIB3_NV = 0x86C9
+ EVAL_VERTEX_ATTRIB4_NV = 0x86CA
+ EVAL_VERTEX_ATTRIB5_NV = 0x86CB
+ EVAL_VERTEX_ATTRIB6_NV = 0x86CC
+ EVAL_VERTEX_ATTRIB7_NV = 0x86CD
+ EVAL_VERTEX_ATTRIB8_NV = 0x86CE
+ EVAL_VERTEX_ATTRIB9_NV = 0x86CF
+ EVAL_VERTEX_ATTRIB10_NV = 0x86D0
+ EVAL_VERTEX_ATTRIB11_NV = 0x86D1
+ EVAL_VERTEX_ATTRIB12_NV = 0x86D2
+ EVAL_VERTEX_ATTRIB13_NV = 0x86D3
+ EVAL_VERTEX_ATTRIB14_NV = 0x86D4
+ EVAL_VERTEX_ATTRIB15_NV = 0x86D5
+ MAX_MAP_TESSELLATION_NV = 0x86D6
+ MAX_RATIONAL_EVAL_ORDER_NV = 0x86D7
+
+###############################################################################
+
+# Extension #226
+NV_packed_depth_stencil enum:
+ DEPTH_STENCIL_NV = 0x84F9
+ UNSIGNED_INT_24_8_NV = 0x84FA
+
+###############################################################################
+
+# Extension #227
+NV_register_combiners2 enum:
+ PER_STAGE_CONSTANTS_NV = 0x8535
+
+###############################################################################
+
+# No new tokens
+# Extension #228
+NV_texture_compression_vtc enum:
+
+###############################################################################
+
+# Extension #229
+NV_texture_rectangle enum:
+ TEXTURE_RECTANGLE_NV = 0x84F5
+ TEXTURE_BINDING_RECTANGLE_NV = 0x84F6
+ PROXY_TEXTURE_RECTANGLE_NV = 0x84F7
+ MAX_RECTANGLE_TEXTURE_SIZE_NV = 0x84F8
+
+###############################################################################
+
+# Extension #230
+NV_texture_shader enum:
+ OFFSET_TEXTURE_RECTANGLE_NV = 0x864C
+ OFFSET_TEXTURE_RECTANGLE_SCALE_NV = 0x864D
+ DOT_PRODUCT_TEXTURE_RECTANGLE_NV = 0x864E
+ RGBA_UNSIGNED_DOT_PRODUCT_MAPPING_NV = 0x86D9
+ UNSIGNED_INT_S8_S8_8_8_NV = 0x86DA
+ UNSIGNED_INT_8_8_S8_S8_REV_NV = 0x86DB
+ DSDT_MAG_INTENSITY_NV = 0x86DC
+ SHADER_CONSISTENT_NV = 0x86DD
+ TEXTURE_SHADER_NV = 0x86DE
+ SHADER_OPERATION_NV = 0x86DF
+ CULL_MODES_NV = 0x86E0
+ OFFSET_TEXTURE_MATRIX_NV = 0x86E1
+ OFFSET_TEXTURE_SCALE_NV = 0x86E2
+ OFFSET_TEXTURE_BIAS_NV = 0x86E3
+ OFFSET_TEXTURE_2D_MATRIX_NV = GL_OFFSET_TEXTURE_MATRIX_NV
+ OFFSET_TEXTURE_2D_SCALE_NV = GL_OFFSET_TEXTURE_SCALE_NV
+ OFFSET_TEXTURE_2D_BIAS_NV = GL_OFFSET_TEXTURE_BIAS_NV
+ PREVIOUS_TEXTURE_INPUT_NV = 0x86E4
+ CONST_EYE_NV = 0x86E5
+ PASS_THROUGH_NV = 0x86E6
+ CULL_FRAGMENT_NV = 0x86E7
+ OFFSET_TEXTURE_2D_NV = 0x86E8
+ DEPENDENT_AR_TEXTURE_2D_NV = 0x86E9
+ DEPENDENT_GB_TEXTURE_2D_NV = 0x86EA
+ DOT_PRODUCT_NV = 0x86EC
+ DOT_PRODUCT_DEPTH_REPLACE_NV = 0x86ED
+ DOT_PRODUCT_TEXTURE_2D_NV = 0x86EE
+ DOT_PRODUCT_TEXTURE_CUBE_MAP_NV = 0x86F0
+ DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV = 0x86F1
+ DOT_PRODUCT_REFLECT_CUBE_MAP_NV = 0x86F2
+ DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV = 0x86F3
+ HILO_NV = 0x86F4
+ DSDT_NV = 0x86F5
+ DSDT_MAG_NV = 0x86F6
+ DSDT_MAG_VIB_NV = 0x86F7
+ HILO16_NV = 0x86F8
+ SIGNED_HILO_NV = 0x86F9
+ SIGNED_HILO16_NV = 0x86FA
+ SIGNED_RGBA_NV = 0x86FB
+ SIGNED_RGBA8_NV = 0x86FC
+ SIGNED_RGB_NV = 0x86FE
+ SIGNED_RGB8_NV = 0x86FF
+ SIGNED_LUMINANCE_NV = 0x8701
+ SIGNED_LUMINANCE8_NV = 0x8702
+ SIGNED_LUMINANCE_ALPHA_NV = 0x8703
+ SIGNED_LUMINANCE8_ALPHA8_NV = 0x8704
+ SIGNED_ALPHA_NV = 0x8705
+ SIGNED_ALPHA8_NV = 0x8706
+ SIGNED_INTENSITY_NV = 0x8707
+ SIGNED_INTENSITY8_NV = 0x8708
+ DSDT8_NV = 0x8709
+ DSDT8_MAG8_NV = 0x870A
+ DSDT8_MAG8_INTENSITY8_NV = 0x870B
+ SIGNED_RGB_UNSIGNED_ALPHA_NV = 0x870C
+ SIGNED_RGB8_UNSIGNED_ALPHA8_NV = 0x870D
+ HI_SCALE_NV = 0x870E
+ LO_SCALE_NV = 0x870F
+ DS_SCALE_NV = 0x8710
+ DT_SCALE_NV = 0x8711
+ MAGNITUDE_SCALE_NV = 0x8712
+ VIBRANCE_SCALE_NV = 0x8713
+ HI_BIAS_NV = 0x8714
+ LO_BIAS_NV = 0x8715
+ DS_BIAS_NV = 0x8716
+ DT_BIAS_NV = 0x8717
+ MAGNITUDE_BIAS_NV = 0x8718
+ VIBRANCE_BIAS_NV = 0x8719
+ TEXTURE_BORDER_VALUES_NV = 0x871A
+ TEXTURE_HI_SIZE_NV = 0x871B
+ TEXTURE_LO_SIZE_NV = 0x871C
+ TEXTURE_DS_SIZE_NV = 0x871D
+ TEXTURE_DT_SIZE_NV = 0x871E
+ TEXTURE_MAG_SIZE_NV = 0x871F
+
+###############################################################################
+
+# Extension #231
+NV_texture_shader2 enum:
+ DOT_PRODUCT_TEXTURE_3D_NV = 0x86EF
+
+###############################################################################
+
+# Extension #232
+NV_vertex_array_range2 enum:
+ VERTEX_ARRAY_RANGE_WITHOUT_FLUSH_NV = 0x8533
+
+###############################################################################
+
+# Extension #233
+NV_vertex_program enum:
+ VERTEX_PROGRAM_NV = 0x8620
+ VERTEX_STATE_PROGRAM_NV = 0x8621
+ ATTRIB_ARRAY_SIZE_NV = 0x8623
+ ATTRIB_ARRAY_STRIDE_NV = 0x8624
+ ATTRIB_ARRAY_TYPE_NV = 0x8625
+ CURRENT_ATTRIB_NV = 0x8626
+ PROGRAM_LENGTH_NV = 0x8627
+ PROGRAM_STRING_NV = 0x8628
+ MODELVIEW_PROJECTION_NV = 0x8629
+ IDENTITY_NV = 0x862A
+ INVERSE_NV = 0x862B
+ TRANSPOSE_NV = 0x862C
+ INVERSE_TRANSPOSE_NV = 0x862D
+ MAX_TRACK_MATRIX_STACK_DEPTH_NV = 0x862E
+ MAX_TRACK_MATRICES_NV = 0x862F
+ MATRIX0_NV = 0x8630
+ MATRIX1_NV = 0x8631
+ MATRIX2_NV = 0x8632
+ MATRIX3_NV = 0x8633
+ MATRIX4_NV = 0x8634
+ MATRIX5_NV = 0x8635
+ MATRIX6_NV = 0x8636
+ MATRIX7_NV = 0x8637
+##################
+#
+# Reserved:
+#
+# MATRIX8_NV = 0x8638
+# MATRIX9_NV = 0x8639
+# MATRIX10_NV = 0x863A
+# MATRIX11_NV = 0x863B
+# MATRIX12_NV = 0x863C
+# MATRIX13_NV = 0x863D
+# MATRIX14_NV = 0x863E
+# MATRIX15_NV = 0x863F
+#
+###################
+ CURRENT_MATRIX_STACK_DEPTH_NV = 0x8640
+ CURRENT_MATRIX_NV = 0x8641
+ VERTEX_PROGRAM_POINT_SIZE_NV = 0x8642
+ VERTEX_PROGRAM_TWO_SIDE_NV = 0x8643
+ PROGRAM_PARAMETER_NV = 0x8644
+ ATTRIB_ARRAY_POINTER_NV = 0x8645
+ PROGRAM_TARGET_NV = 0x8646
+ PROGRAM_RESIDENT_NV = 0x8647
+ TRACK_MATRIX_NV = 0x8648
+ TRACK_MATRIX_TRANSFORM_NV = 0x8649
+ VERTEX_PROGRAM_BINDING_NV = 0x864A
+ PROGRAM_ERROR_POSITION_NV = 0x864B
+ VERTEX_ATTRIB_ARRAY0_NV = 0x8650
+ VERTEX_ATTRIB_ARRAY1_NV = 0x8651
+ VERTEX_ATTRIB_ARRAY2_NV = 0x8652
+ VERTEX_ATTRIB_ARRAY3_NV = 0x8653
+ VERTEX_ATTRIB_ARRAY4_NV = 0x8654
+ VERTEX_ATTRIB_ARRAY5_NV = 0x8655
+ VERTEX_ATTRIB_ARRAY6_NV = 0x8656
+ VERTEX_ATTRIB_ARRAY7_NV = 0x8657
+ VERTEX_ATTRIB_ARRAY8_NV = 0x8658
+ VERTEX_ATTRIB_ARRAY9_NV = 0x8659
+ VERTEX_ATTRIB_ARRAY10_NV = 0x865A
+ VERTEX_ATTRIB_ARRAY11_NV = 0x865B
+ VERTEX_ATTRIB_ARRAY12_NV = 0x865C
+ VERTEX_ATTRIB_ARRAY13_NV = 0x865D
+ VERTEX_ATTRIB_ARRAY14_NV = 0x865E
+ VERTEX_ATTRIB_ARRAY15_NV = 0x865F
+ MAP1_VERTEX_ATTRIB0_4_NV = 0x8660
+ MAP1_VERTEX_ATTRIB1_4_NV = 0x8661
+ MAP1_VERTEX_ATTRIB2_4_NV = 0x8662
+ MAP1_VERTEX_ATTRIB3_4_NV = 0x8663
+ MAP1_VERTEX_ATTRIB4_4_NV = 0x8664
+ MAP1_VERTEX_ATTRIB5_4_NV = 0x8665
+ MAP1_VERTEX_ATTRIB6_4_NV = 0x8666
+ MAP1_VERTEX_ATTRIB7_4_NV = 0x8667
+ MAP1_VERTEX_ATTRIB8_4_NV = 0x8668
+ MAP1_VERTEX_ATTRIB9_4_NV = 0x8669
+ MAP1_VERTEX_ATTRIB10_4_NV = 0x866A
+ MAP1_VERTEX_ATTRIB11_4_NV = 0x866B
+ MAP1_VERTEX_ATTRIB12_4_NV = 0x866C
+ MAP1_VERTEX_ATTRIB13_4_NV = 0x866D
+ MAP1_VERTEX_ATTRIB14_4_NV = 0x866E
+ MAP1_VERTEX_ATTRIB15_4_NV = 0x866F
+ MAP2_VERTEX_ATTRIB0_4_NV = 0x8670
+ MAP2_VERTEX_ATTRIB1_4_NV = 0x8671
+ MAP2_VERTEX_ATTRIB2_4_NV = 0x8672
+ MAP2_VERTEX_ATTRIB3_4_NV = 0x8673
+ MAP2_VERTEX_ATTRIB4_4_NV = 0x8674
+ MAP2_VERTEX_ATTRIB5_4_NV = 0x8675
+ MAP2_VERTEX_ATTRIB6_4_NV = 0x8676
+ MAP2_VERTEX_ATTRIB7_4_NV = 0x8677
+ MAP2_VERTEX_ATTRIB8_4_NV = 0x8678
+ MAP2_VERTEX_ATTRIB9_4_NV = 0x8679
+ MAP2_VERTEX_ATTRIB10_4_NV = 0x867A
+ MAP2_VERTEX_ATTRIB11_4_NV = 0x867B
+ MAP2_VERTEX_ATTRIB12_4_NV = 0x867C
+ MAP2_VERTEX_ATTRIB13_4_NV = 0x867D
+ MAP2_VERTEX_ATTRIB14_4_NV = 0x867E
+ MAP2_VERTEX_ATTRIB15_4_NV = 0x867F
+
+###############################################################################
+
+# Extension #235
+SGIX_texture_coordinate_clamp enum:
+ TEXTURE_MAX_CLAMP_S_SGIX = 0x8369
+ TEXTURE_MAX_CLAMP_T_SGIX = 0x836A
+ TEXTURE_MAX_CLAMP_R_SGIX = 0x836B
+
+###############################################################################
+
+# Extension #236
+SGIX_scalebias_hint enum:
+ SCALEBIAS_HINT_SGIX = 0x8322
+
+###############################################################################
+
+# Extension #237 - GLX_OML_swap_method
+# Extension #238 - GLX_OML_sync_control
+
+###############################################################################
+
+# Extension #239
+OML_interlace enum:
+ INTERLACE_OML = 0x8980
+ INTERLACE_READ_OML = 0x8981
+
+###############################################################################
+
+# Extension #240
+OML_subsample enum:
+ FORMAT_SUBSAMPLE_24_24_OML = 0x8982
+ FORMAT_SUBSAMPLE_244_244_OML = 0x8983
+
+###############################################################################
+
+# Extension #241
+OML_resample enum:
+ PACK_RESAMPLE_OML = 0x8984
+ UNPACK_RESAMPLE_OML = 0x8985
+ RESAMPLE_REPLICATE_OML = 0x8986
+ RESAMPLE_ZERO_FILL_OML = 0x8987
+ RESAMPLE_AVERAGE_OML = 0x8988
+ RESAMPLE_DECIMATE_OML = 0x8989
+
+###############################################################################
+
+# Extension #242 - WGL_OML_sync_control
+
+###############################################################################
+
+# Extension #243
+NV_copy_depth_to_color enum:
+ DEPTH_STENCIL_TO_RGBA_NV = 0x886E
+ DEPTH_STENCIL_TO_BGRA_NV = 0x886F
+
+###############################################################################
+
+# Extension #244
+ATI_envmap_bumpmap enum:
+ BUMP_ROT_MATRIX_ATI = 0x8775
+ BUMP_ROT_MATRIX_SIZE_ATI = 0x8776
+ BUMP_NUM_TEX_UNITS_ATI = 0x8777
+ BUMP_TEX_UNITS_ATI = 0x8778
+ DUDV_ATI = 0x8779
+ DU8DV8_ATI = 0x877A
+ BUMP_ENVMAP_ATI = 0x877B
+ BUMP_TARGET_ATI = 0x877C
+
+###############################################################################
+
+# Extension #245
+ATI_fragment_shader enum:
+ FRAGMENT_SHADER_ATI = 0x8920
+ REG_0_ATI = 0x8921
+ REG_1_ATI = 0x8922
+ REG_2_ATI = 0x8923
+ REG_3_ATI = 0x8924
+ REG_4_ATI = 0x8925
+ REG_5_ATI = 0x8926
+ REG_6_ATI = 0x8927
+ REG_7_ATI = 0x8928
+ REG_8_ATI = 0x8929
+ REG_9_ATI = 0x892A
+ REG_10_ATI = 0x892B
+ REG_11_ATI = 0x892C
+ REG_12_ATI = 0x892D
+ REG_13_ATI = 0x892E
+ REG_14_ATI = 0x892F
+ REG_15_ATI = 0x8930
+ REG_16_ATI = 0x8931
+ REG_17_ATI = 0x8932
+ REG_18_ATI = 0x8933
+ REG_19_ATI = 0x8934
+ REG_20_ATI = 0x8935
+ REG_21_ATI = 0x8936
+ REG_22_ATI = 0x8937
+ REG_23_ATI = 0x8938
+ REG_24_ATI = 0x8939
+ REG_25_ATI = 0x893A
+ REG_26_ATI = 0x893B
+ REG_27_ATI = 0x893C
+ REG_28_ATI = 0x893D
+ REG_29_ATI = 0x893E
+ REG_30_ATI = 0x893F
+ REG_31_ATI = 0x8940
+ CON_0_ATI = 0x8941
+ CON_1_ATI = 0x8942
+ CON_2_ATI = 0x8943
+ CON_3_ATI = 0x8944
+ CON_4_ATI = 0x8945
+ CON_5_ATI = 0x8946
+ CON_6_ATI = 0x8947
+ CON_7_ATI = 0x8948
+ CON_8_ATI = 0x8949
+ CON_9_ATI = 0x894A
+ CON_10_ATI = 0x894B
+ CON_11_ATI = 0x894C
+ CON_12_ATI = 0x894D
+ CON_13_ATI = 0x894E
+ CON_14_ATI = 0x894F
+ CON_15_ATI = 0x8950
+ CON_16_ATI = 0x8951
+ CON_17_ATI = 0x8952
+ CON_18_ATI = 0x8953
+ CON_19_ATI = 0x8954
+ CON_20_ATI = 0x8955
+ CON_21_ATI = 0x8956
+ CON_22_ATI = 0x8957
+ CON_23_ATI = 0x8958
+ CON_24_ATI = 0x8959
+ CON_25_ATI = 0x895A
+ CON_26_ATI = 0x895B
+ CON_27_ATI = 0x895C
+ CON_28_ATI = 0x895D
+ CON_29_ATI = 0x895E
+ CON_30_ATI = 0x895F
+ CON_31_ATI = 0x8960
+ MOV_ATI = 0x8961
+ ADD_ATI = 0x8963
+ MUL_ATI = 0x8964
+ SUB_ATI = 0x8965
+ DOT3_ATI = 0x8966
+ DOT4_ATI = 0x8967
+ MAD_ATI = 0x8968
+ LERP_ATI = 0x8969
+ CND_ATI = 0x896A
+ CND0_ATI = 0x896B
+ DOT2_ADD_ATI = 0x896C
+ SECONDARY_INTERPOLATOR_ATI = 0x896D
+ NUM_FRAGMENT_REGISTERS_ATI = 0x896E
+ NUM_FRAGMENT_CONSTANTS_ATI = 0x896F
+ NUM_PASSES_ATI = 0x8970
+ NUM_INSTRUCTIONS_PER_PASS_ATI = 0x8971
+ NUM_INSTRUCTIONS_TOTAL_ATI = 0x8972
+ NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI = 0x8973
+ NUM_LOOPBACK_COMPONENTS_ATI = 0x8974
+ COLOR_ALPHA_PAIRING_ATI = 0x8975
+ SWIZZLE_STR_ATI = 0x8976
+ SWIZZLE_STQ_ATI = 0x8977
+ SWIZZLE_STR_DR_ATI = 0x8978
+ SWIZZLE_STQ_DQ_ATI = 0x8979
+ SWIZZLE_STRQ_ATI = 0x897A
+ SWIZZLE_STRQ_DQ_ATI = 0x897B
+ RED_BIT_ATI = 0x00000001
+ GREEN_BIT_ATI = 0x00000002
+ BLUE_BIT_ATI = 0x00000004
+ 2X_BIT_ATI = 0x00000001
+ 4X_BIT_ATI = 0x00000002
+ 8X_BIT_ATI = 0x00000004
+ HALF_BIT_ATI = 0x00000008
+ QUARTER_BIT_ATI = 0x00000010
+ EIGHTH_BIT_ATI = 0x00000020
+ SATURATE_BIT_ATI = 0x00000040
+ 2X_BIT_ATI = 0x00000001
+ COMP_BIT_ATI = 0x00000002
+ NEGATE_BIT_ATI = 0x00000004
+ BIAS_BIT_ATI = 0x00000008
+
+###############################################################################
+
+# Extension #246
+ATI_pn_triangles enum:
+ PN_TRIANGLES_ATI = 0x87F0
+ MAX_PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F1
+ PN_TRIANGLES_POINT_MODE_ATI = 0x87F2
+ PN_TRIANGLES_NORMAL_MODE_ATI = 0x87F3
+ PN_TRIANGLES_TESSELATION_LEVEL_ATI = 0x87F4
+ PN_TRIANGLES_POINT_MODE_LINEAR_ATI = 0x87F5
+ PN_TRIANGLES_POINT_MODE_CUBIC_ATI = 0x87F6
+ PN_TRIANGLES_NORMAL_MODE_LINEAR_ATI = 0x87F7
+ PN_TRIANGLES_NORMAL_MODE_QUADRATIC_ATI = 0x87F8
+
+###############################################################################
+
+# Extension #247
+ATI_vertex_array_object enum:
+ STATIC_ATI = 0x8760
+ DYNAMIC_ATI = 0x8761
+ PRESERVE_ATI = 0x8762
+ DISCARD_ATI = 0x8763
+ OBJECT_BUFFER_SIZE_ATI = 0x8764
+ OBJECT_BUFFER_USAGE_ATI = 0x8765
+ ARRAY_OBJECT_BUFFER_ATI = 0x8766
+ ARRAY_OBJECT_OFFSET_ATI = 0x8767
+
+###############################################################################
+
+# Extension #248
+EXT_vertex_shader enum:
+ VERTEX_SHADER_EXT = 0x8780
+ VERTEX_SHADER_BINDING_EXT = 0x8781
+ OP_INDEX_EXT = 0x8782
+ OP_NEGATE_EXT = 0x8783
+ OP_DOT3_EXT = 0x8784
+ OP_DOT4_EXT = 0x8785
+ OP_MUL_EXT = 0x8786
+ OP_ADD_EXT = 0x8787
+ OP_MADD_EXT = 0x8788
+ OP_FRAC_EXT = 0x8789
+ OP_MAX_EXT = 0x878A
+ OP_MIN_EXT = 0x878B
+ OP_SET_GE_EXT = 0x878C
+ OP_SET_LT_EXT = 0x878D
+ OP_CLAMP_EXT = 0x878E
+ OP_FLOOR_EXT = 0x878F
+ OP_ROUND_EXT = 0x8790
+ OP_EXP_BASE_2_EXT = 0x8791
+ OP_LOG_BASE_2_EXT = 0x8792
+ OP_POWER_EXT = 0x8793
+ OP_RECIP_EXT = 0x8794
+ OP_RECIP_SQRT_EXT = 0x8795
+ OP_SUB_EXT = 0x8796
+ OP_CROSS_PRODUCT_EXT = 0x8797
+ OP_MULTIPLY_MATRIX_EXT = 0x8798
+ OP_MOV_EXT = 0x8799
+ OUTPUT_VERTEX_EXT = 0x879A
+ OUTPUT_COLOR0_EXT = 0x879B
+ OUTPUT_COLOR1_EXT = 0x879C
+ OUTPUT_TEXTURE_COORD0_EXT = 0x879D
+ OUTPUT_TEXTURE_COORD1_EXT = 0x879E
+ OUTPUT_TEXTURE_COORD2_EXT = 0x879F
+ OUTPUT_TEXTURE_COORD3_EXT = 0x87A0
+ OUTPUT_TEXTURE_COORD4_EXT = 0x87A1
+ OUTPUT_TEXTURE_COORD5_EXT = 0x87A2
+ OUTPUT_TEXTURE_COORD6_EXT = 0x87A3
+ OUTPUT_TEXTURE_COORD7_EXT = 0x87A4
+ OUTPUT_TEXTURE_COORD8_EXT = 0x87A5
+ OUTPUT_TEXTURE_COORD9_EXT = 0x87A6
+ OUTPUT_TEXTURE_COORD10_EXT = 0x87A7
+ OUTPUT_TEXTURE_COORD11_EXT = 0x87A8
+ OUTPUT_TEXTURE_COORD12_EXT = 0x87A9
+ OUTPUT_TEXTURE_COORD13_EXT = 0x87AA
+ OUTPUT_TEXTURE_COORD14_EXT = 0x87AB
+ OUTPUT_TEXTURE_COORD15_EXT = 0x87AC
+ OUTPUT_TEXTURE_COORD16_EXT = 0x87AD
+ OUTPUT_TEXTURE_COORD17_EXT = 0x87AE
+ OUTPUT_TEXTURE_COORD18_EXT = 0x87AF
+ OUTPUT_TEXTURE_COORD19_EXT = 0x87B0
+ OUTPUT_TEXTURE_COORD20_EXT = 0x87B1
+ OUTPUT_TEXTURE_COORD21_EXT = 0x87B2
+ OUTPUT_TEXTURE_COORD22_EXT = 0x87B3
+ OUTPUT_TEXTURE_COORD23_EXT = 0x87B4
+ OUTPUT_TEXTURE_COORD24_EXT = 0x87B5
+ OUTPUT_TEXTURE_COORD25_EXT = 0x87B6
+ OUTPUT_TEXTURE_COORD26_EXT = 0x87B7
+ OUTPUT_TEXTURE_COORD27_EXT = 0x87B8
+ OUTPUT_TEXTURE_COORD28_EXT = 0x87B9
+ OUTPUT_TEXTURE_COORD29_EXT = 0x87BA
+ OUTPUT_TEXTURE_COORD30_EXT = 0x87BB
+ OUTPUT_TEXTURE_COORD31_EXT = 0x87BC
+ OUTPUT_FOG_EXT = 0x87BD
+ SCALAR_EXT = 0x87BE
+ VECTOR_EXT = 0x87BF
+ MATRIX_EXT = 0x87C0
+ VARIANT_EXT = 0x87C1
+ INVARIANT_EXT = 0x87C2
+ LOCAL_CONSTANT_EXT = 0x87C3
+ LOCAL_EXT = 0x87C4
+ MAX_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87C5
+ MAX_VERTEX_SHADER_VARIANTS_EXT = 0x87C6
+ MAX_VERTEX_SHADER_INVARIANTS_EXT = 0x87C7
+ MAX_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87C8
+ MAX_VERTEX_SHADER_LOCALS_EXT = 0x87C9
+ MAX_OPTIMIZED_VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CA
+ MAX_OPTIMIZED_VERTEX_SHADER_VARIANTS_EXT = 0x87CB
+ MAX_OPTIMIZED_VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87CC
+ MAX_OPTIMIZED_VERTEX_SHADER_INVARIANTS_EXT = 0x87CD
+ MAX_OPTIMIZED_VERTEX_SHADER_LOCALS_EXT = 0x87CE
+ VERTEX_SHADER_INSTRUCTIONS_EXT = 0x87CF
+ VERTEX_SHADER_VARIANTS_EXT = 0x87D0
+ VERTEX_SHADER_INVARIANTS_EXT = 0x87D1
+ VERTEX_SHADER_LOCAL_CONSTANTS_EXT = 0x87D2
+ VERTEX_SHADER_LOCALS_EXT = 0x87D3
+ VERTEX_SHADER_OPTIMIZED_EXT = 0x87D4
+ X_EXT = 0x87D5
+ Y_EXT = 0x87D6
+ Z_EXT = 0x87D7
+ W_EXT = 0x87D8
+ NEGATIVE_X_EXT = 0x87D9
+ NEGATIVE_Y_EXT = 0x87DA
+ NEGATIVE_Z_EXT = 0x87DB
+ NEGATIVE_W_EXT = 0x87DC
+ ZERO_EXT = 0x87DD
+ ONE_EXT = 0x87DE
+ NEGATIVE_ONE_EXT = 0x87DF
+ NORMALIZED_RANGE_EXT = 0x87E0
+ FULL_RANGE_EXT = 0x87E1
+ CURRENT_VERTEX_EXT = 0x87E2
+ MVP_MATRIX_EXT = 0x87E3
+ VARIANT_VALUE_EXT = 0x87E4
+ VARIANT_DATATYPE_EXT = 0x87E5
+ VARIANT_ARRAY_STRIDE_EXT = 0x87E6
+ VARIANT_ARRAY_TYPE_EXT = 0x87E7
+ VARIANT_ARRAY_EXT = 0x87E8
+ VARIANT_ARRAY_POINTER_EXT = 0x87E9
+ INVARIANT_VALUE_EXT = 0x87EA
+ INVARIANT_DATATYPE_EXT = 0x87EB
+ LOCAL_CONSTANT_VALUE_EXT = 0x87EC
+ LOCAL_CONSTANT_DATATYPE_EXT = 0x87ED
+
+###############################################################################
+
+# Extension #249
+ATI_vertex_streams enum:
+ MAX_VERTEX_STREAMS_ATI = 0x876B
+ VERTEX_STREAM0_ATI = 0x876C
+ VERTEX_STREAM1_ATI = 0x876D
+ VERTEX_STREAM2_ATI = 0x876E
+ VERTEX_STREAM3_ATI = 0x876F
+ VERTEX_STREAM4_ATI = 0x8770
+ VERTEX_STREAM5_ATI = 0x8771
+ VERTEX_STREAM6_ATI = 0x8772
+ VERTEX_STREAM7_ATI = 0x8773
+ VERTEX_SOURCE_ATI = 0x8774
+
+###############################################################################
+
+# Extension #250 - WGL_I3D_digital_video_control
+# Extension #251 - WGL_I3D_gamma
+# Extension #252 - WGL_I3D_genlock
+# Extension #253 - WGL_I3D_image_buffer
+# Extension #254 - WGL_I3D_swap_frame_lock
+# Extension #255 - WGL_I3D_swap_frame_usage
+
+###############################################################################
+
+# Extension #256
+ATI_element_array enum:
+ ELEMENT_ARRAY_ATI = 0x8768
+ ELEMENT_ARRAY_TYPE_ATI = 0x8769
+ ELEMENT_ARRAY_POINTER_ATI = 0x876A
+
+###############################################################################
+
+# Extension #257
+SUN_mesh_array enum:
+ QUAD_MESH_SUN = 0x8614
+ TRIANGLE_MESH_SUN = 0x8615
+
+###############################################################################
+
+# Extension #258
+SUN_slice_accum enum:
+ SLICE_ACCUM_SUN = 0x85CC
+
+###############################################################################
+
+# Extension #259
+NV_multisample_filter_hint enum:
+ MULTISAMPLE_FILTER_HINT_NV = 0x8534
+
+###############################################################################
+
+# Extension #260
+NV_depth_clamp enum:
+ DEPTH_CLAMP_NV = 0x864F
+
+###############################################################################
+
+# Extension #261
+NV_occlusion_query enum:
+ PIXEL_COUNTER_BITS_NV = 0x8864
+ CURRENT_OCCLUSION_QUERY_ID_NV = 0x8865
+ PIXEL_COUNT_NV = 0x8866
+ PIXEL_COUNT_AVAILABLE_NV = 0x8867
+
+###############################################################################
+
+# Extension #262
+NV_point_sprite enum:
+ POINT_SPRITE_NV = 0x8861
+ COORD_REPLACE_NV = 0x8862
+ POINT_SPRITE_R_MODE_NV = 0x8863
+
+###############################################################################
+
+# Extension #263 - WGL_NV_render_depth_texture
+# Extension #264 - WGL_NV_render_texture_rectangle
+
+###############################################################################
+
+# Extension #265
+NV_texture_shader3 enum:
+ OFFSET_PROJECTIVE_TEXTURE_2D_NV = 0x8850
+ OFFSET_PROJECTIVE_TEXTURE_2D_SCALE_NV = 0x8851
+ OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8852
+ OFFSET_PROJECTIVE_TEXTURE_RECTANGLE_SCALE_NV = 0x8853
+ OFFSET_HILO_TEXTURE_2D_NV = 0x8854
+ OFFSET_HILO_TEXTURE_RECTANGLE_NV = 0x8855
+ OFFSET_HILO_PROJECTIVE_TEXTURE_2D_NV = 0x8856
+ OFFSET_HILO_PROJECTIVE_TEXTURE_RECTANGLE_NV = 0x8857
+ DEPENDENT_HILO_TEXTURE_2D_NV = 0x8858
+ DEPENDENT_RGB_TEXTURE_3D_NV = 0x8859
+ DEPENDENT_RGB_TEXTURE_CUBE_MAP_NV = 0x885A
+ DOT_PRODUCT_PASS_THROUGH_NV = 0x885B
+ DOT_PRODUCT_TEXTURE_1D_NV = 0x885C
+ DOT_PRODUCT_AFFINE_DEPTH_REPLACE_NV = 0x885D
+ HILO8_NV = 0x885E
+ SIGNED_HILO8_NV = 0x885F
+ FORCE_BLUE_TO_ONE_NV = 0x8860
+
+###############################################################################
+
+# No new tokens
+# Extension #266
+NV_vertex_program1_1 enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #267
+EXT_shadow_funcs enum:
+
+###############################################################################
+
+# Extension #268
+EXT_stencil_two_side enum:
+ STENCIL_TEST_TWO_SIDE_EXT = 0x8910
+ ACTIVE_STENCIL_FACE_EXT = 0x8911
+
+###############################################################################
+
+# Extension #269
+ATI_text_fragment_shader enum:
+ TEXT_FRAGMENT_SHADER_ATI = 0x8200
+
+###############################################################################
+
+# Extension #270
+APPLE_client_storage enum:
+ UNPACK_CLIENT_STORAGE_APPLE = 0x85B2
+
+###############################################################################
+
+# Extension #271
+# (extends ATI_element_array???)
+APPLE_element_array enum:
+ ELEMENT_ARRAY_APPLE = 0x8768
+ ELEMENT_ARRAY_TYPE_APPLE = 0x8769
+ ELEMENT_ARRAY_POINTER_APPLE = 0x876A
+
+###############################################################################
+
+# Extension #272
+# ??? BUFFER_OBJECT_APPLE appears to be part of the shipping extension,
+# but is not in the spec in the registry. Also appears in
+# APPLE_object_purgeable below.
+APPLE_fence enum:
+ DRAW_PIXELS_APPLE = 0x8A0A
+ FENCE_APPLE = 0x8A0B
+
+###############################################################################
+
+# Extension #273
+APPLE_vertex_array_object enum:
+ VERTEX_ARRAY_BINDING_APPLE = 0x85B5
+
+###############################################################################
+
+# Extension #274
+# (How does this interact with NV_vertex_array_range???)
+APPLE_vertex_array_range enum:
+ VERTEX_ARRAY_RANGE_APPLE = 0x851D
+ VERTEX_ARRAY_RANGE_LENGTH_APPLE = 0x851E
+ VERTEX_ARRAY_STORAGE_HINT_APPLE = 0x851F
+ VERTEX_ARRAY_RANGE_POINTER_APPLE = 0x8521
+ STORAGE_CACHED_APPLE = 0x85BE
+ STORAGE_SHARED_APPLE = 0x85BF
+
+###############################################################################
+
+# Extension #275
+APPLE_ycbcr_422 enum:
+ YCBCR_422_APPLE = 0x85B9
+ UNSIGNED_SHORT_8_8_APPLE = 0x85BA
+ UNSIGNED_SHORT_8_8_REV_APPLE = 0x85BB
+
+###############################################################################
+
+# Extension #276
+S3_s3tc enum:
+ RGB_S3TC = 0x83A0
+ RGB4_S3TC = 0x83A1
+ RGBA_S3TC = 0x83A2
+ RGBA4_S3TC = 0x83A3
+
+###############################################################################
+
+# Extension #277
+ATI_draw_buffers enum:
+ MAX_DRAW_BUFFERS_ATI = 0x8824
+ DRAW_BUFFER0_ATI = 0x8825
+ DRAW_BUFFER1_ATI = 0x8826
+ DRAW_BUFFER2_ATI = 0x8827
+ DRAW_BUFFER3_ATI = 0x8828
+ DRAW_BUFFER4_ATI = 0x8829
+ DRAW_BUFFER5_ATI = 0x882A
+ DRAW_BUFFER6_ATI = 0x882B
+ DRAW_BUFFER7_ATI = 0x882C
+ DRAW_BUFFER8_ATI = 0x882D
+ DRAW_BUFFER9_ATI = 0x882E
+ DRAW_BUFFER10_ATI = 0x882F
+ DRAW_BUFFER11_ATI = 0x8830
+ DRAW_BUFFER12_ATI = 0x8831
+ DRAW_BUFFER13_ATI = 0x8832
+ DRAW_BUFFER14_ATI = 0x8833
+ DRAW_BUFFER15_ATI = 0x8834
+
+###############################################################################
+
+# Extension #278
+# This is really a WGL extension, but if defined there are
+# some associated GL enumerants.
+ATI_pixel_format_float enum:
+ TYPE_RGBA_FLOAT_ATI = 0x8820
+ COLOR_CLEAR_UNCLAMPED_VALUE_ATI = 0x8835
+
+###############################################################################
+
+# Extension #279
+ATI_texture_env_combine3 enum:
+ MODULATE_ADD_ATI = 0x8744
+ MODULATE_SIGNED_ADD_ATI = 0x8745
+ MODULATE_SUBTRACT_ATI = 0x8746
+
+###############################################################################
+
+# Extension #280
+ATI_texture_float enum:
+ RGBA_FLOAT32_ATI = 0x8814
+ RGB_FLOAT32_ATI = 0x8815
+ ALPHA_FLOAT32_ATI = 0x8816
+ INTENSITY_FLOAT32_ATI = 0x8817
+ LUMINANCE_FLOAT32_ATI = 0x8818
+ LUMINANCE_ALPHA_FLOAT32_ATI = 0x8819
+ RGBA_FLOAT16_ATI = 0x881A
+ RGB_FLOAT16_ATI = 0x881B
+ ALPHA_FLOAT16_ATI = 0x881C
+ INTENSITY_FLOAT16_ATI = 0x881D
+ LUMINANCE_FLOAT16_ATI = 0x881E
+ LUMINANCE_ALPHA_FLOAT16_ATI = 0x881F
+
+###############################################################################
+
+# Extension #281 (also WGL_NV_float_buffer)
+NV_float_buffer enum:
+ FLOAT_R_NV = 0x8880
+ FLOAT_RG_NV = 0x8881
+ FLOAT_RGB_NV = 0x8882
+ FLOAT_RGBA_NV = 0x8883
+ FLOAT_R16_NV = 0x8884
+ FLOAT_R32_NV = 0x8885
+ FLOAT_RG16_NV = 0x8886
+ FLOAT_RG32_NV = 0x8887
+ FLOAT_RGB16_NV = 0x8888
+ FLOAT_RGB32_NV = 0x8889
+ FLOAT_RGBA16_NV = 0x888A
+ FLOAT_RGBA32_NV = 0x888B
+ TEXTURE_FLOAT_COMPONENTS_NV = 0x888C
+ FLOAT_CLEAR_COLOR_VALUE_NV = 0x888D
+ FLOAT_RGBA_MODE_NV = 0x888E
+
+###############################################################################
+
+# Extension #282
+NV_fragment_program enum:
+ MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV = 0x8868
+ FRAGMENT_PROGRAM_NV = 0x8870
+ MAX_TEXTURE_COORDS_NV = 0x8871
+ MAX_TEXTURE_IMAGE_UNITS_NV = 0x8872
+ FRAGMENT_PROGRAM_BINDING_NV = 0x8873
+ PROGRAM_ERROR_STRING_NV = 0x8874
+
+###############################################################################
+
+# Extension #283
+NV_half_float enum:
+ HALF_FLOAT_NV = 0x140B
+
+###############################################################################
+
+# Extension #284
+NV_pixel_data_range enum:
+ WRITE_PIXEL_DATA_RANGE_NV = 0x8878
+ READ_PIXEL_DATA_RANGE_NV = 0x8879
+ WRITE_PIXEL_DATA_RANGE_LENGTH_NV = 0x887A
+ READ_PIXEL_DATA_RANGE_LENGTH_NV = 0x887B
+ WRITE_PIXEL_DATA_RANGE_POINTER_NV = 0x887C
+ READ_PIXEL_DATA_RANGE_POINTER_NV = 0x887D
+
+###############################################################################
+
+# Extension #285
+NV_primitive_restart enum:
+ PRIMITIVE_RESTART_NV = 0x8558
+ PRIMITIVE_RESTART_INDEX_NV = 0x8559
+
+###############################################################################
+
+# Extension #286
+NV_texture_expand_normal enum:
+ TEXTURE_UNSIGNED_REMAP_MODE_NV = 0x888F
+
+###############################################################################
+
+# No new tokens
+# Extension #287
+NV_vertex_program2 enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #288
+ATI_map_object_buffer enum:
+
+###############################################################################
+
+# Extension #289
+ATI_separate_stencil enum:
+ STENCIL_BACK_FUNC_ATI = 0x8800
+ STENCIL_BACK_FAIL_ATI = 0x8801
+ STENCIL_BACK_PASS_DEPTH_FAIL_ATI = 0x8802
+ STENCIL_BACK_PASS_DEPTH_PASS_ATI = 0x8803
+
+###############################################################################
+
+# No new tokens
+# Extension #290
+ATI_vertex_attrib_array_object enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #291 - OpenGL ES only, not in glext.h
+# OES_byte_coordinates enum:
+
+###############################################################################
+
+# Extension #292 - OpenGL ES only, not in glext.h
+# OES_fixed_point enum:
+# FIXED_OES = 0x140C
+
+###############################################################################
+
+# No new tokens
+# Extension #293 - OpenGL ES only, not in glext.h
+# OES_single_precision enum:
+
+###############################################################################
+
+# Extension #294 - OpenGL ES only, not in glext.h
+# OES_compressed_paletted_texture enum:
+# PALETTE4_RGB8_OES = 0x8B90
+# PALETTE4_RGBA8_OES = 0x8B91
+# PALETTE4_R5_G6_B5_OES = 0x8B92
+# PALETTE4_RGBA4_OES = 0x8B93
+# PALETTE4_RGB5_A1_OES = 0x8B94
+# PALETTE8_RGB8_OES = 0x8B95
+# PALETTE8_RGBA8_OES = 0x8B96
+# PALETTE8_R5_G6_B5_OES = 0x8B97
+# PALETTE8_RGBA4_OES = 0x8B98
+# PALETTE8_RGB5_A1_OES = 0x8B99
+
+###############################################################################
+
+# Extension #295 - This is an OpenGL ES extension, but also implemented in Mesa
+OES_read_format enum:
+ IMPLEMENTATION_COLOR_READ_TYPE_OES = 0x8B9A
+ IMPLEMENTATION_COLOR_READ_FORMAT_OES = 0x8B9B
+
+###############################################################################
+
+# No new tokens
+# Extension #296 - OpenGL ES only, not in glext.h
+# OES_query_matrix enum:
+
+###############################################################################
+
+# Extension #297
+EXT_depth_bounds_test enum:
+ DEPTH_BOUNDS_TEST_EXT = 0x8890
+ DEPTH_BOUNDS_EXT = 0x8891
+
+###############################################################################
+
+# Extension #298
+EXT_texture_mirror_clamp enum:
+ MIRROR_CLAMP_EXT = 0x8742
+ MIRROR_CLAMP_TO_EDGE_EXT = 0x8743
+ MIRROR_CLAMP_TO_BORDER_EXT = 0x8912
+
+###############################################################################
+
+# Extension #299
+EXT_blend_equation_separate enum:
+ BLEND_EQUATION_RGB_EXT = 0x8009 # alias GL_BLEND_EQUATION_EXT
+ BLEND_EQUATION_ALPHA_EXT = 0x883D
+
+###############################################################################
+
+# Extension #300
+MESA_pack_invert enum:
+ PACK_INVERT_MESA = 0x8758
+
+###############################################################################
+
+# Extension #301
+MESA_ycbcr_texture enum:
+ UNSIGNED_SHORT_8_8_MESA = 0x85BA
+ UNSIGNED_SHORT_8_8_REV_MESA = 0x85BB
+ YCBCR_MESA = 0x8757
+
+###############################################################################
+
+# Extension #302
+EXT_pixel_buffer_object enum:
+ PIXEL_PACK_BUFFER_EXT = 0x88EB
+ PIXEL_UNPACK_BUFFER_EXT = 0x88EC
+ PIXEL_PACK_BUFFER_BINDING_EXT = 0x88ED
+ PIXEL_UNPACK_BUFFER_BINDING_EXT = 0x88EF
+
+###############################################################################
+
+# No new tokens
+# Extension #303
+NV_fragment_program_option enum:
+
+###############################################################################
+
+# Extension #304
+NV_fragment_program2 enum:
+ MAX_PROGRAM_EXEC_INSTRUCTIONS_NV = 0x88F4
+ MAX_PROGRAM_CALL_DEPTH_NV = 0x88F5
+ MAX_PROGRAM_IF_DEPTH_NV = 0x88F6
+ MAX_PROGRAM_LOOP_DEPTH_NV = 0x88F7
+ MAX_PROGRAM_LOOP_COUNT_NV = 0x88F8
+
+###############################################################################
+
+# Extension #305
+NV_vertex_program2_option enum:
+ use NV_fragment_program2 MAX_PROGRAM_EXEC_INSTRUCTIONS_NV
+ use NV_fragment_program2 MAX_PROGRAM_CALL_DEPTH_NV
+
+###############################################################################
+
+# Extension #306
+NV_vertex_program3 enum:
+ use ARB_vertex_shader MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB
+
+###############################################################################
+
+# Extension #307 - GLX_SGIX_hyperpipe
+# Extension #308 - GLX_MESA_agp_offset
+
+# Extension #309 - GL_EXT_texture_compression_dxt1 (OpenGL ES only, subset of _s3tc version)
+# use EXT_texture_compression_s3tc COMPRESSED_RGB_S3TC_DXT1_EXT
+# use EXT_texture_compression_s3tc COMPRESSED_RGBA_S3TC_DXT1_EXT
+
+###############################################################################
+
+# Extension #310
+EXT_framebuffer_object enum:
+ INVALID_FRAMEBUFFER_OPERATION_EXT = 0x0506
+ MAX_RENDERBUFFER_SIZE_EXT = 0x84E8
+ FRAMEBUFFER_BINDING_EXT = 0x8CA6
+ RENDERBUFFER_BINDING_EXT = 0x8CA7
+ FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT = 0x8CD0
+ FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT = 0x8CD1
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT = 0x8CD2
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT = 0x8CD3
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT = 0x8CD4
+ FRAMEBUFFER_COMPLETE_EXT = 0x8CD5
+ FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT = 0x8CD6
+ FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT = 0x8CD7
+## Removed 2005/09/26 in revision #117 of the extension:
+## FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT = 0x8CD8
+ FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT = 0x8CD9
+ FRAMEBUFFER_INCOMPLETE_FORMATS_EXT = 0x8CDA
+ FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT = 0x8CDB
+ FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT = 0x8CDC
+ FRAMEBUFFER_UNSUPPORTED_EXT = 0x8CDD
+## Removed 2005/05/31 in revision #113 of the extension:
+## FRAMEBUFFER_STATUS_ERROR_EXT = 0x8CDE
+ MAX_COLOR_ATTACHMENTS_EXT = 0x8CDF
+ COLOR_ATTACHMENT0_EXT = 0x8CE0
+ COLOR_ATTACHMENT1_EXT = 0x8CE1
+ COLOR_ATTACHMENT2_EXT = 0x8CE2
+ COLOR_ATTACHMENT3_EXT = 0x8CE3
+ COLOR_ATTACHMENT4_EXT = 0x8CE4
+ COLOR_ATTACHMENT5_EXT = 0x8CE5
+ COLOR_ATTACHMENT6_EXT = 0x8CE6
+ COLOR_ATTACHMENT7_EXT = 0x8CE7
+ COLOR_ATTACHMENT8_EXT = 0x8CE8
+ COLOR_ATTACHMENT9_EXT = 0x8CE9
+ COLOR_ATTACHMENT10_EXT = 0x8CEA
+ COLOR_ATTACHMENT11_EXT = 0x8CEB
+ COLOR_ATTACHMENT12_EXT = 0x8CEC
+ COLOR_ATTACHMENT13_EXT = 0x8CED
+ COLOR_ATTACHMENT14_EXT = 0x8CEE
+ COLOR_ATTACHMENT15_EXT = 0x8CEF
+ DEPTH_ATTACHMENT_EXT = 0x8D00
+ STENCIL_ATTACHMENT_EXT = 0x8D20
+ FRAMEBUFFER_EXT = 0x8D40
+ RENDERBUFFER_EXT = 0x8D41
+ RENDERBUFFER_WIDTH_EXT = 0x8D42
+ RENDERBUFFER_HEIGHT_EXT = 0x8D43
+ RENDERBUFFER_INTERNAL_FORMAT_EXT = 0x8D44
+# removed STENCIL_INDEX_EXT = 0x8D45 in rev. #114 of the spec
+ STENCIL_INDEX1_EXT = 0x8D46
+ STENCIL_INDEX4_EXT = 0x8D47
+ STENCIL_INDEX8_EXT = 0x8D48
+ STENCIL_INDEX16_EXT = 0x8D49
+ RENDERBUFFER_RED_SIZE_EXT = 0x8D50
+ RENDERBUFFER_GREEN_SIZE_EXT = 0x8D51
+ RENDERBUFFER_BLUE_SIZE_EXT = 0x8D52
+ RENDERBUFFER_ALPHA_SIZE_EXT = 0x8D53
+ RENDERBUFFER_DEPTH_SIZE_EXT = 0x8D54
+ RENDERBUFFER_STENCIL_SIZE_EXT = 0x8D55
+
+###############################################################################
+
+# No new tokens
+# Extension #311
+GREMEDY_string_marker enum:
+
+###############################################################################
+
+# Extension #312
+EXT_packed_depth_stencil enum:
+ DEPTH_STENCIL_EXT = 0x84F9
+ UNSIGNED_INT_24_8_EXT = 0x84FA
+ DEPTH24_STENCIL8_EXT = 0x88F0
+ TEXTURE_STENCIL_SIZE_EXT = 0x88F1
+
+###############################################################################
+
+# Extension #313 - WGL_3DL_stereo_control
+
+###############################################################################
+
+# Extension #314
+EXT_stencil_clear_tag enum:
+ STENCIL_TAG_BITS_EXT = 0x88F2
+ STENCIL_CLEAR_TAG_VALUE_EXT = 0x88F3
+
+###############################################################################
+
+# Extension #315
+EXT_texture_sRGB enum:
+ SRGB_EXT = 0x8C40
+ SRGB8_EXT = 0x8C41
+ SRGB_ALPHA_EXT = 0x8C42
+ SRGB8_ALPHA8_EXT = 0x8C43
+ SLUMINANCE_ALPHA_EXT = 0x8C44
+ SLUMINANCE8_ALPHA8_EXT = 0x8C45
+ SLUMINANCE_EXT = 0x8C46
+ SLUMINANCE8_EXT = 0x8C47
+ COMPRESSED_SRGB_EXT = 0x8C48
+ COMPRESSED_SRGB_ALPHA_EXT = 0x8C49
+ COMPRESSED_SLUMINANCE_EXT = 0x8C4A
+ COMPRESSED_SLUMINANCE_ALPHA_EXT = 0x8C4B
+ COMPRESSED_SRGB_S3TC_DXT1_EXT = 0x8C4C
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT = 0x8C4D
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT = 0x8C4E
+ COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT = 0x8C4F
+
+###############################################################################
+
+# Extension #316
+EXT_framebuffer_blit enum:
+ READ_FRAMEBUFFER_EXT = 0x8CA8
+ DRAW_FRAMEBUFFER_EXT = 0x8CA9
+ DRAW_FRAMEBUFFER_BINDING_EXT = GL_FRAMEBUFFER_BINDING_EXT
+ READ_FRAMEBUFFER_BINDING_EXT = 0x8CAA
+
+###############################################################################
+
+# Extension #317
+EXT_framebuffer_multisample enum:
+ RENDERBUFFER_SAMPLES_EXT = 0x8CAB
+ FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT = 0x8D56
+ MAX_SAMPLES_EXT = 0x8D57
+
+###############################################################################
+
+# Extension #318
+MESAX_texture_stack enum:
+ TEXTURE_1D_STACK_MESAX = 0x8759
+ TEXTURE_2D_STACK_MESAX = 0x875A
+ PROXY_TEXTURE_1D_STACK_MESAX = 0x875B
+ PROXY_TEXTURE_2D_STACK_MESAX = 0x875C
+ TEXTURE_1D_STACK_BINDING_MESAX = 0x875D
+ TEXTURE_2D_STACK_BINDING_MESAX = 0x875E
+
+###############################################################################
+
+# Extension #319
+EXT_timer_query enum:
+ TIME_ELAPSED_EXT = 0x88BF
+
+###############################################################################
+
+# No new tokens
+# Extension #320
+EXT_gpu_program_parameters enum:
+
+###############################################################################
+
+# Extension #321
+APPLE_flush_buffer_range enum:
+ BUFFER_SERIALIZED_MODIFY_APPLE = 0x8A12
+ BUFFER_FLUSHING_UNMAP_APPLE = 0x8A13
+
+###############################################################################
+
+# Extension #322
+NV_gpu_program4 enum:
+ MIN_PROGRAM_TEXEL_OFFSET_NV = 0x8904
+ MAX_PROGRAM_TEXEL_OFFSET_NV = 0x8905
+ PROGRAM_ATTRIB_COMPONENTS_NV = 0x8906
+ PROGRAM_RESULT_COMPONENTS_NV = 0x8907
+ MAX_PROGRAM_ATTRIB_COMPONENTS_NV = 0x8908
+ MAX_PROGRAM_RESULT_COMPONENTS_NV = 0x8909
+ MAX_PROGRAM_GENERIC_ATTRIBS_NV = 0x8DA5
+ MAX_PROGRAM_GENERIC_RESULTS_NV = 0x8DA6
+
+###############################################################################
+
+# Extension #323
+NV_geometry_program4 enum:
+ LINES_ADJACENCY_EXT = 0x000A
+ LINE_STRIP_ADJACENCY_EXT = 0x000B
+ TRIANGLES_ADJACENCY_EXT = 0x000C
+ TRIANGLE_STRIP_ADJACENCY_EXT = 0x000D
+ GEOMETRY_PROGRAM_NV = 0x8C26
+ MAX_PROGRAM_OUTPUT_VERTICES_NV = 0x8C27
+ MAX_PROGRAM_TOTAL_OUTPUT_COMPONENTS_NV = 0x8C28
+ GEOMETRY_VERTICES_OUT_EXT = 0x8DDA
+ GEOMETRY_INPUT_TYPE_EXT = 0x8DDB
+ GEOMETRY_OUTPUT_TYPE_EXT = 0x8DDC
+ MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT = 0x8C29
+ FRAMEBUFFER_ATTACHMENT_LAYERED_EXT = 0x8DA7
+ FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT = 0x8DA8
+ FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT = 0x8DA9
+ FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT = 0x8CD4
+ PROGRAM_POINT_SIZE_EXT = 0x8642
+
+###############################################################################
+
+# Extension #324
+EXT_geometry_shader4 enum:
+ GEOMETRY_SHADER_EXT = 0x8DD9
+ use NV_geometry_program4 GEOMETRY_VERTICES_OUT_EXT
+ use NV_geometry_program4 GEOMETRY_INPUT_TYPE_EXT
+ use NV_geometry_program4 GEOMETRY_OUTPUT_TYPE_EXT
+ use NV_geometry_program4 MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT
+ MAX_GEOMETRY_VARYING_COMPONENTS_EXT = 0x8DDD
+ MAX_VERTEX_VARYING_COMPONENTS_EXT = 0x8DDE
+ MAX_VARYING_COMPONENTS_EXT = 0x8B4B
+ MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT = 0x8DDF
+ MAX_GEOMETRY_OUTPUT_VERTICES_EXT = 0x8DE0
+ MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT = 0x8DE1
+ use NV_geometry_program4 LINES_ADJACENCY_EXT
+ use NV_geometry_program4 LINE_STRIP_ADJACENCY_EXT
+ use NV_geometry_program4 TRIANGLES_ADJACENCY_EXT
+ use NV_geometry_program4 TRIANGLE_STRIP_ADJACENCY_EXT
+ use NV_geometry_program4 FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT
+ use NV_geometry_program4 FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_EXT
+ use NV_geometry_program4 FRAMEBUFFER_ATTACHMENT_LAYERED_EXT
+ use NV_geometry_program4 FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT
+ use NV_geometry_program4 PROGRAM_POINT_SIZE_EXT
+
+###############################################################################
+
+# Extension #325
+NV_vertex_program4 enum:
+ VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x88FD
+
+###############################################################################
+
+# Extension #326
+EXT_gpu_shader4 enum:
+ SAMPLER_1D_ARRAY_EXT = 0x8DC0
+ SAMPLER_2D_ARRAY_EXT = 0x8DC1
+ SAMPLER_BUFFER_EXT = 0x8DC2
+ SAMPLER_1D_ARRAY_SHADOW_EXT = 0x8DC3
+ SAMPLER_2D_ARRAY_SHADOW_EXT = 0x8DC4
+ SAMPLER_CUBE_SHADOW_EXT = 0x8DC5
+ UNSIGNED_INT_VEC2_EXT = 0x8DC6
+ UNSIGNED_INT_VEC3_EXT = 0x8DC7
+ UNSIGNED_INT_VEC4_EXT = 0x8DC8
+ INT_SAMPLER_1D_EXT = 0x8DC9
+ INT_SAMPLER_2D_EXT = 0x8DCA
+ INT_SAMPLER_3D_EXT = 0x8DCB
+ INT_SAMPLER_CUBE_EXT = 0x8DCC
+ INT_SAMPLER_2D_RECT_EXT = 0x8DCD
+ INT_SAMPLER_1D_ARRAY_EXT = 0x8DCE
+ INT_SAMPLER_2D_ARRAY_EXT = 0x8DCF
+ INT_SAMPLER_BUFFER_EXT = 0x8DD0
+ UNSIGNED_INT_SAMPLER_1D_EXT = 0x8DD1
+ UNSIGNED_INT_SAMPLER_2D_EXT = 0x8DD2
+ UNSIGNED_INT_SAMPLER_3D_EXT = 0x8DD3
+ UNSIGNED_INT_SAMPLER_CUBE_EXT = 0x8DD4
+ UNSIGNED_INT_SAMPLER_2D_RECT_EXT = 0x8DD5
+ UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT = 0x8DD6
+ UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT = 0x8DD7
+ UNSIGNED_INT_SAMPLER_BUFFER_EXT = 0x8DD8
+
+###############################################################################
+
+# No new tokens
+# Extension #327
+EXT_draw_instanced enum:
+
+###############################################################################
+
+# Extension #328
+EXT_packed_float enum:
+ R11F_G11F_B10F_EXT = 0x8C3A
+ UNSIGNED_INT_10F_11F_11F_REV_EXT = 0x8C3B
+ RGBA_SIGNED_COMPONENTS_EXT = 0x8C3C
+
+###############################################################################
+
+# Extension #329
+EXT_texture_array enum:
+ TEXTURE_1D_ARRAY_EXT = 0x8C18
+ PROXY_TEXTURE_1D_ARRAY_EXT = 0x8C19
+ TEXTURE_2D_ARRAY_EXT = 0x8C1A
+ PROXY_TEXTURE_2D_ARRAY_EXT = 0x8C1B
+ TEXTURE_BINDING_1D_ARRAY_EXT = 0x8C1C
+ TEXTURE_BINDING_2D_ARRAY_EXT = 0x8C1D
+ MAX_ARRAY_TEXTURE_LAYERS_EXT = 0x88FF
+ COMPARE_REF_DEPTH_TO_TEXTURE_EXT = 0x884E
+ use NV_geometry_program4 FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT
+
+###############################################################################
+
+# Extension #330
+EXT_texture_buffer_object enum:
+ TEXTURE_BUFFER_EXT = 0x8C2A
+ MAX_TEXTURE_BUFFER_SIZE_EXT = 0x8C2B
+ TEXTURE_BINDING_BUFFER_EXT = 0x8C2C
+ TEXTURE_BUFFER_DATA_STORE_BINDING_EXT = 0x8C2D
+ TEXTURE_BUFFER_FORMAT_EXT = 0x8C2E
+
+###############################################################################
+
+# Extension #331
+EXT_texture_compression_latc enum:
+ COMPRESSED_LUMINANCE_LATC1_EXT = 0x8C70
+ COMPRESSED_SIGNED_LUMINANCE_LATC1_EXT = 0x8C71
+ COMPRESSED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C72
+ COMPRESSED_SIGNED_LUMINANCE_ALPHA_LATC2_EXT = 0x8C73
+
+###############################################################################
+
+# Extension #332
+EXT_texture_compression_rgtc enum:
+ COMPRESSED_RED_RGTC1_EXT = 0x8DBB
+ COMPRESSED_SIGNED_RED_RGTC1_EXT = 0x8DBC
+ COMPRESSED_RED_GREEN_RGTC2_EXT = 0x8DBD
+ COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT = 0x8DBE
+
+###############################################################################
+
+# Extension #333
+EXT_texture_shared_exponent enum:
+ RGB9_E5_EXT = 0x8C3D
+ UNSIGNED_INT_5_9_9_9_REV_EXT = 0x8C3E
+ TEXTURE_SHARED_SIZE_EXT = 0x8C3F
+
+###############################################################################
+
+# Extension #334
+NV_depth_buffer_float enum:
+ DEPTH_COMPONENT32F_NV = 0x8DAB
+ DEPTH32F_STENCIL8_NV = 0x8DAC
+ FLOAT_32_UNSIGNED_INT_24_8_REV_NV = 0x8DAD
+ DEPTH_BUFFER_FLOAT_MODE_NV = 0x8DAF
+
+###############################################################################
+
+# No new tokens
+# Extension #335
+NV_fragment_program4 enum:
+
+###############################################################################
+
+# Extension #336
+NV_framebuffer_multisample_coverage enum:
+ RENDERBUFFER_COVERAGE_SAMPLES_NV = 0x8CAB
+ RENDERBUFFER_COLOR_SAMPLES_NV = 0x8E10
+ MAX_MULTISAMPLE_COVERAGE_MODES_NV = 0x8E11
+ MULTISAMPLE_COVERAGE_MODES_NV = 0x8E12
+
+###############################################################################
+
+# Extension #337
+# ??? Also WGL/GLX extensions ???
+EXT_framebuffer_sRGB enum:
+ FRAMEBUFFER_SRGB_EXT = 0x8DB9
+ FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x8DBA
+
+###############################################################################
+
+# No new tokens
+# Extension #338
+NV_geometry_shader4 enum:
+
+###############################################################################
+
+# Extension #339
+NV_parameter_buffer_object enum:
+ MAX_PROGRAM_PARAMETER_BUFFER_BINDINGS_NV = 0x8DA0
+ MAX_PROGRAM_PARAMETER_BUFFER_SIZE_NV = 0x8DA1
+ VERTEX_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA2
+ GEOMETRY_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA3
+ FRAGMENT_PROGRAM_PARAMETER_BUFFER_NV = 0x8DA4
+
+###############################################################################
+
+# No new tokens
+# Extension #340
+EXT_draw_buffers2 enum:
+
+###############################################################################
+
+# Extension #341
+NV_transform_feedback enum:
+ BACK_PRIMARY_COLOR_NV = 0x8C77
+ BACK_SECONDARY_COLOR_NV = 0x8C78
+ TEXTURE_COORD_NV = 0x8C79
+ CLIP_DISTANCE_NV = 0x8C7A
+ VERTEX_ID_NV = 0x8C7B
+ PRIMITIVE_ID_NV = 0x8C7C
+ GENERIC_ATTRIB_NV = 0x8C7D
+ TRANSFORM_FEEDBACK_ATTRIBS_NV = 0x8C7E
+ TRANSFORM_FEEDBACK_BUFFER_MODE_NV = 0x8C7F
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_NV = 0x8C80
+ ACTIVE_VARYINGS_NV = 0x8C81
+ ACTIVE_VARYING_MAX_LENGTH_NV = 0x8C82
+ TRANSFORM_FEEDBACK_VARYINGS_NV = 0x8C83
+ TRANSFORM_FEEDBACK_BUFFER_START_NV = 0x8C84
+ TRANSFORM_FEEDBACK_BUFFER_SIZE_NV = 0x8C85
+ TRANSFORM_FEEDBACK_RECORD_NV = 0x8C86
+ PRIMITIVES_GENERATED_NV = 0x8C87
+ TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_NV = 0x8C88
+ RASTERIZER_DISCARD_NV = 0x8C89
+ MAX_TRANSFORM_FEEDBACK_INTERLEAVED_ATTRIBS_NV = 0x8C8A
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_NV = 0x8C8B
+ INTERLEAVED_ATTRIBS_NV = 0x8C8C
+ SEPARATE_ATTRIBS_NV = 0x8C8D
+ TRANSFORM_FEEDBACK_BUFFER_NV = 0x8C8E
+ TRANSFORM_FEEDBACK_BUFFER_BINDING_NV = 0x8C8F
+
+###############################################################################
+
+# Extension #342
+EXT_bindable_uniform enum:
+ MAX_VERTEX_BINDABLE_UNIFORMS_EXT = 0x8DE2
+ MAX_FRAGMENT_BINDABLE_UNIFORMS_EXT = 0x8DE3
+ MAX_GEOMETRY_BINDABLE_UNIFORMS_EXT = 0x8DE4
+ MAX_BINDABLE_UNIFORM_SIZE_EXT = 0x8DED
+ UNIFORM_BUFFER_EXT = 0x8DEE
+ UNIFORM_BUFFER_BINDING_EXT = 0x8DEF
+
+###############################################################################
+
+# Extension #343
+EXT_texture_integer enum:
+ RGBA32UI_EXT = 0x8D70
+ RGB32UI_EXT = 0x8D71
+ ALPHA32UI_EXT = 0x8D72
+ INTENSITY32UI_EXT = 0x8D73
+ LUMINANCE32UI_EXT = 0x8D74
+ LUMINANCE_ALPHA32UI_EXT = 0x8D75
+ RGBA16UI_EXT = 0x8D76
+ RGB16UI_EXT = 0x8D77
+ ALPHA16UI_EXT = 0x8D78
+ INTENSITY16UI_EXT = 0x8D79
+ LUMINANCE16UI_EXT = 0x8D7A
+ LUMINANCE_ALPHA16UI_EXT = 0x8D7B
+ RGBA8UI_EXT = 0x8D7C
+ RGB8UI_EXT = 0x8D7D
+ ALPHA8UI_EXT = 0x8D7E
+ INTENSITY8UI_EXT = 0x8D7F
+ LUMINANCE8UI_EXT = 0x8D80
+ LUMINANCE_ALPHA8UI_EXT = 0x8D81
+ RGBA32I_EXT = 0x8D82
+ RGB32I_EXT = 0x8D83
+ ALPHA32I_EXT = 0x8D84
+ INTENSITY32I_EXT = 0x8D85
+ LUMINANCE32I_EXT = 0x8D86
+ LUMINANCE_ALPHA32I_EXT = 0x8D87
+ RGBA16I_EXT = 0x8D88
+ RGB16I_EXT = 0x8D89
+ ALPHA16I_EXT = 0x8D8A
+ INTENSITY16I_EXT = 0x8D8B
+ LUMINANCE16I_EXT = 0x8D8C
+ LUMINANCE_ALPHA16I_EXT = 0x8D8D
+ RGBA8I_EXT = 0x8D8E
+ RGB8I_EXT = 0x8D8F
+ ALPHA8I_EXT = 0x8D90
+ INTENSITY8I_EXT = 0x8D91
+ LUMINANCE8I_EXT = 0x8D92
+ LUMINANCE_ALPHA8I_EXT = 0x8D93
+ RED_INTEGER_EXT = 0x8D94
+ GREEN_INTEGER_EXT = 0x8D95
+ BLUE_INTEGER_EXT = 0x8D96
+ ALPHA_INTEGER_EXT = 0x8D97
+ RGB_INTEGER_EXT = 0x8D98
+ RGBA_INTEGER_EXT = 0x8D99
+ BGR_INTEGER_EXT = 0x8D9A
+ BGRA_INTEGER_EXT = 0x8D9B
+ LUMINANCE_INTEGER_EXT = 0x8D9C
+ LUMINANCE_ALPHA_INTEGER_EXT = 0x8D9D
+ RGBA_INTEGER_MODE_EXT = 0x8D9E
+
+###############################################################################
+
+# Extension #344 - GLX_EXT_texture_from_pixmap
+
+###############################################################################
+
+# No new tokens
+# Extension #345
+GREMEDY_frame_terminator enum:
+
+###############################################################################
+
+# Extension #346
+NV_conditional_render enum:
+ QUERY_WAIT_NV = 0x8E13
+ QUERY_NO_WAIT_NV = 0x8E14
+ QUERY_BY_REGION_WAIT_NV = 0x8E15
+ QUERY_BY_REGION_NO_WAIT_NV = 0x8E16
+
+###############################################################################
+
+# Extension #347
+NV_present_video enum:
+ FRAME_NV = 0x8E26
+ FIELDS_NV = 0x8E27
+ CURRENT_TIME_NV = 0x8E28
+ NUM_FILL_STREAMS_NV = 0x8E29
+ PRESENT_TIME_NV = 0x8E2A
+ PRESENT_DURATION_NV = 0x8E2B
+
+###############################################################################
+
+# Extension #348 - GLX_NV_video_out
+# Extension #349 - WGL_NV_video_out
+# Extension #350 - GLX_NV_swap_group
+# Extension #351 - WGL_NV_swap_group
+
+###############################################################################
+
+# Extension #352
+EXT_transform_feedback enum:
+ TRANSFORM_FEEDBACK_BUFFER_EXT = 0x8C8E
+ TRANSFORM_FEEDBACK_BUFFER_START_EXT = 0x8C84
+ TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT = 0x8C85
+ TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT = 0x8C8F
+ INTERLEAVED_ATTRIBS_EXT = 0x8C8C
+ SEPARATE_ATTRIBS_EXT = 0x8C8D
+ PRIMITIVES_GENERATED_EXT = 0x8C87
+ TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT = 0x8C88
+ RASTERIZER_DISCARD_EXT = 0x8C89
+ MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT = 0x8C8A
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT = 0x8C8B
+ MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT = 0x8C80
+ TRANSFORM_FEEDBACK_VARYINGS_EXT = 0x8C83
+ TRANSFORM_FEEDBACK_BUFFER_MODE_EXT = 0x8C7F
+ TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT = 0x8C76
+
+###############################################################################
+
+# Extension #353
+EXT_direct_state_access enum:
+ PROGRAM_MATRIX_EXT = 0x8E2D
+ TRANSPOSE_PROGRAM_MATRIX_EXT = 0x8E2E
+ PROGRAM_MATRIX_STACK_DEPTH_EXT = 0x8E2F
+
+###############################################################################
+
+# Extension #354
+EXT_vertex_array_bgra enum:
+ use VERSION_1_2 BGRA
+
+###############################################################################
+
+# Extension #355 - WGL_NV_gpu_affinity
+
+###############################################################################
+
+# Extension #356
+EXT_texture_swizzle enum:
+ TEXTURE_SWIZZLE_R_EXT = 0x8E42
+ TEXTURE_SWIZZLE_G_EXT = 0x8E43
+ TEXTURE_SWIZZLE_B_EXT = 0x8E44
+ TEXTURE_SWIZZLE_A_EXT = 0x8E45
+ TEXTURE_SWIZZLE_RGBA_EXT = 0x8E46
+
+###############################################################################
+
+# Extension #357
+NV_explicit_multisample enum:
+ SAMPLE_POSITION_NV = 0x8E50
+ SAMPLE_MASK_NV = 0x8E51
+ SAMPLE_MASK_VALUE_NV = 0x8E52
+ TEXTURE_BINDING_RENDERBUFFER_NV = 0x8E53
+ TEXTURE_RENDERBUFFER_DATA_STORE_BINDING_NV = 0x8E54
+ TEXTURE_RENDERBUFFER_NV = 0x8E55
+ SAMPLER_RENDERBUFFER_NV = 0x8E56
+ INT_SAMPLER_RENDERBUFFER_NV = 0x8E57
+ UNSIGNED_INT_SAMPLER_RENDERBUFFER_NV = 0x8E58
+ MAX_SAMPLE_MASK_WORDS_NV = 0x8E59
+
+###############################################################################
+
+# Extension #358
+NV_transform_feedback2 enum:
+ TRANSFORM_FEEDBACK_NV = 0x8E22
+ TRANSFORM_FEEDBACK_BUFFER_PAUSED_NV = 0x8E23
+ TRANSFORM_FEEDBACK_BUFFER_ACTIVE_NV = 0x8E24
+ TRANSFORM_FEEDBACK_BINDING_NV = 0x8E25
+
+###############################################################################
+
+# Extension #359
+ATI_meminfo enum:
+ VBO_FREE_MEMORY_ATI = 0x87FB
+ TEXTURE_FREE_MEMORY_ATI = 0x87FC
+ RENDERBUFFER_FREE_MEMORY_ATI = 0x87FD
+
+###############################################################################
+
+# Extension #360
+AMD_performance_monitor enum:
+ COUNTER_TYPE_AMD = 0x8BC0
+ COUNTER_RANGE_AMD = 0x8BC1
+ UNSIGNED_INT64_AMD = 0x8BC2
+ PERCENTAGE_AMD = 0x8BC3
+ PERFMON_RESULT_AVAILABLE_AMD = 0x8BC4
+ PERFMON_RESULT_SIZE_AMD = 0x8BC5
+ PERFMON_RESULT_AMD = 0x8BC6
+
+###############################################################################
+
+# Extension #361 - WGL_AMD_gpu_association
+
+###############################################################################
+
+# No new tokens
+# Extension #362
+AMD_texture_texture4 enum:
+
+###############################################################################
+
+# Extension #363
+AMD_vertex_shader_tesselator enum:
+ SAMPLER_BUFFER_AMD = 0x9001
+ INT_SAMPLER_BUFFER_AMD = 0x9002
+ UNSIGNED_INT_SAMPLER_BUFFER_AMD = 0x9003
+ TESSELLATION_MODE_AMD = 0x9004
+ TESSELLATION_FACTOR_AMD = 0x9005
+ DISCRETE_AMD = 0x9006
+ CONTINUOUS_AMD = 0x9007
+
+###############################################################################
+
+# Extension #364
+EXT_provoking_vertex enum:
+ QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT = 0x8E4C
+ FIRST_VERTEX_CONVENTION_EXT = 0x8E4D
+ LAST_VERTEX_CONVENTION_EXT = 0x8E4E
+ PROVOKING_VERTEX_EXT = 0x8E4F
+
+###############################################################################
+
+# Extension #365
+EXT_texture_snorm enum:
+ ALPHA_SNORM = 0x9010
+ LUMINANCE_SNORM = 0x9011
+ LUMINANCE_ALPHA_SNORM = 0x9012
+ INTENSITY_SNORM = 0x9013
+ ALPHA8_SNORM = 0x9014
+ LUMINANCE8_SNORM = 0x9015
+ LUMINANCE8_ALPHA8_SNORM = 0x9016
+ INTENSITY8_SNORM = 0x9017
+ ALPHA16_SNORM = 0x9018
+ LUMINANCE16_SNORM = 0x9019
+ LUMINANCE16_ALPHA16_SNORM = 0x901A
+ INTENSITY16_SNORM = 0x901B
+ use VERSION_3_1 RED_SNORM
+ use VERSION_3_1 RG_SNORM
+ use VERSION_3_1 RGB_SNORM
+ use VERSION_3_1 RGBA_SNORM
+ use VERSION_3_1 R8_SNORM
+ use VERSION_3_1 RG8_SNORM
+ use VERSION_3_1 RGB8_SNORM
+ use VERSION_3_1 RGBA8_SNORM
+ use VERSION_3_1 R16_SNORM
+ use VERSION_3_1 RG16_SNORM
+ use VERSION_3_1 RGB16_SNORM
+ use VERSION_3_1 RGBA16_SNORM
+ use VERSION_3_1 SIGNED_NORMALIZED
+
+###############################################################################
+
+# No new tokens
+# Extension #366
+AMD_draw_buffers_blend enum:
+
+###############################################################################
+
+# Extension #367
+APPLE_texture_range enum:
+ TEXTURE_RANGE_LENGTH_APPLE = 0x85B7
+ TEXTURE_RANGE_POINTER_APPLE = 0x85B8
+ TEXTURE_STORAGE_HINT_APPLE = 0x85BC
+ STORAGE_PRIVATE_APPLE = 0x85BD
+ use APPLE_vertex_array_range STORAGE_CACHED_APPLE
+ use APPLE_vertex_array_range STORAGE_SHARED_APPLE
+
+###############################################################################
+
+# Extension #368
+APPLE_float_pixels enum:
+ HALF_APPLE = 0x140B
+ RGBA_FLOAT32_APPLE = 0x8814
+ RGB_FLOAT32_APPLE = 0x8815
+ ALPHA_FLOAT32_APPLE = 0x8816
+ INTENSITY_FLOAT32_APPLE = 0x8817
+ LUMINANCE_FLOAT32_APPLE = 0x8818
+ LUMINANCE_ALPHA_FLOAT32_APPLE = 0x8819
+ RGBA_FLOAT16_APPLE = 0x881A
+ RGB_FLOAT16_APPLE = 0x881B
+ ALPHA_FLOAT16_APPLE = 0x881C
+ INTENSITY_FLOAT16_APPLE = 0x881D
+ LUMINANCE_FLOAT16_APPLE = 0x881E
+ LUMINANCE_ALPHA_FLOAT16_APPLE = 0x881F
+ COLOR_FLOAT_APPLE = 0x8A0F
+
+###############################################################################
+
+# Extension #369
+APPLE_vertex_program_evaluators enum:
+ VERTEX_ATTRIB_MAP1_APPLE = 0x8A00
+ VERTEX_ATTRIB_MAP2_APPLE = 0x8A01
+ VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x8A02
+ VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x8A03
+ VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x8A04
+ VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x8A05
+ VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x8A06
+ VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x8A07
+ VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x8A08
+ VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x8A09
+
+###############################################################################
+
+# Extension #370
+APPLE_aux_depth_stencil enum:
+ AUX_DEPTH_STENCIL_APPLE = 0x8A14
+
+###############################################################################
+
+# Extension #371
+APPLE_object_purgeable enum:
+ BUFFER_OBJECT_APPLE = 0x85B3
+ RELEASED_APPLE = 0x8A19
+ VOLATILE_APPLE = 0x8A1A
+ RETAINED_APPLE = 0x8A1B
+ UNDEFINED_APPLE = 0x8A1C
+ PURGEABLE_APPLE = 0x8A1D
+
+###############################################################################
+
+# Extension #372
+APPLE_row_bytes enum:
+ PACK_ROW_BYTES_APPLE = 0x8A15
+ UNPACK_ROW_BYTES_APPLE = 0x8A16
+
+###############################################################################
+
+# Extension #373
+APPLE_rgb_422 enum:
+ RGB_422_APPLE = 0x8A1F
+ use APPLE_ycbcr_422 UNSIGNED_SHORT_8_8_APPLE
+ use APPLE_ycbcr_422 UNSIGNED_SHORT_8_8_REV_APPLE
+
+###############################################################################
+
+# Extension #374
+
+NV_video_capture enum:
+ VIDEO_BUFFER_NV = 0x9020
+ VIDEO_BUFFER_BINDING_NV = 0x9021
+ FIELD_UPPER_NV = 0x9022
+ FIELD_LOWER_NV = 0x9023
+ NUM_VIDEO_CAPTURE_STREAMS_NV = 0x9024
+ NEXT_VIDEO_CAPTURE_BUFFER_STATUS_NV = 0x9025
+ VIDEO_CAPTURE_TO_422_SUPPORTED_NV = 0x9026
+ LAST_VIDEO_CAPTURE_STATUS_NV = 0x9027
+ VIDEO_BUFFER_PITCH_NV = 0x9028
+ VIDEO_COLOR_CONVERSION_MATRIX_NV = 0x9029
+ VIDEO_COLOR_CONVERSION_MAX_NV = 0x902A
+ VIDEO_COLOR_CONVERSION_MIN_NV = 0x902B
+ VIDEO_COLOR_CONVERSION_OFFSET_NV = 0x902C
+ VIDEO_BUFFER_INTERNAL_FORMAT_NV = 0x902D
+ PARTIAL_SUCCESS_NV = 0x902E
+ SUCCESS_NV = 0x902F
+ FAILURE_NV = 0x9030
+ YCBYCR8_422_NV = 0x9031
+ YCBAYCR8A_4224_NV = 0x9032
+ Z6Y10Z6CB10Z6Y10Z6CR10_422_NV = 0x9033
+ Z6Y10Z6CB10Z6A10Z6Y10Z6CR10Z6A10_4224_NV = 0x9034
+ Z4Y12Z4CB12Z4Y12Z4CR12_422_NV = 0x9035
+ Z4Y12Z4CB12Z4A12Z4Y12Z4CR12Z4A12_4224_NV = 0x9036
+ Z4Y12Z4CB12Z4CR12_444_NV = 0x9037
+ VIDEO_CAPTURE_FRAME_WIDTH_NV = 0x9038
+ VIDEO_CAPTURE_FRAME_HEIGHT_NV = 0x9039
+ VIDEO_CAPTURE_FIELD_UPPER_HEIGHT_NV = 0x903A
+ VIDEO_CAPTURE_FIELD_LOWER_HEIGHT_NV = 0x903B
+ VIDEO_CAPTURE_SURFACE_ORIGIN_NV = 0x903C
+
+###############################################################################
+
+# Extension #375 - GLX_EXT_swap_control
+
+###############################################################################
+
+# No new tokens
+# Extension #376 - also GLX_NV_copy_image, WGL_NV_copy_image
+NV_copy_image enum:
+
+###############################################################################
+
+# Extension #377
+EXT_separate_shader_objects enum:
+ ACTIVE_PROGRAM_EXT = 0x8B8D
+
+###############################################################################
+
+# No new tokens
+# Extension #378
+NV_parameter_buffer_object2 enum:
+
+###############################################################################
+
+# Extension #379
+NV_shader_buffer_load enum:
+ BUFFER_GPU_ADDRESS_NV = 0x8F1D
+ GPU_ADDRESS_NV = 0x8F34
+ MAX_SHADER_BUFFER_ADDRESS_NV = 0x8F35
+
+###############################################################################
+
+# Extension #380
+NV_vertex_buffer_unified_memory enum:
+ VERTEX_ATTRIB_ARRAY_UNIFIED_NV = 0x8F1E
+ ELEMENT_ARRAY_UNIFIED_NV = 0x8F1F
+ VERTEX_ATTRIB_ARRAY_ADDRESS_NV = 0x8F20
+ VERTEX_ARRAY_ADDRESS_NV = 0x8F21
+ NORMAL_ARRAY_ADDRESS_NV = 0x8F22
+ COLOR_ARRAY_ADDRESS_NV = 0x8F23
+ INDEX_ARRAY_ADDRESS_NV = 0x8F24
+ TEXTURE_COORD_ARRAY_ADDRESS_NV = 0x8F25
+ EDGE_FLAG_ARRAY_ADDRESS_NV = 0x8F26
+ SECONDARY_COLOR_ARRAY_ADDRESS_NV = 0x8F27
+ FOG_COORD_ARRAY_ADDRESS_NV = 0x8F28
+ ELEMENT_ARRAY_ADDRESS_NV = 0x8F29
+ VERTEX_ATTRIB_ARRAY_LENGTH_NV = 0x8F2A
+ VERTEX_ARRAY_LENGTH_NV = 0x8F2B
+ NORMAL_ARRAY_LENGTH_NV = 0x8F2C
+ COLOR_ARRAY_LENGTH_NV = 0x8F2D
+ INDEX_ARRAY_LENGTH_NV = 0x8F2E
+ TEXTURE_COORD_ARRAY_LENGTH_NV = 0x8F2F
+ EDGE_FLAG_ARRAY_LENGTH_NV = 0x8F30
+ SECONDARY_COLOR_ARRAY_LENGTH_NV = 0x8F31
+ FOG_COORD_ARRAY_LENGTH_NV = 0x8F32
+ ELEMENT_ARRAY_LENGTH_NV = 0x8F33
+
+###############################################################################
+
+# No new tokens
+# Extension #381
+NV_texture_barrier enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #382
+AMD_shader_stencil_export enum:
+
+###############################################################################
+
+# Extension #383
+AMD_seamless_cubemap_per_texture enum:
+ use ARB_seamless_cube_map TEXTURE_CUBE_MAP_SEAMLESS_ARB
+
+###############################################################################
+
+# Extension #384 - GLX_INTEL_swap_event
+
+###############################################################################
+
+# No new tokens
+# Extension #385
+AMD_conservative_depth enum:
+
diff --git a/src/glx/apple/specs/gl.spec b/src/glx/apple/specs/gl.spec
new file mode 100644
index 0000000000..bc054f8643
--- /dev/null
+++ b/src/glx/apple/specs/gl.spec
@@ -0,0 +1,28563 @@
+# gl.spec file
+# DON'T REMOVE PREVIOUS LINE!!! libspec depends on it!
+#
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10971 $ on $Date: 2010-04-09 02:45:33 -0700 (Fri, 09 Apr 2010) $
+
+required-props:
+# Description of a parameter
+param: retval retained
+# Display list flags
+dlflags: notlistable handcode
+# GLX implementation flags
+glxflags: client-intercept client-handcode server-handcode EXT SGI ignore ARB
+# Vector ('v') equivalent form of a command taking 1-4 explicit xyzw/rgba arguments
+vectorequiv: *
+# Category this function falls in. While there are many categories for
+# early GL 1.0 functions, later functions just have a core version
+# (e.g. VERSION_major_minor) or extension name for the category.
+category: display-list drawing drawing-control feedback framebuf misc modeling pixel-op pixel-rw state-req xform VERSION_1_0 VERSION_1_0_DEPRECATED VERSION_1_1 VERSION_1_1_DEPRECATED VERSION_1_2 VERSION_1_2_DEPRECATED VERSION_1_3 VERSION_1_3_DEPRECATED VERSION_1_4 VERSION_1_4_DEPRECATED VERSION_1_5 VERSION_2_0 VERSION_2_1 VERSION_3_0 VERSION_3_0_DEPRECATED VERSION_3_1 VERSION_3_2 VERSION_3_3 VERSION_4_0 ATI_element_array ATI_envmap_bumpmap ATI_fragment_shader ATI_pn_triangles ATI_vertex_array_object ATI_vertex_streams EXT_blend_color EXT_blend_minmax EXT_convolution EXT_copy_texture EXT_histogram EXT_polygon_offset EXT_subtexture EXT_texture3D EXT_texture_object EXT_vertex_array EXT_vertex_shader SGIS_detail_texture SGIS_multisample SGIS_pixel_texture ARB_point_parameters EXT_point_parameters SGIS_point_parameters SGIS_sharpen_texture SGIS_texture4D SGIS_texture_filter4 SGIX_async SGIX_flush_raster SGIX_fragment_lighting SGIX_framezoom SGIX_igloo_interface SGIX_instruments SGIX_list_priority SGIX_pixel_texture SGIX_polynomial_ffd SGIX_reference_plane SGIX_sprite SGIX_tag_sample_buffer SGI_color_table ARB_multitexture ARB_multisample ARB_texture_compression ARB_transpose_matrix ARB_vertex_blend ARB_matrix_palette EXT_compiled_vertex_array EXT_cull_vertex EXT_index_func EXT_index_material EXT_draw_range_elements EXT_vertex_weighting INGR_blend_func_separate NV_evaluators NV_fence NV_occlusion_query NV_point_sprite NV_register_combiners NV_register_combiners2 NV_vertex_array_range NV_vertex_program NV_vertex_program1_1_dcc MESA_resize_buffers MESA_window_pos PGI_misc_hints EXT_fog_coord EXT_blend_func_separate EXT_color_subtable EXT_coordinate_frame EXT_light_texture EXT_multi_draw_arrays EXT_paletted_texture EXT_pixel_transform EXT_secondary_color EXT_texture_perturb_normal HP_image_transform IBM_multimode_draw_arrays IBM_vertex_array_lists INTEL_parallel_arrays SUNX_constant_data SUN_global_alpha SUN_mesh_array SUN_triangle_list SUN_vertex 3DFX_tbuffer EXT_multisample SGIS_fog_function SGIS_texture_color_mask ARB_window_pos EXT_stencil_two_side EXT_depth_bounds_test EXT_blend_equation_separate ARB_vertex_program ARB_fragment_program ARB_vertex_buffer_object ARB_occlusion_query ARB_shader_objects ARB_vertex_shader ARB_fragment_shader S3_s3tc ATI_draw_buffers ATI_texture_env_combine3 ATI_texture_float NV_float_buffer NV_fragment_program NV_half_float NV_pixel_data_range NV_primitive_restart NV_texture_expand_normal NV_texture_expand_normal NV_vertex_program2 APPLE_element_array APPLE_fence APPLE_vertex_array_object APPLE_vertex_array_range ATI_draw_buffers NV_fragment_program NV_half_float NV_pixel_data_range NV_primitive_restart ATI_map_object_buffer ATI_separate_stencil ATI_vertex_attrib_array_object ARB_draw_buffers ARB_texture_rectangle ARB_color_buffer_float EXT_framebuffer_object GREMEDY_string_marker EXT_stencil_clear_tag EXT_framebuffer_blit EXT_framebuffer_multisample MESAX_texture_stack EXT_timer_query EXT_gpu_program_parameters APPLE_flush_buffer_range NV_gpu_program4 NV_geometry_program4 EXT_geometry_shader4 NV_vertex_program4 EXT_gpu_shader4 EXT_draw_instanced EXT_texture_buffer_object NV_depth_buffer_float NV_framebuffer_multisample_coverage NV_parameter_buffer_object EXT_draw_buffers2 NV_transform_feedback EXT_bindable_uniform EXT_texture_integer GREMEDY_frame_terminator NV_conditional_render NV_present_video EXT_transform_feedback ARB_depth_buffer_float ARB_draw_instanced ARB_framebuffer_object ARB_framebuffer_sRGB ARB_geometry_shader4 ARB_half_float_vertex ARB_instanced_arrays ARB_map_buffer_range ARB_texture_buffer_object ARB_texture_compression_rgtc ARB_texture_rg ARB_vertex_array_object EXT_direct_state_access EXT_vertex_array_bgra EXT_texture_swizzle NV_explicit_multisample NV_transform_feedback2 ATI_meminfo AMD_performance_monitor AMD_vertex_shader_tesselator EXT_provoking_vertex ARB_uniform_buffer_object ARB_copy_buffer EXT_texture_snorm AMD_draw_buffers_blend APPLE_texture_range APPLE_float_pixels APPLE_vertex_program_evaluators APPLE_aux_depth_stencil APPLE_object_purgeable APPLE_row_bytes ARB_draw_elements_base_vertex ARB_provoking_vertex ARB_sync ARB_texture_multisample ARB_draw_buffers_blend ARB_sample_shading NV_video_capture NV_copy_image EXT_separate_shader_objects NV_parameter_buffer_object2 NV_shader_buffer_load NV_vertex_buffer_unified_memory NV_texture_barrier ARB_shading_language_include ARB_blend_func_extended ARB_sampler_objects ARB_timer_query ARB_vertex_type_2_10_10_10_rev ARB_draw_indirect ARB_gpu_shader_fp64 ARB_shader_subroutine ARB_tessellation_shader ARB_transform_feedback2 ARB_transform_feedback3 AMD_conservative_depth
+
+# Categories for extensions with no functions - need not be included now
+# ARB_texture_env_add ARB_texture_cube_map ARB_texture_border_clamp
+# ARB_shading_language_100 ARB_texture_non_power_of_two ARB_point_sprite
+# ARB_half_float_pixel ARB_texture_float ARB_pixel_buffer_object EXT_abgr
+# EXT_texture SGI_color_matrix SGI_texture_color_table EXT_cmyka
+# EXT_packed_pixels SGIS_texture_lod EXT_rescale_normal EXT_misc_attribute
+# SGIS_generate_mipmap SGIX_clipmap SGIX_shadow SGIS_texture_edge_clamp
+# SGIS_texture_border_clamp EXT_blend_subtract EXT_blend_logic_op
+# SGIX_async_histogram SGIX_async_pixel SGIX_interlace SGIX_pixel_tiles
+# SGIX_texture_select SGIX_texture_multi_buffer SGIX_texture_scale_bias
+# SGIX_depth_texture SGIX_fog_offset HP_convolution_border_modes
+# SGIX_texture_add_env PGI_vertex_hints EXT_clip_volume_hint
+# SGIX_ir_instrument1 SGIX_calligraphic_fragment SGIX_texture_lod_bias
+# SGIX_shadow_ambient EXT_index_texture EXT_index_array_formats SGIX_ycrcb
+# IBM_rasterpos_clip HP_texture_lighting WIN_phong_shading
+# WIN_specular_fog SGIX_blend_alpha_minmax EXT_bgra HP_occlusion_test
+# EXT_pixel_transform_color_table EXT_shared_texture_palette
+# EXT_separate_specular_color EXT_texture_env REND_screen_coordinates
+# EXT_texture_env_combine APPLE_specular_vector APPLE_transform_hint
+# SGIX_fog_scale INGR_color_clamp INGR_interlace_read EXT_stencil_wrap
+# EXT_422_pixels NV_texgen_reflection SUN_convolution_border_modes
+# SUN_slice_accum EXT_texture_env_add EXT_texture_lod_bias
+# EXT_texture_filter_anisotropic NV_light_max_exponent NV_fog_distance
+# NV_texgen_emboss NV_blend_square NV_texture_env_combine4
+# NV_packed_depth_stencil NV_texture_compression_vtc NV_texture_rectangle
+# NV_texture_shader NV_texture_shader2 NV_vertex_array_range2
+# IBM_cull_vertex SGIX_subsample SGIX_ycrcba SGIX_ycrcb_subsample
+# SGIX_depth_pass_instrument 3DFX_texture_compression_FXT1
+# 3DFX_multisample SGIX_vertex_preclip SGIX_convolution_accuracy
+# SGIX_resample SGIX_scalebias_hint SGIX_texture_coordinate_clamp
+# EXT_shadow_funcs MESA_pack_invert MESA_ycbcr_texture EXT_packed_float
+# EXT_texture_array EXT_texture_compression_latc
+# EXT_texture_compression_rgtc EXT_texture_shared_exponent
+# NV_fragment_program4 EXT_framebuffer_sRGB NV_geometry_shader4
+# EXT_vertex_array_bgra ARB_depth_clamp ARB_fragment_coord_conventions
+# ARB_seamless_cube_map ARB_vertex_array_bgra ARB_texture_cube_map_array
+# ARB_texture_gather ARB_texture_query_lod
+# AMD_shader_stencil_export AMD_seamless_cubemap_per_texture
+
+# Core version in which a function was introduced, or against
+# which an extension can be implemented
+version: 1.0 1.1 1.2 1.3 1.4 1.5 2.0 2.1 3.0 3.1 3.2 3.3 4.0
+# Core version in which a function was removed
+deprecated: 3.1
+# GLX Single, Rendering, or Vendor Private opcode
+glxsingle: *
+glxropcode: *
+glxvendorpriv: *
+# WGL implementation flags (incomplete)
+wglflags: client-handcode server-handcode small-data batchable
+# Drivers in which this is implemented (very incomplete)
+extension: future not_implemented soft WINSOFT NV10 NV20 NV50
+# Function this aliases (indistinguishable to the GL)
+alias: *
+# Mesa dispatch table offset (incomplete)
+offset: *
+# These properties are picked up from NVIDIA .spec files, we don't use them
+glfflags: *
+beginend: *
+glxvectorequiv: *
+subcategory: *
+glextmask: *
+
+###############################################################################
+#
+# glxsingle, glxropcode, and other GLX allocations to vendors
+# are used here, but the master registry for GLX is in
+# /ogl/trunk/doc/registry/extensions.reserved
+#
+# XFree86 dispatch offsets: 0-645
+# 578-641 NV_vertex_program
+# GLS opcodes: 0x0030-0x0269
+#
+###############################################################################
+
+###############################################################################
+#
+# things to remember when adding an extension command
+#
+# - append new ARB and non-ARB extensions to the appropriate portion of
+# the spec file, in extension number order.
+# - use tabs, not spaces
+# - set glxflags to "ignore" until GLX is updated to support the new command
+# - add new data types to typemaps/spec2wire.map
+# - add extension name in alphabetical order to category list
+# - add commands within an extension in spec order
+# - use existing command entries as a model (where possible)
+# - when reserving new glxropcodes, update
+# gfx/lib/opengl/doc/glspec/extensions.reserved to indicate this
+#
+###############################################################################
+
+# New type declarations
+
+passthru: #include <stddef.h>
+
+passthru: #ifndef GL_VERSION_2_0
+passthru: /* GL type for program/shader text */
+passthru: typedef char GLchar;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_VERSION_1_5
+passthru: /* GL types for handling large vertex buffer objects */
+passthru: typedef ptrdiff_t GLintptr;
+passthru: typedef ptrdiff_t GLsizeiptr;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_ARB_vertex_buffer_object
+passthru: /* GL types for handling large vertex buffer objects */
+passthru: typedef ptrdiff_t GLintptrARB;
+passthru: typedef ptrdiff_t GLsizeiptrARB;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_ARB_shader_objects
+passthru: /* GL types for program/shader text and shader object handles */
+passthru: typedef char GLcharARB;
+passthru: typedef unsigned int GLhandleARB;
+passthru: #endif
+passthru:
+passthru: /* GL type for "half" precision (s10e5) float data in host memory */
+passthru: #ifndef GL_ARB_half_float_pixel
+passthru: typedef unsigned short GLhalfARB;
+passthru: #endif
+passthru:
+passthru: #ifndef GL_NV_half_float
+passthru: typedef unsigned short GLhalfNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLEXT_64_TYPES_DEFINED
+passthru: /* This code block is duplicated in glxext.h, so must be protected */
+passthru: #define GLEXT_64_TYPES_DEFINED
+passthru: /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+passthru: /* (as used in the GL_EXT_timer_query extension). */
+passthru: #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+passthru: #include <inttypes.h>
+passthru: #elif defined(__sun__) || defined(__digital__)
+passthru: #include <inttypes.h>
+passthru: #if defined(__STDC__)
+passthru: #if defined(__arch64__) || defined(_LP64)
+passthru: typedef long int int64_t;
+passthru: typedef unsigned long int uint64_t;
+passthru: #else
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #endif /* __arch64__ */
+passthru: #endif /* __STDC__ */
+passthru: #elif defined( __VMS ) || defined(__sgi)
+passthru: #include <inttypes.h>
+passthru: #elif defined(__SCO__) || defined(__USLC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(__UNIXOS2__) || defined(__SOL64__)
+passthru: typedef long int int32_t;
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #elif defined(_WIN32) && defined(__GNUC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(_WIN32)
+passthru: typedef __int32 int32_t;
+passthru: typedef __int64 int64_t;
+passthru: typedef unsigned __int64 uint64_t;
+passthru: #else
+passthru: /* Fallback if nothing above works */
+passthru: #include <inttypes.h>
+passthru: #endif
+passthru: #endif
+passthru:
+passthru: #ifndef GL_EXT_timer_query
+passthru: typedef int64_t GLint64EXT;
+passthru: typedef uint64_t GLuint64EXT;
+passthru: #endif
+passthru:
+passthru: #ifndef ARB_sync
+passthru: typedef int64_t GLint64;
+passthru: typedef uint64_t GLuint64;
+passthru: typedef struct __GLsync *GLsync;
+passthru: #endif
+passthru:
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.0 commands
+#
+###############################################################################
+###############################################################################
+
+###############################################################################
+#
+# drawing-control commands
+#
+###############################################################################
+
+CullFace(mode)
+ return void
+ param mode CullFaceMode in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 79
+ offset 152
+
+FrontFace(mode)
+ return void
+ param mode FrontFaceDirection in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 84
+ offset 157
+
+Hint(target, mode)
+ return void
+ param target HintTarget in value
+ param mode HintMode in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 85
+ offset 158
+
+LineWidth(width)
+ return void
+ param width CheckedFloat32 in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 95
+ offset 168
+
+PointSize(size)
+ return void
+ param size CheckedFloat32 in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 100
+ offset 173
+
+PolygonMode(face, mode)
+ return void
+ param face MaterialFace in value
+ param mode PolygonMode in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 101
+ offset 174
+
+Scissor(x, y, width, height)
+ return void
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 103
+ offset 176
+
+TexParameterf(target, pname, param)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param param CheckedFloat32 in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 105
+ wglflags small-data
+ offset 178
+
+TexParameterfv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 106
+ wglflags small-data
+ offset 179
+
+TexParameteri(target, pname, param)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param param CheckedInt32 in value
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 107
+ wglflags small-data
+ offset 180
+
+TexParameteriv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: drawing-control
+ version 1.0
+ glxropcode 108
+ wglflags small-data
+ offset 181
+
+TexImage1D(target, level, internalformat, width, border, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureComponentCount in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width)]
+ category VERSION_1_0 # old: drawing-control
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ glxropcode 109
+ wglflags client-handcode server-handcode
+ offset 182
+
+TexImage2D(target, level, internalformat, width, height, border, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureComponentCount in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category VERSION_1_0 # old: drawing-control
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ glxropcode 110
+ wglflags client-handcode server-handcode
+ offset 183
+
+###############################################################################
+#
+# framebuf commands
+#
+###############################################################################
+
+DrawBuffer(mode)
+ return void
+ param mode DrawBufferMode in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 126
+ offset 202
+
+Clear(mask)
+ return void
+ param mask ClearBufferMask in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 127
+ offset 203
+
+ClearColor(red, green, blue, alpha)
+ return void
+ param red ClampedColorF in value
+ param green ClampedColorF in value
+ param blue ClampedColorF in value
+ param alpha ClampedColorF in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 130
+ offset 206
+
+ClearStencil(s)
+ return void
+ param s StencilValue in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 131
+ offset 207
+
+ClearDepth(depth)
+ return void
+ param depth ClampedFloat64 in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 132
+ offset 208
+
+StencilMask(mask)
+ return void
+ param mask MaskedStencilValue in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 133
+ offset 209
+
+ColorMask(red, green, blue, alpha)
+ return void
+ param red Boolean in value
+ param green Boolean in value
+ param blue Boolean in value
+ param alpha Boolean in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 134
+ offset 210
+
+DepthMask(flag)
+ return void
+ param flag Boolean in value
+ category VERSION_1_0 # old: framebuf
+ version 1.0
+ glxropcode 135
+ offset 211
+
+###############################################################################
+#
+# misc commands
+#
+###############################################################################
+
+Disable(cap)
+ return void
+ param cap EnableCap in value
+ category VERSION_1_0 # old: misc
+ version 1.0
+ dlflags handcode
+ glxflags client-handcode client-intercept
+ glxropcode 138
+ offset 214
+
+Enable(cap)
+ return void
+ param cap EnableCap in value
+ category VERSION_1_0 # old: misc
+ version 1.0
+ dlflags handcode
+ glxflags client-handcode client-intercept
+ glxropcode 139
+ offset 215
+
+Finish()
+ return void
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category VERSION_1_0 # old: misc
+ version 1.0
+ glxsingle 108
+ offset 216
+
+Flush()
+ return void
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ category VERSION_1_0 # old: misc
+ version 1.0
+ glxsingle 142
+ offset 217
+
+###############################################################################
+#
+# pixel-op commands
+#
+###############################################################################
+
+BlendFunc(sfactor, dfactor)
+ return void
+ param sfactor BlendingFactorSrc in value
+ param dfactor BlendingFactorDest in value
+ category VERSION_1_0 # old: pixel-op
+ version 1.0
+ glxropcode 160
+ offset 241
+
+LogicOp(opcode)
+ return void
+ param opcode LogicOp in value
+ category VERSION_1_0 # old: pixel-op
+ version 1.0
+ glxropcode 161
+ offset 242
+
+StencilFunc(func, ref, mask)
+ return void
+ param func StencilFunction in value
+ param ref ClampedStencilValue in value
+ param mask MaskedStencilValue in value
+ category VERSION_1_0 # old: pixel-op
+ version 1.0
+ glxropcode 162
+ offset 243
+
+StencilOp(fail, zfail, zpass)
+ return void
+ param fail StencilOp in value
+ param zfail StencilOp in value
+ param zpass StencilOp in value
+ category VERSION_1_0 # old: pixel-op
+ version 1.0
+ glxropcode 163
+ offset 244
+
+DepthFunc(func)
+ return void
+ param func DepthFunction in value
+ category VERSION_1_0 # old: pixel-op
+ version 1.0
+ glxropcode 164
+ offset 245
+
+###############################################################################
+#
+# pixel-rw commands
+#
+###############################################################################
+
+PixelStoref(pname, param)
+ return void
+ param pname PixelStoreParameter in value
+ param param CheckedFloat32 in value
+ dlflags notlistable
+ glxflags client-handcode
+ category VERSION_1_0 # old: pixel-rw
+ version 1.0
+ glxsingle 109
+ wglflags batchable
+ offset 249
+
+PixelStorei(pname, param)
+ return void
+ param pname PixelStoreParameter in value
+ param param CheckedInt32 in value
+ dlflags notlistable
+ glxflags client-handcode
+ category VERSION_1_0 # old: pixel-rw
+ version 1.0
+ glxsingle 110
+ wglflags batchable
+ offset 250
+
+ReadBuffer(mode)
+ return void
+ param mode ReadBufferMode in value
+ category VERSION_1_0 # old: pixel-rw
+ version 1.0
+ glxropcode 171
+ offset 254
+
+ReadPixels(x, y, width, height, format, type, pixels)
+ return void
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void out array [COMPSIZE(format/type/width/height)]
+ category VERSION_1_0 # old: pixel-rw
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.0
+ glxsingle 111
+ wglflags client-handcode server-handcode
+ offset 256
+
+###############################################################################
+#
+# state-req commands
+#
+###############################################################################
+
+GetBooleanv(pname, params)
+ return void
+ param pname GetPName in value
+ param params Boolean out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ glxflags client-handcode
+ version 1.0
+ glxsingle 112
+ wglflags small-data
+ offset 258
+
+GetDoublev(pname, params)
+ return void
+ param pname GetPName in value
+ param params Float64 out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ glxflags client-handcode
+ version 1.0
+ glxsingle 114
+ wglflags small-data
+ offset 260
+
+GetError()
+ return ErrorCode
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ glxflags client-handcode
+ version 1.0
+ glxsingle 115
+ offset 261
+
+GetFloatv(pname, params)
+ return void
+ param pname GetPName in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ glxflags client-handcode
+ version 1.0
+ glxsingle 116
+ wglflags small-data
+ offset 262
+
+GetIntegerv(pname, params)
+ return void
+ param pname GetPName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ glxflags client-handcode
+ version 1.0
+ glxsingle 117
+ wglflags small-data
+ offset 263
+
+GetString(name)
+ return String
+ param name StringName in value
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.0
+ glxsingle 129
+ wglflags client-handcode server-handcode
+ offset 275
+
+GetTexImage(target, level, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void out array [COMPSIZE(target/level/format/type)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.0
+ glxsingle 135
+ wglflags client-handcode server-handcode
+ offset 281
+
+GetTexParameterfv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ version 1.0
+ glxsingle 136
+ wglflags small-data
+ offset 282
+
+GetTexParameteriv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ version 1.0
+ glxsingle 137
+ wglflags small-data
+ offset 283
+
+GetTexLevelParameterfv(target, level, pname, params)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param pname GetTextureParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ version 1.0
+ glxsingle 138
+ wglflags small-data
+ offset 284
+
+GetTexLevelParameteriv(target, level, pname, params)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ version 1.0
+ glxsingle 139
+ wglflags small-data
+ offset 285
+
+IsEnabled(cap)
+ return Boolean
+ param cap EnableCap in value
+ category VERSION_1_0 # old: state-req
+ dlflags notlistable
+ version 1.0
+ glxflags client-handcode client-intercept
+ glxsingle 140
+ offset 286
+
+###############################################################################
+#
+# xform commands
+#
+###############################################################################
+
+DepthRange(near, far)
+ return void
+ param near ClampedFloat64 in value
+ param far ClampedFloat64 in value
+ category VERSION_1_0 # old: xform
+ version 1.0
+ glxropcode 174
+ offset 288
+
+Viewport(x, y, width, height)
+ return void
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category VERSION_1_0 # old: xform
+ version 1.0
+ glxropcode 191
+ offset 305
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.0 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# display-list commands
+
+NewList(list, mode)
+ return void
+ param list List in value
+ param mode ListMode in value
+ dlflags notlistable
+ category VERSION_1_0_DEPRECATED # old: display-list
+ version 1.0
+ deprecated 3.1
+ glxsingle 101
+ wglflags batchable
+ offset 0
+
+EndList()
+ return void
+ dlflags notlistable
+ category VERSION_1_0_DEPRECATED # old: display-list
+ version 1.0
+ deprecated 3.1
+ glxsingle 102
+ wglflags batchable
+ offset 1
+
+CallList(list)
+ return void
+ param list List in value
+ category VERSION_1_0_DEPRECATED # old: display-list
+ version 1.0
+ deprecated 3.1
+ glxropcode 1
+ offset 2
+
+CallLists(n, type, lists)
+ return void
+ param n SizeI in value
+ param type ListNameType in value
+ param lists Void in array [COMPSIZE(n/type)]
+ category VERSION_1_0_DEPRECATED # old: display-list
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 2
+ offset 3
+
+DeleteLists(list, range)
+ return void
+ param list List in value
+ param range SizeI in value
+ dlflags notlistable
+ category VERSION_1_0_DEPRECATED # old: display-list
+ version 1.0
+ deprecated 3.1
+ glxsingle 103
+ wglflags batchable
+ offset 4
+
+GenLists(range)
+ return List
+ param range SizeI in value
+ dlflags notlistable
+ category VERSION_1_0_DEPRECATED # old: display-list
+ version 1.0
+ deprecated 3.1
+ glxsingle 104
+ offset 5
+
+ListBase(base)
+ return void
+ param base List in value
+ category VERSION_1_0_DEPRECATED # old: display-list
+ version 1.0
+ deprecated 3.1
+ glxropcode 3
+ offset 6
+
+# drawing commands
+
+Begin(mode)
+ return void
+ param mode BeginMode in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 4
+ offset 7
+
+Bitmap(width, height, xorig, yorig, xmove, ymove, bitmap)
+ return void
+ param width SizeI in value
+ param height SizeI in value
+ param xorig CoordF in value
+ param yorig CoordF in value
+ param xmove CoordF in value
+ param ymove CoordF in value
+ param bitmap UInt8 in array [COMPSIZE(width/height)]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 5
+ wglflags client-handcode server-handcode
+ offset 8
+
+Color3b(red, green, blue)
+ return void
+ param red ColorB in value
+ param green ColorB in value
+ param blue ColorB in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3bv
+ version 1.0
+ deprecated 3.1
+ offset 9
+
+Color3bv(v)
+ return void
+ param v ColorB in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 6
+ offset 10
+
+Color3d(red, green, blue)
+ return void
+ param red ColorD in value
+ param green ColorD in value
+ param blue ColorD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3dv
+ version 1.0
+ deprecated 3.1
+ offset 11
+
+Color3dv(v)
+ return void
+ param v ColorD in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 7
+ offset 12
+
+Color3f(red, green, blue)
+ return void
+ param red ColorF in value
+ param green ColorF in value
+ param blue ColorF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3fv
+ version 1.0
+ deprecated 3.1
+ offset 13
+
+Color3fv(v)
+ return void
+ param v ColorF in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 8
+ offset 14
+
+Color3i(red, green, blue)
+ return void
+ param red ColorI in value
+ param green ColorI in value
+ param blue ColorI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3iv
+ version 1.0
+ deprecated 3.1
+ offset 15
+
+Color3iv(v)
+ return void
+ param v ColorI in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 9
+ offset 16
+
+Color3s(red, green, blue)
+ return void
+ param red ColorS in value
+ param green ColorS in value
+ param blue ColorS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3sv
+ version 1.0
+ deprecated 3.1
+ offset 17
+
+Color3sv(v)
+ return void
+ param v ColorS in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 10
+ offset 18
+
+Color3ub(red, green, blue)
+ return void
+ param red ColorUB in value
+ param green ColorUB in value
+ param blue ColorUB in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3ubv
+ version 1.0
+ deprecated 3.1
+ offset 19
+
+Color3ubv(v)
+ return void
+ param v ColorUB in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 11
+ offset 20
+
+Color3ui(red, green, blue)
+ return void
+ param red ColorUI in value
+ param green ColorUI in value
+ param blue ColorUI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3uiv
+ version 1.0
+ deprecated 3.1
+ offset 21
+
+Color3uiv(v)
+ return void
+ param v ColorUI in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 12
+ offset 22
+
+Color3us(red, green, blue)
+ return void
+ param red ColorUS in value
+ param green ColorUS in value
+ param blue ColorUS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color3usv
+ version 1.0
+ deprecated 3.1
+ offset 23
+
+Color3usv(v)
+ return void
+ param v ColorUS in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 13
+ offset 24
+
+Color4b(red, green, blue, alpha)
+ return void
+ param red ColorB in value
+ param green ColorB in value
+ param blue ColorB in value
+ param alpha ColorB in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4bv
+ version 1.0
+ deprecated 3.1
+ offset 25
+
+Color4bv(v)
+ return void
+ param v ColorB in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 14
+ offset 26
+
+Color4d(red, green, blue, alpha)
+ return void
+ param red ColorD in value
+ param green ColorD in value
+ param blue ColorD in value
+ param alpha ColorD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4dv
+ version 1.0
+ deprecated 3.1
+ offset 27
+
+Color4dv(v)
+ return void
+ param v ColorD in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 15
+ offset 28
+
+Color4f(red, green, blue, alpha)
+ return void
+ param red ColorF in value
+ param green ColorF in value
+ param blue ColorF in value
+ param alpha ColorF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4fv
+ version 1.0
+ deprecated 3.1
+ offset 29
+
+Color4fv(v)
+ return void
+ param v ColorF in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 16
+ offset 30
+
+Color4i(red, green, blue, alpha)
+ return void
+ param red ColorI in value
+ param green ColorI in value
+ param blue ColorI in value
+ param alpha ColorI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4iv
+ version 1.0
+ deprecated 3.1
+ offset 31
+
+Color4iv(v)
+ return void
+ param v ColorI in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 17
+ offset 32
+
+Color4s(red, green, blue, alpha)
+ return void
+ param red ColorS in value
+ param green ColorS in value
+ param blue ColorS in value
+ param alpha ColorS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4sv
+ version 1.0
+ deprecated 3.1
+ offset 33
+
+Color4sv(v)
+ return void
+ param v ColorS in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 18
+ offset 34
+
+Color4ub(red, green, blue, alpha)
+ return void
+ param red ColorUB in value
+ param green ColorUB in value
+ param blue ColorUB in value
+ param alpha ColorUB in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4ubv
+ version 1.0
+ deprecated 3.1
+ offset 35
+
+Color4ubv(v)
+ return void
+ param v ColorUB in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 19
+ offset 36
+
+Color4ui(red, green, blue, alpha)
+ return void
+ param red ColorUI in value
+ param green ColorUI in value
+ param blue ColorUI in value
+ param alpha ColorUI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4uiv
+ version 1.0
+ deprecated 3.1
+ offset 37
+
+Color4uiv(v)
+ return void
+ param v ColorUI in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 20
+ offset 38
+
+Color4us(red, green, blue, alpha)
+ return void
+ param red ColorUS in value
+ param green ColorUS in value
+ param blue ColorUS in value
+ param alpha ColorUS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Color4usv
+ version 1.0
+ deprecated 3.1
+ offset 39
+
+Color4usv(v)
+ return void
+ param v ColorUS in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 21
+ offset 40
+
+EdgeFlag(flag)
+ return void
+ param flag Boolean in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv EdgeFlagv
+ version 1.0
+ deprecated 3.1
+ offset 41
+
+EdgeFlagv(flag)
+ return void
+ param flag Boolean in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 22
+ offset 42
+
+End()
+ return void
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 23
+ offset 43
+
+Indexd(c)
+ return void
+ param c ColorIndexValueD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Indexdv
+ version 1.0
+ deprecated 3.1
+ offset 44
+
+Indexdv(c)
+ return void
+ param c ColorIndexValueD in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 24
+ offset 45
+
+Indexf(c)
+ return void
+ param c ColorIndexValueF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Indexfv
+ version 1.0
+ deprecated 3.1
+ offset 46
+
+Indexfv(c)
+ return void
+ param c ColorIndexValueF in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 25
+ offset 47
+
+Indexi(c)
+ return void
+ param c ColorIndexValueI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Indexiv
+ version 1.0
+ deprecated 3.1
+ offset 48
+
+Indexiv(c)
+ return void
+ param c ColorIndexValueI in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 26
+ offset 49
+
+Indexs(c)
+ return void
+ param c ColorIndexValueS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Indexsv
+ version 1.0
+ deprecated 3.1
+ offset 50
+
+Indexsv(c)
+ return void
+ param c ColorIndexValueS in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 27
+ offset 51
+
+Normal3b(nx, ny, nz)
+ return void
+ param nx Int8 in value
+ param ny Int8 in value
+ param nz Int8 in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Normal3bv
+ version 1.0
+ deprecated 3.1
+ offset 52
+
+Normal3bv(v)
+ return void
+ param v Int8 in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 28
+ offset 53
+
+Normal3d(nx, ny, nz)
+ return void
+ param nx CoordD in value
+ param ny CoordD in value
+ param nz CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Normal3dv
+ version 1.0
+ deprecated 3.1
+ offset 54
+
+Normal3dv(v)
+ return void
+ param v CoordD in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 29
+ offset 55
+
+Normal3f(nx, ny, nz)
+ return void
+ param nx CoordF in value
+ param ny CoordF in value
+ param nz CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Normal3fv
+ version 1.0
+ deprecated 3.1
+ offset 56
+
+Normal3fv(v)
+ return void
+ param v CoordF in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 30
+ offset 57
+
+Normal3i(nx, ny, nz)
+ return void
+ param nx Int32 in value
+ param ny Int32 in value
+ param nz Int32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Normal3iv
+ version 1.0
+ deprecated 3.1
+ offset 58
+
+Normal3iv(v)
+ return void
+ param v Int32 in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 31
+ offset 59
+
+Normal3s(nx, ny, nz)
+ return void
+ param nx Int16 in value
+ param ny Int16 in value
+ param nz Int16 in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Normal3sv
+ version 1.0
+ deprecated 3.1
+ offset 60
+
+Normal3sv(v)
+ return void
+ param v Int16 in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 32
+ offset 61
+
+RasterPos2d(x, y)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos2dv
+ version 1.0
+ deprecated 3.1
+ offset 62
+
+RasterPos2dv(v)
+ return void
+ param v CoordD in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 33
+ offset 63
+
+RasterPos2f(x, y)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos2fv
+ version 1.0
+ deprecated 3.1
+ offset 64
+
+RasterPos2fv(v)
+ return void
+ param v CoordF in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 34
+ offset 65
+
+RasterPos2i(x, y)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos2iv
+ version 1.0
+ deprecated 3.1
+ offset 66
+
+RasterPos2iv(v)
+ return void
+ param v CoordI in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 35
+ offset 67
+
+RasterPos2s(x, y)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos2sv
+ version 1.0
+ deprecated 3.1
+ offset 68
+
+RasterPos2sv(v)
+ return void
+ param v CoordS in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 36
+ offset 69
+
+RasterPos3d(x, y, z)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ vectorequiv RasterPos3dv
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ offset 70
+
+RasterPos3dv(v)
+ return void
+ param v CoordD in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 37
+ offset 71
+
+RasterPos3f(x, y, z)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos3fv
+ version 1.0
+ deprecated 3.1
+ offset 72
+
+RasterPos3fv(v)
+ return void
+ param v CoordF in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 38
+ offset 73
+
+RasterPos3i(x, y, z)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos3iv
+ version 1.0
+ deprecated 3.1
+ offset 74
+
+RasterPos3iv(v)
+ return void
+ param v CoordI in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 39
+ offset 75
+
+RasterPos3s(x, y, z)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos3sv
+ version 1.0
+ deprecated 3.1
+ offset 76
+
+RasterPos3sv(v)
+ return void
+ param v CoordS in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 40
+ offset 77
+
+RasterPos4d(x, y, z, w)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ param w CoordD in value
+ vectorequiv RasterPos4dv
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ offset 78
+
+RasterPos4dv(v)
+ return void
+ param v CoordD in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 41
+ offset 79
+
+RasterPos4f(x, y, z, w)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ param w CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos4fv
+ version 1.0
+ deprecated 3.1
+ offset 80
+
+RasterPos4fv(v)
+ return void
+ param v CoordF in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 42
+ offset 81
+
+RasterPos4i(x, y, z, w)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ param w CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos4iv
+ version 1.0
+ deprecated 3.1
+ offset 82
+
+RasterPos4iv(v)
+ return void
+ param v CoordI in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 43
+ offset 83
+
+RasterPos4s(x, y, z, w)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ param w CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv RasterPos4sv
+ version 1.0
+ deprecated 3.1
+ offset 84
+
+RasterPos4sv(v)
+ return void
+ param v CoordS in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 44
+ offset 85
+
+Rectd(x1, y1, x2, y2)
+ return void
+ param x1 CoordD in value
+ param y1 CoordD in value
+ param x2 CoordD in value
+ param y2 CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Rectdv
+ version 1.0
+ deprecated 3.1
+ offset 86
+
+Rectdv(v1, v2)
+ return void
+ param v1 CoordD in array [2]
+ param v2 CoordD in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 45
+ offset 87
+
+Rectf(x1, y1, x2, y2)
+ return void
+ param x1 CoordF in value
+ param y1 CoordF in value
+ param x2 CoordF in value
+ param y2 CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Rectfv
+ version 1.0
+ deprecated 3.1
+ offset 88
+
+Rectfv(v1, v2)
+ return void
+ param v1 CoordF in array [2]
+ param v2 CoordF in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 46
+ offset 89
+
+Recti(x1, y1, x2, y2)
+ return void
+ param x1 CoordI in value
+ param y1 CoordI in value
+ param x2 CoordI in value
+ param y2 CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Rectiv
+ version 1.0
+ deprecated 3.1
+ offset 90
+
+Rectiv(v1, v2)
+ return void
+ param v1 CoordI in array [2]
+ param v2 CoordI in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 47
+ offset 91
+
+Rects(x1, y1, x2, y2)
+ return void
+ param x1 CoordS in value
+ param y1 CoordS in value
+ param x2 CoordS in value
+ param y2 CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Rectsv
+ version 1.0
+ deprecated 3.1
+ offset 92
+
+Rectsv(v1, v2)
+ return void
+ param v1 CoordS in array [2]
+ param v2 CoordS in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 48
+ offset 93
+
+TexCoord1d(s)
+ return void
+ param s CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord1dv
+ version 1.0
+ deprecated 3.1
+ offset 94
+
+TexCoord1dv(v)
+ return void
+ param v CoordD in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 49
+ offset 95
+
+TexCoord1f(s)
+ return void
+ param s CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord1fv
+ version 1.0
+ deprecated 3.1
+ offset 96
+
+TexCoord1fv(v)
+ return void
+ param v CoordF in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 50
+ offset 97
+
+TexCoord1i(s)
+ return void
+ param s CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord1iv
+ version 1.0
+ deprecated 3.1
+ offset 98
+
+TexCoord1iv(v)
+ return void
+ param v CoordI in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 51
+ offset 99
+
+TexCoord1s(s)
+ return void
+ param s CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord1sv
+ version 1.0
+ deprecated 3.1
+ offset 100
+
+TexCoord1sv(v)
+ return void
+ param v CoordS in array [1]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 52
+ offset 101
+
+TexCoord2d(s, t)
+ return void
+ param s CoordD in value
+ param t CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord2dv
+ version 1.0
+ deprecated 3.1
+ offset 102
+
+TexCoord2dv(v)
+ return void
+ param v CoordD in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 53
+ offset 103
+
+TexCoord2f(s, t)
+ return void
+ param s CoordF in value
+ param t CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord2fv
+ version 1.0
+ deprecated 3.1
+ offset 104
+
+TexCoord2fv(v)
+ return void
+ param v CoordF in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 54
+ offset 105
+
+TexCoord2i(s, t)
+ return void
+ param s CoordI in value
+ param t CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord2iv
+ version 1.0
+ deprecated 3.1
+ offset 106
+
+TexCoord2iv(v)
+ return void
+ param v CoordI in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 55
+ offset 107
+
+TexCoord2s(s, t)
+ return void
+ param s CoordS in value
+ param t CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord2sv
+ version 1.0
+ deprecated 3.1
+ offset 108
+
+TexCoord2sv(v)
+ return void
+ param v CoordS in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 56
+ offset 109
+
+TexCoord3d(s, t, r)
+ return void
+ param s CoordD in value
+ param t CoordD in value
+ param r CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord3dv
+ version 1.0
+ deprecated 3.1
+ offset 110
+
+TexCoord3dv(v)
+ return void
+ param v CoordD in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 57
+ offset 111
+
+TexCoord3f(s, t, r)
+ return void
+ param s CoordF in value
+ param t CoordF in value
+ param r CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord3fv
+ version 1.0
+ deprecated 3.1
+ offset 112
+
+TexCoord3fv(v)
+ return void
+ param v CoordF in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 58
+ offset 113
+
+TexCoord3i(s, t, r)
+ return void
+ param s CoordI in value
+ param t CoordI in value
+ param r CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord3iv
+ version 1.0
+ deprecated 3.1
+ offset 114
+
+TexCoord3iv(v)
+ return void
+ param v CoordI in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 59
+ offset 115
+
+TexCoord3s(s, t, r)
+ return void
+ param s CoordS in value
+ param t CoordS in value
+ param r CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord3sv
+ version 1.0
+ deprecated 3.1
+ offset 116
+
+TexCoord3sv(v)
+ return void
+ param v CoordS in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 60
+ offset 117
+
+TexCoord4d(s, t, r, q)
+ return void
+ param s CoordD in value
+ param t CoordD in value
+ param r CoordD in value
+ param q CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord4dv
+ version 1.0
+ deprecated 3.1
+ offset 118
+
+TexCoord4dv(v)
+ return void
+ param v CoordD in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 61
+ offset 119
+
+TexCoord4f(s, t, r, q)
+ return void
+ param s CoordF in value
+ param t CoordF in value
+ param r CoordF in value
+ param q CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord4fv
+ version 1.0
+ deprecated 3.1
+ offset 120
+
+TexCoord4fv(v)
+ return void
+ param v CoordF in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 62
+ offset 121
+
+TexCoord4i(s, t, r, q)
+ return void
+ param s CoordI in value
+ param t CoordI in value
+ param r CoordI in value
+ param q CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord4iv
+ version 1.0
+ deprecated 3.1
+ offset 122
+
+TexCoord4iv(v)
+ return void
+ param v CoordI in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 63
+ offset 123
+
+TexCoord4s(s, t, r, q)
+ return void
+ param s CoordS in value
+ param t CoordS in value
+ param r CoordS in value
+ param q CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv TexCoord4sv
+ version 1.0
+ deprecated 3.1
+ offset 124
+
+TexCoord4sv(v)
+ return void
+ param v CoordS in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 64
+ offset 125
+
+Vertex2d(x, y)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex2dv
+ version 1.0
+ deprecated 3.1
+ offset 126
+
+Vertex2dv(v)
+ return void
+ param v CoordD in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 65
+ offset 127
+
+Vertex2f(x, y)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex2fv
+ version 1.0
+ deprecated 3.1
+ offset 128
+
+Vertex2fv(v)
+ return void
+ param v CoordF in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 66
+ offset 129
+
+Vertex2i(x, y)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex2iv
+ version 1.0
+ deprecated 3.1
+ offset 130
+
+Vertex2iv(v)
+ return void
+ param v CoordI in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 67
+ offset 131
+
+Vertex2s(x, y)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex2sv
+ version 1.0
+ deprecated 3.1
+ offset 132
+
+Vertex2sv(v)
+ return void
+ param v CoordS in array [2]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 68
+ offset 133
+
+Vertex3d(x, y, z)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex3dv
+ version 1.0
+ deprecated 3.1
+ offset 134
+
+Vertex3dv(v)
+ return void
+ param v CoordD in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 69
+ offset 135
+
+Vertex3f(x, y, z)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex3fv
+ version 1.0
+ deprecated 3.1
+ offset 136
+
+Vertex3fv(v)
+ return void
+ param v CoordF in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 70
+ offset 137
+
+Vertex3i(x, y, z)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex3iv
+ version 1.0
+ deprecated 3.1
+ offset 138
+
+Vertex3iv(v)
+ return void
+ param v CoordI in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 71
+ offset 139
+
+Vertex3s(x, y, z)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex3sv
+ version 1.0
+ deprecated 3.1
+ offset 140
+
+Vertex3sv(v)
+ return void
+ param v CoordS in array [3]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 72
+ offset 141
+
+Vertex4d(x, y, z, w)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ param w CoordD in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex4dv
+ version 1.0
+ deprecated 3.1
+ offset 142
+
+Vertex4dv(v)
+ return void
+ param v CoordD in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 73
+ offset 143
+
+Vertex4f(x, y, z, w)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ param w CoordF in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex4fv
+ version 1.0
+ deprecated 3.1
+ offset 144
+
+Vertex4fv(v)
+ return void
+ param v CoordF in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 74
+ offset 145
+
+Vertex4i(x, y, z, w)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ param w CoordI in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex4iv
+ version 1.0
+ deprecated 3.1
+ offset 146
+
+Vertex4iv(v)
+ return void
+ param v CoordI in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 75
+ offset 147
+
+Vertex4s(x, y, z, w)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ param w CoordS in value
+ category VERSION_1_0_DEPRECATED # old: drawing
+ vectorequiv Vertex4sv
+ version 1.0
+ deprecated 3.1
+ offset 148
+
+Vertex4sv(v)
+ return void
+ param v CoordS in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing
+ version 1.0
+ deprecated 3.1
+ glxropcode 76
+ offset 149
+
+ClipPlane(plane, equation)
+ return void
+ param plane ClipPlaneName in value
+ param equation Float64 in array [4]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 77
+ offset 150
+
+ColorMaterial(face, mode)
+ return void
+ param face MaterialFace in value
+ param mode ColorMaterialParameter in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 78
+ offset 151
+
+Fogf(pname, param)
+ return void
+ param pname FogParameter in value
+ param param CheckedFloat32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 80
+ wglflags small-data
+ offset 153
+
+Fogfv(pname, params)
+ return void
+ param pname FogParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 81
+ wglflags small-data
+ offset 154
+
+Fogi(pname, param)
+ return void
+ param pname FogParameter in value
+ param param CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 82
+ wglflags small-data
+ offset 155
+
+Fogiv(pname, params)
+ return void
+ param pname FogParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 83
+ wglflags small-data
+ offset 156
+
+Lightf(light, pname, param)
+ return void
+ param light LightName in value
+ param pname LightParameter in value
+ param param CheckedFloat32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 86
+ wglflags small-data
+ offset 159
+
+Lightfv(light, pname, params)
+ return void
+ param light LightName in value
+ param pname LightParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 87
+ wglflags small-data
+ offset 160
+
+Lighti(light, pname, param)
+ return void
+ param light LightName in value
+ param pname LightParameter in value
+ param param CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 88
+ wglflags small-data
+ offset 161
+
+Lightiv(light, pname, params)
+ return void
+ param light LightName in value
+ param pname LightParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 89
+ wglflags small-data
+ offset 162
+
+LightModelf(pname, param)
+ return void
+ param pname LightModelParameter in value
+ param param Float32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 90
+ wglflags small-data
+ offset 163
+
+LightModelfv(pname, params)
+ return void
+ param pname LightModelParameter in value
+ param params Float32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 91
+ wglflags small-data
+ offset 164
+
+LightModeli(pname, param)
+ return void
+ param pname LightModelParameter in value
+ param param Int32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 92
+ wglflags small-data
+ offset 165
+
+LightModeliv(pname, params)
+ return void
+ param pname LightModelParameter in value
+ param params Int32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 93
+ wglflags small-data
+ offset 166
+
+LineStipple(factor, pattern)
+ return void
+ param factor CheckedInt32 in value
+ param pattern LineStipple in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 94
+ offset 167
+
+Materialf(face, pname, param)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param param CheckedFloat32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 96
+ wglflags small-data
+ offset 169
+
+Materialfv(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 97
+ wglflags small-data
+ offset 170
+
+Materiali(face, pname, param)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param param CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 98
+ wglflags small-data
+ offset 171
+
+Materialiv(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 99
+ wglflags small-data
+ offset 172
+
+PolygonStipple(mask)
+ return void
+ param mask UInt8 in array [COMPSIZE()]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 102
+ wglflags client-handcode server-handcode
+ offset 175
+
+ShadeModel(mode)
+ return void
+ param mode ShadingModel in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 104
+ offset 177
+
+TexEnvf(target, pname, param)
+ return void
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param param CheckedFloat32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 111
+ wglflags small-data
+ offset 184
+
+TexEnvfv(target, pname, params)
+ return void
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 112
+ wglflags small-data
+ offset 185
+
+TexEnvi(target, pname, param)
+ return void
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param param CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 113
+ wglflags small-data
+ offset 186
+
+TexEnviv(target, pname, params)
+ return void
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 114
+ wglflags small-data
+ offset 187
+
+TexGend(coord, pname, param)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param param Float64 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 115
+ wglflags small-data
+ offset 188
+
+TexGendv(coord, pname, params)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Float64 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 116
+ wglflags small-data
+ offset 189
+
+TexGenf(coord, pname, param)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param param CheckedFloat32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 117
+ wglflags small-data
+ offset 190
+
+TexGenfv(coord, pname, params)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 118
+ wglflags small-data
+ offset 191
+
+TexGeni(coord, pname, param)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param param CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 119
+ wglflags small-data
+ offset 192
+
+TexGeniv(coord, pname, params)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: drawing-control
+ version 1.0
+ deprecated 3.1
+ glxropcode 120
+ wglflags small-data
+ offset 193
+
+# feedback commands
+
+FeedbackBuffer(size, type, buffer)
+ return void
+ param size SizeI in value
+ param type FeedbackType in value
+ param buffer FeedbackElement out array [size] retained
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category VERSION_1_0_DEPRECATED # old: feedback
+ version 1.0
+ deprecated 3.1
+ glxsingle 105
+ wglflags client-handcode server-handcode batchable
+ offset 194
+
+SelectBuffer(size, buffer)
+ return void
+ param size SizeI in value
+ param buffer SelectName out array [size] retained
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category VERSION_1_0_DEPRECATED # old: feedback
+ version 1.0
+ deprecated 3.1
+ glxsingle 106
+ wglflags client-handcode server-handcode batchable
+ offset 195
+
+RenderMode(mode)
+ return Int32
+ param mode RenderingMode in value
+ category VERSION_1_0_DEPRECATED # old: feedback
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxsingle 107
+ wglflags client-handcode server-handcode
+ offset 196
+
+InitNames()
+ return void
+ category VERSION_1_0_DEPRECATED # old: feedback
+ version 1.0
+ deprecated 3.1
+ glxropcode 121
+ offset 197
+
+LoadName(name)
+ return void
+ param name SelectName in value
+ category VERSION_1_0_DEPRECATED # old: feedback
+ version 1.0
+ deprecated 3.1
+ glxropcode 122
+ offset 198
+
+PassThrough(token)
+ return void
+ param token FeedbackElement in value
+ category VERSION_1_0_DEPRECATED # old: feedback
+ version 1.0
+ deprecated 3.1
+ glxropcode 123
+ offset 199
+
+PopName()
+ return void
+ category VERSION_1_0_DEPRECATED # old: feedback
+ version 1.0
+ deprecated 3.1
+ glxropcode 124
+ offset 200
+
+PushName(name)
+ return void
+ param name SelectName in value
+ category VERSION_1_0_DEPRECATED # old: feedback
+ version 1.0
+ deprecated 3.1
+ glxropcode 125
+ offset 201
+
+ClearAccum(red, green, blue, alpha)
+ return void
+ param red Float32 in value
+ param green Float32 in value
+ param blue Float32 in value
+ param alpha Float32 in value
+ category VERSION_1_0_DEPRECATED # old: framebuf
+ version 1.0
+ deprecated 3.1
+ glxropcode 128
+ offset 204
+
+ClearIndex(c)
+ return void
+ param c MaskedColorIndexValueF in value
+ category VERSION_1_0_DEPRECATED # old: framebuf
+ version 1.0
+ deprecated 3.1
+ glxropcode 129
+ offset 205
+
+IndexMask(mask)
+ return void
+ param mask MaskedColorIndexValueI in value
+ category VERSION_1_0_DEPRECATED # old: framebuf
+ version 1.0
+ deprecated 3.1
+ glxropcode 136
+ offset 212
+
+Accum(op, value)
+ return void
+ param op AccumOp in value
+ param value CoordF in value
+ category VERSION_1_0_DEPRECATED # old: misc
+ version 1.0
+ deprecated 3.1
+ glxropcode 137
+ offset 213
+
+PopAttrib()
+ return void
+ category VERSION_1_0_DEPRECATED # old: misc
+ version 1.0
+ deprecated 3.1
+ glxropcode 141
+ offset 218
+
+PushAttrib(mask)
+ return void
+ param mask AttribMask in value
+ category VERSION_1_0_DEPRECATED # old: misc
+ version 1.0
+ deprecated 3.1
+ glxropcode 142
+ offset 219
+
+# modeling commands
+
+Map1d(target, u1, u2, stride, order, points)
+ return void
+ param target MapTarget in value
+ param u1 CoordD in value
+ param u2 CoordD in value
+ param stride Int32 in value
+ param order CheckedInt32 in value
+ param points CoordD in array [COMPSIZE(target/stride/order)]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 143
+ wglflags client-handcode server-handcode
+ offset 220
+
+Map1f(target, u1, u2, stride, order, points)
+ return void
+ param target MapTarget in value
+ param u1 CoordF in value
+ param u2 CoordF in value
+ param stride Int32 in value
+ param order CheckedInt32 in value
+ param points CoordF in array [COMPSIZE(target/stride/order)]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 144
+ wglflags client-handcode server-handcode
+ offset 221
+
+Map2d(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+ return void
+ param target MapTarget in value
+ param u1 CoordD in value
+ param u2 CoordD in value
+ param ustride Int32 in value
+ param uorder CheckedInt32 in value
+ param v1 CoordD in value
+ param v2 CoordD in value
+ param vstride Int32 in value
+ param vorder CheckedInt32 in value
+ param points CoordD in array [COMPSIZE(target/ustride/uorder/vstride/vorder)]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 145
+ wglflags client-handcode server-handcode
+ offset 222
+
+Map2f(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+ return void
+ param target MapTarget in value
+ param u1 CoordF in value
+ param u2 CoordF in value
+ param ustride Int32 in value
+ param uorder CheckedInt32 in value
+ param v1 CoordF in value
+ param v2 CoordF in value
+ param vstride Int32 in value
+ param vorder CheckedInt32 in value
+ param points CoordF in array [COMPSIZE(target/ustride/uorder/vstride/vorder)]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 146
+ wglflags client-handcode server-handcode
+ offset 223
+
+MapGrid1d(un, u1, u2)
+ return void
+ param un Int32 in value
+ param u1 CoordD in value
+ param u2 CoordD in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 147
+ offset 224
+
+MapGrid1f(un, u1, u2)
+ return void
+ param un Int32 in value
+ param u1 CoordF in value
+ param u2 CoordF in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 148
+ offset 225
+
+MapGrid2d(un, u1, u2, vn, v1, v2)
+ return void
+ param un Int32 in value
+ param u1 CoordD in value
+ param u2 CoordD in value
+ param vn Int32 in value
+ param v1 CoordD in value
+ param v2 CoordD in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 149
+ offset 226
+
+MapGrid2f(un, u1, u2, vn, v1, v2)
+ return void
+ param un Int32 in value
+ param u1 CoordF in value
+ param u2 CoordF in value
+ param vn Int32 in value
+ param v1 CoordF in value
+ param v2 CoordF in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 150
+ offset 227
+
+EvalCoord1d(u)
+ return void
+ param u CoordD in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ vectorequiv EvalCoord1dv
+ version 1.0
+ deprecated 3.1
+ offset 228
+
+EvalCoord1dv(u)
+ return void
+ param u CoordD in array [1]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 151
+ offset 229
+
+EvalCoord1f(u)
+ return void
+ param u CoordF in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ vectorequiv EvalCoord1fv
+ version 1.0
+ deprecated 3.1
+ offset 230
+
+EvalCoord1fv(u)
+ return void
+ param u CoordF in array [1]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 152
+ offset 231
+
+EvalCoord2d(u, v)
+ return void
+ param u CoordD in value
+ param v CoordD in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ vectorequiv EvalCoord2dv
+ version 1.0
+ deprecated 3.1
+ offset 232
+
+EvalCoord2dv(u)
+ return void
+ param u CoordD in array [2]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 153
+ offset 233
+
+EvalCoord2f(u, v)
+ return void
+ param u CoordF in value
+ param v CoordF in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ vectorequiv EvalCoord2fv
+ version 1.0
+ deprecated 3.1
+ offset 234
+
+EvalCoord2fv(u)
+ return void
+ param u CoordF in array [2]
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 154
+ offset 235
+
+EvalMesh1(mode, i1, i2)
+ return void
+ param mode MeshMode1 in value
+ param i1 CheckedInt32 in value
+ param i2 CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 155
+ offset 236
+
+EvalPoint1(i)
+ return void
+ param i Int32 in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 156
+ offset 237
+
+EvalMesh2(mode, i1, i2, j1, j2)
+ return void
+ param mode MeshMode2 in value
+ param i1 CheckedInt32 in value
+ param i2 CheckedInt32 in value
+ param j1 CheckedInt32 in value
+ param j2 CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 157
+ offset 238
+
+EvalPoint2(i, j)
+ return void
+ param i CheckedInt32 in value
+ param j CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: modeling
+ version 1.0
+ deprecated 3.1
+ glxropcode 158
+ offset 239
+
+AlphaFunc(func, ref)
+ return void
+ param func AlphaFunction in value
+ param ref ClampedFloat32 in value
+ category VERSION_1_0_DEPRECATED # old: pixel-op
+ version 1.0
+ deprecated 3.1
+ glxropcode 159
+ offset 240
+
+PixelZoom(xfactor, yfactor)
+ return void
+ param xfactor Float32 in value
+ param yfactor Float32 in value
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ version 1.0
+ deprecated 3.1
+ glxropcode 165
+ offset 246
+
+PixelTransferf(pname, param)
+ return void
+ param pname PixelTransferParameter in value
+ param param CheckedFloat32 in value
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ version 1.0
+ deprecated 3.1
+ glxropcode 166
+ offset 247
+
+PixelTransferi(pname, param)
+ return void
+ param pname PixelTransferParameter in value
+ param param CheckedInt32 in value
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ version 1.0
+ deprecated 3.1
+ glxropcode 167
+ offset 248
+
+PixelMapfv(map, mapsize, values)
+ return void
+ param map PixelMap in value
+ param mapsize CheckedInt32 in value
+ param values Float32 in array [mapsize]
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ glxflags client-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 168
+ offset 251
+
+PixelMapuiv(map, mapsize, values)
+ return void
+ param map PixelMap in value
+ param mapsize CheckedInt32 in value
+ param values UInt32 in array [mapsize]
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ glxflags client-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 169
+ offset 252
+
+PixelMapusv(map, mapsize, values)
+ return void
+ param map PixelMap in value
+ param mapsize CheckedInt32 in value
+ param values UInt16 in array [mapsize]
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ glxflags client-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 170
+ offset 253
+
+CopyPixels(x, y, width, height, type)
+ return void
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ param type PixelCopyType in value
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ version 1.0
+ deprecated 3.1
+ glxropcode 172
+ offset 255
+
+DrawPixels(width, height, format, type, pixels)
+ return void
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category VERSION_1_0_DEPRECATED # old: pixel-rw
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxropcode 173
+ wglflags client-handcode server-handcode
+ offset 257
+
+GetClipPlane(plane, equation)
+ return void
+ param plane ClipPlaneName in value
+ param equation Float64 out array [4]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 113
+ glxflags client-handcode server-handcode
+ offset 259
+
+GetLightfv(light, pname, params)
+ return void
+ param light LightName in value
+ param pname LightParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 118
+ wglflags small-data
+ offset 264
+
+GetLightiv(light, pname, params)
+ return void
+ param light LightName in value
+ param pname LightParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 119
+ wglflags small-data
+ offset 265
+
+GetMapdv(target, query, v)
+ return void
+ param target MapTarget in value
+ param query GetMapQuery in value
+ param v Float64 out array [COMPSIZE(target/query)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 120
+ offset 266
+
+GetMapfv(target, query, v)
+ return void
+ param target MapTarget in value
+ param query GetMapQuery in value
+ param v Float32 out array [COMPSIZE(target/query)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 121
+ offset 267
+
+GetMapiv(target, query, v)
+ return void
+ param target MapTarget in value
+ param query GetMapQuery in value
+ param v Int32 out array [COMPSIZE(target/query)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 122
+ offset 268
+
+GetMaterialfv(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 123
+ wglflags small-data
+ offset 269
+
+GetMaterialiv(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 124
+ wglflags small-data
+ offset 270
+
+GetPixelMapfv(map, values)
+ return void
+ param map PixelMap in value
+ param values Float32 out array [COMPSIZE(map)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 125
+ offset 271
+
+GetPixelMapuiv(map, values)
+ return void
+ param map PixelMap in value
+ param values UInt32 out array [COMPSIZE(map)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 126
+ offset 272
+
+GetPixelMapusv(map, values)
+ return void
+ param map PixelMap in value
+ param values UInt16 out array [COMPSIZE(map)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 127
+ offset 273
+
+GetPolygonStipple(mask)
+ return void
+ param mask UInt8 out array [COMPSIZE()]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.0
+ deprecated 3.1
+ glxsingle 128
+ wglflags client-handcode server-handcode
+ offset 274
+
+GetTexEnvfv(target, pname, params)
+ return void
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 130
+ wglflags small-data
+ offset 276
+
+GetTexEnviv(target, pname, params)
+ return void
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 131
+ wglflags small-data
+ offset 277
+
+GetTexGendv(coord, pname, params)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Float64 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 132
+ wglflags small-data
+ offset 278
+
+GetTexGenfv(coord, pname, params)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 133
+ wglflags small-data
+ offset 279
+
+GetTexGeniv(coord, pname, params)
+ return void
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 134
+ wglflags small-data
+ offset 280
+
+IsList(list)
+ return Boolean
+ param list List in value
+ category VERSION_1_0_DEPRECATED # old: state-req
+ dlflags notlistable
+ version 1.0
+ deprecated 3.1
+ glxsingle 141
+ offset 287
+
+Frustum(left, right, bottom, top, zNear, zFar)
+ return void
+ param left Float64 in value
+ param right Float64 in value
+ param bottom Float64 in value
+ param top Float64 in value
+ param zNear Float64 in value
+ param zFar Float64 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 175
+ offset 289
+
+LoadIdentity()
+ return void
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 176
+ offset 290
+
+LoadMatrixf(m)
+ return void
+ param m Float32 in array [16]
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 177
+ offset 291
+
+LoadMatrixd(m)
+ return void
+ param m Float64 in array [16]
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 178
+ offset 292
+
+MatrixMode(mode)
+ return void
+ param mode MatrixMode in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 179
+ offset 293
+
+MultMatrixf(m)
+ return void
+ param m Float32 in array [16]
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 180
+ offset 294
+
+MultMatrixd(m)
+ return void
+ param m Float64 in array [16]
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 181
+ offset 295
+
+Ortho(left, right, bottom, top, zNear, zFar)
+ return void
+ param left Float64 in value
+ param right Float64 in value
+ param bottom Float64 in value
+ param top Float64 in value
+ param zNear Float64 in value
+ param zFar Float64 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 182
+ offset 296
+
+PopMatrix()
+ return void
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 183
+ offset 297
+
+PushMatrix()
+ return void
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 184
+ offset 298
+
+Rotated(angle, x, y, z)
+ return void
+ param angle Float64 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 185
+ offset 299
+
+Rotatef(angle, x, y, z)
+ return void
+ param angle Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 186
+ offset 300
+
+Scaled(x, y, z)
+ return void
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 187
+ offset 301
+
+Scalef(x, y, z)
+ return void
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 188
+ offset 302
+
+Translated(x, y, z)
+ return void
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 189
+ offset 303
+
+Translatef(x, y, z)
+ return void
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category VERSION_1_0_DEPRECATED # old: xform
+ version 1.0
+ deprecated 3.1
+ glxropcode 190
+ offset 304
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.1 commands
+#
+###############################################################################
+###############################################################################
+
+DrawArrays(mode, first, count)
+ return void
+ param mode BeginMode in value
+ param first Int32 in value
+ param count SizeI in value
+ category VERSION_1_1
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ glxropcode 193
+ offset 310
+
+DrawElements(mode, count, type, indices)
+ return void
+ param mode BeginMode in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ category VERSION_1_1
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ offset 311
+
+GetPointerv(pname, params)
+ return void
+ param pname GetPointervPName in value
+ param params VoidPointer out array [1]
+ category VERSION_1_1
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ offset 329
+
+PolygonOffset(factor, units)
+ return void
+ param factor Float32 in value
+ param units Float32 in value
+ category VERSION_1_1
+ version 1.1
+ glxropcode 192
+ offset 319
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage1D(target, level, internalformat, x, y, width, border)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ category VERSION_1_1
+ version 1.1
+ glxropcode 4119
+ glxflags EXT
+ offset 323
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage2D(target, level, internalformat, x, y, width, height, border)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ category VERSION_1_1
+ version 1.1
+ glxropcode 4120
+ glxflags EXT
+ offset 324
+
+CopyTexSubImage1D(target, level, xoffset, x, y, width)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category VERSION_1_1
+ version 1.1
+ glxropcode 4121
+ glxflags EXT
+ offset 325
+
+CopyTexSubImage2D(target, level, xoffset, yoffset, x, y, width, height)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category VERSION_1_1
+ version 1.1
+ glxropcode 4122
+ glxflags EXT
+ offset 326
+
+TexSubImage1D(target, level, xoffset, width, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width)]
+ category VERSION_1_1
+ dlflags handcode
+ glxflags EXT client-handcode server-handcode
+ version 1.1
+ glxropcode 4099
+ offset 332
+
+TexSubImage2D(target, level, xoffset, yoffset, width, height, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category VERSION_1_1
+ dlflags handcode
+ glxflags EXT client-handcode server-handcode
+ version 1.1
+ glxropcode 4100
+ offset 333
+
+BindTexture(target, texture)
+ return void
+ param target TextureTarget in value
+ param texture Texture in value
+ category VERSION_1_1
+ version 1.1
+ glxropcode 4117
+ glxflags EXT
+ offset 307
+
+DeleteTextures(n, textures)
+ return void
+ param n SizeI in value
+ param textures Texture in array [n]
+ category VERSION_1_1
+ dlflags notlistable
+ version 1.1
+ glxsingle 144
+ offset 327
+
+GenTextures(n, textures)
+ return void
+ param n SizeI in value
+ param textures Texture out array [n]
+ category VERSION_1_1
+ dlflags notlistable
+ version 1.1
+ glxsingle 145
+ offset 328
+
+IsTexture(texture)
+ return Boolean
+ param texture Texture in value
+ category VERSION_1_1
+ dlflags notlistable
+ version 1.1
+ glxsingle 146
+ offset 330
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.1 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+ArrayElement(i)
+ return void
+ param i Int32 in value
+ category VERSION_1_1_DEPRECATED
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 306
+
+ColorPointer(size, type, stride, pointer)
+ return void
+ param size Int32 in value
+ param type ColorPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 308
+
+DisableClientState(array)
+ return void
+ param array EnableCap in value
+ category VERSION_1_1_DEPRECATED
+ version 1.1
+ deprecated 3.1
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ offset 309
+
+EdgeFlagPointer(stride, pointer)
+ return void
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(stride)] retained
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 312
+
+EnableClientState(array)
+ return void
+ param array EnableCap in value
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 313
+
+IndexPointer(type, stride, pointer)
+ return void
+ param type IndexPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 314
+
+InterleavedArrays(format, stride, pointer)
+ return void
+ param format InterleavedArrayFormat in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(format/stride)] retained
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 317
+
+NormalPointer(type, stride, pointer)
+ return void
+ param type NormalPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 318
+
+TexCoordPointer(size, type, stride, pointer)
+ return void
+ param size Int32 in value
+ param type TexCoordPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 320
+
+VertexPointer(size, type, stride, pointer)
+ return void
+ param size Int32 in value
+ param type VertexPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category VERSION_1_1_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ deprecated 3.1
+ offset 321
+
+AreTexturesResident(n, textures, residences)
+ return Boolean
+ param n SizeI in value
+ param textures Texture in array [n]
+ param residences Boolean out array [n]
+ category VERSION_1_1_DEPRECATED
+ glxsingle 143
+ dlflags notlistable
+ version 1.1
+ deprecated 3.1
+ offset 322
+
+PrioritizeTextures(n, textures, priorities)
+ return void
+ param n SizeI in value
+ param textures Texture in array [n]
+ param priorities ClampedFloat32 in array [n]
+ category VERSION_1_1_DEPRECATED
+ version 1.1
+ deprecated 3.1
+ glxropcode 4118
+ glxflags EXT
+ offset 331
+
+Indexub(c)
+ return void
+ param c ColorIndexValueUB in value
+ category VERSION_1_1_DEPRECATED
+ vectorequiv Indexubv
+ version 1.1
+ offset 315
+
+Indexubv(c)
+ return void
+ param c ColorIndexValueUB in array [1]
+ category VERSION_1_1_DEPRECATED
+ version 1.1
+ glxropcode 194
+ offset 316
+
+PopClientAttrib()
+ return void
+ category VERSION_1_1_DEPRECATED
+ version 1.1
+ deprecated 3.1
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ offset 334
+
+PushClientAttrib(mask)
+ return void
+ param mask ClientAttribMask in value
+ category VERSION_1_1_DEPRECATED
+ version 1.1
+ deprecated 3.1
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ offset 335
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.2 commands
+#
+###############################################################################
+###############################################################################
+
+BlendColor(red, green, blue, alpha)
+ return void
+ param red ClampedColorF in value
+ param green ClampedColorF in value
+ param blue ClampedColorF in value
+ param alpha ClampedColorF in value
+ category VERSION_1_2
+ glxflags EXT
+ version 1.2
+ glxropcode 4096
+ offset 336
+
+BlendEquation(mode)
+ return void
+ param mode BlendEquationMode in value
+ category VERSION_1_2
+ glxflags EXT
+ version 1.2
+ glxropcode 4097
+ offset 337
+
+DrawRangeElements(mode, start, end, count, type, indices)
+ return void
+ param mode BeginMode in value
+ param start UInt32 in value
+ param end UInt32 in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ category VERSION_1_2
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.2
+ offset 338
+
+# OpenGL 1.2 (EXT_texture3D) commands
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+TexImage3D(target, level, internalformat, width, height, depth, border, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureComponentCount in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category VERSION_1_2
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4114
+ offset 371
+
+TexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category VERSION_1_2
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.2
+ glxropcode 4115
+ offset 372
+
+# OpenGL 1.2 (EXT_copy_texture) commands (specific to texture3D)
+
+CopyTexSubImage3D(target, level, xoffset, yoffset, zoffset, x, y, width, height)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category VERSION_1_2
+ glxflags EXT
+ version 1.2
+ glxropcode 4123
+ offset 373
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.2 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.2 (SGI_color_table) commands
+
+ColorTable(target, internalformat, width, format, type, table)
+ return void
+ param target ColorTableTarget in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param table Void in array [COMPSIZE(format/type/width)]
+ category VERSION_1_2_DEPRECATED
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 2053
+ offset 339
+
+ColorTableParameterfv(target, pname, params)
+ return void
+ param target ColorTableTarget in value
+ param pname ColorTableParameterPName in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 2054
+ offset 340
+
+ColorTableParameteriv(target, pname, params)
+ return void
+ param target ColorTableTarget in value
+ param pname ColorTableParameterPName in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 2055
+ offset 341
+
+CopyColorTable(target, internalformat, x, y, width)
+ return void
+ param target ColorTableTarget in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 2056
+ offset 342
+
+GetColorTable(target, format, type, table)
+ return void
+ param target ColorTableTarget in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param table Void out array [COMPSIZE(target/format/type)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.2
+ deprecated 3.1
+ glxsingle 147
+ offset 343
+
+GetColorTableParameterfv(target, pname, params)
+ return void
+ param target ColorTableTarget in value
+ param pname GetColorTableParameterPName in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 148
+ offset 344
+
+GetColorTableParameteriv(target, pname, params)
+ return void
+ param target ColorTableTarget in value
+ param pname GetColorTableParameterPName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 149
+ offset 345
+
+# OpenGL 1.2 (EXT_color_subtable) commands
+
+ColorSubTable(target, start, count, format, type, data)
+ return void
+ param target ColorTableTarget in value
+ param start SizeI in value
+ param count SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param data Void in array [COMPSIZE(format/type/count)]
+ category VERSION_1_2_DEPRECATED
+ dlflags handcode
+ glxflags client-handcode server-handcode
+ version 1.2
+ deprecated 3.1
+ glxropcode 195
+ offset 346
+
+CopyColorSubTable(target, start, x, y, width)
+ return void
+ param target ColorTableTarget in value
+ param start SizeI in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category VERSION_1_2_DEPRECATED
+ version 1.2
+ deprecated 3.1
+ glxropcode 196
+ offset 347
+
+# OpenGL 1.2 (EXT_convolution) commands
+
+ConvolutionFilter1D(target, internalformat, width, format, type, image)
+ return void
+ param target ConvolutionTarget in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param image Void in array [COMPSIZE(format/type/width)]
+ category VERSION_1_2_DEPRECATED
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4101
+ offset 348
+
+ConvolutionFilter2D(target, internalformat, width, height, format, type, image)
+ return void
+ param target ConvolutionTarget in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param image Void in array [COMPSIZE(format/type/width/height)]
+ category VERSION_1_2_DEPRECATED
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4102
+ offset 349
+
+ConvolutionParameterf(target, pname, params)
+ return void
+ param target ConvolutionTarget in value
+ param pname ConvolutionParameter in value
+ param params CheckedFloat32 in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4103
+ offset 350
+
+ConvolutionParameterfv(target, pname, params)
+ return void
+ param target ConvolutionTarget in value
+ param pname ConvolutionParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4104
+ offset 351
+
+ConvolutionParameteri(target, pname, params)
+ return void
+ param target ConvolutionTarget in value
+ param pname ConvolutionParameter in value
+ param params CheckedInt32 in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4105
+ offset 352
+
+ConvolutionParameteriv(target, pname, params)
+ return void
+ param target ConvolutionTarget in value
+ param pname ConvolutionParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4106
+ offset 353
+
+CopyConvolutionFilter1D(target, internalformat, x, y, width)
+ return void
+ param target ConvolutionTarget in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4107
+ offset 354
+
+CopyConvolutionFilter2D(target, internalformat, x, y, width, height)
+ return void
+ param target ConvolutionTarget in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4108
+ offset 355
+
+GetConvolutionFilter(target, format, type, image)
+ return void
+ param target ConvolutionTarget in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param image Void out array [COMPSIZE(target/format/type)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.2
+ deprecated 3.1
+ glxsingle 150
+ offset 356
+
+GetConvolutionParameterfv(target, pname, params)
+ return void
+ param target ConvolutionTarget in value
+ param pname GetConvolutionParameterPName in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 151
+ offset 357
+
+GetConvolutionParameteriv(target, pname, params)
+ return void
+ param target ConvolutionTarget in value
+ param pname GetConvolutionParameterPName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 152
+ offset 358
+
+GetSeparableFilter(target, format, type, row, column, span)
+ return void
+ param target SeparableTarget in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param row Void out array [COMPSIZE(target/format/type)]
+ param column Void out array [COMPSIZE(target/format/type)]
+ param span Void out array [COMPSIZE(target/format/type)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.2
+ deprecated 3.1
+ glxsingle 153
+ offset 359
+
+SeparableFilter2D(target, internalformat, width, height, format, type, row, column)
+ return void
+ param target SeparableTarget in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param row Void in array [COMPSIZE(target/format/type/width)]
+ param column Void in array [COMPSIZE(target/format/type/height)]
+ category VERSION_1_2_DEPRECATED
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4109
+ offset 360
+
+# OpenGL 1.2 (EXT_histogram) commands
+
+GetHistogram(target, reset, format, type, values)
+ return void
+ param target HistogramTarget in value
+ param reset Boolean in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param values Void out array [COMPSIZE(target/format/type)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.2
+ deprecated 3.1
+ glxsingle 154
+ offset 361
+
+GetHistogramParameterfv(target, pname, params)
+ return void
+ param target HistogramTarget in value
+ param pname GetHistogramParameterPName in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 155
+ offset 362
+
+GetHistogramParameteriv(target, pname, params)
+ return void
+ param target HistogramTarget in value
+ param pname GetHistogramParameterPName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 156
+ offset 363
+
+GetMinmax(target, reset, format, type, values)
+ return void
+ param target MinmaxTarget in value
+ param reset Boolean in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param values Void out array [COMPSIZE(target/format/type)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.2
+ deprecated 3.1
+ glxsingle 157
+ offset 364
+
+GetMinmaxParameterfv(target, pname, params)
+ return void
+ param target MinmaxTarget in value
+ param pname GetMinmaxParameterPName in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 158
+ offset 365
+
+GetMinmaxParameteriv(target, pname, params)
+ return void
+ param target MinmaxTarget in value
+ param pname GetMinmaxParameterPName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_2_DEPRECATED
+ dlflags notlistable
+ version 1.2
+ deprecated 3.1
+ glxsingle 159
+ offset 366
+
+Histogram(target, width, internalformat, sink)
+ return void
+ param target HistogramTarget in value
+ param width SizeI in value
+ param internalformat PixelInternalFormat in value
+ param sink Boolean in value
+ category VERSION_1_2_DEPRECATED
+ dlflags handcode
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4110
+ offset 367
+
+Minmax(target, internalformat, sink)
+ return void
+ param target MinmaxTarget in value
+ param internalformat PixelInternalFormat in value
+ param sink Boolean in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4111
+ offset 368
+
+ResetHistogram(target)
+ return void
+ param target HistogramTarget in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4112
+ offset 369
+
+ResetMinmax(target)
+ return void
+ param target MinmaxTarget in value
+ category VERSION_1_2_DEPRECATED
+ glxflags EXT
+ version 1.2
+ deprecated 3.1
+ glxropcode 4113
+ offset 370
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.3 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.3 (ARB_multitexture) commands
+
+ActiveTexture(texture)
+ return void
+ param texture TextureUnit in value
+ category VERSION_1_3
+ glxflags ARB
+ version 1.3
+ glxropcode 197
+ offset 374
+
+# OpenGL 1.3 (ARB_multisample) commands
+
+SampleCoverage(value, invert)
+ return void
+ param value ClampedFloat32 in value
+ param invert Boolean in value
+ category VERSION_1_3
+ glxflags ARB
+ version 1.3
+ glxropcode 229
+ offset 412
+
+# OpenGL 1.3 (ARB_texture_compression) commands
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage3D(target, level, internalformat, width, height, depth, border, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category VERSION_1_3
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.3
+ glxropcode 216
+ wglflags client-handcode server-handcode
+ offset 554
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage2D(target, level, internalformat, width, height, border, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category VERSION_1_3
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.3
+ glxropcode 215
+ wglflags client-handcode server-handcode
+ offset 555
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage1D(target, level, internalformat, width, border, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category VERSION_1_3
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.3
+ glxropcode 214
+ wglflags client-handcode server-handcode
+ offset 556
+
+CompressedTexSubImage3D(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category VERSION_1_3
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.3
+ glxropcode 219
+ wglflags client-handcode server-handcode
+ offset 557
+
+CompressedTexSubImage2D(target, level, xoffset, yoffset, width, height, format, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category VERSION_1_3
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.3
+ glxropcode 218
+ wglflags client-handcode server-handcode
+ offset 558
+
+CompressedTexSubImage1D(target, level, xoffset, width, format, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category VERSION_1_3
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.3
+ glxropcode 217
+ wglflags client-handcode server-handcode
+ offset 559
+
+GetCompressedTexImage(target, level, img)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param img CompressedTextureARB out array [COMPSIZE(target/level)]
+ category VERSION_1_3
+ dlflags notlistable
+ glxflags ARB client-handcode server-handcode
+ version 1.3
+ glxsingle 160
+ wglflags client-handcode server-handcode
+ offset 560
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.3 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+ClientActiveTexture(texture)
+ return void
+ param texture TextureUnit in value
+ category VERSION_1_3_DEPRECATED
+ dlflags notlistable
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.3
+ deprecated 3.1
+ offset 375
+
+MultiTexCoord1d(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord1dv
+ offset 376
+
+MultiTexCoord1dv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [1]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 198
+ offset 377
+
+MultiTexCoord1f(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord1fv
+ offset 378
+
+MultiTexCoord1fv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [1]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 199
+ offset 379
+
+MultiTexCoord1i(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord1iv
+ offset 380
+
+MultiTexCoord1iv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [1]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 200
+ offset 381
+
+MultiTexCoord1s(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord1sv
+ offset 382
+
+MultiTexCoord1sv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [1]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 201
+ offset 383
+
+MultiTexCoord2d(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ param t CoordD in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord2dv
+ offset 384
+
+MultiTexCoord2dv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [2]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 202
+ offset 385
+
+MultiTexCoord2f(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ param t CoordF in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord2fv
+ offset 386
+
+MultiTexCoord2fv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [2]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 203
+ offset 387
+
+MultiTexCoord2i(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ param t CoordI in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord2iv
+ offset 388
+
+MultiTexCoord2iv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [2]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 204
+ offset 389
+
+MultiTexCoord2s(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ param t CoordS in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord2sv
+ offset 390
+
+MultiTexCoord2sv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [2]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 205
+ offset 391
+
+MultiTexCoord3d(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ param t CoordD in value
+ param r CoordD in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord3dv
+ offset 392
+
+MultiTexCoord3dv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [3]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 206
+ offset 393
+
+MultiTexCoord3f(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ param t CoordF in value
+ param r CoordF in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord3fv
+ offset 394
+
+MultiTexCoord3fv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [3]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 207
+ offset 395
+
+MultiTexCoord3i(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ param t CoordI in value
+ param r CoordI in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord3iv
+ offset 396
+
+MultiTexCoord3iv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [3]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 208
+ offset 397
+
+MultiTexCoord3s(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ param t CoordS in value
+ param r CoordS in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord3sv
+ offset 398
+
+MultiTexCoord3sv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [3]
+ category VERSION_1_3_DEPRECATED
+ version 1.3
+ deprecated 3.1
+ glxflags ARB
+ glxropcode 209
+ offset 399
+
+MultiTexCoord4d(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ param t CoordD in value
+ param r CoordD in value
+ param q CoordD in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord4dv
+ offset 400
+
+MultiTexCoord4dv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [4]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 210
+ offset 401
+
+MultiTexCoord4f(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ param t CoordF in value
+ param r CoordF in value
+ param q CoordF in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord4fv
+ offset 402
+
+MultiTexCoord4fv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [4]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 211
+ offset 403
+
+MultiTexCoord4i(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ param t CoordI in value
+ param r CoordI in value
+ param q CoordI in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord4iv
+ offset 404
+
+MultiTexCoord4iv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [4]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 212
+ offset 405
+
+MultiTexCoord4s(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ param t CoordS in value
+ param r CoordS in value
+ param q CoordS in value
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ vectorequiv MultiTexCoord4sv
+ offset 406
+
+MultiTexCoord4sv(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [4]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB
+ version 1.3
+ deprecated 3.1
+ glxropcode 213
+ offset 407
+
+# OpenGL 1.3 (ARB_transpose_matrix) commands
+
+LoadTransposeMatrixf(m)
+ return void
+ param m Float32 in array [16]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.3
+ deprecated 3.1
+ offset 408
+
+LoadTransposeMatrixd(m)
+ return void
+ param m Float64 in array [16]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.3
+ deprecated 3.1
+ offset 409
+
+MultTransposeMatrixf(m)
+ return void
+ param m Float32 in array [16]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.3
+ deprecated 3.1
+ offset 410
+
+MultTransposeMatrixd(m)
+ return void
+ param m Float64 in array [16]
+ category VERSION_1_3_DEPRECATED
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.3
+ deprecated 3.1
+ offset 411
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.4 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.4 (EXT_blend_func_separate) commands
+
+BlendFuncSeparate(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
+ return void
+ param sfactorRGB BlendFuncSeparateParameterEXT in value
+ param dfactorRGB BlendFuncSeparateParameterEXT in value
+ param sfactorAlpha BlendFuncSeparateParameterEXT in value
+ param dfactorAlpha BlendFuncSeparateParameterEXT in value
+ category VERSION_1_4
+ glxropcode 4134
+ version 1.4
+ extension
+ offset 537
+
+# OpenGL 1.4 (EXT_multi_draw_arrays) commands
+
+# first and count are really 'in'
+MultiDrawArrays(mode, first, count, primcount)
+ return void
+ param mode BeginMode in value
+ param first Int32 out array [COMPSIZE(count)]
+ param count SizeI out array [COMPSIZE(primcount)]
+ param primcount SizeI in value
+ category VERSION_1_4
+ version 1.4
+ glxropcode ?
+ offset 644
+
+MultiDrawElements(mode, count, type, indices, primcount)
+ return void
+ param mode BeginMode in value
+ param count SizeI in array [COMPSIZE(primcount)]
+ param type DrawElementsType in value
+ param indices VoidPointer in array [COMPSIZE(primcount)]
+ param primcount SizeI in value
+ category VERSION_1_4
+ version 1.4
+ glxropcode ?
+ offset 645
+
+# OpenGL 1.4 (ARB_point_parameters, NV_point_sprite) commands
+
+PointParameterf(pname, param)
+ return void
+ param pname PointParameterNameARB in value
+ param param CheckedFloat32 in value
+ category VERSION_1_4
+ version 1.4
+ glxropcode 2065
+ extension
+ offset 458
+
+PointParameterfv(pname, params)
+ return void
+ param pname PointParameterNameARB in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category VERSION_1_4
+ version 1.4
+ glxropcode 2066
+ extension
+ offset 459
+
+PointParameteri(pname, param)
+ return void
+ param pname PointParameterNameARB in value
+ param param Int32 in value
+ category VERSION_1_4
+ version 1.4
+ extension soft WINSOFT NV20
+ glxropcode 4221
+ offset 642
+
+PointParameteriv(pname, params)
+ return void
+ param pname PointParameterNameARB in value
+ param params Int32 in array [COMPSIZE(pname)]
+ category VERSION_1_4
+ version 1.4
+ extension soft WINSOFT NV20
+ glxropcode 4222re
+ offset 643
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.4 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.4 (EXT_fog_coord) commands
+
+FogCoordf(coord)
+ return void
+ param coord CoordF in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv FogCoordfv
+ version 1.4
+ deprecated 3.1
+ offset 545
+
+FogCoordfv(coord)
+ return void
+ param coord CoordF in array [1]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4124
+ offset 546
+
+FogCoordd(coord)
+ return void
+ param coord CoordD in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv FogCoorddv
+ version 1.4
+ deprecated 3.1
+ offset 547
+
+FogCoorddv(coord)
+ return void
+ param coord CoordD in array [1]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4125
+ offset 548
+
+FogCoordPointer(type, stride, pointer)
+ return void
+ param type FogPointerTypeEXT in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category VERSION_1_4_DEPRECATED
+ dlflags notlistable
+ version 1.4
+ deprecated 3.1
+ glxflags client-handcode server-handcode
+ offset 549
+
+# OpenGL 1.4 (EXT_secondary_color) commands
+
+SecondaryColor3b(red, green, blue)
+ return void
+ param red ColorB in value
+ param green ColorB in value
+ param blue ColorB in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3bv
+ version 1.4
+ deprecated 3.1
+ offset 561
+
+SecondaryColor3bv(v)
+ return void
+ param v ColorB in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4126
+ offset 562
+
+SecondaryColor3d(red, green, blue)
+ return void
+ param red ColorD in value
+ param green ColorD in value
+ param blue ColorD in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3dv
+ version 1.4
+ deprecated 3.1
+ offset 563
+
+SecondaryColor3dv(v)
+ return void
+ param v ColorD in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4130
+ offset 564
+
+SecondaryColor3f(red, green, blue)
+ return void
+ param red ColorF in value
+ param green ColorF in value
+ param blue ColorF in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3fv
+ version 1.4
+ deprecated 3.1
+ offset 565
+
+SecondaryColor3fv(v)
+ return void
+ param v ColorF in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4129
+ offset 566
+
+SecondaryColor3i(red, green, blue)
+ return void
+ param red ColorI in value
+ param green ColorI in value
+ param blue ColorI in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3iv
+ version 1.4
+ deprecated 3.1
+ offset 567
+
+SecondaryColor3iv(v)
+ return void
+ param v ColorI in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4128
+ offset 568
+
+SecondaryColor3s(red, green, blue)
+ return void
+ param red ColorS in value
+ param green ColorS in value
+ param blue ColorS in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3sv
+ version 1.4
+ deprecated 3.1
+ offset 569
+
+SecondaryColor3sv(v)
+ return void
+ param v ColorS in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4127
+ offset 570
+
+SecondaryColor3ub(red, green, blue)
+ return void
+ param red ColorUB in value
+ param green ColorUB in value
+ param blue ColorUB in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3ubv
+ version 1.4
+ deprecated 3.1
+ offset 571
+
+SecondaryColor3ubv(v)
+ return void
+ param v ColorUB in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4131
+ offset 572
+
+SecondaryColor3ui(red, green, blue)
+ return void
+ param red ColorUI in value
+ param green ColorUI in value
+ param blue ColorUI in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3uiv
+ version 1.4
+ deprecated 3.1
+ offset 573
+
+SecondaryColor3uiv(v)
+ return void
+ param v ColorUI in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4133
+ offset 574
+
+SecondaryColor3us(red, green, blue)
+ return void
+ param red ColorUS in value
+ param green ColorUS in value
+ param blue ColorUS in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv SecondaryColor3usv
+ version 1.4
+ deprecated 3.1
+ offset 575
+
+SecondaryColor3usv(v)
+ return void
+ param v ColorUS in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 4132
+ offset 576
+
+SecondaryColorPointer(size, type, stride, pointer)
+ return void
+ param size Int32 in value
+ param type ColorPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category VERSION_1_4_DEPRECATED
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ version 1.4
+ deprecated 3.1
+ extension
+ offset 577
+
+# OpenGL 1.4 (ARB_window_pos) commands
+# Note: all WindowPos* entry points use glxropcode ropcode 230, with 3 float parameters
+
+WindowPos2d(x, y)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv WindowPos2dv
+ version 1.4
+ deprecated 3.1
+ offset 513
+
+WindowPos2dv(v)
+ return void
+ param v CoordD in array [2]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 514
+
+WindowPos2f(x, y)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv WindowPos2fv
+ version 1.4
+ deprecated 3.1
+ offset 515
+
+WindowPos2fv(v)
+ return void
+ param v CoordF in array [2]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 516
+
+WindowPos2i(x, y)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv WindowPos2iv
+ version 1.4
+ deprecated 3.1
+ offset 517
+
+WindowPos2iv(v)
+ return void
+ param v CoordI in array [2]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 518
+
+WindowPos2s(x, y)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv WindowPos2sv
+ version 1.4
+ deprecated 3.1
+ offset 519
+
+WindowPos2sv(v)
+ return void
+ param v CoordS in array [2]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 520
+
+WindowPos3d(x, y, z)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ vectorequiv WindowPos3dv
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ offset 521
+
+WindowPos3dv(v)
+ return void
+ param v CoordD in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 522
+
+WindowPos3f(x, y, z)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv WindowPos3fv
+ version 1.4
+ deprecated 3.1
+ offset 523
+
+WindowPos3fv(v)
+ return void
+ param v CoordF in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 524
+
+WindowPos3i(x, y, z)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv WindowPos3iv
+ version 1.4
+ deprecated 3.1
+ offset 525
+
+WindowPos3iv(v)
+ return void
+ param v CoordI in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 526
+
+WindowPos3s(x, y, z)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ category VERSION_1_4_DEPRECATED
+ vectorequiv WindowPos3sv
+ version 1.4
+ deprecated 3.1
+ offset 527
+
+WindowPos3sv(v)
+ return void
+ param v CoordS in array [3]
+ category VERSION_1_4_DEPRECATED
+ version 1.4
+ deprecated 3.1
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ offset 528
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 1.5 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 1.5 (ARB_occlusion_query) commands
+
+GenQueries(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 out array [n]
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxsingle 162
+ glxflags ignore
+ offset 700
+
+DeleteQueries(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 in array [n]
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxsingle 161
+ glxflags ignore
+ offset 701
+
+IsQuery(id)
+ return Boolean
+ param id UInt32 in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxsingle 163
+ glxflags ignore
+ offset 702
+
+BeginQuery(target, id)
+ return void
+ param target GLenum in value
+ param id UInt32 in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode 231
+ glxflags ignore
+ offset 703
+
+EndQuery(target)
+ return void
+ param target GLenum in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode 232
+ glxflags ignore
+ offset 704
+
+GetQueryiv(target, pname, params)
+ return void
+ param target GLenum in value
+ param pname GLenum in value
+ param params Int32 out array [pname]
+ category VERSION_1_5
+ dlflags notlistable
+ version 1.5
+ extension
+ glxsingle 164
+ glxflags ignore
+ offset 705
+
+GetQueryObjectiv(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [pname]
+ category VERSION_1_5
+ dlflags notlistable
+ version 1.5
+ extension
+ glxsingle 165
+ glxflags ignore
+ offset 706
+
+GetQueryObjectuiv(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params UInt32 out array [pname]
+ category VERSION_1_5
+ dlflags notlistable
+ version 1.5
+ extension
+ glxsingle 166
+ glxflags ignore
+ offset 707
+
+# OpenGL 1.5 (ARB_vertex_buffer_object) commands
+
+BindBuffer(target, buffer)
+ return void
+ param target BufferTargetARB in value
+ param buffer UInt32 in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 688
+
+DeleteBuffers(n, buffers)
+ return void
+ param n SizeI in value
+ param buffers ConstUInt32 in array [n]
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 691
+
+GenBuffers(n, buffers)
+ return void
+ param n SizeI in value
+ param buffers UInt32 out array [n]
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 692
+
+IsBuffer(buffer)
+ return Boolean
+ param buffer UInt32 in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 696
+
+BufferData(target, size, data, usage)
+ return void
+ param target BufferTargetARB in value
+ param size BufferSize in value
+ param data ConstVoid in array [size]
+ param usage BufferUsageARB in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 689
+
+BufferSubData(target, offset, size, data)
+ return void
+ param target BufferTargetARB in value
+ param offset BufferOffset in value
+ param size BufferSize in value
+ param data ConstVoid in array [size]
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 690
+
+GetBufferSubData(target, offset, size, data)
+ return void
+ param target BufferTargetARB in value
+ param offset BufferOffset in value
+ param size BufferSize in value
+ param data Void out array [size]
+ category VERSION_1_5
+ dlflags notlistable
+ version 1.5
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset 695
+
+MapBuffer(target, access)
+ return VoidPointer
+ param target BufferTargetARB in value
+ param access BufferAccessARB in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 697
+
+UnmapBuffer(target)
+ return Boolean
+ param target BufferTargetARB in value
+ category VERSION_1_5
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 698
+
+GetBufferParameteriv(target, pname, params)
+ return void
+ param target BufferTargetARB in value
+ param pname BufferPNameARB in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_1_5
+ dlflags notlistable
+ version 1.5
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset 693
+
+GetBufferPointerv(target, pname, params)
+ return void
+ param target BufferTargetARB in value
+ param pname BufferPointerNameARB in value
+ param params VoidPointer out array [1]
+ category VERSION_1_5
+ dlflags notlistable
+ version 1.5
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset 694
+
+# OpenGL 1.5 (EXT_shadow_funcs) commands - none
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 2.0 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 2.0 (EXT_blend_equation_separate) commands
+
+BlendEquationSeparate(modeRGB, modeAlpha)
+ return void
+ param modeRGB BlendEquationModeEXT in value
+ param modeAlpha BlendEquationModeEXT in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode 4228
+
+# OpenGL 2.0 (ARB_draw_buffers) commands
+
+DrawBuffers(n, bufs)
+ return void
+ param n SizeI in value
+ param bufs DrawBufferModeATI in array [n]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode 233
+ glxflags ignore
+ offset ?
+
+# OpenGL 2.0 (ARB_stencil_two_side) commands
+
+StencilOpSeparate(face, sfail, dpfail, dppass)
+ return void
+ param face StencilFaceDirection in value
+ param sfail StencilOp in value
+ param dpfail StencilOp in value
+ param dppass StencilOp in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+StencilFuncSeparate(frontfunc, backfunc, ref, mask)
+ return void
+ param frontfunc StencilFunction in value
+ param backfunc StencilFunction in value
+ param ref ClampedStencilValue in value
+ param mask MaskedStencilValue in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+StencilMaskSeparate(face, mask)
+ return void
+ param face StencilFaceDirection in value
+ param mask MaskedStencilValue in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+# OpenGL 2.0 (ARB_shader_objects / ARB_vertex_shader / ARB_fragment_shader) commands
+
+AttachShader(program, shader)
+ return void
+ param program UInt32 in value
+ param shader UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindAttribLocation(program, index, name)
+ return void
+ param program UInt32 in value
+ param index UInt32 in value
+ param name Char in array []
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+CompileShader(shader)
+ return void
+ param shader UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+CreateProgram()
+ return UInt32
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+CreateShader(type)
+ return UInt32
+ param type GLenum in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteProgram(program)
+ return void
+ param program UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteShader(shader)
+ return void
+ param shader UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DetachShader(program, shader)
+ return void
+ param program UInt32 in value
+ param shader UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DisableVertexAttribArray(index)
+ return void
+ param index UInt32 in value
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 666
+
+EnableVertexAttribArray(index)
+ return void
+ param index UInt32 in value
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 665
+
+GetActiveAttrib(program, index, bufSize, length, size, type, name)
+ return void
+ param program UInt32 in value
+ param index UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param size Int32 out array [1]
+ param type GLenum out array [1]
+ param name Char out array []
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveUniform(program, index, bufSize, length, size, type, name)
+ return void
+ param program UInt32 in value
+ param index UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param size Int32 out array [1]
+ param type GLenum out array [1]
+ param name Char out array []
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetAttachedShaders(program, maxCount, count, obj)
+ return void
+ param program UInt32 in value
+ param maxCount SizeI in value
+ param count SizeI out array [1]
+ param obj UInt32 out array [count]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetAttribLocation(program, name)
+ return Int32
+ param program UInt32 in value
+ param name Char in array []
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetProgramiv(program, pname, params)
+ return void
+ param program UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [pname]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetProgramInfoLog(program, bufSize, length, infoLog)
+ return void
+ param program UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param infoLog Char out array [length]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetShaderiv(shader, pname, params)
+ return void
+ param shader UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [pname]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetShaderInfoLog(shader, bufSize, length, infoLog)
+ return void
+ param shader UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param infoLog Char out array [length]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetShaderSource(shader, bufSize, length, source)
+ return void
+ param shader UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param source Char out array [length]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetUniformLocation(program, name)
+ return Int32
+ param program UInt32 in value
+ param name Char in array []
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetUniformfv(program, location, params)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param params Float32 out array [location]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetUniformiv(program, location, params)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param params Int32 out array [location]
+ category VERSION_2_0
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVertexAttribdv(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPropertyARB in value
+ param params Float64 out array [4]
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxvendorpriv 1301
+ offset 588
+
+GetVertexAttribfv(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPropertyARB in value
+ param params Float32 out array [4]
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxvendorpriv 1302
+ offset 589
+
+GetVertexAttribiv(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPropertyARB in value
+ param params Int32 out array [4]
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxvendorpriv 1303
+ offset 590
+
+GetVertexAttribPointerv(index, pname, pointer)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPointerPropertyARB in value
+ param pointer VoidPointer out array [1]
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 591
+
+IsProgram(program)
+ return Boolean
+ param program UInt32 in value
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxvendorpriv 1304
+ offset 592
+
+IsShader(shader)
+ return Boolean
+ param shader UInt32 in value
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxvendorpriv ?
+ offset ?
+
+LinkProgram(program)
+ return void
+ param program UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ShaderSource(shader, count, string, length)
+ return void
+ param shader UInt32 in value
+ param count SizeI in value
+ param string CharPointer in array [count]
+ param length Int32 in array [1]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UseProgram(program)
+ return void
+ param program UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform1f(location, v0)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform2f(location, v0, v1)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform3f(location, v0, v1, v2)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ param v2 Float32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform4f(location, v0, v1, v2, v3)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ param v2 Float32 in value
+ param v3 Float32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform1i(location, v0)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform2i(location, v0, v1)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform3i(location, v0, v1, v2)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ param v2 Int32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform4i(location, v0, v1, v2, v3)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ param v2 Int32 in value
+ param v3 Int32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform1fv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform2fv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform3fv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform4fv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform1iv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform2iv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform3iv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform4iv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix2fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix3fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix4fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count]
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ValidateProgram(program)
+ return void
+ param program UInt32 in value
+ category VERSION_2_0
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib1d(index, x)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib1dv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 603
+
+VertexAttrib1dv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [1]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4197
+ offset 604
+
+VertexAttrib1f(index, x)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib1fv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 605
+
+VertexAttrib1fv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [1]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4193
+ offset 606
+
+VertexAttrib1s(index, x)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib1sv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 607
+
+VertexAttrib1sv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [1]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4189
+ offset 608
+
+VertexAttrib2d(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib2dv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 609
+
+VertexAttrib2dv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [2]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4198
+ offset 610
+
+VertexAttrib2f(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib2fv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 611
+
+VertexAttrib2fv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [2]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4194
+ offset 612
+
+VertexAttrib2s(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib2sv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 613
+
+VertexAttrib2sv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [2]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4190
+ offset 614
+
+VertexAttrib3d(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib3dv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 615
+
+VertexAttrib3dv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [3]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4199
+ offset 616
+
+VertexAttrib3f(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib3fv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 617
+
+VertexAttrib3fv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [3]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4195
+ offset 618
+
+VertexAttrib3s(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib3sv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 619
+
+VertexAttrib3sv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [3]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4191
+ offset 620
+
+VertexAttrib4Nbv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int8 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 659
+
+VertexAttrib4Niv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 661
+
+VertexAttrib4Nsv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 660
+
+VertexAttrib4Nub(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x UInt8 in value
+ param y UInt8 in value
+ param z UInt8 in value
+ param w UInt8 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 627
+
+VertexAttrib4Nubv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt8 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxropcode 4201
+ offset 628
+
+VertexAttrib4Nuiv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 663
+
+VertexAttrib4Nusv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt16 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 662
+
+VertexAttrib4bv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int8 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 654
+
+VertexAttrib4d(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib4dv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 621
+
+VertexAttrib4dv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4200
+ offset 622
+
+VertexAttrib4f(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib4fv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 623
+
+VertexAttrib4fv(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxropcode 4196
+ offset 624
+
+VertexAttrib4iv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 655
+
+VertexAttrib4s(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ param w Int16 in value
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ vectorequiv VertexAttrib4sv
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 625
+
+VertexAttrib4sv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxropcode 4192
+ offset 626
+
+VertexAttrib4ubv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt8 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 656
+
+VertexAttrib4uiv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 658
+
+VertexAttrib4usv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt16 in array [4]
+ category VERSION_2_0
+ version 2.0
+ deprecated 3.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 657
+
+VertexAttribPointer(index, size, type, normalized, stride, pointer)
+ return void
+ param index UInt32 in value
+ param size Int32 in value
+ param type VertexAttribPointerTypeARB in value
+ param normalized Boolean in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ dlflags notlistable
+ category VERSION_2_0
+ version 2.0
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 664
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 2.1 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 2.1 (ARB_pixel_buffer_object) commands - none
+
+# OpenGL 2.1 (EXT_texture_sRGB) commands - none
+
+# New commands in OpenGL 2.1
+
+UniformMatrix2x3fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [6]
+ category VERSION_2_1
+ version 2.1
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix3x2fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [6]
+ category VERSION_2_1
+ version 2.1
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix2x4fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [8]
+ category VERSION_2_1
+ version 2.1
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix4x2fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [8]
+ category VERSION_2_1
+ version 2.1
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix3x4fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [12]
+ category VERSION_2_1
+ version 2.1
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix4x3fv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [12]
+ category VERSION_2_1
+ version 2.1
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.0 commands
+#
+###############################################################################
+###############################################################################
+
+# OpenGL 3.0 (EXT_draw_buffers2) commands
+
+ColorMaski(index, r, g, b, a)
+ return void
+ param index UInt32 in value
+ param r Boolean in value
+ param g Boolean in value
+ param b Boolean in value
+ param a Boolean in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glxflags ignore
+ glfflags ignore
+
+GetBooleani_v(target, index, data)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param data Boolean out array [COMPSIZE(target)]
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+GetIntegeri_v(target, index, data)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param data Int32 out array [COMPSIZE(target)]
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+Enablei(target, index)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glxflags ignore
+ glfflags ignore
+
+Disablei(target, index)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glxflags ignore
+ glfflags ignore
+
+IsEnabledi(target, index)
+ return Boolean
+ param target GLenum in value
+ param index UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+# OpenGL 3.0 (EXT_transform_feedback) commands
+
+BeginTransformFeedback(primitiveMode)
+ return void
+ param primitiveMode GLenum in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+EndTransformFeedback()
+ return void
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+BindBufferRange(target, index, buffer, offset, size)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ param offset BufferOffset in value
+ param size BufferSize in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+BindBufferBase(target, index, buffer)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+TransformFeedbackVaryings(program, count, varyings, bufferMode)
+ return void
+ param program UInt32 in value
+ param count SizeI in value
+ param varyings CharPointer in array [count]
+ param bufferMode GLenum in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+GetTransformFeedbackVarying(program, index, bufSize, length, size, type, name)
+ return void
+ param program UInt32 in value
+ param index UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param size SizeI out array [1]
+ param type GLenum out array [1]
+ param name Char out array [COMPSIZE(length)]
+ category VERSION_3_0
+ dlflags notlistable
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+ClampColor(target, clamp)
+ return void
+ param target ClampColorTargetARB in value
+ param clamp ClampColorModeARB in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glxropcode 234
+ glxflags ignore
+ offset ?
+
+BeginConditionalRender(id, mode)
+ return void
+ param id UInt32 in value
+ param mode TypeEnum in value
+ category VERSION_3_0
+ version 3.0
+ glfflags ignore
+ glxflags ignore
+
+EndConditionalRender()
+ return void
+ category VERSION_3_0
+ version 3.0
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribIPointer(index, size, type, stride, pointer)
+ return void
+ param index UInt32 in value
+ param size Int32 in value
+ param type VertexAttribEnum in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category VERSION_3_0
+ version 3.0
+ dlflags notlistable
+ extension
+ glfflags ignore
+ glxflags ignore
+
+GetVertexAttribIiv(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnum in value
+ param params Int32 out array [1]
+ category VERSION_3_0
+ version 3.0
+ dlflags notlistable
+ extension
+ glfflags ignore
+ glxflags ignore
+
+GetVertexAttribIuiv(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnum in value
+ param params UInt32 out array [1]
+ category VERSION_3_0
+ version 3.0
+ dlflags notlistable
+ extension
+ glfflags ignore
+ glxflags ignore
+
+# OpenGL 3.0 (NV_vertex_program4) commands
+
+VertexAttribI1i(index, x)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI1iv
+ glxvectorequiv VertexAttribI1iv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI2i(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI2iv
+ glxvectorequiv VertexAttribI2iv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI3i(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI3iv
+ glxvectorequiv VertexAttribI3iv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4i(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ param w Int32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI4iv
+ glxvectorequiv VertexAttribI4iv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI1ui(index, x)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI1uiv
+ glxvectorequiv VertexAttribI1uiv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI2ui(index, x, y)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI2uiv
+ glxvectorequiv VertexAttribI2uiv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI3ui(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ param z UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI3uiv
+ glxvectorequiv VertexAttribI3uiv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4ui(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ param z UInt32 in value
+ param w UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ vectorequiv VertexAttribI4uiv
+ glxvectorequiv VertexAttribI4uiv
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI1iv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [1]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI2iv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [2]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI3iv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [3]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4iv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [4]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI1uiv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [1]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI2uiv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [2]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI3uiv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [3]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4uiv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [4]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4bv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int8 in array [4]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4sv(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [4]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4ubv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt8 in array [4]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+VertexAttribI4usv(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt16 in array [4]
+ category VERSION_3_0
+ version 3.0
+ deprecated 3.1
+ beginend allow-inside
+ extension
+ glfflags ignore
+ glxflags ignore
+
+# OpenGL 3.0 (EXT_gpu_shader4) commands
+
+GetUniformuiv(program, location, params)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param params UInt32 out array [COMPSIZE(program/location)]
+ category VERSION_3_0
+ dlflags notlistable
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+BindFragDataLocation(program, color, name)
+ return void
+ param program UInt32 in value
+ param color UInt32 in value
+ param name Char in array [COMPSIZE(name)]
+ category VERSION_3_0
+ dlflags notlistable
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+GetFragDataLocation(program, name)
+ return Int32
+ param program UInt32 in value
+ param name Char in array [COMPSIZE(name)]
+ category VERSION_3_0
+ dlflags notlistable
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform1ui(location, v0)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform2ui(location, v0, v1)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform3ui(location, v0, v1, v2)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ param v2 UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform4ui(location, v0, v1, v2, v3)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ param v2 UInt32 in value
+ param v3 UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform1uiv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform2uiv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*2]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform3uiv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*3]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+Uniform4uiv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*4]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+# OpenGL 3.0 (EXT_texture_integer) commands
+
+TexParameterIiv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params Int32 in array [COMPSIZE(pname)]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+TexParameterIuiv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params UInt32 in array [COMPSIZE(pname)]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+GetTexParameterIiv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category VERSION_3_0
+ dlflags notlistable
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+GetTexParameterIuiv(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params UInt32 out array [COMPSIZE(pname)]
+ category VERSION_3_0
+ dlflags notlistable
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+# New commands in OpenGL 3.0
+
+ClearBufferiv(buffer, drawbuffer, value)
+ return void
+ param buffer GLenum in value
+ param drawbuffer DrawBufferName in value
+ param value Int32 in array [COMPSIZE(buffer)]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+ClearBufferuiv(buffer, drawbuffer, value)
+ return void
+ param buffer GLenum in value
+ param drawbuffer DrawBufferName in value
+ param value UInt32 in array [COMPSIZE(buffer)]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+ClearBufferfv(buffer, drawbuffer, value)
+ return void
+ param buffer GLenum in value
+ param drawbuffer DrawBufferName in value
+ param value Float32 in array [COMPSIZE(buffer)]
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+ClearBufferfi(buffer, drawbuffer, depth, stencil)
+ return void
+ param buffer GLenum in value
+ param drawbuffer DrawBufferName in value
+ param depth Float32 in value
+ param stencil Int32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+GetStringi(name, index)
+ return String
+ param name GLenum in value
+ param index UInt32 in value
+ category VERSION_3_0
+ version 3.0
+ extension
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glfflags ignore
+ glxsingle ?
+
+passthru: /* OpenGL 3.0 also reuses entry points from these extensions: */
+passthru: /* ARB_framebuffer_object */
+passthru: /* ARB_map_buffer_range */
+passthru: /* ARB_vertex_array_object */
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.0 deprecated commands
+#
+###############################################################################
+###############################################################################
+
+# (none - VertexAttribI* were moved back into non-deprecated)
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.1 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 3.1 - none
+
+# OpenGL 3.1 (ARB_draw_instanced) commands
+
+DrawArraysInstanced(mode, first, count, primcount)
+ return void
+ param mode BeginMode in value
+ param first Int32 in value
+ param count SizeI in value
+ param primcount SizeI in value
+ category VERSION_3_1
+ version 3.1
+ extension
+ dlflags notlistable
+ vectorequiv ArrayElement
+ glfflags ignore
+ glxflags ignore
+
+DrawElementsInstanced(mode, count, type, indices, primcount)
+ return void
+ param mode BeginMode in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ param primcount SizeI in value
+ category VERSION_3_1
+ version 3.1
+ extension
+ dlflags notlistable
+ vectorequiv ArrayElement
+ glfflags ignore
+ glxflags ignore
+
+# OpenGL 3.1 (ARB_texture_buffer_object) commands
+
+TexBuffer(target, internalformat, buffer)
+ return void
+ param target TextureTarget in value
+ param internalformat GLenum in value
+ param buffer UInt32 in value
+ category VERSION_3_1
+ version 3.1
+ extension
+ glfflags ignore
+ glxflags ignore
+
+# OpenGL 3.1 (ARB_texture_rectangle) commands - none
+
+# OpenGL 3.1 (SNORM texture) commands - none
+
+# OpenGL 3.1 (NV_primitive_restart) commands
+# This is *not* an alias of PrimitiveRestartIndexNV, since it sets
+# server instead of client state.
+
+PrimitiveRestartIndex(index)
+ return void
+ param index UInt32 in value
+ category VERSION_3_1
+ version 3.1
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+passthru: /* OpenGL 3.1 also reuses entry points from these extensions: */
+passthru: /* ARB_copy_buffer */
+passthru: /* ARB_uniform_buffer_object */
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.2 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 3.2
+
+GetInteger64i_v(target, index, data)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param data Int64 out array [COMPSIZE(target)]
+ category VERSION_3_2
+ version 3.2
+ extension
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+
+GetBufferParameteri64v(target, pname, params)
+ return void
+ param target BufferTargetARB in value
+ param pname BufferPNameARB in value
+ param params Int64 out array [COMPSIZE(pname)]
+ category VERSION_3_2
+ dlflags notlistable
+ version 3.2
+ extension
+ glxsingle ?
+ glxflags ignore
+
+# OpenGL 3.2 (ARB_depth_clamp) commands - none
+# OpenGL 3.2 (ARB_fragment_coord_conventions) commands - none
+
+# OpenGL 3.2 (ARB_geometry_shader4) commands
+
+ProgramParameteri(program, pname, value)
+ return void
+ param program UInt32 in value
+ param pname GLenum in value
+ param value Int32 in value
+ category VERSION_3_2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FramebufferTexture(target, attachment, texture, level)
+ return void
+ param target GLenum in value
+ param attachment GLenum in value
+ param texture UInt32 in value
+ param level Int32 in value
+ category VERSION_3_2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+# FramebufferTextureLayer already declared in ARB_framebuffer_object
+# FramebufferTextureLayer(target, attachment, texture, level, layer)
+
+# Not promoted to the core along with the rest
+# FramebufferTextureFace(target, attachment, texture, level, face)
+
+# OpenGL 3.2 (ARB_seamless_cube_map) commands - none
+# OpenGL 3.2 (ARB_vertex_array_bgra) commands - none
+
+passthru: /* OpenGL 3.2 also reuses entry points from these extensions: */
+passthru: /* ARB_draw_elements_base_vertex */
+passthru: /* ARB_provoking_vertex */
+passthru: /* ARB_sync */
+passthru: /* ARB_texture_multisample */
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 3.3 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 3.3 - none
+newcategory: VERSION_3_3
+
+passthru: /* OpenGL 3.3 also reuses entry points from these extensions: */
+passthru: /* ARB_blend_func_extended */
+passthru: /* ARB_sampler_objects */
+passthru: /* ARB_explicit_attrib_location, but it has none */
+passthru: /* ARB_occlusion_query2 (no entry points) */
+passthru: /* ARB_shader_bit_encoding (no entry points) */
+passthru: /* ARB_texture_rgb10_a2ui (no entry points) */
+passthru: /* ARB_texture_swizzle (no entry points) */
+passthru: /* ARB_timer_query */
+passthru: /* ARB_vertex_type_2_10_10_10_rev */
+
+
+###############################################################################
+###############################################################################
+#
+# OpenGL 4.0 commands
+#
+###############################################################################
+###############################################################################
+
+# New commands in OpenGL 4.0 - none
+newcategory: VERSION_4_0
+
+passthru: /* OpenGL 4.0 also reuses entry points from these extensions: */
+passthru: /* ARB_gpu_shader5 (no entry points) */
+passthru: /* ARB_gpu_shader_fp64 */
+passthru: /* ARB_shader_subroutine */
+passthru: /* ARB_tessellation_shader */
+passthru: /* ARB_texture_buffer_object_rgb32 (no entry points) */
+passthru: /* ARB_transform_feedback2 */
+passthru: /* ARB_transform_feedback3 */
+
+
+###############################################################################
+###############################################################################
+#
+# ARB extensions, in order by ARB extension number
+#
+###############################################################################
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #1
+# ARB_multitexture commands
+#
+###############################################################################
+
+ActiveTextureARB(texture)
+ return void
+ param texture TextureUnit in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 197
+ alias ActiveTexture
+
+ClientActiveTextureARB(texture)
+ return void
+ param texture TextureUnit in value
+ category ARB_multitexture
+ dlflags notlistable
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.2
+ alias ClientActiveTexture
+
+MultiTexCoord1dARB(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord1dv
+
+MultiTexCoord1dvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [1]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 198
+ alias MultiTexCoord1dv
+
+MultiTexCoord1fARB(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord1fv
+
+MultiTexCoord1fvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [1]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 199
+ alias MultiTexCoord1fv
+
+MultiTexCoord1iARB(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord1iv
+
+MultiTexCoord1ivARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [1]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 200
+ alias MultiTexCoord1iv
+
+MultiTexCoord1sARB(target, s)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord1sv
+
+MultiTexCoord1svARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [1]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 201
+ alias MultiTexCoord1sv
+
+MultiTexCoord2dARB(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ param t CoordD in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord2dv
+
+MultiTexCoord2dvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [2]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 202
+ alias MultiTexCoord2dv
+
+MultiTexCoord2fARB(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ param t CoordF in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord2fv
+
+MultiTexCoord2fvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [2]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 203
+ alias MultiTexCoord2fv
+
+MultiTexCoord2iARB(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ param t CoordI in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord2iv
+
+MultiTexCoord2ivARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [2]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 204
+ alias MultiTexCoord2iv
+
+MultiTexCoord2sARB(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ param t CoordS in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord2sv
+
+MultiTexCoord2svARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [2]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 205
+ alias MultiTexCoord2sv
+
+MultiTexCoord3dARB(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ param t CoordD in value
+ param r CoordD in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord3dv
+
+MultiTexCoord3dvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [3]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 206
+ alias MultiTexCoord3dv
+
+MultiTexCoord3fARB(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ param t CoordF in value
+ param r CoordF in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord3fv
+
+MultiTexCoord3fvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [3]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 207
+ alias MultiTexCoord3fv
+
+MultiTexCoord3iARB(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ param t CoordI in value
+ param r CoordI in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord3iv
+
+MultiTexCoord3ivARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [3]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 208
+ alias MultiTexCoord3iv
+
+MultiTexCoord3sARB(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ param t CoordS in value
+ param r CoordS in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord3sv
+
+MultiTexCoord3svARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [3]
+ category ARB_multitexture
+ version 1.2
+ glxflags ARB
+ glxropcode 209
+ alias MultiTexCoord3sv
+
+MultiTexCoord4dARB(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordD in value
+ param t CoordD in value
+ param r CoordD in value
+ param q CoordD in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord4dv
+
+MultiTexCoord4dvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordD in array [4]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 210
+ alias MultiTexCoord4dv
+
+MultiTexCoord4fARB(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordF in value
+ param t CoordF in value
+ param r CoordF in value
+ param q CoordF in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord4fv
+
+MultiTexCoord4fvARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordF in array [4]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 211
+ alias MultiTexCoord4fv
+
+MultiTexCoord4iARB(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordI in value
+ param t CoordI in value
+ param r CoordI in value
+ param q CoordI in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord4iv
+
+MultiTexCoord4ivARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordI in array [4]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 212
+ alias MultiTexCoord4iv
+
+MultiTexCoord4sARB(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s CoordS in value
+ param t CoordS in value
+ param r CoordS in value
+ param q CoordS in value
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ vectorequiv MultiTexCoord4sv
+
+MultiTexCoord4svARB(target, v)
+ return void
+ param target TextureUnit in value
+ param v CoordS in array [4]
+ category ARB_multitexture
+ glxflags ARB
+ version 1.2
+ glxropcode 213
+ alias MultiTexCoord4sv
+
+################################################################################
+#
+# ARB Extension #2 - GLX_ARB_get_proc_address
+#
+###############################################################################
+
+################################################################################
+#
+# ARB Extension #3
+# ARB_transpose_matrix commands
+#
+###############################################################################
+
+LoadTransposeMatrixfARB(m)
+ return void
+ param m Float32 in array [16]
+ category ARB_transpose_matrix
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.2
+ alias LoadTransposeMatrixf
+
+LoadTransposeMatrixdARB(m)
+ return void
+ param m Float64 in array [16]
+ category ARB_transpose_matrix
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.2
+ alias LoadTransposeMatrixd
+
+MultTransposeMatrixfARB(m)
+ return void
+ param m Float32 in array [16]
+ category ARB_transpose_matrix
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.2
+ alias MultTransposeMatrixf
+
+MultTransposeMatrixdARB(m)
+ return void
+ param m Float64 in array [16]
+ category ARB_transpose_matrix
+ glxflags ARB client-handcode client-intercept server-handcode
+ version 1.2
+ alias MultTransposeMatrixd
+
+################################################################################
+#
+# ARB Extension #4 - WGL_ARB_buffer_region
+#
+###############################################################################
+
+################################################################################
+#
+# ARB Extension #5
+# ARB_multisample commands
+#
+###############################################################################
+
+SampleCoverageARB(value, invert)
+ return void
+ param value ClampedFloat32 in value
+ param invert Boolean in value
+ category ARB_multisample
+ glxflags ARB
+ version 1.2
+ alias SampleCoverage
+
+################################################################################
+#
+# ARB Extension #6
+# ARB_texture_env_add commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_add
+
+################################################################################
+#
+# ARB Extension #7
+# ARB_texture_cube_map commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_cube_map
+
+################################################################################
+#
+# ARB Extension #8 - WGL_ARB_extensions_string
+# ARB Extension #9 - WGL_ARB_pixel_format commands
+# ARB Extension #10 - WGL_ARB_make_current_read commands
+# ARB Extension #11 - WGL_ARB_pbuffer
+#
+###############################################################################
+
+################################################################################
+#
+# ARB Extension #12
+# ARB_texture_compression commands
+#
+###############################################################################
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage3DARB(target, level, internalformat, width, height, depth, border, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category ARB_texture_compression
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.2
+ glxropcode 216
+ alias CompressedTexImage3D
+ wglflags client-handcode server-handcode
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage2DARB(target, level, internalformat, width, height, border, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category ARB_texture_compression
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.2
+ glxropcode 215
+ alias CompressedTexImage2D
+ wglflags client-handcode server-handcode
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CompressedTexImage1DARB(target, level, internalformat, width, border, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category ARB_texture_compression
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.2
+ glxropcode 214
+ alias CompressedTexImage1D
+ wglflags client-handcode server-handcode
+
+CompressedTexSubImage3DARB(target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category ARB_texture_compression
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.2
+ glxropcode 219
+ alias CompressedTexSubImage3D
+ wglflags client-handcode server-handcode
+
+CompressedTexSubImage2DARB(target, level, xoffset, yoffset, width, height, format, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category ARB_texture_compression
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.2
+ glxropcode 218
+ alias CompressedTexSubImage2D
+ wglflags client-handcode server-handcode
+
+CompressedTexSubImage1DARB(target, level, xoffset, width, format, imageSize, data)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param data CompressedTextureARB in array [imageSize]
+ category ARB_texture_compression
+ dlflags handcode
+ glxflags ARB client-handcode server-handcode
+ version 1.2
+ glxropcode 217
+ alias CompressedTexSubImage1D
+ wglflags client-handcode server-handcode
+
+GetCompressedTexImageARB(target, level, img)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param img CompressedTextureARB out array [COMPSIZE(target/level)]
+ category ARB_texture_compression
+ dlflags notlistable
+ glxflags ARB client-handcode server-handcode
+ version 1.2
+ glxsingle 160
+ alias GetCompressedTexImage
+ wglflags client-handcode server-handcode
+
+################################################################################
+#
+# ARB Extension #13
+# ARB_texture_border_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_border_clamp
+
+###############################################################################
+#
+# ARB Extension #14
+# ARB_point_parameters commands
+#
+###############################################################################
+
+PointParameterfARB(pname, param)
+ return void
+ param pname PointParameterNameARB in value
+ param param CheckedFloat32 in value
+ category ARB_point_parameters
+ version 1.0
+ glxflags ARB
+ glxropcode 2065
+ extension
+ alias PointParameterf
+
+PointParameterfvARB(pname, params)
+ return void
+ param pname PointParameterNameARB in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category ARB_point_parameters
+ version 1.0
+ glxflags ARB
+ glxropcode 2066
+ extension
+ alias PointParameterfv
+
+################################################################################
+#
+# ARB Extension #15
+# ARB_vertex_blend commands
+#
+###############################################################################
+
+WeightbvARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights Int8 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 220
+ glxflags ignore
+ offset ?
+
+WeightsvARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights Int16 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 222
+ glxflags ignore
+ offset ?
+
+WeightivARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights Int32 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 224
+ glxflags ignore
+ offset ?
+
+WeightfvARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights Float32 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 227
+ glxflags ignore
+ offset ?
+
+WeightdvARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights Float64 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 228
+ glxflags ignore
+ offset ?
+
+WeightubvARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights UInt8 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 221
+ glxflags ignore
+ offset ?
+
+WeightusvARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights UInt16 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 223
+ glxflags ignore
+ offset ?
+
+WeightuivARB(size, weights)
+ return void
+ param size Int32 in value
+ param weights UInt32 in array [size]
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 225
+ glxflags ignore
+ offset ?
+
+WeightPointerARB(size, type, stride, pointer)
+ return void
+ param size Int32 in value
+ param type WeightPointerTypeARB in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ dlflags notlistable
+ glxflags ignore
+ offset ?
+
+VertexBlendARB(count)
+ return void
+ param count Int32 in value
+ category ARB_vertex_blend
+ version 1.1
+ extension
+ glxropcode 226
+ glxflags ignore
+ offset ?
+
+################################################################################
+#
+# ARB Extension #16
+# ARB_matrix_palette commands
+#
+###############################################################################
+
+CurrentPaletteMatrixARB(index)
+ return void
+ param index Int32 in value
+ category ARB_matrix_palette
+ version 1.1
+ extension
+ glxropcode 4329
+ glxflags ignore
+ offset ?
+
+MatrixIndexubvARB(size, indices)
+ return void
+ param size Int32 in value
+ param indices UInt8 in array [size]
+ category ARB_matrix_palette
+ version 1.1
+ extension
+ glxropcode 4326
+ glxflags ignore
+ offset ?
+
+MatrixIndexusvARB(size, indices)
+ return void
+ param size Int32 in value
+ param indices UInt16 in array [size]
+ category ARB_matrix_palette
+ version 1.1
+ extension
+ glxropcode 4327
+ glxflags ignore
+ offset ?
+
+MatrixIndexuivARB(size, indices)
+ return void
+ param size Int32 in value
+ param indices UInt32 in array [size]
+ category ARB_matrix_palette
+ version 1.1
+ extension
+ glxropcode 4328
+ glxflags ignore
+ offset ?
+
+MatrixIndexPointerARB(size, type, stride, pointer)
+ return void
+ param size Int32 in value
+ param type MatrixIndexPointerTypeARB in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category ARB_matrix_palette
+ version 1.1
+ extension
+ dlflags notlistable
+ glxflags ignore
+ offset ?
+
+################################################################################
+#
+# ARB Extension #17
+# ARB_texture_env_combine commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_combine
+
+################################################################################
+#
+# ARB Extension #18
+# ARB_texture_env_crossbar commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_crossbar
+
+################################################################################
+#
+# ARB Extension #19
+# ARB_texture_env_dot3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_env_dot3
+
+###############################################################################
+#
+# ARB Extension #20 - WGL_ARB_render_texture
+#
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #21
+# ARB_texture_mirrored_repeat commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_mirrored_repeat
+
+###############################################################################
+#
+# ARB Extension #22
+# ARB_depth_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_depth_texture
+
+###############################################################################
+#
+# ARB Extension #23
+# ARB_shadow commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_shadow
+
+###############################################################################
+#
+# ARB Extension #24
+# ARB_shadow_ambient commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_shadow_ambient
+
+###############################################################################
+#
+# ARB Extension #25
+# ARB_window_pos commands
+# Note: all entry points use glxropcode ropcode 230, with 3 float parameters
+#
+###############################################################################
+
+WindowPos2dARB(x, y)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ category ARB_window_pos
+ vectorequiv WindowPos2dvARB
+ version 1.0
+ alias WindowPos2d
+
+WindowPos2dvARB(v)
+ return void
+ param v CoordD in array [2]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos2dv
+
+WindowPos2fARB(x, y)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ category ARB_window_pos
+ vectorequiv WindowPos2fvARB
+ version 1.0
+ alias WindowPos2f
+
+WindowPos2fvARB(v)
+ return void
+ param v CoordF in array [2]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos2fv
+
+WindowPos2iARB(x, y)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ category ARB_window_pos
+ vectorequiv WindowPos2ivARB
+ version 1.0
+ alias WindowPos2i
+
+WindowPos2ivARB(v)
+ return void
+ param v CoordI in array [2]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos2iv
+
+WindowPos2sARB(x, y)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ category ARB_window_pos
+ vectorequiv WindowPos2svARB
+ version 1.0
+ alias WindowPos2s
+
+WindowPos2svARB(v)
+ return void
+ param v CoordS in array [2]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos2sv
+
+WindowPos3dARB(x, y, z)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ vectorequiv WindowPos3dvARB
+ category ARB_window_pos
+ version 1.0
+ alias WindowPos3d
+
+WindowPos3dvARB(v)
+ return void
+ param v CoordD in array [3]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos3dv
+
+WindowPos3fARB(x, y, z)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ category ARB_window_pos
+ vectorequiv WindowPos3fvARB
+ version 1.0
+ alias WindowPos3f
+
+WindowPos3fvARB(v)
+ return void
+ param v CoordF in array [3]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos3fv
+
+WindowPos3iARB(x, y, z)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ category ARB_window_pos
+ vectorequiv WindowPos3ivARB
+ version 1.0
+ alias WindowPos3i
+
+WindowPos3ivARB(v)
+ return void
+ param v CoordI in array [3]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos3iv
+
+WindowPos3sARB(x, y, z)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ category ARB_window_pos
+ vectorequiv WindowPos3svARB
+ version 1.0
+ alias WindowPos3s
+
+WindowPos3svARB(v)
+ return void
+ param v CoordS in array [3]
+ category ARB_window_pos
+ version 1.0
+ glxropcode 230
+ glxflags client-handcode server-handcode
+ alias WindowPos3sv
+
+###############################################################################
+#
+# ARB Extension #26
+# ARB_vertex_program commands
+#
+###############################################################################
+
+VertexAttrib1dARB(index, x)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib1dvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib1d
+
+VertexAttrib1dvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [1]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4197
+ alias VertexAttrib1dv
+
+VertexAttrib1fARB(index, x)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib1fvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib1f
+
+VertexAttrib1fvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [1]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4193
+ alias VertexAttrib1fv
+
+VertexAttrib1sARB(index, x)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib1svARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib1s
+
+VertexAttrib1svARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [1]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4189
+ alias VertexAttrib1sv
+
+VertexAttrib2dARB(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib2dvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib2d
+
+VertexAttrib2dvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [2]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4198
+ alias VertexAttrib2dv
+
+VertexAttrib2fARB(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib2fvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib2f
+
+VertexAttrib2fvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [2]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4194
+ alias VertexAttrib2fv
+
+VertexAttrib2sARB(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib2svARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib2s
+
+VertexAttrib2svARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [2]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4190
+ alias VertexAttrib2sv
+
+VertexAttrib3dARB(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib3dvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib3d
+
+VertexAttrib3dvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [3]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4199
+ alias VertexAttrib3dv
+
+VertexAttrib3fARB(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib3fvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib3f
+
+VertexAttrib3fvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [3]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4195
+ alias VertexAttrib3fv
+
+VertexAttrib3sARB(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib3svARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib3s
+
+VertexAttrib3svARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [3]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4191
+ alias VertexAttrib3sv
+
+VertexAttrib4NbvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int8 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4Nbv
+
+VertexAttrib4NivARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4Niv
+
+VertexAttrib4NsvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4Nsv
+
+VertexAttrib4NubARB(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x UInt8 in value
+ param y UInt8 in value
+ param z UInt8 in value
+ param w UInt8 in value
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4Nub
+
+VertexAttrib4NubvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt8 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4201
+ alias VertexAttrib4Nubv
+
+VertexAttrib4NuivARB(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4Nuiv
+
+VertexAttrib4NusvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt16 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4Nusv
+
+VertexAttrib4bvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int8 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4bv
+
+VertexAttrib4dARB(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib4dvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib4d
+
+VertexAttrib4dvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4200
+ alias VertexAttrib4dv
+
+VertexAttrib4fARB(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib4fvARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib4f
+
+VertexAttrib4fvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4196
+ alias VertexAttrib4fv
+
+VertexAttrib4ivARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4iv
+
+VertexAttrib4sARB(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ param w Int16 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv VertexAttrib4svARB
+ extension soft WINSOFT NV10
+ alias VertexAttrib4s
+
+VertexAttrib4svARB(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4192
+ alias VertexAttrib4sv
+
+VertexAttrib4ubvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt8 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4ubv
+
+VertexAttrib4uivARB(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4uiv
+
+VertexAttrib4usvARB(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt16 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttrib4usv
+
+VertexAttribPointerARB(index, size, type, normalized, stride, pointer)
+ return void
+ param index UInt32 in value
+ param size Int32 in value
+ param type VertexAttribPointerTypeARB in value
+ param normalized Boolean in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias VertexAttribPointer
+
+EnableVertexAttribArrayARB(index)
+ return void
+ param index UInt32 in value
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias EnableVertexAttribArray
+
+DisableVertexAttribArrayARB(index)
+ return void
+ param index UInt32 in value
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ alias DisableVertexAttribArray
+
+ProgramStringARB(target, format, len, string)
+ return void
+ param target ProgramTargetARB in value
+ param format ProgramFormatARB in value
+ param len SizeI in value
+ param string Void in array [len]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 667
+
+BindProgramARB(target, program)
+ return void
+ param target ProgramTargetARB in value
+ param program UInt32 in value
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxropcode 4180
+ offset 579
+
+DeleteProgramsARB(n, programs)
+ return void
+ param n SizeI in value
+ param programs UInt32 in array [n]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxvendorpriv 1294
+ offset 580
+
+GenProgramsARB(n, programs)
+ return void
+ param n SizeI in value
+ param programs UInt32 out array [n]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxvendorpriv 1295
+ offset 582
+
+ProgramEnvParameter4dARB(target, index, x, y, z, w)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv ProgramEnvParameter4dvARB
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 668
+
+ProgramEnvParameter4dvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float64 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 669
+
+ProgramEnvParameter4fARB(target, index, x, y, z, w)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv ProgramEnvParameter4fvARB
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 670
+
+ProgramEnvParameter4fvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float32 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 671
+
+ProgramLocalParameter4dARB(target, index, x, y, z, w)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv ProgramLocalParameter4dvARB
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 672
+
+ProgramLocalParameter4dvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float64 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 673
+
+ProgramLocalParameter4fARB(target, index, x, y, z, w)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category ARB_vertex_program
+ version 1.3
+ vectorequiv ProgramLocalParameter4fvARB
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 674
+
+ProgramLocalParameter4fvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float32 in array [4]
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 675
+
+GetProgramEnvParameterdvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float64 out array [4]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 676
+
+GetProgramEnvParameterfvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float32 out array [4]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 677
+
+GetProgramLocalParameterdvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float64 out array [4]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 678
+
+GetProgramLocalParameterfvARB(target, index, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param params Float32 out array [4]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 679
+
+GetProgramivARB(target, pname, params)
+ return void
+ param target ProgramTargetARB in value
+ param pname ProgramPropertyARB in value
+ param params Int32 out array [1]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 680
+
+GetProgramStringARB(target, pname, string)
+ return void
+ param target ProgramTargetARB in value
+ param pname ProgramStringPropertyARB in value
+ param string Void out array [COMPSIZE(target,pname)]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 681
+
+GetVertexAttribdvARB(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPropertyARB in value
+ param params Float64 out array [4]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxvendorpriv 1301
+ alias GetVertexAttribdv
+
+GetVertexAttribfvARB(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPropertyARB in value
+ param params Float32 out array [4]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxvendorpriv 1302
+ alias GetVertexAttribfv
+
+GetVertexAttribivARB(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPropertyARB in value
+ param params Int32 out array [4]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxvendorpriv 1303
+ alias GetVertexAttribiv
+
+GetVertexAttribPointervARB(index, pname, pointer)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribPointerPropertyARB in value
+ param pointer VoidPointer out array [1]
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxflags ignore
+ alias GetVertexAttribPointerv
+
+IsProgramARB(program)
+ return Boolean
+ param program UInt32 in value
+ dlflags notlistable
+ category ARB_vertex_program
+ version 1.3
+ extension soft WINSOFT NV10
+ glxvendorpriv 1304
+ alias IsProgram
+
+
+###############################################################################
+#
+# ARB Extension #27
+# ARB_fragment_program commands
+#
+###############################################################################
+
+# All ARB_fragment_program entry points are shared with ARB_vertex_program,
+# and are only included in that #define block, for now.
+newcategory: ARB_fragment_program
+passthru: /* All ARB_fragment_program entry points are shared with ARB_vertex_program. */
+
+###############################################################################
+#
+# ARB Extension #28
+# ARB_vertex_buffer_object commands
+#
+###############################################################################
+
+BindBufferARB(target, buffer)
+ return void
+ param target BufferTargetARB in value
+ param buffer UInt32 in value
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias BindBuffer
+
+DeleteBuffersARB(n, buffers)
+ return void
+ param n SizeI in value
+ param buffers ConstUInt32 in array [n]
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias DeleteBuffers
+
+GenBuffersARB(n, buffers)
+ return void
+ param n SizeI in value
+ param buffers UInt32 out array [n]
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias GenBuffers
+
+IsBufferARB(buffer)
+ return Boolean
+ param buffer UInt32 in value
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias IsBuffer
+
+BufferDataARB(target, size, data, usage)
+ return void
+ param target BufferTargetARB in value
+ param size BufferSizeARB in value
+ param data ConstVoid in array [size]
+ param usage BufferUsageARB in value
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias BufferData
+
+BufferSubDataARB(target, offset, size, data)
+ return void
+ param target BufferTargetARB in value
+ param offset BufferOffsetARB in value
+ param size BufferSizeARB in value
+ param data ConstVoid in array [size]
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias BufferSubData
+
+GetBufferSubDataARB(target, offset, size, data)
+ return void
+ param target BufferTargetARB in value
+ param offset BufferOffsetARB in value
+ param size BufferSizeARB in value
+ param data Void out array [size]
+ category ARB_vertex_buffer_object
+ dlflags notlistable
+ version 1.2
+ extension
+ alias GetBufferSubData
+
+MapBufferARB(target, access)
+ return VoidPointer
+ param target BufferTargetARB in value
+ param access BufferAccessARB in value
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias MapBuffer
+
+UnmapBufferARB(target)
+ return Boolean
+ param target BufferTargetARB in value
+ category ARB_vertex_buffer_object
+ version 1.2
+ extension
+ alias UnmapBuffer
+
+GetBufferParameterivARB(target, pname, params)
+ return void
+ param target BufferTargetARB in value
+ param pname BufferPNameARB in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_vertex_buffer_object
+ dlflags notlistable
+ version 1.2
+ extension
+ alias GetBufferParameteriv
+
+GetBufferPointervARB(target, pname, params)
+ return void
+ param target BufferTargetARB in value
+ param pname BufferPointerNameARB in value
+ param params VoidPointer out array [1]
+ category ARB_vertex_buffer_object
+ dlflags notlistable
+ version 1.2
+ extension
+ alias GetBufferPointerv
+
+###############################################################################
+#
+# ARB Extension #29
+# ARB_occlusion_query commands
+#
+###############################################################################
+
+GenQueriesARB(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 out array [n]
+ category ARB_occlusion_query
+ version 1.5
+ extension
+ alias GenQueries
+
+DeleteQueriesARB(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 in array [n]
+ category ARB_occlusion_query
+ version 1.5
+ extension
+ alias DeleteQueries
+
+IsQueryARB(id)
+ return Boolean
+ param id UInt32 in value
+ category ARB_occlusion_query
+ version 1.5
+ extension
+ alias IsQuery
+
+BeginQueryARB(target, id)
+ return void
+ param target GLenum in value
+ param id UInt32 in value
+ category ARB_occlusion_query
+ version 1.5
+ extension
+ alias BeginQuery
+
+EndQueryARB(target)
+ return void
+ param target GLenum in value
+ category ARB_occlusion_query
+ version 1.5
+ extension
+ alias EndQuery
+
+GetQueryivARB(target, pname, params)
+ return void
+ param target GLenum in value
+ param pname GLenum in value
+ param params Int32 out array [pname]
+ category ARB_occlusion_query
+ dlflags notlistable
+ version 1.5
+ extension
+ alias GetQueryiv
+
+GetQueryObjectivARB(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [pname]
+ category ARB_occlusion_query
+ dlflags notlistable
+ version 1.5
+ extension
+ alias GetQueryObjectiv
+
+GetQueryObjectuivARB(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params UInt32 out array [pname]
+ category ARB_occlusion_query
+ dlflags notlistable
+ version 1.5
+ extension
+ alias GetQueryObjectuiv
+
+###############################################################################
+#
+# ARB Extension #30
+# ARB_shader_objects commands
+#
+###############################################################################
+
+DeleteObjectARB(obj)
+ return void
+ param obj handleARB in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetHandleARB(pname)
+ return handleARB
+ param pname GLenum in value
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+DetachObjectARB(containerObj, attachedObj)
+ return void
+ param containerObj handleARB in value
+ param attachedObj handleARB in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias DetachShader
+
+CreateShaderObjectARB(shaderType)
+ return handleARB
+ param shaderType GLenum in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias CreateShader
+
+ShaderSourceARB(shaderObj, count, string, length)
+ return void
+ param shaderObj handleARB in value
+ param count SizeI in value
+ param string charPointerARB in array [count]
+ param length Int32 in array [1]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias ShaderSource
+
+CompileShaderARB(shaderObj)
+ return void
+ param shaderObj handleARB in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias CompileShader
+
+CreateProgramObjectARB()
+ return handleARB
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias CreateProgram
+
+AttachObjectARB(containerObj, obj)
+ return void
+ param containerObj handleARB in value
+ param obj handleARB in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias AttachShader
+
+LinkProgramARB(programObj)
+ return void
+ param programObj handleARB in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias LinkProgram
+
+UseProgramObjectARB(programObj)
+ return void
+ param programObj handleARB in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias UseProgram
+
+ValidateProgramARB(programObj)
+ return void
+ param programObj handleARB in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias ValidateProgram
+
+Uniform1fARB(location, v0)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform1f
+
+Uniform2fARB(location, v0, v1)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform2f
+
+Uniform3fARB(location, v0, v1, v2)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ param v2 Float32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform3f
+
+Uniform4fARB(location, v0, v1, v2, v3)
+ return void
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ param v2 Float32 in value
+ param v3 Float32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform4f
+
+Uniform1iARB(location, v0)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform1i
+
+Uniform2iARB(location, v0, v1)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform2i
+
+Uniform3iARB(location, v0, v1, v2)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ param v2 Int32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform3i
+
+Uniform4iARB(location, v0, v1, v2, v3)
+ return void
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ param v2 Int32 in value
+ param v3 Int32 in value
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform4i
+
+Uniform1fvARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform1fv
+
+Uniform2fvARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform2fv
+
+Uniform3fvARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform3fv
+
+Uniform4fvARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform4fv
+
+Uniform1ivARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform1iv
+
+Uniform2ivARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform2iv
+
+Uniform3ivARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform3iv
+
+Uniform4ivARB(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias Uniform4iv
+
+UniformMatrix2fvARB(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias UniformMatrix2fv
+
+UniformMatrix3fvARB(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias UniformMatrix3fv
+
+UniformMatrix4fvARB(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count]
+ category ARB_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias UniformMatrix4fv
+
+GetObjectParameterfvARB(obj, pname, params)
+ return void
+ param obj handleARB in value
+ param pname GLenum in value
+ param params Float32 out array [pname]
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetObjectParameterivARB(obj, pname, params)
+ return void
+ param obj handleARB in value
+ param pname GLenum in value
+ param params Int32 out array [pname]
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetInfoLogARB(obj, maxLength, length, infoLog)
+ return void
+ param obj handleARB in value
+ param maxLength SizeI in value
+ param length SizeI out array [1]
+ param infoLog charARB out array [length]
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetAttachedObjectsARB(containerObj, maxCount, count, obj)
+ return void
+ param containerObj handleARB in value
+ param maxCount SizeI in value
+ param count SizeI out array [1]
+ param obj handleARB out array [count]
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetAttachedShaders
+
+GetUniformLocationARB(programObj, name)
+ return Int32
+ param programObj handleARB in value
+ param name charARB in array []
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetUniformLocation
+
+GetActiveUniformARB(programObj, index, maxLength, length, size, type, name)
+ return void
+ param programObj handleARB in value
+ param index UInt32 in value
+ param maxLength SizeI in value
+ param length SizeI out array [1]
+ param size Int32 out array [1]
+ param type GLenum out array [1]
+ param name charARB out array []
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetActiveUniform
+
+GetUniformfvARB(programObj, location, params)
+ return void
+ param programObj handleARB in value
+ param location Int32 in value
+ param params Float32 out array [location]
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetUniformfv
+
+GetUniformivARB(programObj, location, params)
+ return void
+ param programObj handleARB in value
+ param location Int32 in value
+ param params Int32 out array [location]
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetUniformiv
+
+GetShaderSourceARB(obj, maxLength, length, source)
+ return void
+ param obj handleARB in value
+ param maxLength SizeI in value
+ param length SizeI out array [1]
+ param source charARB out array [length]
+ category ARB_shader_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetShaderSource
+
+
+###############################################################################
+#
+# ARB Extension #31
+# ARB_vertex_shader commands
+#
+###############################################################################
+
+BindAttribLocationARB(programObj, index, name)
+ return void
+ param programObj handleARB in value
+ param index UInt32 in value
+ param name charARB in array []
+ category ARB_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias BindAttribLocation
+
+GetActiveAttribARB(programObj, index, maxLength, length, size, type, name)
+ return void
+ param programObj handleARB in value
+ param index UInt32 in value
+ param maxLength SizeI in value
+ param length SizeI out array [1]
+ param size Int32 out array [1]
+ param type GLenum out array [1]
+ param name charARB out array []
+ category ARB_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetActiveAttrib
+
+GetAttribLocationARB(programObj, name)
+ return Int32
+ param programObj handleARB in value
+ param name charARB in array []
+ category ARB_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ alias GetAttribLocation
+
+###############################################################################
+#
+# ARB Extension #32
+# ARB_fragment_shader commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fragment_shader
+
+###############################################################################
+#
+# ARB Extension #33
+# ARB_shading_language_100 commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_shading_language_100
+
+###############################################################################
+#
+# ARB Extension #34
+# ARB_texture_non_power_of_two commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_non_power_of_two
+
+###############################################################################
+#
+# ARB Extension #35
+# ARB_point_sprite commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_point_sprite
+
+###############################################################################
+#
+# ARB Extension #36
+# ARB_fragment_program_shadow commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fragment_program_shadow
+
+###############################################################################
+#
+# ARB Extension #37
+# ARB_draw_buffers commands
+#
+###############################################################################
+
+DrawBuffersARB(n, bufs)
+ return void
+ param n SizeI in value
+ param bufs DrawBufferModeATI in array [n]
+ category ARB_draw_buffers
+ version 1.5
+ extension
+ alias DrawBuffers
+
+###############################################################################
+#
+# ARB Extension #38
+# ARB_texture_rectangle commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_rectangle
+
+###############################################################################
+#
+# ARB Extension #39
+# ARB_color_buffer_float commands
+#
+###############################################################################
+
+ClampColorARB(target, clamp)
+ return void
+ param target ClampColorTargetARB in value
+ param clamp ClampColorModeARB in value
+ category ARB_color_buffer_float
+ version 1.5
+ extension
+ glxropcode 234
+ glxflags ignore
+ alias ClampColor
+
+###############################################################################
+#
+# ARB Extension #40
+# ARB_half_float_pixel commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_half_float_pixel
+
+###############################################################################
+#
+# ARB Extension #41
+# ARB_texture_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_float
+
+###############################################################################
+#
+# ARB Extension #42
+# ARB_pixel_buffer_object commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_pixel_buffer_object
+
+###############################################################################
+#
+# ARB Extension #43
+# ARB_depth_buffer_float commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_depth_buffer_float
+
+###############################################################################
+#
+# ARB Extension #44
+# ARB_draw_instanced commands
+#
+###############################################################################
+
+DrawArraysInstancedARB(mode, first, count, primcount)
+ return void
+ param mode BeginMode in value
+ param first Int32 in value
+ param count SizeI in value
+ param primcount SizeI in value
+ category ARB_draw_instanced
+ version 2.0
+ extension soft WINSOFT
+ dlflags notlistable
+ vectorequiv ArrayElement
+ glfflags ignore
+ glxflags ignore
+ alias DrawArraysInstanced
+
+DrawElementsInstancedARB(mode, count, type, indices, primcount)
+ return void
+ param mode BeginMode in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ param primcount SizeI in value
+ category ARB_draw_instanced
+ version 2.0
+ extension soft WINSOFT
+ dlflags notlistable
+ vectorequiv ArrayElement
+ glfflags ignore
+ glxflags ignore
+ alias DrawElementsInstanced
+
+###############################################################################
+#
+# ARB Extension #45
+# ARB_framebuffer_object commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# Promoted from EXT_framebuffer_object
+IsRenderbuffer(renderbuffer)
+ return Boolean
+ param renderbuffer UInt32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxvendorpriv 1422
+ glxflags ignore
+ offset ?
+
+BindRenderbuffer(target, renderbuffer)
+ return void
+ param target RenderbufferTarget in value
+ param renderbuffer UInt32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4316
+ glxflags ignore
+ offset ?
+
+DeleteRenderbuffers(n, renderbuffers)
+ return void
+ param n SizeI in value
+ param renderbuffers UInt32 in array [n]
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4317
+ glxflags ignore
+ offset ?
+
+GenRenderbuffers(n, renderbuffers)
+ return void
+ param n SizeI in value
+ param renderbuffers UInt32 out array [n]
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxvendorpriv 1423
+ glxflags ignore
+ offset ?
+
+RenderbufferStorage(target, internalformat, width, height)
+ return void
+ param target RenderbufferTarget in value
+ param internalformat GLenum in value
+ param width SizeI in value
+ param height SizeI in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4318
+ glxflags ignore
+ offset ?
+
+GetRenderbufferParameteriv(target, pname, params)
+ return void
+ param target RenderbufferTarget in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_framebuffer_object
+ dlflags notlistable
+ version 3.0
+ extension
+ glxvendorpriv 1424
+ glxflags ignore
+ offset ?
+
+IsFramebuffer(framebuffer)
+ return Boolean
+ param framebuffer UInt32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxvendorpriv 1425
+ glxflags ignore
+ offset ?
+
+BindFramebuffer(target, framebuffer)
+ return void
+ param target FramebufferTarget in value
+ param framebuffer UInt32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4319
+ glxflags ignore
+ offset ?
+
+DeleteFramebuffers(n, framebuffers)
+ return void
+ param n SizeI in value
+ param framebuffers UInt32 in array [n]
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4320
+ glxflags ignore
+ offset ?
+
+GenFramebuffers(n, framebuffers)
+ return void
+ param n SizeI in value
+ param framebuffers UInt32 out array [n]
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxvendorpriv 1426
+ glxflags ignore
+ offset ?
+
+CheckFramebufferStatus(target)
+ return GLenum
+ param target FramebufferTarget in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxvendorpriv 1427
+ glxflags ignore
+ offset ?
+
+FramebufferTexture1D(target, attachment, textarget, texture, level)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param textarget GLenum in value
+ param texture UInt32 in value
+ param level Int32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4321
+ glxflags ignore
+ offset ?
+
+FramebufferTexture2D(target, attachment, textarget, texture, level)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param textarget GLenum in value
+ param texture UInt32 in value
+ param level Int32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4322
+ glxflags ignore
+ offset ?
+
+FramebufferTexture3D(target, attachment, textarget, texture, level, zoffset)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param textarget GLenum in value
+ param texture UInt32 in value
+ param level Int32 in value
+ param zoffset Int32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4323
+ glxflags ignore
+ offset ?
+
+FramebufferRenderbuffer(target, attachment, renderbuffertarget, renderbuffer)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param renderbuffertarget RenderbufferTarget in value
+ param renderbuffer UInt32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4324
+ glxflags ignore
+ offset ?
+
+GetFramebufferAttachmentParameteriv(target, attachment, pname, params)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_framebuffer_object
+ dlflags notlistable
+ version 3.0
+ extension
+ glxvendorpriv 1428
+ glxflags ignore
+ offset ?
+
+GenerateMipmap(target)
+ return void
+ param target GLenum in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension
+ glxropcode 4325
+ glxflags ignore
+ offset ?
+
+# Promoted from EXT_framebuffer_blit
+BlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
+ return void
+ param srcX0 Int32 in value
+ param srcY0 Int32 in value
+ param srcX1 Int32 in value
+ param srcY1 Int32 in value
+ param dstX0 Int32 in value
+ param dstY0 Int32 in value
+ param dstX1 Int32 in value
+ param dstY1 Int32 in value
+ param mask ClearBufferMask in value
+ param filter GLenum in value
+ category ARB_framebuffer_object
+ version 3.0
+ glxropcode 4330
+ offset ?
+
+# Promoted from EXT_framebuffer_multisample
+RenderbufferStorageMultisample(target, samples, internalformat, width, height)
+ return void
+ param target GLenum in value
+ param samples SizeI in value
+ param internalformat GLenum in value
+ param width SizeI in value
+ param height SizeI in value
+ category ARB_framebuffer_object
+ version 3.0
+ glxropcode 4331
+ offset ?
+
+# Promoted from ARB_geometry_shader4
+FramebufferTextureLayer(target, attachment, texture, level, layer)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param layer CheckedInt32 in value
+ category ARB_framebuffer_object
+ version 3.0
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+
+###############################################################################
+#
+# ARB Extension #46
+# ARB_framebuffer_sRGB commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_framebuffer_sRGB
+
+###############################################################################
+#
+# ARB Extension #47
+# ARB_geometry_shader4 commands
+#
+###############################################################################
+
+ProgramParameteriARB(program, pname, value)
+ return void
+ param program UInt32 in value
+ param pname ProgramParameterPName in value
+ param value Int32 in value
+ category ARB_geometry_shader4
+ version 3.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+
+FramebufferTextureARB(target, attachment, texture, level)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ category ARB_geometry_shader4
+ version 3.0
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+FramebufferTextureLayerARB(target, attachment, texture, level, layer)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param layer CheckedInt32 in value
+ category ARB_geometry_shader4
+ version 3.0
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ alias FramebufferTextureLayer
+
+FramebufferTextureFaceARB(target, attachment, texture, level, face)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param face TextureTarget in value
+ category ARB_geometry_shader4
+ version 3.0
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# ARB Extension #48
+# ARB_half_float_vertex commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_half_float_vertex
+
+###############################################################################
+#
+# ARB Extension #49
+# ARB_instanced_arrays commands
+#
+###############################################################################
+
+VertexAttribDivisorARB(index, divisor)
+ return void
+ param index UInt32 in value
+ param divisor UInt32 in value
+ category ARB_instanced_arrays
+ version 2.0
+ extension
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# ARB Extension #50
+# ARB_map_buffer_range commands (also OpenGL 3.0)
+#
+###############################################################################
+
+MapBufferRange(target, offset, length, access)
+ return VoidPointer
+ param target BufferTargetARB in value
+ param offset BufferOffset in value
+ param length BufferSize in value
+ param access BufferAccessMask in value
+ category ARB_map_buffer_range
+ version 3.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+# Promoted from APPLE_flush_buffer_range
+FlushMappedBufferRange(target, offset, length)
+ return void
+ param target BufferTargetARB in value
+ param offset BufferOffset in value
+ param length BufferSize in value
+ category ARB_map_buffer_range
+ version 3.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #51
+# ARB_texture_buffer_object commands
+#
+###############################################################################
+
+TexBufferARB(target, internalformat, buffer)
+ return void
+ param target TextureTarget in value
+ param internalformat GLenum in value
+ param buffer UInt32 in value
+ category ARB_texture_buffer_object
+ version 3.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ alias TexBuffer
+
+###############################################################################
+#
+# ARB Extension #52
+# ARB_texture_compression_rgtc commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_compression_rgtc
+
+###############################################################################
+#
+# ARB Extension #53
+# ARB_texture_rg commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_rg
+
+###############################################################################
+#
+# ARB Extension #54
+# ARB_vertex_array_object commands (also OpenGL 3.0)
+#
+###############################################################################
+
+# Promoted from APPLE_vertex_array_object
+BindVertexArray(array)
+ return void
+ param array UInt32 in value
+ category ARB_vertex_array_object
+ version 3.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteVertexArrays(n, arrays)
+ return void
+ param n SizeI in value
+ param arrays UInt32 in array [n]
+ category ARB_vertex_array_object
+ version 3.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GenVertexArrays(n, arrays)
+ return void
+ param n SizeI in value
+ param arrays UInt32 out array [n]
+ category ARB_vertex_array_object
+ version 3.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsVertexArray(array)
+ return Boolean
+ param array UInt32 in value
+ category ARB_vertex_array_object
+ version 3.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #55 - WGL_ARB_create_context
+# ARB Extension #56 - GLX_ARB_create_context
+#
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #57
+# ARB_uniform_buffer_object commands
+#
+###############################################################################
+
+GetUniformIndices(program, uniformCount, uniformNames, uniformIndices)
+ return void
+ param program UInt32 in value
+ param uniformCount SizeI in value
+ param uniformNames CharPointer in array [COMPSIZE(uniformCount)]
+ param uniformIndices UInt32 out array [COMPSIZE(uniformCount)]
+ category ARB_uniform_buffer_object
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveUniformsiv(program, uniformCount, uniformIndices, pname, params)
+ return void
+ param program UInt32 in value
+ param uniformCount SizeI in value
+ param uniformIndices UInt32 in array [COMPSIZE(uniformCount)]
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_uniform_buffer_object
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveUniformName(program, uniformIndex, bufSize, length, uniformName)
+ return void
+ param program UInt32 in value
+ param uniformIndex UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param uniformName Char out array [bufSize]
+ category ARB_uniform_buffer_object
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetUniformBlockIndex(program, uniformBlockName)
+ return UInt32
+ param program UInt32 in value
+ param uniformBlockName Char in array [COMPSIZE()]
+ category ARB_uniform_buffer_object
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveUniformBlockiv(program, uniformBlockIndex, pname, params)
+ return void
+ param program UInt32 in value
+ param uniformBlockIndex UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_uniform_buffer_object
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveUniformBlockName(program, uniformBlockIndex, bufSize, length, uniformBlockName)
+ return void
+ param program UInt32 in value
+ param uniformBlockIndex UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param uniformBlockName Char out array [bufSize]
+ category ARB_uniform_buffer_object
+ dlflags notlistable
+ version 2.0
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+UniformBlockBinding(program, uniformBlockIndex, uniformBlockBinding)
+ return void
+ param program UInt32 in value
+ param uniformBlockIndex UInt32 in value
+ param uniformBlockBinding UInt32 in value
+ category ARB_uniform_buffer_object
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+
+###############################################################################
+#
+# ARB Extension #58
+# ARB_compatibility commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_compatibility
+
+###############################################################################
+#
+# ARB Extension #59
+# ARB_copy_buffer commands
+#
+###############################################################################
+
+CopyBufferSubData(readTarget, writeTarget, readOffset, writeOffset, size)
+ return void
+ param readTarget GLenum in value
+ param writeTarget GLenum in value
+ param readOffset BufferOffset in value
+ param writeOffset BufferOffset in value
+ param size BufferSize in value
+ category ARB_copy_buffer
+ version 3.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #60
+# ARB_shader_texture_lod commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_shader_texture_lod
+
+###############################################################################
+#
+# ARB Extension #61
+# ARB_depth_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_depth_clamp
+
+###############################################################################
+#
+# ARB Extension #62
+# ARB_draw_elements_base_vertex commands
+#
+###############################################################################
+
+DrawElementsBaseVertex(mode, count, type, indices, basevertex)
+ return void
+ param mode GLenum in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ param basevertex Int32 in value
+ category ARB_draw_elements_base_vertex
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DrawRangeElementsBaseVertex(mode, start, end, count, type, indices, basevertex)
+ return void
+ param mode GLenum in value
+ param start UInt32 in value
+ param end UInt32 in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ param basevertex Int32 in value
+ category ARB_draw_elements_base_vertex
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DrawElementsInstancedBaseVertex(mode, count, type, indices, primcount, basevertex)
+ return void
+ param mode GLenum in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ param primcount SizeI in value
+ param basevertex Int32 in value
+ category ARB_draw_elements_base_vertex
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiDrawElementsBaseVertex(mode, count, type, indices, primcount, basevertex)
+ return void
+ param mode GLenum in value
+ param count SizeI in array [COMPSIZE(primcount)]
+ param type DrawElementsType in value
+ param indices VoidPointer in array [COMPSIZE(primcount)]
+ param primcount SizeI in value
+ param basevertex Int32 in array [COMPSIZE(primcount)]
+ category ARB_draw_elements_base_vertex
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #63
+# ARB_fragment_coord_conventions commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fragment_coord_conventions
+
+###############################################################################
+#
+# ARB Extension #64
+# ARB_provoking_vertex commands
+#
+###############################################################################
+
+ProvokingVertex(mode)
+ return void
+ param mode GLenum in value
+ category ARB_provoking_vertex
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #65
+# ARB_seamless_cube_map commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_seamless_cube_map
+
+###############################################################################
+#
+# ARB Extension #66
+# ARB_sync commands
+#
+###############################################################################
+
+FenceSync(condition, flags)
+ return sync
+ param condition GLenum in value
+ param flags GLbitfield in value
+ category ARB_sync
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsSync(sync)
+ return Boolean
+ param sync sync in value
+ category ARB_sync
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteSync(sync)
+ return void
+ param sync sync in value
+ category ARB_sync
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ClientWaitSync(sync, flags, timeout)
+ return GLenum
+ param sync sync in value
+ param flags GLbitfield in value
+ param timeout UInt64 in value
+ category ARB_sync
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+WaitSync(sync, flags, timeout)
+ return void
+ param sync sync in value
+ param flags GLbitfield in value
+ param timeout UInt64 in value
+ category ARB_sync
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetInteger64v(pname, params)
+ return void
+ param pname GLenum in value
+ param params Int64 out array [COMPSIZE(pname)]
+ category ARB_sync
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetSynciv(sync, pname, bufSize, length, values)
+ return void
+ param sync sync in value
+ param pname GLenum in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param values Int32 out array [length]
+ category ARB_sync
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #67
+# ARB_texture_multisample commands
+#
+###############################################################################
+
+TexImage2DMultisample(target, samples, internalformat, width, height, fixedsamplelocations)
+ return void
+ param target GLenum in value
+ param samples SizeI in value
+ param internalformat Int32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param fixedsamplelocations Boolean in value
+ category ARB_texture_multisample
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexImage3DMultisample(target, samples, internalformat, width, height, depth, fixedsamplelocations)
+ return void
+ param target GLenum in value
+ param samples SizeI in value
+ param internalformat Int32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param fixedsamplelocations Boolean in value
+ category ARB_texture_multisample
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetMultisamplefv(pname, index, val)
+ return void
+ param pname GLenum in value
+ param index UInt32 in value
+ param val Float32 out array [COMPSIZE(pname)]
+ category ARB_texture_multisample
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+SampleMaski(index, mask)
+ return void
+ param index UInt32 in value
+ param mask GLbitfield in value
+ category ARB_texture_multisample
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #68
+# ARB_vertex_array_bgra commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_vertex_array_bgra
+
+###############################################################################
+#
+# ARB Extension #69
+# ARB_draw_buffers_blend commands
+#
+###############################################################################
+
+@@@ Add ARB suffixes here & functions!
+BlendEquationi(buf, mode)
+ return void
+ param buf UInt32 in value
+ param mode GLenum in value
+ category ARB_draw_buffers_blend
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BlendEquationSeparatei(buf, modeRGB, modeAlpha)
+ return void
+ param buf UInt32 in value
+ param modeRGB GLenum in value
+ param modeAlpha GLenum in value
+ category ARB_draw_buffers_blend
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BlendFunci(buf, src, dst)
+ return void
+ param buf UInt32 in value
+ param src GLenum in value
+ param dst GLenum in value
+ category ARB_draw_buffers_blend
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BlendFuncSeparatei(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)
+ return void
+ param buf UInt32 in value
+ param srcRGB GLenum in value
+ param dstRGB GLenum in value
+ param srcAlpha GLenum in value
+ param dstAlpha GLenum in value
+ category ARB_draw_buffers_blend
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #70
+# ARB_sample_shading commands
+#
+###############################################################################
+
+@@@ Add ARB suffixes here & functions!
+MinSampleShading(value)
+ return void
+ param value ClampedColorF in value
+ category ARB_sample_shading
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #71
+# ARB_texture_cube_map_array commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_cube_map_array
+
+###############################################################################
+#
+# ARB Extension #72
+# ARB_texture_gather commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_gather
+
+###############################################################################
+#
+# ARB Extension #73
+# ARB_texture_query_lod commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_texture_query_lod
+
+###############################################################################
+#
+# ARB Extension #74 - WGL_ARB_create_context_profile
+# ARB Extension #75 - GLX_ARB_create_context_profile
+#
+###############################################################################
+
+###############################################################################
+#
+# ARB Extension #76
+# ARB_shading_language_include commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+NamedStringARB(type, namelen, name, stringlen, string)
+ return void
+ param type GLenum in value
+ param namelen Int32 in value
+ param name Char in array [namelen]
+ param stringlen Int32 in value
+ param string Char in array [stringlen]
+ category ARB_shading_language_include
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteNamedStringARB(namelen, name)
+ return void
+ param namelen Int32 in value
+ param name Char in array [namelen]
+ category ARB_shading_language_include
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+CompileShaderIncludeARB(shader, count, path, length)
+ return void
+ param shader UInt32 in value
+ param count SizeI in value
+ param path CharPointer in array [count]
+ param length Int32 in array [count]
+ category ARB_shading_language_include
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsNamedStringARB(namelen, name)
+ return Boolean
+ param namelen Int32 in value
+ param name Char in array [namelen]
+ category ARB_shading_language_include
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetNamedStringARB(namelen, name, bufSize, stringlen, string)
+ return void
+ param namelen Int32 in value
+ param name Char in array [namelen]
+ param bufSize SizeI in value
+ param stringlen Int32 out array [1]
+ param string Char out array [bufSize]
+ category ARB_shading_language_include
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetNamedStringivARB(namelen, name, pname, params)
+ return void
+ param namelen Int32 in value
+ param name Char in array [namelen]
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_shading_language_include
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #77
+# ARB_texture_compression_bptc commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #78
+# ARB_blend_func_extended commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+BindFragDataLocationIndexed(program, colorNumber, index, name)
+ return void
+ param program UInt32 in value
+ param colorNumber UInt32 in value
+ param index UInt32 in value
+ param name Char in array []
+ category ARB_blend_func_extended
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetFragDataIndex(program, name)
+ return Int32
+ param program UInt32 in value
+ param name Char in array []
+ category ARB_blend_func_extended
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #79
+# ARB_explicit_attrib_location commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #80
+# ARB_occlusion_query2 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #81
+# ARB_sampler_objects commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+GenSamplers(count, samplers)
+ return void
+ param count SizeI in value
+ param samplers UInt32 out array [count]
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteSamplers(count, samplers)
+ return void
+ param count SizeI in value
+ param samplers UInt32 in array [count]
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsSampler(sampler)
+ return Boolean
+ param sampler UInt32 in value
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindSampler(unit, sampler)
+ return void
+ param unit GLenum in value
+ param sampler UInt32 in value
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SamplerParameteri(sampler, pname, param)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param param Int32 in value
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SamplerParameteriv(sampler, pname, param)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param param Int32 in array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SamplerParameterf(sampler, pname, param)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param param Float32 in value
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SamplerParameterfv(sampler, pname, param)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param param Float32 in array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SamplerParameterIiv(sampler, pname, param)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param param Int32 in array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SamplerParameterIuiv(sampler, pname, param)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param param UInt32 in array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetSamplerParameteriv(sampler, pname, params)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetSamplerParameterIiv(sampler, pname, params)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetSamplerParameterfv(sampler, pname, params)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetSamplerParameterIfv(sampler, pname, params)
+ return void
+ param sampler UInt32 in value
+ param pname GLenum in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category ARB_sampler_objects
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #82
+# ARB_shader_bit_encoding commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #83
+# ARB_texture_rgb10_a2ui commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #84
+# ARB_texture_swizzle commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #85
+# ARB_timer_query commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+QueryCounter(id, target)
+ return void
+ param id UInt32 in value
+ param target GLenum in value
+ category ARB_timer_query
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetQueryObjecti64v(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params Int64 out array [COMPSIZE(pname)]
+ category ARB_timer_query
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetQueryObjectui64v(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params UInt64 out array [COMPSIZE(pname)]
+ category ARB_timer_query
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #86
+# ARB_vertex_type_2_10_10_10_rev commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+VertexP2ui(type, value)
+ return void
+ param type GLenum in value
+ param value UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexP2uiv(type, value)
+ return void
+ param type GLenum in value
+ param value UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexP3ui(type, value)
+ return void
+ param type GLenum in value
+ param value UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexP3uiv(type, value)
+ return void
+ param type GLenum in value
+ param value UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexP4ui(type, value)
+ return void
+ param type GLenum in value
+ param value UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexP4uiv(type, value)
+ return void
+ param type GLenum in value
+ param value UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP1ui(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP1uiv(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP2ui(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP2uiv(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP3ui(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP3uiv(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP4ui(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordP4uiv(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP1ui(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP1uiv(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP2ui(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP2uiv(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP3ui(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP3uiv(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP4ui(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoordP4uiv(texture, type, coords)
+ return void
+ param texture GLenum in value
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalP3ui(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalP3uiv(type, coords)
+ return void
+ param type GLenum in value
+ param coords UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorP3ui(type, color)
+ return void
+ param type GLenum in value
+ param color UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorP3uiv(type, color)
+ return void
+ param type GLenum in value
+ param color UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorP4ui(type, color)
+ return void
+ param type GLenum in value
+ param color UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorP4uiv(type, color)
+ return void
+ param type GLenum in value
+ param color UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SecondaryColorP3ui(type, color)
+ return void
+ param type GLenum in value
+ param color UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SecondaryColorP3uiv(type, color)
+ return void
+ param type GLenum in value
+ param color UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP1ui(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP1uiv(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP2ui(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP2uiv(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP3ui(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP3uiv(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP4ui(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in value
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribP4uiv(index, type, normalized, value)
+ return void
+ param index UInt32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param value UInt32 in array [1]
+ category ARB_vertex_type_2_10_10_10_rev
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #87
+# ARB_draw_indirect commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+DrawArraysIndirect(mode, indirect)
+ return void
+ param mode GLenum in value
+ param indirect Void in array []
+ category ARB_draw_indirect
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DrawElementsIndirect(mode, type, indirect)
+ return void
+ param mode GLenum in value
+ param type GLenum in value
+ param indirect Void in array []
+ category ARB_draw_indirect
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #88
+# ARB_gpu_shader5 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #89
+# ARB_gpu_shader_fp64 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+Uniform1d(location, x)
+ return void
+ param location Int32 in value
+ param x Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform2d(location, x, y)
+ return void
+ param location Int32 in value
+ param x Float64 in value
+ param y Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform3d(location, x, y, z)
+ return void
+ param location Int32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform4d(location, x, y, z, w)
+ return void
+ param location Int32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform1dv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform2dv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform3dv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniform4dv(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix2dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix3dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix4dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix2x3dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix2x4dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix3x2dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix3x4dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix4x2dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UniformMatrix4x3dv(location, count, transpose, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetUniformdv(program, location, params)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param params Float64 out array [location]
+ category ARB_gpu_shader_fp64
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform1dEXT(program, location, x)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param x Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform2dEXT(program, location, x, y)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param x Float64 in value
+ param y Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform3dEXT(program, location, x, y, z)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform4dEXT(program, location, x, y, z, w)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform1dvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform2dvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform3dvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniform4dvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix2dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix3dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix4dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix2x3dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix2x4dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix3x2dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix3x4dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix4x2dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformMatrix4x3dvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float64 in array [count]
+ category ARB_gpu_shader_fp64
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #90
+# ARB_shader_subroutine commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+GetSubroutineUniformLocation(program, shadertype, name)
+ return Int32
+ param program UInt32 in value
+ param shadertype GLenum in value
+ param name Char in array []
+ category ARB_shader_subroutine
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetSubroutineIndex(program, shadertype, name)
+ return UInt32
+ param program UInt32 in value
+ param shadertype GLenum in value
+ param name Char in array []
+ category ARB_shader_subroutine
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveSubroutineUniformiv(program, shadertype, index, pname, values)
+ return void
+ param program UInt32 in value
+ param shadertype GLenum in value
+ param index UInt32 in value
+ param pname GLenum in value
+ param values Int32 out array [COMPSIZE(pname)]
+ category ARB_shader_subroutine
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveSubroutineUniformName(program, shadertype, index, bufsize, length, name)
+ return void
+ param program UInt32 in value
+ param shadertype GLenum in value
+ param index UInt32 in value
+ param bufsize SizeI in value
+ param length SizeI out array [1]
+ param name Char out array [bufsize]
+ category ARB_shader_subroutine
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetActiveSubroutineName(program, shadertype, index, bufsize, length, name)
+ return void
+ param program UInt32 in value
+ param shadertype GLenum in value
+ param index UInt32 in value
+ param bufsize SizeI in value
+ param length SizeI out array [1]
+ param name Char out array [bufsize]
+ category ARB_shader_subroutine
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+UniformSubroutinesuiv(shadertype, count, indices)
+ return void
+ param shadertype GLenum in value
+ param count SizeI in value
+ param indices UInt32 in array [count]
+ category ARB_shader_subroutine
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetUniformSubroutineuiv(shadertype, location, params)
+ return void
+ param shadertype GLenum in value
+ param location Int32 in value
+ param params UInt32 out array [1]
+ category ARB_shader_subroutine
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetProgramStageiv(program, shadertype, pname, values)
+ return void
+ param program UInt32 in value
+ param shadertype GLenum in value
+ param pname GLenum in value
+ param values Int32 out array [1]
+ category ARB_shader_subroutine
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #91
+# ARB_tessellation_shader commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+PatchParameteri(pname, value)
+ return void
+ param pname GLenum in value
+ param value Int32 in value
+ category ARB_tessellation_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+PatchParameterfv(pname, values)
+ return void
+ param pname GLenum in value
+ param values Float32 in array [COMPSIZE(pname)]
+ category ARB_tessellation_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #92
+# ARB_texture_buffer_object_rgb32 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+###############################################################################
+#
+# ARB Extension #93
+# ARB_transform_feedback2 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+BindTransformFeedback(target, id)
+ return void
+ param target GLenum in value
+ param id UInt32 in value
+ category ARB_transform_feedback2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteTransformFeedbacks(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 in array [n]
+ category ARB_transform_feedback2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GenTransformFeedbacks(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 out array [n]
+ category ARB_transform_feedback2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsTransformFeedback(id)
+ return Boolean
+ param id UInt32 in value
+ category ARB_transform_feedback2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+PauseTransformFeedback()
+ return void
+ category ARB_transform_feedback2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ResumeTransformFeedback()
+ return void
+ category ARB_transform_feedback2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DrawTransformFeedback(mode, id)
+ return void
+ param mode GLenum in value
+ param id UInt32 in value
+ category ARB_transform_feedback2
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# ARB Extension #94
+# ARB_transform_feedback3 commands
+#
+###############################################################################
+
+# ??? VERIFY DONE ???
+
+DrawTransformFeedbackStream(mode, id, stream)
+ return void
+ param mode GLenum in value
+ param id UInt32 in value
+ param stream UInt32 in value
+ category ARB_transform_feedback3
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BeginQueryIndexed(target, index, id)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param id UInt32 in value
+ category ARB_transform_feedback3
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+EndQueryIndexed(target, index)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ category ARB_transform_feedback3
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetQueryIndexediv(target, index, pname, params)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category ARB_transform_feedback3
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+
+###############################################################################
+###############################################################################
+#
+# Non-ARB extensions, in order by registry extension number
+#
+###############################################################################
+###############################################################################
+
+###############################################################################
+#
+# Extension #1
+# EXT_abgr commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_abgr
+
+###############################################################################
+#
+# Extension #2
+# EXT_blend_color commands
+#
+###############################################################################
+
+BlendColorEXT(red, green, blue, alpha)
+ return void
+ param red ClampedColorF in value
+ param green ClampedColorF in value
+ param blue ClampedColorF in value
+ param alpha ClampedColorF in value
+ category EXT_blend_color
+ version 1.0
+ glxropcode 4096
+ glxflags EXT
+ extension soft
+ alias BlendColor
+
+###############################################################################
+#
+# Extension #3
+# EXT_polygon_offset commands
+#
+###############################################################################
+
+PolygonOffsetEXT(factor, bias)
+ return void
+ param factor Float32 in value
+ param bias Float32 in value
+ category EXT_polygon_offset
+ version 1.0
+ glxropcode 4098
+ glxflags EXT
+ extension soft
+ offset 414
+
+###############################################################################
+#
+# Extension #4
+# EXT_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture
+
+###############################################################################
+#
+# Extension #5 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #6
+# EXT_texture3D commands
+#
+###############################################################################
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+TexImage3DEXT(target, level, internalformat, width, height, depth, border, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category EXT_texture3D
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4114
+ extension
+ alias TexImage3D
+
+TexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category EXT_texture3D
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4115
+ extension
+ alias TexSubImage3D
+
+###############################################################################
+#
+# Extension #7
+# SGIS_texture_filter4 commands
+#
+###############################################################################
+
+GetTexFilterFuncSGIS(target, filter, weights)
+ return void
+ param target TextureTarget in value
+ param filter TextureFilterSGIS in value
+ param weights Float32 out array [COMPSIZE(target/filter)]
+ category SGIS_texture_filter4
+ dlflags notlistable
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4101
+ extension
+ offset 415
+
+TexFilterFuncSGIS(target, filter, n, weights)
+ return void
+ param target TextureTarget in value
+ param filter TextureFilterSGIS in value
+ param n SizeI in value
+ param weights Float32 in array [n]
+ category SGIS_texture_filter4
+ glxflags SGI
+ version 1.0
+ glxropcode 2064
+ extension
+ offset 416
+
+###############################################################################
+#
+# Extension #8 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #9
+# EXT_subtexture commands
+#
+###############################################################################
+
+TexSubImage1DEXT(target, level, xoffset, width, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width)]
+ category EXT_subtexture
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4099
+ extension
+ alias TexSubImage1D
+
+TexSubImage2DEXT(target, level, xoffset, yoffset, width, height, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category EXT_subtexture
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4100
+ extension
+ alias TexSubImage2D
+
+###############################################################################
+#
+# Extension #10
+# EXT_copy_texture commands
+#
+###############################################################################
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage1DEXT(target, level, internalformat, x, y, width, border)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ category EXT_copy_texture
+ version 1.0
+ glxflags EXT
+ glxropcode 4119
+ extension
+ alias CopyTexImage1D
+
+# Arguably TexelInternalFormat, not PixelInternalFormat
+CopyTexImage2DEXT(target, level, internalformat, x, y, width, height, border)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ category EXT_copy_texture
+ version 1.0
+ glxflags EXT
+ glxropcode 4120
+ extension
+ alias CopyTexImage2D
+
+CopyTexSubImage1DEXT(target, level, xoffset, x, y, width)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category EXT_copy_texture
+ version 1.0
+ glxflags EXT
+ glxropcode 4121
+ extension
+ alias CopyTexSubImage1D
+
+CopyTexSubImage2DEXT(target, level, xoffset, yoffset, x, y, width, height)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_copy_texture
+ version 1.0
+ glxflags EXT
+ glxropcode 4122
+ extension
+ alias CopyTexSubImage2D
+
+CopyTexSubImage3DEXT(target, level, xoffset, yoffset, zoffset, x, y, width, height)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_copy_texture
+ version 1.0
+ glxflags EXT
+ glxropcode 4123
+ extension
+ alias CopyTexSubImage3D
+
+###############################################################################
+#
+# Extension #11
+# EXT_histogram commands
+#
+###############################################################################
+
+GetHistogramEXT(target, reset, format, type, values)
+ return void
+ param target HistogramTargetEXT in value
+ param reset Boolean in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param values Void out array [COMPSIZE(target/format/type)]
+ category EXT_histogram
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxvendorpriv 5
+ extension
+ offset 417
+
+GetHistogramParameterfvEXT(target, pname, params)
+ return void
+ param target HistogramTargetEXT in value
+ param pname GetHistogramParameterPNameEXT in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_histogram
+ dlflags notlistable
+ version 1.0
+ glxvendorpriv 6
+ glxflags EXT
+ extension
+ offset 418
+
+GetHistogramParameterivEXT(target, pname, params)
+ return void
+ param target HistogramTargetEXT in value
+ param pname GetHistogramParameterPNameEXT in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_histogram
+ dlflags notlistable
+ version 1.0
+ glxvendorpriv 7
+ glxflags EXT
+ extension
+ offset 419
+
+GetMinmaxEXT(target, reset, format, type, values)
+ return void
+ param target MinmaxTargetEXT in value
+ param reset Boolean in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param values Void out array [COMPSIZE(target/format/type)]
+ category EXT_histogram
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxvendorpriv 8
+ extension
+ offset 420
+
+GetMinmaxParameterfvEXT(target, pname, params)
+ return void
+ param target MinmaxTargetEXT in value
+ param pname GetMinmaxParameterPNameEXT in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_histogram
+ dlflags notlistable
+ version 1.0
+ glxvendorpriv 9
+ glxflags EXT
+ extension
+ offset 421
+
+GetMinmaxParameterivEXT(target, pname, params)
+ return void
+ param target MinmaxTargetEXT in value
+ param pname GetMinmaxParameterPNameEXT in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_histogram
+ dlflags notlistable
+ version 1.0
+ glxvendorpriv 10
+ glxflags EXT
+ extension
+ offset 422
+
+HistogramEXT(target, width, internalformat, sink)
+ return void
+ param target HistogramTargetEXT in value
+ param width SizeI in value
+ param internalformat PixelInternalFormat in value
+ param sink Boolean in value
+ category EXT_histogram
+ version 1.0
+ glxropcode 4110
+ glxflags EXT
+ extension
+ alias Histogram
+
+MinmaxEXT(target, internalformat, sink)
+ return void
+ param target MinmaxTargetEXT in value
+ param internalformat PixelInternalFormat in value
+ param sink Boolean in value
+ category EXT_histogram
+ version 1.0
+ glxropcode 4111
+ glxflags EXT
+ extension
+ alias Minmax
+
+ResetHistogramEXT(target)
+ return void
+ param target HistogramTargetEXT in value
+ category EXT_histogram
+ version 1.0
+ glxropcode 4112
+ glxflags EXT
+ extension
+ alias ResetHistogram
+
+ResetMinmaxEXT(target)
+ return void
+ param target MinmaxTargetEXT in value
+ category EXT_histogram
+ version 1.0
+ glxropcode 4113
+ glxflags EXT
+ extension
+ alias ResetMinmax
+
+###############################################################################
+#
+# Extension #12
+# EXT_convolution commands
+#
+###############################################################################
+
+ConvolutionFilter1DEXT(target, internalformat, width, format, type, image)
+ return void
+ param target ConvolutionTargetEXT in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param image Void in array [COMPSIZE(format/type/width)]
+ category EXT_convolution
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4101
+ extension
+ alias ConvolutionFilter1D
+
+ConvolutionFilter2DEXT(target, internalformat, width, height, format, type, image)
+ return void
+ param target ConvolutionTargetEXT in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param image Void in array [COMPSIZE(format/type/width/height)]
+ category EXT_convolution
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4102
+ extension
+ alias ConvolutionFilter2D
+
+ConvolutionParameterfEXT(target, pname, params)
+ return void
+ param target ConvolutionTargetEXT in value
+ param pname ConvolutionParameterEXT in value
+ param params CheckedFloat32 in value
+ category EXT_convolution
+ version 1.0
+ glxropcode 4103
+ glxflags EXT
+ extension
+ alias ConvolutionParameterf
+
+ConvolutionParameterfvEXT(target, pname, params)
+ return void
+ param target ConvolutionTargetEXT in value
+ param pname ConvolutionParameterEXT in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category EXT_convolution
+ version 1.0
+ glxropcode 4104
+ glxflags EXT
+ extension
+ alias ConvolutionParameterfv
+
+ConvolutionParameteriEXT(target, pname, params)
+ return void
+ param target ConvolutionTargetEXT in value
+ param pname ConvolutionParameterEXT in value
+ param params CheckedInt32 in value
+ category EXT_convolution
+ version 1.0
+ glxropcode 4105
+ glxflags EXT
+ extension
+ alias ConvolutionParameteri
+
+ConvolutionParameterivEXT(target, pname, params)
+ return void
+ param target ConvolutionTargetEXT in value
+ param pname ConvolutionParameterEXT in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category EXT_convolution
+ version 1.0
+ glxropcode 4106
+ glxflags EXT
+ extension
+ alias ConvolutionParameteriv
+
+CopyConvolutionFilter1DEXT(target, internalformat, x, y, width)
+ return void
+ param target ConvolutionTargetEXT in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category EXT_convolution
+ version 1.0
+ glxropcode 4107
+ glxflags EXT
+ extension
+ alias CopyConvolutionFilter1D
+
+CopyConvolutionFilter2DEXT(target, internalformat, x, y, width, height)
+ return void
+ param target ConvolutionTargetEXT in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_convolution
+ version 1.0
+ glxropcode 4108
+ glxflags EXT
+ extension
+ alias CopyConvolutionFilter2D
+
+GetConvolutionFilterEXT(target, format, type, image)
+ return void
+ param target ConvolutionTargetEXT in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param image Void out array [COMPSIZE(target/format/type)]
+ category EXT_convolution
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxvendorpriv 1
+ extension
+ offset 423
+
+GetConvolutionParameterfvEXT(target, pname, params)
+ return void
+ param target ConvolutionTargetEXT in value
+ param pname ConvolutionParameterEXT in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_convolution
+ dlflags notlistable
+ version 1.0
+ glxvendorpriv 2
+ glxflags EXT
+ extension
+ offset 424
+
+GetConvolutionParameterivEXT(target, pname, params)
+ return void
+ param target ConvolutionTargetEXT in value
+ param pname ConvolutionParameterEXT in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_convolution
+ dlflags notlistable
+ version 1.0
+ glxvendorpriv 3
+ glxflags EXT
+ extension
+ offset 425
+
+GetSeparableFilterEXT(target, format, type, row, column, span)
+ return void
+ param target SeparableTargetEXT in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param row Void out array [COMPSIZE(target/format/type)]
+ param column Void out array [COMPSIZE(target/format/type)]
+ param span Void out array [COMPSIZE(target/format/type)]
+ category EXT_convolution
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxvendorpriv 4
+ extension
+ offset 426
+
+SeparableFilter2DEXT(target, internalformat, width, height, format, type, row, column)
+ return void
+ param target SeparableTargetEXT in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param row Void in array [COMPSIZE(target/format/type/width)]
+ param column Void in array [COMPSIZE(target/format/type/height)]
+ category EXT_convolution
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4109
+ extension
+ alias SeparableFilter2D
+
+###############################################################################
+#
+# Extension #13
+# SGI_color_matrix commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGI_color_matrix
+
+###############################################################################
+#
+# Extension #14
+# SGI_color_table commands
+#
+###############################################################################
+
+ColorTableSGI(target, internalformat, width, format, type, table)
+ return void
+ param target ColorTableTargetSGI in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param table Void in array [COMPSIZE(format/type/width)]
+ category SGI_color_table
+ dlflags handcode
+ glxflags client-handcode server-handcode SGI
+ version 1.0
+ glxropcode 2053
+ extension
+ alias ColorTable
+
+ColorTableParameterfvSGI(target, pname, params)
+ return void
+ param target ColorTableTargetSGI in value
+ param pname ColorTableParameterPNameSGI in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category SGI_color_table
+ version 1.0
+ glxropcode 2054
+ glxflags SGI
+ extension
+ alias ColorTableParameterfv
+
+ColorTableParameterivSGI(target, pname, params)
+ return void
+ param target ColorTableTargetSGI in value
+ param pname ColorTableParameterPNameSGI in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category SGI_color_table
+ version 1.0
+ glxropcode 2055
+ glxflags SGI
+ extension
+ alias ColorTableParameteriv
+
+CopyColorTableSGI(target, internalformat, x, y, width)
+ return void
+ param target ColorTableTargetSGI in value
+ param internalformat PixelInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category SGI_color_table
+ version 1.0
+ glxropcode 2056
+ glxflags SGI
+ extension
+ alias CopyColorTable
+
+GetColorTableSGI(target, format, type, table)
+ return void
+ param target ColorTableTargetSGI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param table Void out array [COMPSIZE(target/format/type)]
+ category SGI_color_table
+ dlflags notlistable
+ glxflags client-handcode server-handcode SGI
+ version 1.0
+ glxvendorpriv 4098
+ extension
+ offset 427
+
+GetColorTableParameterfvSGI(target, pname, params)
+ return void
+ param target ColorTableTargetSGI in value
+ param pname GetColorTableParameterPNameSGI in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category SGI_color_table
+ dlflags notlistable
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4099
+ extension
+ offset 428
+
+GetColorTableParameterivSGI(target, pname, params)
+ return void
+ param target ColorTableTargetSGI in value
+ param pname GetColorTableParameterPNameSGI in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category SGI_color_table
+ dlflags notlistable
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4100
+ extension
+ offset 429
+
+###############################################################################
+#
+# Extension #15
+# SGIX_pixel_texture commands
+#
+###############################################################################
+
+PixelTexGenSGIX(mode)
+ return void
+ param mode PixelTexGenModeSGIX in value
+ category SGIX_pixel_texture
+ version 1.0
+ glxflags SGI
+ glxropcode 2059
+ extension
+ offset 430
+
+###############################################################################
+#
+# Extension #15 (variant)
+# SGIS_pixel_texture commands
+# Both SGIS and SGIX forms have extension #15!
+#
+###############################################################################
+
+PixelTexGenParameteriSGIS(pname, param)
+ return void
+ param pname PixelTexGenParameterNameSGIS in value
+ param param CheckedInt32 in value
+ category SGIS_pixel_texture
+ version 1.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 431
+
+PixelTexGenParameterivSGIS(pname, params)
+ return void
+ param pname PixelTexGenParameterNameSGIS in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category SGIS_pixel_texture
+ version 1.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 432
+
+PixelTexGenParameterfSGIS(pname, param)
+ return void
+ param pname PixelTexGenParameterNameSGIS in value
+ param param CheckedFloat32 in value
+ category SGIS_pixel_texture
+ version 1.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 433
+
+PixelTexGenParameterfvSGIS(pname, params)
+ return void
+ param pname PixelTexGenParameterNameSGIS in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category SGIS_pixel_texture
+ version 1.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 434
+
+GetPixelTexGenParameterivSGIS(pname, params)
+ return void
+ param pname PixelTexGenParameterNameSGIS in value
+ param params CheckedInt32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category SGIS_pixel_texture
+ version 1.0
+ extension
+ glxvendorpriv ?
+ glxflags ignore
+ offset 435
+
+GetPixelTexGenParameterfvSGIS(pname, params)
+ return void
+ param pname PixelTexGenParameterNameSGIS in value
+ param params CheckedFloat32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category SGIS_pixel_texture
+ version 1.0
+ extension
+ glxvendorpriv ?
+ glxflags ignore
+ offset 436
+
+###############################################################################
+#
+# Extension #16
+# SGIS_texture4D commands
+#
+###############################################################################
+
+TexImage4DSGIS(target, level, internalformat, width, height, depth, size4d, border, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param size4d SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth/size4d)]
+ category SGIS_texture4D
+ dlflags handcode
+ glxflags client-handcode server-handcode SGI
+ version 1.0
+ glxropcode 2057
+ extension
+ offset 437
+
+TexSubImage4DSGIS(target, level, xoffset, yoffset, zoffset, woffset, width, height, depth, size4d, format, type, pixels)
+ return void
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param woffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param size4d SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth/size4d)]
+ category SGIS_texture4D
+ dlflags handcode
+ glxflags client-handcode server-handcode SGI
+ version 1.0
+ glxropcode 2058
+ extension
+ offset 438
+
+###############################################################################
+#
+# Extension #17
+# SGI_texture_color_table commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGI_texture_color_table
+
+###############################################################################
+#
+# Extension #18
+# EXT_cmyka commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_cmyka
+
+###############################################################################
+#
+# Extension #19 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #20
+# EXT_texture_object commands
+#
+###############################################################################
+
+AreTexturesResidentEXT(n, textures, residences)
+ return Boolean
+ param n SizeI in value
+ param textures Texture in array [n]
+ param residences Boolean out array [n]
+ category EXT_texture_object
+ glxflags EXT
+ glxvendorpriv 11
+ dlflags notlistable
+ version 1.0
+ extension
+ offset 439
+
+BindTextureEXT(target, texture)
+ return void
+ param target TextureTarget in value
+ param texture Texture in value
+ category EXT_texture_object
+ version 1.0
+ glxflags EXT
+ glxropcode 4117
+ extension
+ alias BindTexture
+
+DeleteTexturesEXT(n, textures)
+ return void
+ param n SizeI in value
+ param textures Texture in array [n]
+ category EXT_texture_object
+ dlflags notlistable
+ version 1.0
+ glxflags EXT
+ glxvendorpriv 12
+ extension
+ offset 561
+
+GenTexturesEXT(n, textures)
+ return void
+ param n SizeI in value
+ param textures Texture out array [n]
+ category EXT_texture_object
+ dlflags notlistable
+ version 1.0
+ glxflags EXT
+ glxvendorpriv 13
+ extension
+ offset 440
+
+IsTextureEXT(texture)
+ return Boolean
+ param texture Texture in value
+ category EXT_texture_object
+ dlflags notlistable
+ version 1.0
+ glxflags EXT
+ glxvendorpriv 14
+ extension
+ offset 441
+
+PrioritizeTexturesEXT(n, textures, priorities)
+ return void
+ param n SizeI in value
+ param textures Texture in array [n]
+ param priorities ClampedFloat32 in array [n]
+ category EXT_texture_object
+ glxflags EXT
+ version 1.0
+ glxropcode 4118
+ extension
+ alias PrioritizeTextures
+
+###############################################################################
+#
+# Extension #21
+# SGIS_detail_texture commands
+#
+###############################################################################
+
+DetailTexFuncSGIS(target, n, points)
+ return void
+ param target TextureTarget in value
+ param n SizeI in value
+ param points Float32 in array [n*2]
+ category SGIS_detail_texture
+ glxflags SGI
+ version 1.0
+ glxropcode 2051
+ extension
+ offset 442
+
+GetDetailTexFuncSGIS(target, points)
+ return void
+ param target TextureTarget in value
+ param points Float32 out array [COMPSIZE(target)]
+ category SGIS_detail_texture
+ dlflags notlistable
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4096
+ extension
+ offset 443
+
+###############################################################################
+#
+# Extension #22
+# SGIS_sharpen_texture commands
+#
+###############################################################################
+
+SharpenTexFuncSGIS(target, n, points)
+ return void
+ param target TextureTarget in value
+ param n SizeI in value
+ param points Float32 in array [n*2]
+ category SGIS_sharpen_texture
+ glxflags SGI
+ version 1.0
+ glxropcode 2052
+ extension
+ offset 444
+
+GetSharpenTexFuncSGIS(target, points)
+ return void
+ param target TextureTarget in value
+ param points Float32 out array [COMPSIZE(target)]
+ category SGIS_sharpen_texture
+ dlflags notlistable
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4097
+ extension
+ offset 445
+
+###############################################################################
+#
+# EXT_packed_pixels commands
+# Extension #23
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_packed_pixels
+
+###############################################################################
+#
+# Extension #24
+# SGIS_texture_lod commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_texture_lod
+
+###############################################################################
+#
+# Extension #25
+# SGIS_multisample commands
+#
+###############################################################################
+
+SampleMaskSGIS(value, invert)
+ return void
+ param value ClampedFloat32 in value
+ param invert Boolean in value
+ category SGIS_multisample
+ version 1.1
+ glxropcode 2048
+ glxflags SGI
+ extension
+ alias SampleMaskEXT
+
+SamplePatternSGIS(pattern)
+ return void
+ param pattern SamplePatternSGIS in value
+ category SGIS_multisample
+ version 1.0
+ glxropcode 2049
+ glxflags SGI
+ extension
+ alias SamplePatternEXT
+
+###############################################################################
+#
+# Extension #26 - no specification?
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #27
+# EXT_rescale_normal commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_rescale_normal
+
+###############################################################################
+#
+# Extension #28 - GLX_EXT_visual_info
+# Extension #29 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #30
+# EXT_vertex_array commands
+#
+###############################################################################
+
+ArrayElementEXT(i)
+ return void
+ param i Int32 in value
+ category EXT_vertex_array
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ alias ArrayElement
+
+ColorPointerEXT(size, type, stride, count, pointer)
+ return void
+ param size Int32 in value
+ param type ColorPointerType in value
+ param stride SizeI in value
+ param count SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride/count)] retained
+ category EXT_vertex_array
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ offset 448
+
+DrawArraysEXT(mode, first, count)
+ return void
+ param mode BeginMode in value
+ param first Int32 in value
+ param count SizeI in value
+ category EXT_vertex_array
+ dlflags handcode
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ glxropcode 4116
+ extension
+ alias DrawArrays
+
+EdgeFlagPointerEXT(stride, count, pointer)
+ return void
+ param stride SizeI in value
+ param count SizeI in value
+ param pointer Boolean in array [COMPSIZE(stride/count)] retained
+ category EXT_vertex_array
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ offset 449
+
+GetPointervEXT(pname, params)
+ return void
+ param pname GetPointervPName in value
+ param params VoidPointer out array [1]
+ category EXT_vertex_array
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ alias GetPointerv
+
+IndexPointerEXT(type, stride, count, pointer)
+ return void
+ param type IndexPointerType in value
+ param stride SizeI in value
+ param count SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride/count)] retained
+ category EXT_vertex_array
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ offset 450
+
+NormalPointerEXT(type, stride, count, pointer)
+ return void
+ param type NormalPointerType in value
+ param stride SizeI in value
+ param count SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride/count)] retained
+ category EXT_vertex_array
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ offset 451
+
+TexCoordPointerEXT(size, type, stride, count, pointer)
+ return void
+ param size Int32 in value
+ param type TexCoordPointerType in value
+ param stride SizeI in value
+ param count SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride/count)] retained
+ category EXT_vertex_array
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ offset 452
+
+VertexPointerEXT(size, type, stride, count, pointer)
+ return void
+ param size Int32 in value
+ param type VertexPointerType in value
+ param stride SizeI in value
+ param count SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride/count)] retained
+ category EXT_vertex_array
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.0
+ extension
+ offset 453
+
+###############################################################################
+#
+# Extension #31
+# EXT_misc_attribute commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_misc_attribute
+
+###############################################################################
+#
+# Extension #32
+# SGIS_generate_mipmap commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_generate_mipmap
+
+###############################################################################
+#
+# Extension #33
+# SGIX_clipmap commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_clipmap
+
+###############################################################################
+#
+# Extension #34
+# SGIX_shadow commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_shadow
+
+###############################################################################
+#
+# Extension #35
+# SGIS_texture_edge_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_texture_edge_clamp
+
+###############################################################################
+#
+# Extension #36
+# SGIS_texture_border_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_texture_border_clamp
+
+###############################################################################
+#
+# Extension #37
+# EXT_blend_minmax commands
+#
+###############################################################################
+
+BlendEquationEXT(mode)
+ return void
+ param mode BlendEquationModeEXT in value
+ category EXT_blend_minmax
+ version 1.0
+ glxropcode 4097
+ glxflags EXT
+ extension soft
+ alias BlendEquation
+
+###############################################################################
+#
+# Extension #38
+# EXT_blend_subtract commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_blend_subtract
+
+###############################################################################
+#
+# Extension #39
+# EXT_blend_logic_op commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_blend_logic_op
+
+###############################################################################
+#
+# Extension #40 - GLX_SGI_swap_control
+# Extension #41 - GLX_SGI_video_sync
+# Extension #42 - GLX_SGI_make_current_read
+# Extension #43 - GLX_SGIX_video_source
+# Extension #44 - GLX_EXT_visual_rating
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #45
+# SGIX_interlace commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_interlace
+
+###############################################################################
+#
+# Extension #46
+# SGIX_pixel_tiles commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_pixel_tiles
+
+###############################################################################
+#
+# Extension #47 - GLX_EXT_import_context
+# Extension #48 - skipped
+# Extension #49 - GLX_SGIX_fbconfig
+# Extension #50 - GLX_SGIX_pbuffer
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #51
+# SGIX_texture_select commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_select
+
+###############################################################################
+#
+# Extension #52
+# SGIX_sprite commands
+#
+###############################################################################
+
+SpriteParameterfSGIX(pname, param)
+ return void
+ param pname SpriteParameterNameSGIX in value
+ param param CheckedFloat32 in value
+ category SGIX_sprite
+ version 1.0
+ glxflags SGI
+ glxropcode 2060
+ extension
+ offset 454
+
+SpriteParameterfvSGIX(pname, params)
+ return void
+ param pname SpriteParameterNameSGIX in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category SGIX_sprite
+ version 1.0
+ glxflags SGI
+ glxropcode 2061
+ extension
+ offset 455
+
+SpriteParameteriSGIX(pname, param)
+ return void
+ param pname SpriteParameterNameSGIX in value
+ param param CheckedInt32 in value
+ category SGIX_sprite
+ version 1.0
+ glxflags SGI
+ glxropcode 2062
+ extension
+ offset 456
+
+SpriteParameterivSGIX(pname, params)
+ return void
+ param pname SpriteParameterNameSGIX in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category SGIX_sprite
+ version 1.0
+ glxflags SGI
+ glxropcode 2063
+ extension
+ offset 457
+
+###############################################################################
+#
+# Extension #53
+# SGIX_texture_multi_buffer commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_multi_buffer
+
+###############################################################################
+#
+# Extension #54
+# EXT_point_parameters / SGIS_point_parameters commands
+#
+###############################################################################
+
+PointParameterfEXT(pname, param)
+ return void
+ param pname PointParameterNameARB in value
+ param param CheckedFloat32 in value
+ category EXT_point_parameters
+ version 1.0
+ glxflags SGI
+ extension
+ alias PointParameterfARB
+
+PointParameterfvEXT(pname, params)
+ return void
+ param pname PointParameterNameARB in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category EXT_point_parameters
+ version 1.0
+ glxflags SGI
+ extension
+ alias PointParameterfvARB
+
+PointParameterfSGIS(pname, param)
+ return void
+ param pname PointParameterNameARB in value
+ param param CheckedFloat32 in value
+ category SGIS_point_parameters
+ version 1.0
+ glxflags SGI
+ extension
+ alias PointParameterfARB
+
+PointParameterfvSGIS(pname, params)
+ return void
+ param pname PointParameterNameARB in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category SGIS_point_parameters
+ version 1.0
+ glxflags SGI
+ extension
+ alias PointParameterfvARB
+
+###############################################################################
+#
+# Extension #55
+# SGIX_instruments commands
+#
+###############################################################################
+
+GetInstrumentsSGIX()
+ return Int32
+ dlflags notlistable
+ category SGIX_instruments
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4102
+ extension
+ offset 460
+
+InstrumentsBufferSGIX(size, buffer)
+ return void
+ param size SizeI in value
+ param buffer Int32 out array [size] retained
+ dlflags notlistable
+ category SGIX_instruments
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4103
+ extension
+ offset 461
+
+PollInstrumentsSGIX(marker_p)
+ return Int32
+ param marker_p Int32 out array [1]
+ dlflags notlistable
+ category SGIX_instruments
+ version 1.0
+ glxflags SGI
+ glxvendorpriv 4104
+ extension
+ offset 462
+
+ReadInstrumentsSGIX(marker)
+ return void
+ param marker Int32 in value
+ category SGIX_instruments
+ version 1.0
+ glxflags SGI
+ glxropcode 2077
+ extension
+ offset 463
+
+StartInstrumentsSGIX()
+ return void
+ category SGIX_instruments
+ version 1.0
+ glxflags SGI
+ glxropcode 2069
+ extension
+ offset 464
+
+StopInstrumentsSGIX(marker)
+ return void
+ param marker Int32 in value
+ category SGIX_instruments
+ version 1.0
+ glxflags SGI
+ glxropcode 2070
+ extension
+ offset 465
+
+###############################################################################
+#
+# Extension #56
+# SGIX_texture_scale_bias commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_scale_bias
+
+###############################################################################
+#
+# Extension #57
+# SGIX_framezoom commands
+#
+###############################################################################
+
+FrameZoomSGIX(factor)
+ return void
+ param factor CheckedInt32 in value
+ category SGIX_framezoom
+ version 1.0
+ glxflags SGI
+ glxropcode 2072
+ extension
+ offset 466
+
+###############################################################################
+#
+# Extension #58
+# SGIX_tag_sample_buffer commands
+#
+###############################################################################
+
+TagSampleBufferSGIX()
+ return void
+ category SGIX_tag_sample_buffer
+ version 1.0
+ glxropcode 2050
+ glxflags SGI
+ extension
+ offset 467
+
+###############################################################################
+#
+# Extension #59
+# SGIX_polynomial_ffd commands
+#
+###############################################################################
+
+DeformationMap3dSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points)
+ return void
+ param target FfdTargetSGIX in value
+ param u1 CoordD in value
+ param u2 CoordD in value
+ param ustride Int32 in value
+ param uorder CheckedInt32 in value
+ param v1 CoordD in value
+ param v2 CoordD in value
+ param vstride Int32 in value
+ param vorder CheckedInt32 in value
+ param w1 CoordD in value
+ param w2 CoordD in value
+ param wstride Int32 in value
+ param worder CheckedInt32 in value
+ param points CoordD in array [COMPSIZE(target/ustride/uorder/vstride/vorder/wstride/worder)]
+ dlflags handcode
+ category SGIX_polynomial_ffd
+ version 1.0
+ glxflags SGI ignore
+ glxropcode 2073
+ extension
+ offset ?
+
+DeformationMap3fSGIX(target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, w1, w2, wstride, worder, points)
+ return void
+ param target FfdTargetSGIX in value
+ param u1 CoordF in value
+ param u2 CoordF in value
+ param ustride Int32 in value
+ param uorder CheckedInt32 in value
+ param v1 CoordF in value
+ param v2 CoordF in value
+ param vstride Int32 in value
+ param vorder CheckedInt32 in value
+ param w1 CoordF in value
+ param w2 CoordF in value
+ param wstride Int32 in value
+ param worder CheckedInt32 in value
+ param points CoordF in array [COMPSIZE(target/ustride/uorder/vstride/vorder/wstride/worder)]
+ category SGIX_polynomial_ffd
+ dlflags handcode
+ version 1.0
+ glxflags SGI ignore
+ glxropcode 2074
+ extension
+ offset ?
+
+DeformSGIX(mask)
+ return void
+ param mask FfdMaskSGIX in value
+ category SGIX_polynomial_ffd
+ version 1.0
+ glxflags SGI ignore
+ glxropcode 2075
+ extension
+ offset ?
+
+LoadIdentityDeformationMapSGIX(mask)
+ return void
+ param mask FfdMaskSGIX in value
+ category SGIX_polynomial_ffd
+ version 1.0
+ glxflags SGI ignore
+ glxropcode 2076
+ extension
+ offset ?
+
+###############################################################################
+#
+# Extension #60
+# SGIX_reference_plane commands
+#
+###############################################################################
+
+ReferencePlaneSGIX(equation)
+ return void
+ param equation Float64 in array [4]
+ category SGIX_reference_plane
+ version 1.0
+ glxflags SGI
+ glxropcode 2071
+ extension
+ offset 468
+
+###############################################################################
+#
+# Extension #61
+# SGIX_flush_raster commands
+#
+###############################################################################
+
+FlushRasterSGIX()
+ return void
+ category SGIX_flush_raster
+ version 1.0
+ dlflags notlistable
+ glxflags SGI
+ glxvendorpriv 4105
+ extension
+ offset 469
+
+###############################################################################
+#
+# Extension #62 - GLX_SGIX_cushion
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #63
+# SGIX_depth_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_depth_texture
+
+###############################################################################
+#
+# Extension #64
+# SGIS_fog_function commands
+#
+###############################################################################
+
+FogFuncSGIS(n, points)
+ return void
+ param n SizeI in value
+ param points Float32 in array [n*2]
+ category SGIS_fog_function
+ version 1.1
+ glxflags SGI
+ glxropcode 2067
+ extension
+ offset
+
+# Need to insert GLX information
+GetFogFuncSGIS(points)
+ return void
+ param points Float32 out array [COMPSIZE()]
+ category SGIS_fog_function
+ version 1.1
+ dlflags notlistable
+ glxflags ignore
+ extension
+ offset
+
+###############################################################################
+#
+# Extension #65
+# SGIX_fog_offset commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_fog_offset
+
+###############################################################################
+#
+# Extension #66
+# HP_image_transform commands
+#
+###############################################################################
+
+ImageTransformParameteriHP(target, pname, param)
+ return void
+ param target ImageTransformTargetHP in value
+ param pname ImageTransformPNameHP in value
+ param param Int32 in value
+ category HP_image_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ImageTransformParameterfHP(target, pname, param)
+ return void
+ param target ImageTransformTargetHP in value
+ param pname ImageTransformPNameHP in value
+ param param Float32 in value
+ category HP_image_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ImageTransformParameterivHP(target, pname, params)
+ return void
+ param target ImageTransformTargetHP in value
+ param pname ImageTransformPNameHP in value
+ param params Int32 in array [COMPSIZE(pname)]
+ category HP_image_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ImageTransformParameterfvHP(target, pname, params)
+ return void
+ param target ImageTransformTargetHP in value
+ param pname ImageTransformPNameHP in value
+ param params Float32 in array [COMPSIZE(pname)]
+ category HP_image_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GetImageTransformParameterivHP(target, pname, params)
+ return void
+ param target ImageTransformTargetHP in value
+ param pname ImageTransformPNameHP in value
+ param params Int32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category HP_image_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GetImageTransformParameterfvHP(target, pname, params)
+ return void
+ param target ImageTransformTargetHP in value
+ param pname ImageTransformPNameHP in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category HP_image_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #67
+# HP_convolution_border_modes commands
+#
+###############################################################################
+
+# (none)
+newcategory: HP_convolution_border_modes
+
+###############################################################################
+#
+# Extension #68
+# INGR_palette_buffer commands
+#
+###############################################################################
+
+#@ (Intergraph hasn't provided a spec)
+
+###############################################################################
+#
+# Extension #69
+# SGIX_texture_add_env commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_add_env
+
+###############################################################################
+#
+# Extension #70 - skipped
+# Extension #71 - skipped
+# Extension #72 - skipped
+# Extension #73 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #74
+# EXT_color_subtable commands
+#
+# This was probably never actually shipped as an EXT - just written up as a
+# reference for OpenGL 1.2 ARB_imaging.
+#
+###############################################################################
+
+ColorSubTableEXT(target, start, count, format, type, data)
+ return void
+ param target ColorTableTarget in value
+ param start SizeI in value
+ param count SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param data Void in array [COMPSIZE(format/type/count)]
+ category EXT_color_subtable
+ version 1.2
+ alias ColorSubTable
+
+CopyColorSubTableEXT(target, start, x, y, width)
+ return void
+ param target ColorTableTarget in value
+ param start SizeI in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category EXT_color_subtable
+ version 1.2
+ alias CopyColorSubTable
+
+###############################################################################
+#
+# Extension #75 - GLU_EXT_object_space_tess
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #76
+# PGI_vertex_hints commands
+#
+###############################################################################
+
+# (none)
+newcategory: PGI_vertex_hints
+
+###############################################################################
+#
+# Extension #77
+# PGI_misc_hints commands
+#
+###############################################################################
+
+HintPGI(target, mode)
+ return void
+ param target HintTargetPGI in value
+ param mode Int32 in value
+ category PGI_misc_hints
+ version 1.1
+ offset 544
+
+###############################################################################
+#
+# Extension #78
+# EXT_paletted_texture commands
+#
+###############################################################################
+
+ColorTableEXT(target, internalFormat, width, format, type, table)
+ return void
+ param target ColorTableTarget in value
+ param internalFormat PixelInternalFormat in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param table Void in array [COMPSIZE(format/type/width)]
+ category EXT_paletted_texture
+ version 1.1
+ alias ColorTable
+
+GetColorTableEXT(target, format, type, data)
+ return void
+ param target ColorTableTarget in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param data Void out array [COMPSIZE(target/format/type)]
+ category EXT_paletted_texture
+ version 1.1
+ offset 550
+
+GetColorTableParameterivEXT(target, pname, params)
+ return void
+ param target ColorTableTarget in value
+ param pname GetColorTableParameterPName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_paletted_texture
+ version 1.1
+ offset 551
+
+GetColorTableParameterfvEXT(target, pname, params)
+ return void
+ param target ColorTableTarget in value
+ param pname GetColorTableParameterPName in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_paletted_texture
+ version 1.1
+ offset 552
+
+###############################################################################
+#
+# Extension #79
+# EXT_clip_volume_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_clip_volume_hint
+
+###############################################################################
+#
+# Extension #80
+# SGIX_list_priority commands
+#
+###############################################################################
+
+# @@@ Needs vendorpriv opcodes assigned
+GetListParameterfvSGIX(list, pname, params)
+ return void
+ param list List in value
+ param pname ListParameterName in value
+ param params CheckedFloat32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ glxflags ignore
+ category SGIX_list_priority
+ version 1.0
+ glxvendorpriv ?
+ extension
+ offset 470
+
+# @@@ Needs vendorpriv opcodes assigned
+GetListParameterivSGIX(list, pname, params)
+ return void
+ param list List in value
+ param pname ListParameterName in value
+ param params CheckedInt32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ glxflags ignore
+ category SGIX_list_priority
+ version 1.0
+ glxvendorpriv ?
+ extension
+ offset 471
+
+ListParameterfSGIX(list, pname, param)
+ return void
+ param list List in value
+ param pname ListParameterName in value
+ param param CheckedFloat32 in value
+ dlflags notlistable
+ glxflags ignore
+ category SGIX_list_priority
+ version 1.0
+ glxropcode 2078
+ extension
+ offset 472
+
+ListParameterfvSGIX(list, pname, params)
+ return void
+ param list List in value
+ param pname ListParameterName in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ dlflags notlistable
+ glxflags ignore
+ category SGIX_list_priority
+ version 1.0
+ glxropcode 2079
+ extension
+ offset 473
+
+ListParameteriSGIX(list, pname, param)
+ return void
+ param list List in value
+ param pname ListParameterName in value
+ param param CheckedInt32 in value
+ dlflags notlistable
+ glxflags ignore
+ category SGIX_list_priority
+ version 1.0
+ glxropcode 2080
+ extension
+ offset 474
+
+ListParameterivSGIX(list, pname, params)
+ return void
+ param list List in value
+ param pname ListParameterName in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ dlflags notlistable
+ glxflags ignore
+ category SGIX_list_priority
+ version 1.0
+ glxropcode 2081
+ extension
+ offset 475
+
+###############################################################################
+#
+# Extension #81
+# SGIX_ir_instrument1 commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ir_instrument1
+
+###############################################################################
+#
+# Extension #82
+# SGIX_calligraphic_fragment commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_calligraphic_fragment
+
+###############################################################################
+#
+# Extension #83 - GLX_SGIX_video_resize
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #84
+# SGIX_texture_lod_bias commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_lod_bias
+
+###############################################################################
+#
+# Extension #85 - skipped
+# Extension #86 - GLX_SGIX_dmbuffer
+# Extension #87 - skipped
+# Extension #88 - skipped
+# Extension #89 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #90
+# SGIX_shadow_ambient commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_shadow_ambient
+
+###############################################################################
+#
+# Extension #91 - GLX_SGIX_swap_group
+# Extension #92 - GLX_SGIX_swap_barrier
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #93
+# EXT_index_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_index_texture
+
+###############################################################################
+#
+# Extension #94
+# EXT_index_material commands
+#
+###############################################################################
+
+IndexMaterialEXT(face, mode)
+ return void
+ param face MaterialFace in value
+ param mode IndexMaterialParameterEXT in value
+ category EXT_index_material
+ version 1.1
+ extension soft
+ glxflags ignore
+ offset 538
+
+###############################################################################
+#
+# Extension #95
+# EXT_index_func commands
+#
+###############################################################################
+
+IndexFuncEXT(func, ref)
+ return void
+ param func IndexFunctionEXT in value
+ param ref ClampedFloat32 in value
+ category EXT_index_func
+ version 1.1
+ extension soft
+ glxflags ignore
+ offset 539
+
+###############################################################################
+#
+# Extension #96
+# EXT_index_array_formats commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_index_array_formats
+
+###############################################################################
+#
+# Extension #97
+# EXT_compiled_vertex_array commands
+#
+###############################################################################
+
+LockArraysEXT(first, count)
+ return void
+ param first Int32 in value
+ param count SizeI in value
+ category EXT_compiled_vertex_array
+ version 1.1
+ dlflags notlistable
+ extension soft
+ glxflags ignore
+ offset 540
+
+UnlockArraysEXT()
+ return void
+ category EXT_compiled_vertex_array
+ version 1.1
+ dlflags notlistable
+ extension soft
+ glxflags ignore
+ offset 541
+
+###############################################################################
+#
+# Extension #98
+# EXT_cull_vertex commands
+#
+###############################################################################
+
+CullParameterdvEXT(pname, params)
+ return void
+ param pname CullParameterEXT in value
+ param params Float64 out array [4]
+ category EXT_cull_vertex
+ version 1.1
+ dlflags notlistable
+ extension soft
+ glxflags ignore
+ offset 542
+
+CullParameterfvEXT(pname, params)
+ return void
+ param pname CullParameterEXT in value
+ param params Float32 out array [4]
+ category EXT_cull_vertex
+ version 1.1
+ dlflags notlistable
+ extension soft
+ glxflags ignore
+ offset 543
+
+###############################################################################
+#
+# Extension #99 - skipped
+# Extension #100 - GLU_EXT_nurbs_tessellator
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #101
+# SGIX_ycrcb commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ycrcb
+
+###############################################################################
+#
+# Extension #102
+# SGIX_fragment_lighting commands
+#
+###############################################################################
+
+FragmentColorMaterialSGIX(face, mode)
+ return void
+ param face MaterialFace in value
+ param mode MaterialParameter in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 476
+
+FragmentLightfSGIX(light, pname, param)
+ return void
+ param light FragmentLightNameSGIX in value
+ param pname FragmentLightParameterSGIX in value
+ param param CheckedFloat32 in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 477
+
+FragmentLightfvSGIX(light, pname, params)
+ return void
+ param light FragmentLightNameSGIX in value
+ param pname FragmentLightParameterSGIX in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 478
+
+FragmentLightiSGIX(light, pname, param)
+ return void
+ param light FragmentLightNameSGIX in value
+ param pname FragmentLightParameterSGIX in value
+ param param CheckedInt32 in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 479
+
+FragmentLightivSGIX(light, pname, params)
+ return void
+ param light FragmentLightNameSGIX in value
+ param pname FragmentLightParameterSGIX in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 480
+
+FragmentLightModelfSGIX(pname, param)
+ return void
+ param pname FragmentLightModelParameterSGIX in value
+ param param CheckedFloat32 in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 481
+
+FragmentLightModelfvSGIX(pname, params)
+ return void
+ param pname FragmentLightModelParameterSGIX in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 482
+
+FragmentLightModeliSGIX(pname, param)
+ return void
+ param pname FragmentLightModelParameterSGIX in value
+ param param CheckedInt32 in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 483
+
+FragmentLightModelivSGIX(pname, params)
+ return void
+ param pname FragmentLightModelParameterSGIX in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 484
+
+FragmentMaterialfSGIX(face, pname, param)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param param CheckedFloat32 in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 485
+
+FragmentMaterialfvSGIX(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 486
+
+FragmentMaterialiSGIX(face, pname, param)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param param CheckedInt32 in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 487
+
+FragmentMaterialivSGIX(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 488
+
+GetFragmentLightfvSGIX(light, pname, params)
+ return void
+ param light FragmentLightNameSGIX in value
+ param pname FragmentLightParameterSGIX in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ dlflags notlistable
+ glxflags ignore
+ version 1.0
+ extension
+ offset 489
+
+GetFragmentLightivSGIX(light, pname, params)
+ return void
+ param light FragmentLightNameSGIX in value
+ param pname FragmentLightParameterSGIX in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ dlflags notlistable
+ glxflags ignore
+ version 1.0
+ extension
+ offset 490
+
+GetFragmentMaterialfvSGIX(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ dlflags notlistable
+ glxflags ignore
+ version 1.0
+ extension
+ offset 491
+
+GetFragmentMaterialivSGIX(face, pname, params)
+ return void
+ param face MaterialFace in value
+ param pname MaterialParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category SGIX_fragment_lighting
+ dlflags notlistable
+ glxflags ignore
+ version 1.0
+ extension
+ offset 492
+
+LightEnviSGIX(pname, param)
+ return void
+ param pname LightEnvParameterSGIX in value
+ param param CheckedInt32 in value
+ category SGIX_fragment_lighting
+ glxflags ignore
+ version 1.0
+ extension
+ offset 493
+
+###############################################################################
+#
+# Extension #103 - skipped
+# Extension #104 - skipped
+# Extension #105 - skipped
+# Extension #106 - skipped
+# Extension #107 - skipped
+# Extension #108 - skipped
+# Extension #109 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #110
+# IBM_rasterpos_clip commands
+#
+###############################################################################
+
+# (none)
+newcategory: IBM_rasterpos_clip
+
+###############################################################################
+#
+# Extension #111
+# HP_texture_lighting commands
+#
+###############################################################################
+
+# (none)
+newcategory: HP_texture_lighting
+
+###############################################################################
+#
+# Extension #112
+# EXT_draw_range_elements commands
+#
+###############################################################################
+
+# Spec entries to be written
+DrawRangeElementsEXT(mode, start, end, count, type, indices)
+ return void
+ param mode BeginMode in value
+ param start UInt32 in value
+ param end UInt32 in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ category EXT_draw_range_elements
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ alias DrawRangeElements
+
+###############################################################################
+#
+# Extension #113
+# WIN_phong_shading commands
+#
+###############################################################################
+
+# (none)
+newcategory: WIN_phong_shading
+
+###############################################################################
+#
+# Extension #114
+# WIN_specular_fog commands
+#
+###############################################################################
+
+# (none)
+newcategory: WIN_specular_fog
+
+###############################################################################
+#
+# Extension #115 - skipped
+# Extension #116 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #117
+# EXT_light_texture commands
+#
+###############################################################################
+
+# Spec entries to be written
+ApplyTextureEXT(mode)
+ return void
+ param mode LightTextureModeEXT in value
+ category EXT_light_texture
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TextureLightEXT(pname)
+ return void
+ param pname LightTexturePNameEXT in value
+ category EXT_light_texture
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TextureMaterialEXT(face, mode)
+ return void
+ param face MaterialFace in value
+ param mode MaterialParameter in value
+ category EXT_light_texture
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #118 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #119
+# SGIX_blend_alpha_minmax commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_blend_alpha_minmax
+
+###############################################################################
+#
+# Extension #120 - skipped
+# Extension #121 - skipped
+# Extension #122 - skipped
+# Extension #123 - skipped
+# Extension #124 - skipped
+# Extension #125 - skipped
+# Extension #126 - skipped
+# Extension #127 - skipped
+# Extension #128 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #129
+# EXT_bgra commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_bgra
+
+###############################################################################
+#
+# Extension #130 - skipped
+# Extension #131 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #132
+# SGIX_async commands
+#
+###############################################################################
+
+AsyncMarkerSGIX(marker)
+ return void
+ param marker UInt32 in value
+ category SGIX_async
+ version 1.0
+ glxflags ignore
+ extension
+ offset ?
+
+FinishAsyncSGIX(markerp)
+ return Int32
+ param markerp UInt32 out array [1]
+ category SGIX_async
+ version 1.0
+ dlflags notlistable
+ glxflags ignore
+ extension
+ offset ?
+
+PollAsyncSGIX(markerp)
+ return Int32
+ param markerp UInt32 out array [1]
+ category SGIX_async
+ version 1.0
+ dlflags notlistable
+ glxflags ignore
+ extension
+ offset ?
+
+GenAsyncMarkersSGIX(range)
+ return UInt32
+ param range SizeI in value
+ category SGIX_async
+ version 1.0
+ dlflags notlistable
+ glxflags ignore
+ extension
+ offset ?
+
+DeleteAsyncMarkersSGIX(marker, range)
+ return void
+ param marker UInt32 in value
+ param range SizeI in value
+ category SGIX_async
+ version 1.0
+ dlflags notlistable
+ glxflags ignore
+ extension
+ offset ?
+
+IsAsyncMarkerSGIX(marker)
+ return Boolean
+ param marker UInt32 in value
+ category SGIX_async
+ version 1.0
+ dlflags notlistable
+ glxflags ignore
+ extension
+ offset ?
+
+###############################################################################
+#
+# Extension #133
+# SGIX_async_pixel commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_async_pixel
+
+###############################################################################
+#
+# Extension #134
+# SGIX_async_histogram commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_async_histogram
+
+###############################################################################
+#
+# Extension #135 - skipped (INTEL_texture_scissor was never implemented)
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #136
+# INTEL_parallel_arrays commands
+#
+###############################################################################
+
+VertexPointervINTEL(size, type, pointer)
+ return void
+ param size Int32 in value
+ param type VertexPointerType in value
+ param pointer VoidPointer in array [4] retained
+ category INTEL_parallel_arrays
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.1
+ offset ?
+
+NormalPointervINTEL(type, pointer)
+ return void
+ param type NormalPointerType in value
+ param pointer VoidPointer in array [4] retained
+ category INTEL_parallel_arrays
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.1
+ offset ?
+
+ColorPointervINTEL(size, type, pointer)
+ return void
+ param size Int32 in value
+ param type VertexPointerType in value
+ param pointer VoidPointer in array [4] retained
+ category INTEL_parallel_arrays
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.1
+ offset ?
+
+TexCoordPointervINTEL(size, type, pointer)
+ return void
+ param size Int32 in value
+ param type VertexPointerType in value
+ param pointer VoidPointer in array [4] retained
+ category INTEL_parallel_arrays
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.1
+ offset ?
+
+
+###############################################################################
+#
+# Extension #137
+# HP_occlusion_test commands
+#
+###############################################################################
+
+# (none)
+newcategory: HP_occlusion_test
+
+###############################################################################
+#
+# Extension #138
+# EXT_pixel_transform commands
+#
+###############################################################################
+
+PixelTransformParameteriEXT(target, pname, param)
+ return void
+ param target PixelTransformTargetEXT in value
+ param pname PixelTransformPNameEXT in value
+ param param Int32 in value
+ category EXT_pixel_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+PixelTransformParameterfEXT(target, pname, param)
+ return void
+ param target PixelTransformTargetEXT in value
+ param pname PixelTransformPNameEXT in value
+ param param Float32 in value
+ category EXT_pixel_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+PixelTransformParameterivEXT(target, pname, params)
+ return void
+ param target PixelTransformTargetEXT in value
+ param pname PixelTransformPNameEXT in value
+ param params Int32 in array [1]
+ category EXT_pixel_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+PixelTransformParameterfvEXT(target, pname, params)
+ return void
+ param target PixelTransformTargetEXT in value
+ param pname PixelTransformPNameEXT in value
+ param params Float32 in array [1]
+ category EXT_pixel_transform
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #139
+# EXT_pixel_transform_color_table commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_pixel_transform_color_table
+
+###############################################################################
+#
+# Extension #140 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #141
+# EXT_shared_texture_palette commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_shared_texture_palette
+
+###############################################################################
+#
+# Extension #142 - GLX_SGIS_blended_overlay
+# Extension #143 - GLX_SGIS_shared_multisample
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #144
+# EXT_separate_specular_color commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_separate_specular_color
+
+###############################################################################
+#
+# Extension #145
+# EXT_secondary_color commands
+#
+###############################################################################
+
+SecondaryColor3bEXT(red, green, blue)
+ return void
+ param red ColorB in value
+ param green ColorB in value
+ param blue ColorB in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3bvEXT
+ version 1.1
+ alias SecondaryColor3b
+
+SecondaryColor3bvEXT(v)
+ return void
+ param v ColorB in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4126
+ alias SecondaryColor3bv
+
+SecondaryColor3dEXT(red, green, blue)
+ return void
+ param red ColorD in value
+ param green ColorD in value
+ param blue ColorD in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3dvEXT
+ version 1.1
+ alias SecondaryColor3d
+
+SecondaryColor3dvEXT(v)
+ return void
+ param v ColorD in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4130
+ alias SecondaryColor3dv
+
+SecondaryColor3fEXT(red, green, blue)
+ return void
+ param red ColorF in value
+ param green ColorF in value
+ param blue ColorF in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3fvEXT
+ version 1.1
+ alias SecondaryColor3f
+
+SecondaryColor3fvEXT(v)
+ return void
+ param v ColorF in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4129
+ alias SecondaryColor3fv
+
+SecondaryColor3iEXT(red, green, blue)
+ return void
+ param red ColorI in value
+ param green ColorI in value
+ param blue ColorI in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3ivEXT
+ version 1.1
+ alias SecondaryColor3i
+
+SecondaryColor3ivEXT(v)
+ return void
+ param v ColorI in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4128
+ offset 568
+ alias SecondaryColor3iv
+
+SecondaryColor3sEXT(red, green, blue)
+ return void
+ param red ColorS in value
+ param green ColorS in value
+ param blue ColorS in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3svEXT
+ version 1.1
+ alias SecondaryColor3s
+
+SecondaryColor3svEXT(v)
+ return void
+ param v ColorS in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4127
+ alias SecondaryColor3sv
+
+SecondaryColor3ubEXT(red, green, blue)
+ return void
+ param red ColorUB in value
+ param green ColorUB in value
+ param blue ColorUB in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3ubvEXT
+ version 1.1
+ alias SecondaryColor3ub
+
+SecondaryColor3ubvEXT(v)
+ return void
+ param v ColorUB in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4131
+ alias SecondaryColor3ubv
+
+SecondaryColor3uiEXT(red, green, blue)
+ return void
+ param red ColorUI in value
+ param green ColorUI in value
+ param blue ColorUI in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3uivEXT
+ version 1.1
+ alias SecondaryColor3ui
+
+SecondaryColor3uivEXT(v)
+ return void
+ param v ColorUI in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4133
+ alias SecondaryColor3uiv
+
+SecondaryColor3usEXT(red, green, blue)
+ return void
+ param red ColorUS in value
+ param green ColorUS in value
+ param blue ColorUS in value
+ category EXT_secondary_color
+ vectorequiv SecondaryColor3usvEXT
+ version 1.1
+ alias SecondaryColor3us
+
+SecondaryColor3usvEXT(v)
+ return void
+ param v ColorUS in array [3]
+ category EXT_secondary_color
+ version 1.1
+ glxropcode 4132
+ alias SecondaryColor3usv
+
+SecondaryColorPointerEXT(size, type, stride, pointer)
+ return void
+ param size Int32 in value
+ param type ColorPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category EXT_secondary_color
+ dlflags notlistable
+ glxflags client-handcode server-handcode EXT
+ version 1.1
+ extension
+ alias SecondaryColorPointer
+
+###############################################################################
+#
+# Extension #146
+# EXT_texture_env commands
+#
+###############################################################################
+
+# Dead extension - never implemented (removed from registry!)
+# (none)
+# newcategory: EXT_texture_env
+
+###############################################################################
+#
+# Extension #147
+# EXT_texture_perturb_normal commands
+#
+###############################################################################
+
+TextureNormalEXT(mode)
+ return void
+ param mode TextureNormalModeEXT in value
+ category EXT_texture_perturb_normal
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #148
+# EXT_multi_draw_arrays commands
+#
+###############################################################################
+
+# first and count are really 'in'
+MultiDrawArraysEXT(mode, first, count, primcount)
+ return void
+ param mode BeginMode in value
+ param first Int32 out array [COMPSIZE(primcount)]
+ param count SizeI out array [COMPSIZE(primcount)]
+ param primcount SizeI in value
+ category EXT_multi_draw_arrays
+ version 1.1
+ glxropcode ?
+ alias MultiDrawArrays
+
+MultiDrawElementsEXT(mode, count, type, indices, primcount)
+ return void
+ param mode BeginMode in value
+ param count SizeI in array [COMPSIZE(primcount)]
+ param type DrawElementsType in value
+ param indices VoidPointer in array [COMPSIZE(primcount)]
+ param primcount SizeI in value
+ category EXT_multi_draw_arrays
+ version 1.1
+ glxropcode ?
+ alias MultiDrawElements
+
+###############################################################################
+#
+# Extension #149
+# EXT_fog_coord commands
+#
+###############################################################################
+
+FogCoordfEXT(coord)
+ return void
+ param coord CoordF in value
+ category EXT_fog_coord
+ vectorequiv FogCoordfvEXT
+ version 1.1
+ alias FogCoordf
+
+FogCoordfvEXT(coord)
+ return void
+ param coord CoordF in array [1]
+ category EXT_fog_coord
+ version 1.1
+ glxropcode 4124
+ alias FogCoordfv
+
+FogCoorddEXT(coord)
+ return void
+ param coord CoordD in value
+ category EXT_fog_coord
+ vectorequiv FogCoorddvEXT
+ version 1.1
+ alias FogCoordd
+
+FogCoorddvEXT(coord)
+ return void
+ param coord CoordD in array [1]
+ category EXT_fog_coord
+ version 1.1
+ glxropcode 4125
+ alias FogCoorddv
+
+FogCoordPointerEXT(type, stride, pointer)
+ return void
+ param type FogPointerTypeEXT in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category EXT_fog_coord
+ dlflags notlistable
+ version 1.1
+ glxflags client-handcode server-handcode EXT
+ alias FogCoordPointer
+
+###############################################################################
+#
+# Extension #150 - skipped
+# Extension #151 - skipped
+# Extension #152 - skipped
+# Extension #153 - skipped
+# Extension #154 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #155
+# REND_screen_coordinates commands
+#
+###############################################################################
+
+# (none)
+newcategory: REND_screen_coordinates
+
+###############################################################################
+#
+# Extension #156
+# EXT_coordinate_frame commands
+#
+###############################################################################
+
+Tangent3bEXT(tx, ty, tz)
+ return void
+ param tx Int8 in value
+ param ty Int8 in value
+ param tz Int8 in value
+ category EXT_coordinate_frame
+ vectorequiv Tangent3bvEXT
+ version 1.1
+ offset ?
+
+Tangent3bvEXT(v)
+ return void
+ param v Int8 in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Tangent3dEXT(tx, ty, tz)
+ return void
+ param tx CoordD in value
+ param ty CoordD in value
+ param tz CoordD in value
+ category EXT_coordinate_frame
+ vectorequiv Tangent3dvEXT
+ version 1.1
+ offset ?
+
+Tangent3dvEXT(v)
+ return void
+ param v CoordD in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Tangent3fEXT(tx, ty, tz)
+ return void
+ param tx CoordF in value
+ param ty CoordF in value
+ param tz CoordF in value
+ category EXT_coordinate_frame
+ vectorequiv Tangent3fvEXT
+ version 1.1
+ offset ?
+
+Tangent3fvEXT(v)
+ return void
+ param v CoordF in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Tangent3iEXT(tx, ty, tz)
+ return void
+ param tx Int32 in value
+ param ty Int32 in value
+ param tz Int32 in value
+ category EXT_coordinate_frame
+ vectorequiv Tangent3ivEXT
+ version 1.1
+ offset ?
+
+Tangent3ivEXT(v)
+ return void
+ param v Int32 in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Tangent3sEXT(tx, ty, tz)
+ return void
+ param tx Int16 in value
+ param ty Int16 in value
+ param tz Int16 in value
+ category EXT_coordinate_frame
+ vectorequiv Tangent3svEXT
+ version 1.1
+ offset ?
+
+Tangent3svEXT(v)
+ return void
+ param v Int16 in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Binormal3bEXT(bx, by, bz)
+ return void
+ param bx Int8 in value
+ param by Int8 in value
+ param bz Int8 in value
+ category EXT_coordinate_frame
+ vectorequiv Binormal3bvEXT
+ version 1.1
+ offset ?
+
+Binormal3bvEXT(v)
+ return void
+ param v Int8 in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Binormal3dEXT(bx, by, bz)
+ return void
+ param bx CoordD in value
+ param by CoordD in value
+ param bz CoordD in value
+ category EXT_coordinate_frame
+ vectorequiv Binormal3dvEXT
+ version 1.1
+ offset ?
+
+Binormal3dvEXT(v)
+ return void
+ param v CoordD in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Binormal3fEXT(bx, by, bz)
+ return void
+ param bx CoordF in value
+ param by CoordF in value
+ param bz CoordF in value
+ category EXT_coordinate_frame
+ vectorequiv Binormal3fvEXT
+ version 1.1
+ offset ?
+
+Binormal3fvEXT(v)
+ return void
+ param v CoordF in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Binormal3iEXT(bx, by, bz)
+ return void
+ param bx Int32 in value
+ param by Int32 in value
+ param bz Int32 in value
+ category EXT_coordinate_frame
+ vectorequiv Binormal3ivEXT
+ version 1.1
+ offset ?
+
+Binormal3ivEXT(v)
+ return void
+ param v Int32 in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Binormal3sEXT(bx, by, bz)
+ return void
+ param bx Int16 in value
+ param by Int16 in value
+ param bz Int16 in value
+ category EXT_coordinate_frame
+ vectorequiv Binormal3svEXT
+ version 1.1
+ offset ?
+
+Binormal3svEXT(v)
+ return void
+ param v Int16 in array [3]
+ category EXT_coordinate_frame
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TangentPointerEXT(type, stride, pointer)
+ return void
+ param type TangentPointerTypeEXT in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category EXT_coordinate_frame
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ offset ?
+
+BinormalPointerEXT(type, stride, pointer)
+ return void
+ param type BinormalPointerTypeEXT in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category EXT_coordinate_frame
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ offset ?
+
+###############################################################################
+#
+# Extension #157 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #158
+# EXT_texture_env_combine commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_env_combine
+
+###############################################################################
+#
+# Extension #159
+# APPLE_specular_vector commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_specular_vector
+
+###############################################################################
+#
+# Extension #160
+# APPLE_transform_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_transform_hint
+
+###############################################################################
+#
+# Extension #161
+# SGIX_fog_scale commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_fog_scale
+
+###############################################################################
+#
+# Extension #162 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #163
+# SUNX_constant_data commands
+#
+###############################################################################
+
+FinishTextureSUNX()
+ return void
+ category SUNX_constant_data
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #164
+# SUN_global_alpha commands
+#
+###############################################################################
+
+GlobalAlphaFactorbSUN(factor)
+ return void
+ param factor Int8 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GlobalAlphaFactorsSUN(factor)
+ return void
+ param factor Int16 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GlobalAlphaFactoriSUN(factor)
+ return void
+ param factor Int32 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GlobalAlphaFactorfSUN(factor)
+ return void
+ param factor Float32 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GlobalAlphaFactordSUN(factor)
+ return void
+ param factor Float64 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GlobalAlphaFactorubSUN(factor)
+ return void
+ param factor UInt8 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GlobalAlphaFactorusSUN(factor)
+ return void
+ param factor UInt16 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+GlobalAlphaFactoruiSUN(factor)
+ return void
+ param factor UInt32 in value
+ category SUN_global_alpha
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #165
+# SUN_triangle_list commands
+#
+###############################################################################
+
+ReplacementCodeuiSUN(code)
+ return void
+ param code UInt32 in value
+ category SUN_triangle_list
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeusSUN(code)
+ return void
+ param code UInt16 in value
+ category SUN_triangle_list
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeubSUN(code)
+ return void
+ param code UInt8 in value
+ category SUN_triangle_list
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuivSUN(code)
+ return void
+ param code UInt32 in array [COMPSIZE()]
+ category SUN_triangle_list
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeusvSUN(code)
+ return void
+ param code UInt16 in array [COMPSIZE()]
+ category SUN_triangle_list
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeubvSUN(code)
+ return void
+ param code UInt8 in array [COMPSIZE()]
+ category SUN_triangle_list
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodePointerSUN(type, stride, pointer)
+ return void
+ param type ReplacementCodeTypeSUN in value
+ param stride SizeI in value
+ param pointer VoidPointer in array [COMPSIZE(type/stride)] retained
+ category SUN_triangle_list
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #166
+# SUN_vertex commands
+#
+###############################################################################
+
+Color4ubVertex2fSUN(r, g, b, a, x, y)
+ return void
+ param r UInt8 in value
+ param g UInt8 in value
+ param b UInt8 in value
+ param a UInt8 in value
+ param x Float32 in value
+ param y Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Color4ubVertex2fvSUN(c, v)
+ return void
+ param c UInt8 in array [4]
+ param v Float32 in array [2]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Color4ubVertex3fSUN(r, g, b, a, x, y, z)
+ return void
+ param r UInt8 in value
+ param g UInt8 in value
+ param b UInt8 in value
+ param a UInt8 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Color4ubVertex3fvSUN(c, v)
+ return void
+ param c UInt8 in array [4]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Color3fVertex3fSUN(r, g, b, x, y, z)
+ return void
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Color3fVertex3fvSUN(c, v)
+ return void
+ param c Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Normal3fVertex3fSUN(nx, ny, nz, x, y, z)
+ return void
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Normal3fVertex3fvSUN(n, v)
+ return void
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Color4fNormal3fVertex3fSUN(r, g, b, a, nx, ny, nz, x, y, z)
+ return void
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param a Float32 in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+Color4fNormal3fVertex3fvSUN(c, n, v)
+ return void
+ param c Float32 in array [4]
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fVertex3fSUN(s, t, x, y, z)
+ return void
+ param s Float32 in value
+ param t Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fVertex3fvSUN(tc, v)
+ return void
+ param tc Float32 in array [2]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord4fVertex4fSUN(s, t, p, q, x, y, z, w)
+ return void
+ param s Float32 in value
+ param t Float32 in value
+ param p Float32 in value
+ param q Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord4fVertex4fvSUN(tc, v)
+ return void
+ param tc Float32 in array [4]
+ param v Float32 in array [4]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fColor4ubVertex3fSUN(s, t, r, g, b, a, x, y, z)
+ return void
+ param s Float32 in value
+ param t Float32 in value
+ param r UInt8 in value
+ param g UInt8 in value
+ param b UInt8 in value
+ param a UInt8 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fColor4ubVertex3fvSUN(tc, c, v)
+ return void
+ param tc Float32 in array [2]
+ param c UInt8 in array [4]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fColor3fVertex3fSUN(s, t, r, g, b, x, y, z)
+ return void
+ param s Float32 in value
+ param t Float32 in value
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fColor3fVertex3fvSUN(tc, c, v)
+ return void
+ param tc Float32 in array [2]
+ param c Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fNormal3fVertex3fSUN(s, t, nx, ny, nz, x, y, z)
+ return void
+ param s Float32 in value
+ param t Float32 in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fNormal3fVertex3fvSUN(tc, n, v)
+ return void
+ param tc Float32 in array [2]
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fColor4fNormal3fVertex3fSUN(s, t, r, g, b, a, nx, ny, nz, x, y, z)
+ return void
+ param s Float32 in value
+ param t Float32 in value
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param a Float32 in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord2fColor4fNormal3fVertex3fvSUN(tc, c, n, v)
+ return void
+ param tc Float32 in array [2]
+ param c Float32 in array [4]
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord4fColor4fNormal3fVertex4fSUN(s, t, p, q, r, g, b, a, nx, ny, nz, x, y, z, w)
+ return void
+ param s Float32 in value
+ param t Float32 in value
+ param p Float32 in value
+ param q Float32 in value
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param a Float32 in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoord4fColor4fNormal3fVertex4fvSUN(tc, c, n, v)
+ return void
+ param tc Float32 in array [4]
+ param c Float32 in array [4]
+ param n Float32 in array [3]
+ param v Float32 in array [4]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiVertex3fSUN(rc, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiVertex3fvSUN(rc, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiColor4ubVertex3fSUN(rc, r, g, b, a, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param r UInt8 in value
+ param g UInt8 in value
+ param b UInt8 in value
+ param a UInt8 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiColor4ubVertex3fvSUN(rc, c, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param c UInt8 in array [4]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiColor3fVertex3fSUN(rc, r, g, b, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiColor3fVertex3fvSUN(rc, c, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param c Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiNormal3fVertex3fSUN(rc, nx, ny, nz, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiNormal3fVertex3fvSUN(rc, n, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiColor4fNormal3fVertex3fSUN(rc, r, g, b, a, nx, ny, nz, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param a Float32 in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiColor4fNormal3fVertex3fvSUN(rc, c, n, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param c Float32 in array [4]
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiTexCoord2fVertex3fSUN(rc, s, t, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param s Float32 in value
+ param t Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiTexCoord2fVertex3fvSUN(rc, tc, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param tc Float32 in array [2]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN(rc, s, t, nx, ny, nz, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param s Float32 in value
+ param t Float32 in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN(rc, tc, n, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param tc Float32 in array [2]
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN(rc, s, t, r, g, b, a, nx, ny, nz, x, y, z)
+ return void
+ param rc ReplacementCodeSUN in value
+ param s Float32 in value
+ param t Float32 in value
+ param r Float32 in value
+ param g Float32 in value
+ param b Float32 in value
+ param a Float32 in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN(rc, tc, c, n, v)
+ return void
+ param rc ReplacementCodeSUN in array [1]
+ param tc Float32 in array [2]
+ param c Float32 in array [4]
+ param n Float32 in array [3]
+ param v Float32 in array [3]
+ category SUN_vertex
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #167 - WGL_EXT_display_color_table
+# Extension #168 - WGL_EXT_extensions_string
+# Extension #169 - WGL_EXT_make_current_read
+# Extension #170 - WGL_EXT_pixel_format
+# Extension #171 - WGL_EXT_pbuffer
+# Extension #172 - WGL_EXT_swap_control
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #173
+# EXT_blend_func_separate commands (also INGR_blend_func_separate)
+#
+###############################################################################
+
+BlendFuncSeparateEXT(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
+ return void
+ param sfactorRGB BlendFuncSeparateParameterEXT in value
+ param dfactorRGB BlendFuncSeparateParameterEXT in value
+ param sfactorAlpha BlendFuncSeparateParameterEXT in value
+ param dfactorAlpha BlendFuncSeparateParameterEXT in value
+ category EXT_blend_func_separate
+ glxropcode 4134
+ version 1.0
+ extension
+ alias BlendFuncSeparate
+
+BlendFuncSeparateINGR(sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha)
+ return void
+ param sfactorRGB BlendFuncSeparateParameterEXT in value
+ param dfactorRGB BlendFuncSeparateParameterEXT in value
+ param sfactorAlpha BlendFuncSeparateParameterEXT in value
+ param dfactorAlpha BlendFuncSeparateParameterEXT in value
+ category INGR_blend_func_separate
+ glxropcode 4134
+ version 1.0
+ extension
+ alias BlendFuncSeparateEXT
+
+###############################################################################
+#
+# Extension #174
+# INGR_color_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: INGR_color_clamp
+
+###############################################################################
+#
+# Extension #175
+# INGR_interlace_read commands
+#
+###############################################################################
+
+# (none)
+newcategory: INGR_interlace_read
+
+###############################################################################
+#
+# Extension #176
+# EXT_stencil_wrap commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_stencil_wrap
+
+###############################################################################
+#
+# Extension #177 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #178
+# EXT_422_pixels commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_422_pixels
+
+###############################################################################
+#
+# Extension #179
+# NV_texgen_reflection commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texgen_reflection
+
+###############################################################################
+#
+# Extension #???
+# @ EXT_texture_cube_map commands
+#
+###############################################################################
+
+# (none)
+
+###############################################################################
+#
+# Extension #180 - skipped
+# Extension #181 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #182
+# SUN_convolution_border_modes commands
+#
+###############################################################################
+
+# (none)
+newcategory: SUN_convolution_border_modes
+
+###############################################################################
+#
+# Extension #183 - GLX_SUN_get_transparent_index
+# Extension #184 - skipped
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #185
+# EXT_texture_env_add commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_env_add
+
+###############################################################################
+#
+# Extension #186
+# EXT_texture_lod_bias commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_lod_bias
+
+###############################################################################
+#
+# Extension #187
+# EXT_texture_filter_anisotropic commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_filter_anisotropic
+
+###############################################################################
+#
+# Extension #188
+# EXT_vertex_weighting commands
+#
+###############################################################################
+
+# GLX stuff to be written
+VertexWeightfEXT(weight)
+ return void
+ param weight Float32 in value
+ category EXT_vertex_weighting
+ vectorequiv VertexWeightfvEXT
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 494
+
+VertexWeightfvEXT(weight)
+ return void
+ param weight Float32 in array [1]
+ category EXT_vertex_weighting
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4135
+ glxflags ignore
+ offset 495
+
+VertexWeightPointerEXT(size, type, stride, pointer)
+ return void
+ param size SizeI in value
+ param type VertexWeightPointerTypeEXT in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(type/stride)] retained
+ category EXT_vertex_weighting
+ version 1.1
+ extension soft WINSOFT NV10
+ dlflags notlistable
+ glxflags ignore
+ offset 496
+
+###############################################################################
+#
+# Extension #189
+# NV_light_max_exponent commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_light_max_exponent
+
+###############################################################################
+#
+# Extension #190
+# NV_vertex_array_range commands
+#
+###############################################################################
+
+FlushVertexArrayRangeNV()
+ return void
+ category NV_vertex_array_range
+ version 1.1
+ extension soft WINSOFT NV10
+ dlflags notlistable
+ glxflags client-handcode server-handcode ignore
+ offset 497
+
+VertexArrayRangeNV(length, pointer)
+ return void
+ param length SizeI in value
+ param pointer Void in array [COMPSIZE(length)] retained
+ category NV_vertex_array_range
+ version 1.1
+ extension soft WINSOFT NV10
+ dlflags notlistable
+ glxflags client-handcode server-handcode ignore
+ offset 498
+
+###############################################################################
+#
+# Extension #191
+# NV_register_combiners commands
+#
+###############################################################################
+
+CombinerParameterfvNV(pname, params)
+ return void
+ param pname CombinerParameterNV in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4137
+ glxflags ignore
+ offset 499
+
+CombinerParameterfNV(pname, param)
+ return void
+ param pname CombinerParameterNV in value
+ param param Float32 in value
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4136
+ glxflags ignore
+ offset 500
+
+CombinerParameterivNV(pname, params)
+ return void
+ param pname CombinerParameterNV in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4139
+ glxflags ignore
+ offset 501
+
+CombinerParameteriNV(pname, param)
+ return void
+ param pname CombinerParameterNV in value
+ param param Int32 in value
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4138
+ glxflags ignore
+ offset 502
+
+CombinerInputNV(stage, portion, variable, input, mapping, componentUsage)
+ return void
+ param stage CombinerStageNV in value
+ param portion CombinerPortionNV in value
+ param variable CombinerVariableNV in value
+ param input CombinerRegisterNV in value
+ param mapping CombinerMappingNV in value
+ param componentUsage CombinerComponentUsageNV in value
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4140
+ glxflags ignore
+ offset 503
+
+CombinerOutputNV(stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum)
+ return void
+ param stage CombinerStageNV in value
+ param portion CombinerPortionNV in value
+ param abOutput CombinerRegisterNV in value
+ param cdOutput CombinerRegisterNV in value
+ param sumOutput CombinerRegisterNV in value
+ param scale CombinerScaleNV in value
+ param bias CombinerBiasNV in value
+ param abDotProduct Boolean in value
+ param cdDotProduct Boolean in value
+ param muxSum Boolean in value
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4141
+ glxflags ignore
+ offset 504
+
+FinalCombinerInputNV(variable, input, mapping, componentUsage)
+ return void
+ param variable CombinerVariableNV in value
+ param input CombinerRegisterNV in value
+ param mapping CombinerMappingNV in value
+ param componentUsage CombinerComponentUsageNV in value
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxropcode 4142
+ glxflags ignore
+ offset 505
+
+GetCombinerInputParameterfvNV(stage, portion, variable, pname, params)
+ return void
+ param stage CombinerStageNV in value
+ param portion CombinerPortionNV in value
+ param variable CombinerVariableNV in value
+ param pname CombinerParameterNV in value
+ param params Float32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxvendorpriv 1270
+ glxflags ignore
+ offset 506
+
+GetCombinerInputParameterivNV(stage, portion, variable, pname, params)
+ return void
+ param stage CombinerStageNV in value
+ param portion CombinerPortionNV in value
+ param variable CombinerVariableNV in value
+ param pname CombinerParameterNV in value
+ param params Int32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxvendorpriv 1271
+ glxflags ignore
+ offset 507
+
+GetCombinerOutputParameterfvNV(stage, portion, pname, params)
+ return void
+ param stage CombinerStageNV in value
+ param portion CombinerPortionNV in value
+ param pname CombinerParameterNV in value
+ param params Float32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxvendorpriv 1272
+ glxflags ignore
+ offset 508
+
+GetCombinerOutputParameterivNV(stage, portion, pname, params)
+ return void
+ param stage CombinerStageNV in value
+ param portion CombinerPortionNV in value
+ param pname CombinerParameterNV in value
+ param params Int32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxvendorpriv 1273
+ glxflags ignore
+ offset 509
+
+GetFinalCombinerInputParameterfvNV(variable, pname, params)
+ return void
+ param variable CombinerVariableNV in value
+ param pname CombinerParameterNV in value
+ param params Float32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxvendorpriv 1274
+ glxflags ignore
+ offset 510
+
+GetFinalCombinerInputParameterivNV(variable, pname, params)
+ return void
+ param variable CombinerVariableNV in value
+ param pname CombinerParameterNV in value
+ param params Int32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_register_combiners
+ version 1.1
+ extension soft WINSOFT NV10
+ glxvendorpriv 1275
+ glxflags ignore
+ offset 511
+
+###############################################################################
+#
+# Extension #192
+# NV_fog_distance commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fog_distance
+
+###############################################################################
+#
+# Extension #193
+# NV_texgen_emboss commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texgen_emboss
+
+###############################################################################
+#
+# Extension #194
+# NV_blend_square commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_blend_square
+
+###############################################################################
+#
+# Extension #195
+# NV_texture_env_combine4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_env_combine4
+
+###############################################################################
+#
+# Extension #196
+# MESA_resize_buffers commands
+#
+###############################################################################
+
+ResizeBuffersMESA()
+ return void
+ category MESA_resize_buffers
+ version 1.0
+ glxropcode ?
+ offset 512
+
+###############################################################################
+#
+# Extension #197
+# MESA_window_pos commands
+#
+# Note that the 2- and 3-component versions are now aliases of ARB
+# entry points.
+#
+###############################################################################
+
+WindowPos2dMESA(x, y)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ category MESA_window_pos
+ vectorequiv WindowPos2dvMESA
+ version 1.0
+ alias WindowPos2dARB
+
+WindowPos2dvMESA(v)
+ return void
+ param v CoordD in array [2]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos2dvARB
+
+WindowPos2fMESA(x, y)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ category MESA_window_pos
+ vectorequiv WindowPos2fvMESA
+ version 1.0
+ alias WindowPos2fARB
+
+WindowPos2fvMESA(v)
+ return void
+ param v CoordF in array [2]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos2fvARB
+
+WindowPos2iMESA(x, y)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ category MESA_window_pos
+ vectorequiv WindowPos2ivMESA
+ version 1.0
+ alias WindowPos2iARB
+
+WindowPos2ivMESA(v)
+ return void
+ param v CoordI in array [2]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos2ivARB
+
+WindowPos2sMESA(x, y)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ category MESA_window_pos
+ vectorequiv WindowPos2svMESA
+ version 1.0
+ alias WindowPos2sARB
+
+WindowPos2svMESA(v)
+ return void
+ param v CoordS in array [2]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos2svARB
+
+WindowPos3dMESA(x, y, z)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ vectorequiv WindowPos3dvMESA
+ category MESA_window_pos
+ version 1.0
+ alias WindowPos3dARB
+
+WindowPos3dvMESA(v)
+ return void
+ param v CoordD in array [3]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos3dvARB
+
+WindowPos3fMESA(x, y, z)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ category MESA_window_pos
+ vectorequiv WindowPos3fvMESA
+ version 1.0
+ alias WindowPos3fARB
+
+WindowPos3fvMESA(v)
+ return void
+ param v CoordF in array [3]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos3fvARB
+
+WindowPos3iMESA(x, y, z)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ category MESA_window_pos
+ vectorequiv WindowPos3ivMESA
+ version 1.0
+ alias WindowPos3iARB
+
+WindowPos3ivMESA(v)
+ return void
+ param v CoordI in array [3]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos3ivARB
+
+WindowPos3sMESA(x, y, z)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ category MESA_window_pos
+ vectorequiv WindowPos3svMESA
+ version 1.0
+ alias WindowPos3sARB
+
+WindowPos3svMESA(v)
+ return void
+ param v CoordS in array [3]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ alias WindowPos3svARB
+
+WindowPos4dMESA(x, y, z, w)
+ return void
+ param x CoordD in value
+ param y CoordD in value
+ param z CoordD in value
+ param w CoordD in value
+ vectorequiv WindowPos4dvMESA
+ category MESA_window_pos
+ version 1.0
+ offset 529
+
+WindowPos4dvMESA(v)
+ return void
+ param v CoordD in array [4]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ offset 530
+
+WindowPos4fMESA(x, y, z, w)
+ return void
+ param x CoordF in value
+ param y CoordF in value
+ param z CoordF in value
+ param w CoordF in value
+ category MESA_window_pos
+ vectorequiv WindowPos4fvMESA
+ version 1.0
+ offset 531
+
+WindowPos4fvMESA(v)
+ return void
+ param v CoordF in array [4]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ offset 532
+
+WindowPos4iMESA(x, y, z, w)
+ return void
+ param x CoordI in value
+ param y CoordI in value
+ param z CoordI in value
+ param w CoordI in value
+ category MESA_window_pos
+ vectorequiv WindowPos4ivMESA
+ version 1.0
+ offset 533
+
+WindowPos4ivMESA(v)
+ return void
+ param v CoordI in array [4]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ offset 534
+
+WindowPos4sMESA(x, y, z, w)
+ return void
+ param x CoordS in value
+ param y CoordS in value
+ param z CoordS in value
+ param w CoordS in value
+ category MESA_window_pos
+ vectorequiv WindowPos4svMESA
+ version 1.0
+ offset 535
+
+WindowPos4svMESA(v)
+ return void
+ param v CoordS in array [4]
+ category MESA_window_pos
+ version 1.0
+ glxropcode ?
+ offset 536
+
+###############################################################################
+#
+# Extension #198
+# EXT_texture_compression_s3tc commands
+#
+###############################################################################
+
+#@@ (none yet)
+
+###############################################################################
+#
+# Extension #199
+# IBM_cull_vertex commands
+#
+###############################################################################
+
+# (none)
+newcategory: IBM_cull_vertex
+
+###############################################################################
+#
+# Extension #200
+# IBM_multimode_draw_arrays commands
+#
+###############################################################################
+
+MultiModeDrawArraysIBM(mode, first, count, primcount, modestride)
+ return void
+ param mode BeginMode in array [COMPSIZE(primcount)]
+ param first Int32 in array [COMPSIZE(primcount)]
+ param count SizeI in array [COMPSIZE(primcount)]
+ param primcount SizeI in value
+ param modestride Int32 in value
+ category IBM_multimode_draw_arrays
+ version 1.1
+ glxropcode ?
+ offset 708
+
+
+MultiModeDrawElementsIBM(mode, count, type, indices, primcount, modestride)
+ return void
+ param mode BeginMode in array [COMPSIZE(primcount)]
+ param count SizeI in array [COMPSIZE(primcount)]
+ param type DrawElementsType in value
+ param indices ConstVoidPointer in array [COMPSIZE(primcount)]
+ param primcount SizeI in value
+ param modestride Int32 in value
+ category IBM_multimode_draw_arrays
+ version 1.1
+ glxropcode ?
+ offset 709
+
+###############################################################################
+#
+# Extension #201
+# IBM_vertex_array_lists commands
+#
+###############################################################################
+
+ColorPointerListIBM(size, type, stride, pointer, ptrstride)
+ return void
+ param size Int32 in value
+ param type ColorPointerType in value
+ param stride Int32 in value
+ param pointer VoidPointer in array [COMPSIZE(size/type/stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+SecondaryColorPointerListIBM(size, type, stride, pointer, ptrstride)
+ return void
+ param size Int32 in value
+ param type SecondaryColorPointerTypeIBM in value
+ param stride Int32 in value
+ param pointer VoidPointer in array [COMPSIZE(size/type/stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+EdgeFlagPointerListIBM(stride, pointer, ptrstride)
+ return void
+ param stride Int32 in value
+ param pointer BooleanPointer in array [COMPSIZE(stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+FogCoordPointerListIBM(type, stride, pointer, ptrstride)
+ return void
+ param type FogPointerTypeIBM in value
+ param stride Int32 in value
+ param pointer VoidPointer in array [COMPSIZE(type/stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+IndexPointerListIBM(type, stride, pointer, ptrstride)
+ return void
+ param type IndexPointerType in value
+ param stride Int32 in value
+ param pointer VoidPointer in array [COMPSIZE(type/stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+NormalPointerListIBM(type, stride, pointer, ptrstride)
+ return void
+ param type NormalPointerType in value
+ param stride Int32 in value
+ param pointer VoidPointer in array [COMPSIZE(type/stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+TexCoordPointerListIBM(size, type, stride, pointer, ptrstride)
+ return void
+ param size Int32 in value
+ param type TexCoordPointerType in value
+ param stride Int32 in value
+ param pointer VoidPointer in array [COMPSIZE(size/type/stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+VertexPointerListIBM(size, type, stride, pointer, ptrstride)
+ return void
+ param size Int32 in value
+ param type VertexPointerType in value
+ param stride Int32 in value
+ param pointer VoidPointer in array [COMPSIZE(size/type/stride)] retained
+ param ptrstride Int32 in value
+ category IBM_vertex_array_lists
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #202
+# SGIX_subsample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_subsample
+
+###############################################################################
+#
+# Extension #203
+# SGIX_ycrcba commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ycrcba
+
+###############################################################################
+#
+# Extension #204
+# SGIX_ycrcb_subsample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_ycrcb_subsample
+
+###############################################################################
+#
+# Extension #205
+# SGIX_depth_pass_instrument commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_depth_pass_instrument
+
+###############################################################################
+#
+# Extension #206
+# 3DFX_texture_compression_FXT1 commands
+#
+###############################################################################
+
+# (none)
+newcategory: 3DFX_texture_compression_FXT1
+
+###############################################################################
+#
+# Extension #207
+# 3DFX_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: 3DFX_multisample
+
+###############################################################################
+#
+# Extension #208
+# 3DFX_tbuffer commands
+#
+###############################################################################
+
+TbufferMask3DFX(mask)
+ return void
+ param mask UInt32 in value
+ category 3DFX_tbuffer
+ version 1.2
+ glxropcode ?
+ offset 553
+
+###############################################################################
+#
+# Extension #209
+# EXT_multisample commands
+#
+###############################################################################
+
+SampleMaskEXT(value, invert)
+ return void
+ param value ClampedFloat32 in value
+ param invert Boolean in value
+ category EXT_multisample
+ version 1.0
+ glxropcode ?
+ extension
+ offset 446
+
+SamplePatternEXT(pattern)
+ return void
+ param pattern SamplePatternEXT in value
+ category EXT_multisample
+ version 1.0
+ glxropcode ?
+ glxflags
+ extension
+ offset 447
+
+###############################################################################
+#
+# Extension #210
+# SGIX_vertex_preclip commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_vertex_preclip
+
+###############################################################################
+#
+# Extension #211
+# SGIX_convolution_accuracy commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_convolution_accuracy
+
+###############################################################################
+#
+# Extension #212
+# SGIX_resample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_resample
+
+###############################################################################
+#
+# Extension #213
+# SGIS_point_line_texgen commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_point_line_texgen
+
+###############################################################################
+#
+# Extension #214
+# SGIS_texture_color_mask commands
+#
+###############################################################################
+
+TextureColorMaskSGIS(red, green, blue, alpha)
+ return void
+ param red Boolean in value
+ param green Boolean in value
+ param blue Boolean in value
+ param alpha Boolean in value
+ category SGIS_texture_color_mask
+ version 1.1
+ glxropcode 2082
+ extension
+ offset ?
+
+###############################################################################
+#
+# Extension #215 - GLX_MESA_copy_sub_buffer
+# Extension #216 - GLX_MESA_pixmap_colormap
+# Extension #217 - GLX_MESA_release_buffers
+# Extension #218 - GLX_MESA_set_3dfx_mode
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #219
+# SGIX_igloo_interface commands
+#
+###############################################################################
+
+IglooInterfaceSGIX(pname, params)
+ return void
+ dlflags notlistable
+ param pname IglooFunctionSelectSGIX in value
+ param params IglooParameterSGIX in array [COMPSIZE(pname)]
+ category SGIX_igloo_interface
+ version 1.0
+ glxflags SGI ignore
+ extension
+ glxropcode 200
+ offset ?
+
+###############################################################################
+#
+# Extension #220
+# EXT_texture_env_dot3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_env_dot3
+
+###############################################################################
+#
+# Extension #221
+# ATI_texture_mirror_once commands
+#
+###############################################################################
+# (none)
+newcategory: ATI_texture_mirror_once
+
+###############################################################################
+#
+# Extension #222
+# NV_fence commands
+#
+###############################################################################
+
+DeleteFencesNV(n, fences)
+ return void
+ param n SizeI in value
+ param fences FenceNV in array [n]
+ category NV_fence
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1276
+ glxflags ignore
+ offset 647
+
+GenFencesNV(n, fences)
+ return void
+ param n SizeI in value
+ param fences FenceNV out array [n]
+ category NV_fence
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1277
+ glxflags ignore
+ offset 648
+
+IsFenceNV(fence)
+ return Boolean
+ param fence FenceNV in value
+ category NV_fence
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1278
+ glxflags ignore
+ offset 649
+
+TestFenceNV(fence)
+ return Boolean
+ param fence FenceNV in value
+ category NV_fence
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1279
+ glxflags ignore
+ offset 650
+
+GetFenceivNV(fence, pname, params)
+ return void
+ param fence FenceNV in value
+ param pname FenceParameterNameNV in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category NV_fence
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1280
+ glxflags ignore
+ offset 651
+
+FinishFenceNV(fence)
+ return void
+ param fence FenceNV in value
+ category NV_fence
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1312
+ glxflags ignore
+ offset 652
+
+SetFenceNV(fence, condition)
+ return void
+ param fence FenceNV in value
+ param condition FenceConditionNV in value
+ category NV_fence
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 653
+
+###############################################################################
+#
+# Extension #225
+# NV_evaluators commands
+#
+###############################################################################
+
+MapControlPointsNV(target, index, type, ustride, vstride, uorder, vorder, packed, points)
+ return void
+ param target EvalTargetNV in value
+ param index UInt32 in value
+ param type MapTypeNV in value
+ param ustride SizeI in value
+ param vstride SizeI in value
+ param uorder CheckedInt32 in value
+ param vorder CheckedInt32 in value
+ param packed Boolean in value
+ param points Void in array [COMPSIZE(target/uorder/vorder)]
+ category NV_evaluators
+ dlflags handcode
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+MapParameterivNV(target, pname, params)
+ return void
+ param target EvalTargetNV in value
+ param pname MapParameterNV in value
+ param params CheckedInt32 in array [COMPSIZE(target/pname)]
+ category NV_evaluators
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+MapParameterfvNV(target, pname, params)
+ return void
+ param target EvalTargetNV in value
+ param pname MapParameterNV in value
+ param params CheckedFloat32 in array [COMPSIZE(target/pname)]
+ category NV_evaluators
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+GetMapControlPointsNV(target, index, type, ustride, vstride, packed, points)
+ return void
+ param target EvalTargetNV in value
+ param index UInt32 in value
+ param type MapTypeNV in value
+ param ustride SizeI in value
+ param vstride SizeI in value
+ param packed Boolean in value
+ param points Void out array [COMPSIZE(target)]
+ category NV_evaluators
+ dlflags notlistable
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+GetMapParameterivNV(target, pname, params)
+ return void
+ param target EvalTargetNV in value
+ param pname MapParameterNV in value
+ param params Int32 out array [COMPSIZE(target/pname)]
+ category NV_evaluators
+ dlflags notlistable
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+GetMapParameterfvNV(target, pname, params)
+ return void
+ param target EvalTargetNV in value
+ param pname MapParameterNV in value
+ param params Float32 out array [COMPSIZE(target/pname)]
+ category NV_evaluators
+ dlflags notlistable
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+GetMapAttribParameterivNV(target, index, pname, params)
+ return void
+ param target EvalTargetNV in value
+ param index UInt32 in value
+ param pname MapAttribParameterNV in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category NV_evaluators
+ dlflags notlistable
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+GetMapAttribParameterfvNV(target, index, pname, params)
+ return void
+ param target EvalTargetNV in value
+ param index UInt32 in value
+ param pname MapAttribParameterNV in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category NV_evaluators
+ dlflags notlistable
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+EvalMapsNV(target, mode)
+ return void
+ param target EvalTargetNV in value
+ param mode EvalMapsModeNV in value
+ category NV_evaluators
+ version 1.1
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #226
+# NV_packed_depth_stencil commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_packed_depth_stencil
+
+###############################################################################
+#
+# Extension #227
+# NV_register_combiners2 commands
+#
+###############################################################################
+
+CombinerStageParameterfvNV(stage, pname, params)
+ return void
+ param stage CombinerStageNV in value
+ param pname CombinerParameterNV in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category NV_register_combiners2
+ version 1.1
+ extension
+ glxflags ignore
+ offset ?
+
+GetCombinerStageParameterfvNV(stage, pname, params)
+ return void
+ param stage CombinerStageNV in value
+ param pname CombinerParameterNV in value
+ param params Float32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_register_combiners2
+ version 1.1
+ extension
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #228
+# NV_texture_compression_vtc commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_compression_vtc
+
+###############################################################################
+#
+# Extension #229
+# NV_texture_rectangle commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_rectangle
+
+###############################################################################
+#
+# Extension #230
+# NV_texture_shader commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_shader
+
+###############################################################################
+#
+# Extension #231
+# NV_texture_shader2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_shader2
+
+###############################################################################
+#
+# Extension #232
+# NV_vertex_array_range2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_array_range2
+
+###############################################################################
+#
+# Extension #233
+# NV_vertex_program commands
+#
+###############################################################################
+
+AreProgramsResidentNV(n, programs, residences)
+ return Boolean
+ param n SizeI in value
+ param programs UInt32 in array [n]
+ param residences Boolean out array [n]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxvendorpriv 1293
+ offset 578
+
+BindProgramNV(target, id)
+ return void
+ param target VertexAttribEnumNV in value
+ param id UInt32 in value
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4180
+ alias BindProgramARB
+
+DeleteProgramsNV(n, programs)
+ return void
+ param n SizeI in value
+ param programs UInt32 in array [n]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1294
+ alias DeleteProgramsARB
+
+ExecuteProgramNV(target, id, params)
+ return void
+ param target VertexAttribEnumNV in value
+ param id UInt32 in value
+ param params Float32 in array [4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxropcode 4181
+ offset 581
+
+GenProgramsNV(n, programs)
+ return void
+ param n SizeI in value
+ param programs UInt32 out array [n]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1295
+ alias GenProgramsARB
+
+GetProgramParameterdvNV(target, index, pname, params)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param params Float64 out array [4]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxvendorpriv 1297
+ offset 583
+
+GetProgramParameterfvNV(target, index, pname, params)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param params Float32 out array [4]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxvendorpriv 1296
+ offset 584
+
+# GetProgramParameterSigneddvNV(target, index, pname, params)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param pname VertexAttribEnumNV in value
+# param params Float64 out array [4]
+# category NV_vertex_program1_1_dcc
+# dlflags notlistable
+# version 1.2
+# extension soft WINSOFT NV20
+# glxflags ignore
+# offset ?
+#
+# GetProgramParameterSignedfvNV(target, index, pname, params)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param pname VertexAttribEnumNV in value
+# param params Float32 out array [4]
+# category NV_vertex_program1_1_dcc
+# dlflags notlistable
+# version 1.2
+# extension soft WINSOFT NV20
+# glxflags ignore
+# offset ?
+
+GetProgramivNV(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param params Int32 out array [4]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxvendorpriv 1298
+ offset 585
+
+GetProgramStringNV(id, pname, program)
+ return void
+ param id UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param program ProgramCharacterNV out array [COMPSIZE(id/pname)]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxvendorpriv 1299
+ offset 586
+
+GetTrackMatrixivNV(target, address, pname, params)
+ return void
+ param target VertexAttribEnumNV in value
+ param address UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param params Int32 out array [1]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ glxvendorpriv 1300
+ offset 587
+
+GetVertexAttribdvNV(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param params Float64 out array [1]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1301
+ alias GetVertexAttribdv
+
+GetVertexAttribfvNV(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param params Float32 out array [1]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1302
+ alias GetVertexAttribfv
+
+GetVertexAttribivNV(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param params Int32 out array [1]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1303
+ alias GetVertexAttribiv
+
+GetVertexAttribPointervNV(index, pname, pointer)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnumNV in value
+ param pointer VoidPointer out array [1]
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ alias GetVertexAttribPointerv
+
+IsProgramNV(id)
+ return Boolean
+ param id UInt32 in value
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxvendorpriv 1304
+ alias IsProgram
+
+LoadProgramNV(target, id, len, program)
+ return void
+ param target VertexAttribEnumNV in value
+ param id UInt32 in value
+ param len SizeI in value
+ param program UInt8 in array [len]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4183
+ offset 593
+
+ProgramParameter4dNV(target, index, x, y, z, w)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv ProgramParameter4dvNV
+ extension soft WINSOFT NV10
+ offset 594
+
+ProgramParameter4dvNV(target, index, v)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param v Float64 in array [4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4185
+ offset 595
+
+ProgramParameter4fNV(target, index, x, y, z, w)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv ProgramParameter4fvNV
+ extension soft WINSOFT NV10
+ offset 596
+
+ProgramParameter4fvNV(target, index, v)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param v Float32 in array [4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4184
+ offset 597
+
+#??? 'count' was SizeI in the latest NVIDIA gl.spec, but UInt32 in the
+#??? extension specification in the registry.
+ProgramParameters4dvNV(target, index, count, v)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param count UInt32 in value
+ param v Float64 in array [count*4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4187
+ offset 598
+
+#??? 'count' was SizeI in the latest NVIDIA gl.spec, but UInt32 in the
+#??? extension specification in the registry.
+ProgramParameters4fvNV(target, index, count, v)
+ return void
+ param target VertexAttribEnumNV in value
+ param index UInt32 in value
+ param count UInt32 in value
+ param v Float32 in array [count*4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4186
+ offset 599
+
+# ProgramParameterSigned4dNV(target, index, x, y, z, w)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param x Float64 in value
+# param y Float64 in value
+# param z Float64 in value
+# param w Float64 in value
+# category NV_vertex_program1_1_dcc
+# version 1.2
+# vectorequiv ProgramParameterSigned4dvNV
+# extension soft WINSOFT NV20
+# offset ?
+#
+# ProgramParameterSigned4dvNV(target, index, v)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param v Float64 in array [4]
+# category NV_vertex_program1_1_dcc
+# version 1.2
+# extension soft WINSOFT NV20
+# glxflags ignore
+# offset ?
+#
+# ProgramParameterSigned4fNV(target, index, x, y, z, w)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param x Float32 in value
+# param y Float32 in value
+# param z Float32 in value
+# param w Float32 in value
+# category NV_vertex_program1_1_dcc
+# version 1.2
+# vectorequiv ProgramParameterSigned4fvNV
+# extension soft WINSOFT NV20
+# offset ?
+#
+# ProgramParameterSigned4fvNV(target, index, v)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param v Float32 in array [4]
+# category NV_vertex_program1_1_dcc
+# version 1.2
+# extension soft WINSOFT NV20
+# glxflags ignore
+# offset ?
+#
+# ProgramParametersSigned4dvNV(target, index, count, v)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param count SizeI in value
+# param v Float64 in array [count*4]
+# category NV_vertex_program1_1_dcc
+# version 1.2
+# extension soft WINSOFT NV20
+# glxflags ignore
+# offset ?
+#
+# ProgramParametersSigned4fvNV(target, index, count, v)
+# return void
+# param target VertexAttribEnumNV in value
+# param index Int32 in value
+# param count SizeI in value
+# param v Float32 in array [count*4]
+# category NV_vertex_program1_1_dcc
+# version 1.2
+# extension soft WINSOFT NV20
+# glxflags ignore
+# offset ?
+
+RequestResidentProgramsNV(n, programs)
+ return void
+ param n SizeI in value
+ param programs UInt32 in array [n]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4182
+ offset 600
+
+TrackMatrixNV(target, address, matrix, transform)
+ return void
+ param target VertexAttribEnumNV in value
+ param address UInt32 in value
+ param matrix VertexAttribEnumNV in value
+ param transform VertexAttribEnumNV in value
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4188
+ offset 601
+
+VertexAttribPointerNV(index, fsize, type, stride, pointer)
+ return void
+ param index UInt32 in value
+ param fsize Int32 in value
+ param type VertexAttribEnumNV in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(fsize/type/stride)] retained
+ category NV_vertex_program
+ dlflags notlistable
+ version 1.2
+ extension soft WINSOFT NV10
+ glxflags ignore
+ offset 602
+
+VertexAttrib1dNV(index, x)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib1dvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib1d
+
+VertexAttrib1dvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [1]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4197
+ alias VertexAttrib1dv
+
+VertexAttrib1fNV(index, x)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib1fvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib1f
+
+VertexAttrib1fvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [1]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4193
+ alias VertexAttrib1fv
+
+VertexAttrib1sNV(index, x)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib1svNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib1s
+
+VertexAttrib1svNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [1]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4189
+ alias VertexAttrib1sv
+
+VertexAttrib2dNV(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib2dvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib2d
+
+VertexAttrib2dvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [2]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4198
+ alias VertexAttrib2dv
+
+VertexAttrib2fNV(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib2fvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib2f
+
+VertexAttrib2fvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [2]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4194
+ alias VertexAttrib2fv
+
+VertexAttrib2sNV(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib2svNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib2s
+
+VertexAttrib2svNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [2]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4190
+ alias VertexAttrib2sv
+
+VertexAttrib3dNV(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib3dvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib3d
+
+VertexAttrib3dvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [3]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4199
+ alias VertexAttrib3dv
+
+VertexAttrib3fNV(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib3fvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib3f
+
+VertexAttrib3fvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [3]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4195
+ alias VertexAttrib3fv
+
+VertexAttrib3sNV(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib3svNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib3s
+
+VertexAttrib3svNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [3]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4191
+ alias VertexAttrib3sv
+
+VertexAttrib4dNV(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib4dvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib4d
+
+VertexAttrib4dvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float64 in array [4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4200
+ alias VertexAttrib4dv
+
+VertexAttrib4fNV(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib4fvNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib4f
+
+VertexAttrib4fvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Float32 in array [4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4196
+ alias VertexAttrib4fv
+
+VertexAttrib4sNV(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ param w Int16 in value
+ category NV_vertex_program
+ version 1.2
+ vectorequiv VertexAttrib4svNV
+ extension soft WINSOFT NV10
+ alias VertexAttrib4s
+
+VertexAttrib4svNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4192
+ alias VertexAttrib4sv
+
+VertexAttrib4ubNV(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x ColorUB in value
+ param y ColorUB in value
+ param z ColorUB in value
+ param w ColorUB in value
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ vectorequiv VertexAttrib4ubvNV
+ alias VertexAttrib4Nub
+
+VertexAttrib4ubvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v ColorUB in array [4]
+ category NV_vertex_program
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4201
+ alias VertexAttrib4Nubv
+
+VertexAttribs1dvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float64 in array [count]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4210
+ offset 629
+
+VertexAttribs1fvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float32 in array [count]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4206
+ offset 630
+
+VertexAttribs1svNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Int16 in array [count]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4202
+ offset 631
+
+VertexAttribs2dvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float64 in array [count*2]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4211
+ offset 632
+
+VertexAttribs2fvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float32 in array [count*2]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4207
+ offset 633
+
+VertexAttribs2svNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Int16 in array [count*2]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4203
+ offset 634
+
+VertexAttribs3dvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float64 in array [count*3]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4212
+ offset 635
+
+VertexAttribs3fvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float32 in array [count*3]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4208
+ offset 636
+
+VertexAttribs3svNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Int16 in array [count*3]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4204
+ offset 637
+
+VertexAttribs4dvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float64 in array [count*4]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4213
+ offset 638
+
+VertexAttribs4fvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Float32 in array [count*4]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4209
+ offset 639
+
+VertexAttribs4svNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v Int16 in array [count*4]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4205
+ offset 640
+
+VertexAttribs4ubvNV(index, count, v)
+ return void
+ param index UInt32 in value
+ param count SizeI in value
+ param v ColorUB in array [count*4]
+ category NV_vertex_program
+ dlflags handcode
+ version 1.2
+ extension soft WINSOFT NV10
+ glxropcode 4214
+ offset 641
+
+
+###############################################################################
+#
+# Extension #234 - GLX_SGIX_visual_select_group
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #235
+# SGIX_texture_coordinate_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_texture_coordinate_clamp
+
+###############################################################################
+#
+# Extension #236
+# SGIX_scalebias_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_scalebias_hint
+
+###############################################################################
+#
+# Extension #237 - GLX_OML_swap_method commands
+# Extension #238 - GLX_OML_sync_control commands
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #239
+# OML_interlace commands
+#
+###############################################################################
+
+# (none)
+newcategory: OML_interlace
+
+###############################################################################
+#
+# Extension #240
+# OML_subsample commands
+#
+###############################################################################
+
+# (none)
+newcategory: OML_subsample
+
+###############################################################################
+#
+# Extension #241
+# OML_resample commands
+#
+###############################################################################
+
+# (none)
+newcategory: OML_resample
+
+###############################################################################
+#
+# Extension #242 - WGL_OML_sync_control commands
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #243
+# NV_copy_depth_to_color commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_copy_depth_to_color
+
+###############################################################################
+#
+# Extension #244
+# ATI_envmap_bumpmap commands
+#
+###############################################################################
+
+TexBumpParameterivATI(pname, param)
+ return void
+ param pname TexBumpParameterATI in value
+ param param Int32 in array [COMPSIZE(pname)]
+ category ATI_envmap_bumpmap
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexBumpParameterfvATI(pname, param)
+ return void
+ param pname TexBumpParameterATI in value
+ param param Float32 in array [COMPSIZE(pname)]
+ category ATI_envmap_bumpmap
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetTexBumpParameterivATI(pname, param)
+ return void
+ param pname GetTexBumpParameterATI in value
+ param param Int32 out array [COMPSIZE(pname)]
+ category ATI_envmap_bumpmap
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetTexBumpParameterfvATI(pname, param)
+ return void
+ param pname GetTexBumpParameterATI in value
+ param param Float32 out array [COMPSIZE(pname)]
+ category ATI_envmap_bumpmap
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #245
+# ATI_fragment_shader commands
+#
+###############################################################################
+
+GenFragmentShadersATI(range)
+ return UInt32
+ param range UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindFragmentShaderATI(id)
+ return void
+ param id UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteFragmentShaderATI(id)
+ return void
+ param id UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BeginFragmentShaderATI()
+ return void
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+EndFragmentShaderATI()
+ return void
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+PassTexCoordATI(dst, coord, swizzle)
+ return void
+ param dst UInt32 in value
+ param coord UInt32 in value
+ param swizzle SwizzleOpATI in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SampleMapATI(dst, interp, swizzle)
+ return void
+ param dst UInt32 in value
+ param interp UInt32 in value
+ param swizzle SwizzleOpATI in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorFragmentOp1ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod)
+ return void
+ param op FragmentOpATI in value
+ param dst UInt32 in value
+ param dstMask UInt32 in value
+ param dstMod UInt32 in value
+ param arg1 UInt32 in value
+ param arg1Rep UInt32 in value
+ param arg1Mod UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorFragmentOp2ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod)
+ return void
+ param op FragmentOpATI in value
+ param dst UInt32 in value
+ param dstMask UInt32 in value
+ param dstMod UInt32 in value
+ param arg1 UInt32 in value
+ param arg1Rep UInt32 in value
+ param arg1Mod UInt32 in value
+ param arg2 UInt32 in value
+ param arg2Rep UInt32 in value
+ param arg2Mod UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorFragmentOp3ATI(op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod)
+ return void
+ param op FragmentOpATI in value
+ param dst UInt32 in value
+ param dstMask UInt32 in value
+ param dstMod UInt32 in value
+ param arg1 UInt32 in value
+ param arg1Rep UInt32 in value
+ param arg1Mod UInt32 in value
+ param arg2 UInt32 in value
+ param arg2Rep UInt32 in value
+ param arg2Mod UInt32 in value
+ param arg3 UInt32 in value
+ param arg3Rep UInt32 in value
+ param arg3Mod UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+AlphaFragmentOp1ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod)
+ return void
+ param op FragmentOpATI in value
+ param dst UInt32 in value
+ param dstMod UInt32 in value
+ param arg1 UInt32 in value
+ param arg1Rep UInt32 in value
+ param arg1Mod UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+AlphaFragmentOp2ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod)
+ return void
+ param op FragmentOpATI in value
+ param dst UInt32 in value
+ param dstMod UInt32 in value
+ param arg1 UInt32 in value
+ param arg1Rep UInt32 in value
+ param arg1Mod UInt32 in value
+ param arg2 UInt32 in value
+ param arg2Rep UInt32 in value
+ param arg2Mod UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+AlphaFragmentOp3ATI(op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod)
+ return void
+ param op FragmentOpATI in value
+ param dst UInt32 in value
+ param dstMod UInt32 in value
+ param arg1 UInt32 in value
+ param arg1Rep UInt32 in value
+ param arg1Mod UInt32 in value
+ param arg2 UInt32 in value
+ param arg2Rep UInt32 in value
+ param arg2Mod UInt32 in value
+ param arg3 UInt32 in value
+ param arg3Rep UInt32 in value
+ param arg3Mod UInt32 in value
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SetFragmentShaderConstantATI(dst, value)
+ return void
+ param dst UInt32 in value
+ param value ConstFloat32 in array [4]
+ category ATI_fragment_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #246
+# ATI_pn_triangles commands
+#
+###############################################################################
+
+PNTrianglesiATI(pname, param)
+ return void
+ param pname PNTrianglesPNameATI in value
+ param param Int32 in value
+ category ATI_pn_triangles
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+PNTrianglesfATI(pname, param)
+ return void
+ param pname PNTrianglesPNameATI in value
+ param param Float32 in value
+ category ATI_pn_triangles
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #247
+# ATI_vertex_array_object commands
+#
+###############################################################################
+
+NewObjectBufferATI(size, pointer, usage)
+ return UInt32
+ param size SizeI in value
+ param pointer ConstVoid in array [size]
+ param usage ArrayObjectUsageATI in value
+ category ATI_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsObjectBufferATI(buffer)
+ return Boolean
+ param buffer UInt32 in value
+ category ATI_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UpdateObjectBufferATI(buffer, offset, size, pointer, preserve)
+ return void
+ param buffer UInt32 in value
+ param offset UInt32 in value
+ param size SizeI in value
+ param pointer ConstVoid in array [size]
+ param preserve PreserveModeATI in value
+ category ATI_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetObjectBufferfvATI(buffer, pname, params)
+ return void
+ param buffer UInt32 in value
+ param pname ArrayObjectPNameATI in value
+ param params Float32 out array [1]
+ category ATI_vertex_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetObjectBufferivATI(buffer, pname, params)
+ return void
+ param buffer UInt32 in value
+ param pname ArrayObjectPNameATI in value
+ param params Int32 out array [1]
+ category ATI_vertex_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+FreeObjectBufferATI(buffer)
+ return void
+ param buffer UInt32 in value
+ category ATI_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ArrayObjectATI(array, size, type, stride, buffer, offset)
+ return void
+ param array EnableCap in value
+ param size Int32 in value
+ param type ScalarType in value
+ param stride SizeI in value
+ param buffer UInt32 in value
+ param offset UInt32 in value
+ category ATI_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetArrayObjectfvATI(array, pname, params)
+ return void
+ param array EnableCap in value
+ param pname ArrayObjectPNameATI in value
+ param params Float32 out array [1]
+ category ATI_vertex_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetArrayObjectivATI(array, pname, params)
+ return void
+ param array EnableCap in value
+ param pname ArrayObjectPNameATI in value
+ param params Int32 out array [1]
+ category ATI_vertex_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+VariantArrayObjectATI(id, type, stride, buffer, offset)
+ return void
+ param id UInt32 in value
+ param type ScalarType in value
+ param stride SizeI in value
+ param buffer UInt32 in value
+ param offset UInt32 in value
+ category ATI_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetVariantArrayObjectfvATI(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname ArrayObjectPNameATI in value
+ param params Float32 out array [1]
+ category ATI_vertex_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVariantArrayObjectivATI(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname ArrayObjectPNameATI in value
+ param params Int32 out array [1]
+ category ATI_vertex_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #248
+# EXT_vertex_shader commands
+#
+###############################################################################
+
+BeginVertexShaderEXT()
+ return void
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+EndVertexShaderEXT()
+ return void
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindVertexShaderEXT(id)
+ return void
+ param id UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GenVertexShadersEXT(range)
+ return UInt32
+ param range UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteVertexShaderEXT(id)
+ return void
+ param id UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ShaderOp1EXT(op, res, arg1)
+ return void
+ param op VertexShaderOpEXT in value
+ param res UInt32 in value
+ param arg1 UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ShaderOp2EXT(op, res, arg1, arg2)
+ return void
+ param op VertexShaderOpEXT in value
+ param res UInt32 in value
+ param arg1 UInt32 in value
+ param arg2 UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ShaderOp3EXT(op, res, arg1, arg2, arg3)
+ return void
+ param op VertexShaderOpEXT in value
+ param res UInt32 in value
+ param arg1 UInt32 in value
+ param arg2 UInt32 in value
+ param arg3 UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SwizzleEXT(res, in, outX, outY, outZ, outW)
+ return void
+ param res UInt32 in value
+ param in UInt32 in value
+ param outX VertexShaderCoordOutEXT in value
+ param outY VertexShaderCoordOutEXT in value
+ param outZ VertexShaderCoordOutEXT in value
+ param outW VertexShaderCoordOutEXT in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+WriteMaskEXT(res, in, outX, outY, outZ, outW)
+ return void
+ param res UInt32 in value
+ param in UInt32 in value
+ param outX VertexShaderWriteMaskEXT in value
+ param outY VertexShaderWriteMaskEXT in value
+ param outZ VertexShaderWriteMaskEXT in value
+ param outW VertexShaderWriteMaskEXT in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+InsertComponentEXT(res, src, num)
+ return void
+ param res UInt32 in value
+ param src UInt32 in value
+ param num UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ExtractComponentEXT(res, src, num)
+ return void
+ param res UInt32 in value
+ param src UInt32 in value
+ param num UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GenSymbolsEXT(datatype, storagetype, range, components)
+ return UInt32
+ param datatype DataTypeEXT in value
+ param storagetype VertexShaderStorageTypeEXT in value
+ param range ParameterRangeEXT in value
+ param components UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SetInvariantEXT(id, type, addr)
+ return void
+ param id UInt32 in value
+ param type ScalarType in value
+ param addr Void in array [COMPSIZE(id/type)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SetLocalConstantEXT(id, type, addr)
+ return void
+ param id UInt32 in value
+ param type ScalarType in value
+ param addr Void in array [COMPSIZE(id/type)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantbvEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr Int8 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantsvEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr Int16 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantivEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr Int32 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantfvEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr Float32 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantdvEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr Float64 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantubvEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr UInt8 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantusvEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr UInt16 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantuivEXT(id, addr)
+ return void
+ param id UInt32 in value
+ param addr UInt32 in array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VariantPointerEXT(id, type, stride, addr)
+ return void
+ param id UInt32 in value
+ param type ScalarType in value
+ param stride UInt32 in value
+ param addr Void in array [COMPSIZE(id/type/stride)]
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+EnableVariantClientStateEXT(id)
+ return void
+ param id UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DisableVariantClientStateEXT(id)
+ return void
+ param id UInt32 in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindLightParameterEXT(light, value)
+ return UInt32
+ param light LightName in value
+ param value LightParameter in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindMaterialParameterEXT(face, value)
+ return UInt32
+ param face MaterialFace in value
+ param value MaterialParameter in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindTexGenParameterEXT(unit, coord, value)
+ return UInt32
+ param unit TextureUnit in value
+ param coord TextureCoordName in value
+ param value TextureGenParameter in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindTextureUnitParameterEXT(unit, value)
+ return UInt32
+ param unit TextureUnit in value
+ param value VertexShaderTextureUnitParameter in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindParameterEXT(value)
+ return UInt32
+ param value VertexShaderParameterEXT in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsVariantEnabledEXT(id, cap)
+ return Boolean
+ param id UInt32 in value
+ param cap VariantCapEXT in value
+ category EXT_vertex_shader
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetVariantBooleanvEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Boolean out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVariantIntegervEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Int32 out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVariantFloatvEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Float32 out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVariantPointervEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data VoidPointer out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetInvariantBooleanvEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Boolean out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetInvariantIntegervEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Int32 out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetInvariantFloatvEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Float32 out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetLocalConstantBooleanvEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Boolean out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetLocalConstantIntegervEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Int32 out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetLocalConstantFloatvEXT(id, value, data)
+ return void
+ param id UInt32 in value
+ param value GetVariantValueEXT in value
+ param data Float32 out array [COMPSIZE(id)]
+ category EXT_vertex_shader
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #249
+# ATI_vertex_streams commands
+#
+###############################################################################
+
+VertexStream1sATI(stream, x)
+ return void
+ param stream VertexStreamATI in value
+ param x Int16 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream1svATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int16 in array [1]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream1iATI(stream, x)
+ return void
+ param stream VertexStreamATI in value
+ param x Int32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream1ivATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int32 in array [1]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream1fATI(stream, x)
+ return void
+ param stream VertexStreamATI in value
+ param x Float32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream1fvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float32 in array [1]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream1dATI(stream, x)
+ return void
+ param stream VertexStreamATI in value
+ param x Float64 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream1dvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float64 in array [1]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2sATI(stream, x, y)
+ return void
+ param stream VertexStreamATI in value
+ param x Int16 in value
+ param y Int16 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2svATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int16 in array [2]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2iATI(stream, x, y)
+ return void
+ param stream VertexStreamATI in value
+ param x Int32 in value
+ param y Int32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2ivATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int32 in array [2]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2fATI(stream, x, y)
+ return void
+ param stream VertexStreamATI in value
+ param x Float32 in value
+ param y Float32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2fvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float32 in array [2]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2dATI(stream, x, y)
+ return void
+ param stream VertexStreamATI in value
+ param x Float64 in value
+ param y Float64 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream2dvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float64 in array [2]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3sATI(stream, x, y, z)
+ return void
+ param stream VertexStreamATI in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3svATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int16 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3iATI(stream, x, y, z)
+ return void
+ param stream VertexStreamATI in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3ivATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int32 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3fATI(stream, x, y, z)
+ return void
+ param stream VertexStreamATI in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3fvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float32 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3dATI(stream, x, y, z)
+ return void
+ param stream VertexStreamATI in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream3dvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float64 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4sATI(stream, x, y, z, w)
+ return void
+ param stream VertexStreamATI in value
+ param x Int16 in value
+ param y Int16 in value
+ param z Int16 in value
+ param w Int16 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4svATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int16 in array [4]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4iATI(stream, x, y, z, w)
+ return void
+ param stream VertexStreamATI in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ param w Int32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4ivATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int32 in array [4]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4fATI(stream, x, y, z, w)
+ return void
+ param stream VertexStreamATI in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4fvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float32 in array [4]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4dATI(stream, x, y, z, w)
+ return void
+ param stream VertexStreamATI in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexStream4dvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float64 in array [4]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3bATI(stream, nx, ny, nz)
+ return void
+ param stream VertexStreamATI in value
+ param nx Int8 in value
+ param ny Int8 in value
+ param nz Int8 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3bvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int8 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3sATI(stream, nx, ny, nz)
+ return void
+ param stream VertexStreamATI in value
+ param nx Int16 in value
+ param ny Int16 in value
+ param nz Int16 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3svATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int16 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3iATI(stream, nx, ny, nz)
+ return void
+ param stream VertexStreamATI in value
+ param nx Int32 in value
+ param ny Int32 in value
+ param nz Int32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3ivATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Int32 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3fATI(stream, nx, ny, nz)
+ return void
+ param stream VertexStreamATI in value
+ param nx Float32 in value
+ param ny Float32 in value
+ param nz Float32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3fvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float32 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3dATI(stream, nx, ny, nz)
+ return void
+ param stream VertexStreamATI in value
+ param nx Float64 in value
+ param ny Float64 in value
+ param nz Float64 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalStream3dvATI(stream, coords)
+ return void
+ param stream VertexStreamATI in value
+ param coords Float64 in array [3]
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ClientActiveVertexStreamATI(stream)
+ return void
+ param stream VertexStreamATI in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexBlendEnviATI(pname, param)
+ return void
+ param pname VertexStreamATI in value
+ param param Int32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexBlendEnvfATI(pname, param)
+ return void
+ param pname VertexStreamATI in value
+ param param Float32 in value
+ category ATI_vertex_streams
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #250 - WGL_I3D_digital_video_control
+# Extension #251 - WGL_I3D_gamma
+# Extension #252 - WGL_I3D_genlock
+# Extension #253 - WGL_I3D_image_buffer
+# Extension #254 - WGL_I3D_swap_frame_lock
+# Extension #255 - WGL_I3D_swap_frame_usage
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #256
+# ATI_element_array commands
+#
+###############################################################################
+
+ElementPointerATI(type, pointer)
+ return void
+ param type ElementPointerTypeATI in value
+ param pointer Void in array [COMPSIZE(type)] retained
+ category ATI_element_array
+ dlflags notlistable
+ glxflags client-handcode client-intercept server-handcode
+ version 1.2
+ offset ?
+
+DrawElementArrayATI(mode, count)
+ return void
+ param mode BeginMode in value
+ param count SizeI in value
+ category ATI_element_array
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.2
+ offset ?
+
+DrawRangeElementArrayATI(mode, start, end, count)
+ return void
+ param mode BeginMode in value
+ param start UInt32 in value
+ param end UInt32 in value
+ param count SizeI in value
+ category ATI_element_array
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.2
+ offset ?
+
+###############################################################################
+#
+# Extension #257
+# SUN_mesh_array commands
+#
+###############################################################################
+
+DrawMeshArraysSUN(mode, first, count, width)
+ return void
+ param mode BeginMode in value
+ param first Int32 in value
+ param count SizeI in value
+ param width SizeI in value
+ category SUN_mesh_array
+ dlflags handcode
+ glxflags client-handcode client-intercept server-handcode
+ version 1.1
+ glxropcode ?
+ offset ?
+
+###############################################################################
+#
+# Extension #258
+# SUN_slice_accum commands
+#
+###############################################################################
+
+# (none)
+newcategory: SUN_slice_accum
+
+###############################################################################
+#
+# Extension #259
+# NV_multisample_filter_hint commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_multisample_filter_hint
+
+###############################################################################
+#
+# Extension #260
+# NV_depth_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_depth_clamp
+
+###############################################################################
+#
+# Extension #261
+# NV_occlusion_query commands
+#
+###############################################################################
+
+GenOcclusionQueriesNV(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 out array [n]
+ dlflags notlistable
+ category NV_occlusion_query
+ version 1.2
+ extension soft WINSOFT NV20
+ glxflags ignore
+
+DeleteOcclusionQueriesNV(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 in array [n]
+ dlflags notlistable
+ category NV_occlusion_query
+ version 1.2
+ extension soft WINSOFT NV20
+ glxflags ignore
+
+IsOcclusionQueryNV(id)
+ return Boolean
+ param id UInt32 in value
+ dlflags notlistable
+ category NV_occlusion_query
+ version 1.2
+ extension soft WINSOFT NV20
+ glxflags ignore
+
+BeginOcclusionQueryNV(id)
+ return void
+ param id UInt32 in value
+ category NV_occlusion_query
+ version 1.2
+ extension soft WINSOFT NV20
+ glxflags ignore
+
+EndOcclusionQueryNV()
+ return void
+ category NV_occlusion_query
+ version 1.2
+ extension soft WINSOFT NV20
+ glxflags ignore
+
+GetOcclusionQueryivNV(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname OcclusionQueryParameterNameNV in value
+ param params Int32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_occlusion_query
+ version 1.2
+ extension soft WINSOFT NV20
+ glxflags ignore
+
+GetOcclusionQueryuivNV(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname OcclusionQueryParameterNameNV in value
+ param params UInt32 out array [COMPSIZE(pname)]
+ dlflags notlistable
+ category NV_occlusion_query
+ version 1.2
+ extension soft WINSOFT NV20
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #262
+# NV_point_sprite commands
+#
+###############################################################################
+
+PointParameteriNV(pname, param)
+ return void
+ param pname PointParameterNameARB in value
+ param param Int32 in value
+ category NV_point_sprite
+ version 1.2
+ extension soft WINSOFT NV20
+ glxropcode 4221
+ alias PointParameteri
+
+PointParameterivNV(pname, params)
+ return void
+ param pname PointParameterNameARB in value
+ param params Int32 in array [COMPSIZE(pname)]
+ category NV_point_sprite
+ version 1.2
+ extension soft WINSOFT NV20
+ glxropcode 4222
+ alias PointParameteriv
+
+###############################################################################
+#
+# Extension #263 - WGL_NV_render_depth_texture
+# Extension #264 - WGL_NV_render_texture_rectangle
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #265
+# NV_texture_shader3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_shader3
+
+###############################################################################
+#
+# Extension #266
+# NV_vertex_program1_1 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program1_1
+
+###############################################################################
+#
+# Extension #267
+# EXT_shadow_funcs commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_shadow_funcs
+
+###############################################################################
+#
+# Extension #268
+# EXT_stencil_two_side commands
+#
+###############################################################################
+
+ActiveStencilFaceEXT(face)
+ return void
+ param face StencilFaceDirection in value
+ category EXT_stencil_two_side
+ version 1.3
+ glxropcode 4220
+ offset 646
+
+###############################################################################
+#
+# Extension #269
+# ATI_text_fragment_shader commands
+#
+###############################################################################
+
+# Uses ARB_vertex_program entry points
+newcategory: ATI_text_fragment_shader
+
+###############################################################################
+#
+# Extension #270
+# APPLE_client_storage commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_client_storage
+
+###############################################################################
+#
+# Extension #271
+# APPLE_element_array commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# @@@ like #256 ATI_element_array
+ElementPointerAPPLE(type, pointer)
+ return void
+ param type ElementPointerTypeATI in value
+ param pointer Void in array [type]
+ category APPLE_element_array
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DrawElementArrayAPPLE(mode, first, count)
+ return void
+ param mode BeginMode in value
+ param first Int32 in value
+ param count SizeI in value
+ category APPLE_element_array
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DrawRangeElementArrayAPPLE(mode, start, end, first, count)
+ return void
+ param mode BeginMode in value
+ param start UInt32 in value
+ param end UInt32 in value
+ param first Int32 in value
+ param count SizeI in value
+ category APPLE_element_array
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiDrawElementArrayAPPLE(mode, first, count, primcount)
+ return void
+ param mode BeginMode in value
+ param first Int32 in array [primcount]
+ param count SizeI in array [primcount]
+ param primcount SizeI in value
+ category APPLE_element_array
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiDrawRangeElementArrayAPPLE(mode, start, end, first, count, primcount)
+ return void
+ param mode BeginMode in value
+ param start UInt32 in value
+ param end UInt32 in value
+ param first Int32 in array [primcount]
+ param count SizeI in array [primcount]
+ param primcount SizeI in value
+ category APPLE_element_array
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #272
+# APPLE_fence commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# @@@ like #222 NV_fence
+GenFencesAPPLE(n, fences)
+ return void
+ param n SizeI in value
+ param fences FenceNV out array [n]
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DeleteFencesAPPLE(n, fences)
+ return void
+ param n SizeI in value
+ param fences FenceNV in array [n]
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SetFenceAPPLE(fence)
+ return void
+ param fence FenceNV in value
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsFenceAPPLE(fence)
+ return Boolean
+ param fence FenceNV in value
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TestFenceAPPLE(fence)
+ return Boolean
+ param fence FenceNV in value
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FinishFenceAPPLE(fence)
+ return void
+ param fence FenceNV in value
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TestObjectAPPLE(object, name)
+ return Boolean
+ param object ObjectTypeAPPLE in value
+ param name UInt32 in value
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FinishObjectAPPLE(object, name)
+ return void
+ param object ObjectTypeAPPLE in value
+ param name Int32 in value
+ category APPLE_fence
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #273
+# APPLE_vertex_array_object commands
+#
+###############################################################################
+
+BindVertexArrayAPPLE(array)
+ return void
+ param array UInt32 in value
+ category APPLE_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias BindVertexArray
+
+DeleteVertexArraysAPPLE(n, arrays)
+ return void
+ param n SizeI in value
+ param arrays UInt32 in array [n]
+ category APPLE_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias DeleteVertexArrays
+
+GenVertexArraysAPPLE(n, arrays)
+ return void
+ param n SizeI in value
+ param arrays UInt32 out array [n]
+ category APPLE_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias GenVertexArray
+
+IsVertexArrayAPPLE(array)
+ return Boolean
+ param array UInt32 in value
+ category APPLE_vertex_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias IsVertexArray
+
+###############################################################################
+#
+# Extension #274
+# APPLE_vertex_array_range commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# @@@ like #190 NV_vertex_array_range,
+VertexArrayRangeAPPLE(length, pointer)
+ return void
+ param length SizeI in value
+ param pointer Void out array [length]
+ category APPLE_vertex_array_range
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FlushVertexArrayRangeAPPLE(length, pointer)
+ return void
+ param length SizeI in value
+ param pointer Void out array [length]
+ category APPLE_vertex_array_range
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexArrayParameteriAPPLE(pname, param)
+ return void
+ param pname VertexArrayPNameAPPLE in value
+ param param Int32 in value
+ category APPLE_vertex_array_range
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #275
+# APPLE_ycbcr_422 commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_ycbcr_422
+
+###############################################################################
+#
+# Extension #276
+# S3_s3tc commands
+#
+###############################################################################
+
+# (none)
+newcategory: S3_s3tc
+
+###############################################################################
+#
+# Extension #277
+# ATI_draw_buffers commands
+#
+###############################################################################
+
+DrawBuffersATI(n, bufs)
+ return void
+ param n SizeI in value
+ param bufs DrawBufferModeATI in array [n]
+ category ATI_draw_buffers
+ version 1.2
+ extension
+ glxropcode 233
+ alias DrawBuffers
+
+###############################################################################
+#
+# Extension #278 - WGL_ATI_pixel_format_float
+#
+###############################################################################
+newcategory: ATI_pixel_format_float
+passthru: /* This is really a WGL extension, but defines some associated GL enums.
+passthru: * ATI does not export "GL_ATI_pixel_format_float" in the GL_EXTENSIONS string.
+passthru: */
+
+###############################################################################
+#
+# Extension #279
+# ATI_texture_env_combine3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: ATI_texture_env_combine3
+
+###############################################################################
+#
+# Extension #280
+# ATI_texture_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: ATI_texture_float
+
+###############################################################################
+#
+# Extension #281 (also WGL_NV_float_buffer)
+# NV_float_buffer commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_float_buffer
+
+###############################################################################
+#
+# Extension #282
+# NV_fragment_program commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+# Some NV_fragment_program entry points are shared with ARB_vertex_program,
+# and are only included in that #define block, for now.
+newcategory: NV_fragment_program
+passthru: /* Some NV_fragment_program entry points are shared with ARB_vertex_program. */
+
+ProgramNamedParameter4fNV(id, len, name, x, y, z, w)
+ return void
+ param id UInt32 in value
+ param len SizeI in value
+ param name UInt8 in array [1]
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category NV_fragment_program
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 682
+
+ProgramNamedParameter4dNV(id, len, name, x, y, z, w)
+ return void
+ param id UInt32 in value
+ param len SizeI in value
+ param name UInt8 in array [1]
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category NV_fragment_program
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 683
+
+ProgramNamedParameter4fvNV(id, len, name, v)
+ return void
+ param id UInt32 in value
+ param len SizeI in value
+ param name UInt8 in array [1]
+ param v Float32 in array [4]
+ category NV_fragment_program
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 684
+
+ProgramNamedParameter4dvNV(id, len, name, v)
+ return void
+ param id UInt32 in value
+ param len SizeI in value
+ param name UInt8 in array [1]
+ param v Float64 in array [4]
+ category NV_fragment_program
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset 685
+
+GetProgramNamedParameterfvNV(id, len, name, params)
+ return void
+ param id UInt32 in value
+ param len SizeI in value
+ param name UInt8 in array [1]
+ param params Float32 out array [4]
+ category NV_fragment_program
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset 686
+
+GetProgramNamedParameterdvNV(id, len, name, params)
+ return void
+ param id UInt32 in value
+ param len SizeI in value
+ param name UInt8 in array [1]
+ param params Float64 out array [4]
+ category NV_fragment_program
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset 687
+
+###############################################################################
+#
+# Extension #283
+# NV_half_float commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+Vertex2hNV(x, y)
+ return void
+ param x Half16NV in value
+ param y Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Vertex2hvNV(v)
+ return void
+ param v Half16NV in array [2]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Vertex3hNV(x, y, z)
+ return void
+ param x Half16NV in value
+ param y Half16NV in value
+ param z Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Vertex3hvNV(v)
+ return void
+ param v Half16NV in array [3]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Vertex4hNV(x, y, z, w)
+ return void
+ param x Half16NV in value
+ param y Half16NV in value
+ param z Half16NV in value
+ param w Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Vertex4hvNV(v)
+ return void
+ param v Half16NV in array [4]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Normal3hNV(nx, ny, nz)
+ return void
+ param nx Half16NV in value
+ param ny Half16NV in value
+ param nz Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Normal3hvNV(v)
+ return void
+ param v Half16NV in array [3]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Color3hNV(red, green, blue)
+ return void
+ param red Half16NV in value
+ param green Half16NV in value
+ param blue Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Color3hvNV(v)
+ return void
+ param v Half16NV in array [3]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Color4hNV(red, green, blue, alpha)
+ return void
+ param red Half16NV in value
+ param green Half16NV in value
+ param blue Half16NV in value
+ param alpha Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Color4hvNV(v)
+ return void
+ param v Half16NV in array [4]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord1hNV(s)
+ return void
+ param s Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord1hvNV(v)
+ return void
+ param v Half16NV in array [1]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord2hNV(s, t)
+ return void
+ param s Half16NV in value
+ param t Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord2hvNV(v)
+ return void
+ param v Half16NV in array [2]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord3hNV(s, t, r)
+ return void
+ param s Half16NV in value
+ param t Half16NV in value
+ param r Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord3hvNV(v)
+ return void
+ param v Half16NV in array [3]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord4hNV(s, t, r, q)
+ return void
+ param s Half16NV in value
+ param t Half16NV in value
+ param r Half16NV in value
+ param q Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoord4hvNV(v)
+ return void
+ param v Half16NV in array [4]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord1hNV(target, s)
+ return void
+ param target TextureUnit in value
+ param s Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord1hvNV(target, v)
+ return void
+ param target TextureUnit in value
+ param v Half16NV in array [1]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord2hNV(target, s, t)
+ return void
+ param target TextureUnit in value
+ param s Half16NV in value
+ param t Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord2hvNV(target, v)
+ return void
+ param target TextureUnit in value
+ param v Half16NV in array [2]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord3hNV(target, s, t, r)
+ return void
+ param target TextureUnit in value
+ param s Half16NV in value
+ param t Half16NV in value
+ param r Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord3hvNV(target, v)
+ return void
+ param target TextureUnit in value
+ param v Half16NV in array [3]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord4hNV(target, s, t, r, q)
+ return void
+ param target TextureUnit in value
+ param s Half16NV in value
+ param t Half16NV in value
+ param r Half16NV in value
+ param q Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MultiTexCoord4hvNV(target, v)
+ return void
+ param target TextureUnit in value
+ param v Half16NV in array [4]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FogCoordhNV(fog)
+ return void
+ param fog Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FogCoordhvNV(fog)
+ return void
+ param fog Half16NV in array [1]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SecondaryColor3hNV(red, green, blue)
+ return void
+ param red Half16NV in value
+ param green Half16NV in value
+ param blue Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SecondaryColor3hvNV(v)
+ return void
+ param v Half16NV in array [3]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexWeighthNV(weight)
+ return void
+ param weight Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexWeighthvNV(weight)
+ return void
+ param weight Half16NV in array [1]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib1hNV(index, x)
+ return void
+ param index UInt32 in value
+ param x Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib1hvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Half16NV in array [1]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib2hNV(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Half16NV in value
+ param y Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib2hvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Half16NV in array [2]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib3hNV(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Half16NV in value
+ param y Half16NV in value
+ param z Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib3hvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Half16NV in array [3]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib4hNV(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Half16NV in value
+ param y Half16NV in value
+ param z Half16NV in value
+ param w Half16NV in value
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttrib4hvNV(index, v)
+ return void
+ param index UInt32 in value
+ param v Half16NV in array [4]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribs1hvNV(index, n, v)
+ return void
+ param index UInt32 in value
+ param n SizeI in value
+ param v Half16NV in array [n]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribs2hvNV(index, n, v)
+ return void
+ param index UInt32 in value
+ param n SizeI in value
+ param v Half16NV in array [n]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribs3hvNV(index, n, v)
+ return void
+ param index UInt32 in value
+ param n SizeI in value
+ param v Half16NV in array [n]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribs4hvNV(index, n, v)
+ return void
+ param index UInt32 in value
+ param n SizeI in value
+ param v Half16NV in array [n]
+ category NV_half_float
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #284
+# NV_pixel_data_range commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+PixelDataRangeNV(target, length, pointer)
+ return void
+ param target PixelDataRangeTargetNV in value
+ param length SizeI in value
+ param pointer Void out array [length]
+ category NV_pixel_data_range
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FlushPixelDataRangeNV(target)
+ return void
+ param target PixelDataRangeTargetNV in value
+ category NV_pixel_data_range
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #285
+# NV_primitive_restart commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+PrimitiveRestartNV()
+ return void
+ category NV_primitive_restart
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+PrimitiveRestartIndexNV(index)
+ return void
+ param index UInt32 in value
+ category NV_primitive_restart
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+
+###############################################################################
+#
+# Extension #286
+# NV_texture_expand_normal commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_texture_expand_normal
+
+###############################################################################
+#
+# Extension #287
+# NV_vertex_program2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program2
+
+###############################################################################
+#
+# Extension #288
+# ATI_map_object_buffer commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+MapObjectBufferATI(buffer)
+ return VoidPointer
+ param buffer UInt32 in value
+ category ATI_map_object_buffer
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+UnmapObjectBufferATI(buffer)
+ return void
+ param buffer UInt32 in value
+ category ATI_map_object_buffer
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #289
+# ATI_separate_stencil commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+StencilOpSeparateATI(face, sfail, dpfail, dppass)
+ return void
+ param face StencilFaceDirection in value
+ param sfail StencilOp in value
+ param dpfail StencilOp in value
+ param dppass StencilOp in value
+ category ATI_separate_stencil
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias StencilOpSeparate
+
+StencilFuncSeparateATI(frontfunc, backfunc, ref, mask)
+ return void
+ param frontfunc StencilFunction in value
+ param backfunc StencilFunction in value
+ param ref ClampedStencilValue in value
+ param mask MaskedStencilValue in value
+ category ATI_separate_stencil
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias StencilFuncSeparate
+
+###############################################################################
+#
+# Extension #290
+# ATI_vertex_attrib_array_object commands
+#
+###############################################################################
+
+# @@ Need to verify/add GLX protocol
+
+VertexAttribArrayObjectATI(index, size, type, normalized, stride, buffer, offset)
+ return void
+ param index UInt32 in value
+ param size Int32 in value
+ param type VertexAttribPointerTypeARB in value
+ param normalized Boolean in value
+ param stride SizeI in value
+ param buffer UInt32 in value
+ param offset UInt32 in value
+ category ATI_vertex_attrib_array_object
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetVertexAttribArrayObjectfvATI(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname ArrayObjectPNameATI in value
+ param params Float32 out array [pname]
+ category ATI_vertex_attrib_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVertexAttribArrayObjectivATI(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname ArrayObjectPNameATI in value
+ param params Int32 out array [pname]
+ category ATI_vertex_attrib_array_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #291 - OpenGL ES only, not in glext.h
+# OES_byte_coordinates commands
+#
+###############################################################################
+
+# void Vertex{234}bOES(T coords)
+# void Vertex{234}bvOES(T *coords)
+# void TexCoord{1234}bOES(T coords)
+# void TexCoord{1234}bvOES(T *coords)
+# void MultiTexCoord{1234}bOES(enum texture, T coords)
+# void MultiTexCoord{1234}bvOES(enum texture, T *coords)
+# All are handcode - mapped to non-byte GLX protocol on client side
+
+# newcategory: OES_byte_coordinates
+
+###############################################################################
+#
+# Extension #292 - OpenGL ES only, not in glext.h
+# OES_fixed_point commands
+#
+###############################################################################
+
+# Too many to list in just a comment - see spec in the extension registry
+# All are handcode - mapped to non-byte GLX protocol on client side
+
+# newcategory: OES_fixed_point
+
+###############################################################################
+#
+# Extension #293 - OpenGL ES only, not in glext.h
+# OES_single_precision commands
+#
+###############################################################################
+
+# void DepthRangefOES(clampf n, clampf f)
+# void FrustumfOES(float l, float r, float b, float t, float n, float f)
+# void OrthofOES(float l, float r, float b, float t, float n, float f)
+# void ClipPlanefOES(enum plane, const float* equation)
+# void glClearDepthfOES(clampd depth)
+# GLX ropcodes 4308-4312 (not respectively, see extension spec)
+# void GetClipPlanefOES(enum plane, float* equation)
+# GLX vendor private 1421
+
+# newcategory: OES_single_precision
+
+###############################################################################
+#
+# Extension #294 - OpenGL ES only, not in glext.h
+# OES_compressed_paletted_texture commands
+#
+###############################################################################
+
+# (none)
+# newcategory: OES_compressed_paletted_texture
+
+###############################################################################
+#
+# Extension #295 - This is an OpenGL ES extension, but also implemented in Mesa
+# OES_read_format commands
+#
+###############################################################################
+
+# (none)
+newcategory: OES_read_format
+
+###############################################################################
+#
+# Extension #296 - OpenGL ES only, not in glext.h
+# OES_query_matrix commands
+#
+###############################################################################
+
+# bitfield queryMatrixxOES(fixed mantissa[16], int exponent[16])
+# All are handcode - mapped to non-byte GLX protocol on client side
+
+# newcategory: OES_query_matrix
+
+###############################################################################
+#
+# Extension #297
+# EXT_depth_bounds_test commands
+#
+###############################################################################
+
+DepthBoundsEXT(zmin, zmax)
+ return void
+ param zmin ClampedFloat64 in value
+ param zmax ClampedFloat64 in value
+ category EXT_depth_bounds_test
+ version 1.2
+ extension
+ glxropcode 4229
+ offset 699
+
+###############################################################################
+#
+# Extension #298
+# EXT_texture_mirror_clamp commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_mirror_clamp
+
+###############################################################################
+#
+# Extension #299
+# EXT_blend_equation_separate commands
+#
+###############################################################################
+
+BlendEquationSeparateEXT(modeRGB, modeAlpha)
+ return void
+ param modeRGB BlendEquationModeEXT in value
+ param modeAlpha BlendEquationModeEXT in value
+ category EXT_blend_equation_separate
+ version 1.2
+ extension
+ glxropcode 4228
+ alias BlendEquationSeparate
+
+###############################################################################
+#
+# Extension #300
+# MESA_pack_invert commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESA_pack_invert
+
+###############################################################################
+#
+# Extension #301
+# MESA_ycbcr_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESA_ycbcr_texture
+
+###############################################################################
+#
+# Extension #301
+# MESA_ycbcr_texture commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESA_ycbcr_texture
+
+###############################################################################
+#
+# Extension #302
+# EXT_pixel_buffer_object commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_pixel_buffer_object
+
+###############################################################################
+#
+# Extension #303
+# NV_fragment_program_option commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fragment_program_option
+
+###############################################################################
+#
+# Extension #304
+# NV_fragment_program2 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fragment_program2
+
+###############################################################################
+#
+# Extension #305
+# NV_vertex_program2_option commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program2_option
+
+###############################################################################
+#
+# Extension #306
+# NV_vertex_program3 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_vertex_program3
+
+###############################################################################
+#
+# Extension #307 - GLX_SGIX_hyperpipe commands
+# Extension #308 - GLX_MESA_agp_offset commands
+# Extension #309 - GL_EXT_texture_compression_dxt1 (OpenGL ES only, subset of _st3c version)
+#
+###############################################################################
+
+# (none)
+# newcategory: EXT_texture_compression_dxt1
+
+###############################################################################
+#
+# Extension #310
+# EXT_framebuffer_object commands
+#
+###############################################################################
+
+IsRenderbufferEXT(renderbuffer)
+ return Boolean
+ param renderbuffer UInt32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxvendorpriv 1422
+ glxflags ignore
+ alias IsRenderbuffer
+
+BindRenderbufferEXT(target, renderbuffer)
+ return void
+ param target RenderbufferTarget in value
+ param renderbuffer UInt32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4316
+ glxflags ignore
+ alias BindRenderbuffer
+
+DeleteRenderbuffersEXT(n, renderbuffers)
+ return void
+ param n SizeI in value
+ param renderbuffers UInt32 in array [n]
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4317
+ glxflags ignore
+ alias DeleteRenderbuffers
+
+GenRenderbuffersEXT(n, renderbuffers)
+ return void
+ param n SizeI in value
+ param renderbuffers UInt32 out array [n]
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxvendorpriv 1423
+ glxflags ignore
+ alias GenRenderbuffers
+
+RenderbufferStorageEXT(target, internalformat, width, height)
+ return void
+ param target RenderbufferTarget in value
+ param internalformat GLenum in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4318
+ glxflags ignore
+ alias RenderbufferStorage
+
+GetRenderbufferParameterivEXT(target, pname, params)
+ return void
+ param target RenderbufferTarget in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_framebuffer_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxvendorpriv 1424
+ glxflags ignore
+ alias GetRenderbufferParameteriv
+
+IsFramebufferEXT(framebuffer)
+ return Boolean
+ param framebuffer UInt32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxvendorpriv 1425
+ glxflags ignore
+ alias IsFramebuffer
+
+BindFramebufferEXT(target, framebuffer)
+ return void
+ param target FramebufferTarget in value
+ param framebuffer UInt32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4319
+ glxflags ignore
+ alias BindFramebuffer
+
+DeleteFramebuffersEXT(n, framebuffers)
+ return void
+ param n SizeI in value
+ param framebuffers UInt32 in array [n]
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4320
+ glxflags ignore
+ alias DeleteFramebuffers
+
+GenFramebuffersEXT(n, framebuffers)
+ return void
+ param n SizeI in value
+ param framebuffers UInt32 out array [n]
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxvendorpriv 1426
+ glxflags ignore
+ alias GenFramebuffers
+
+CheckFramebufferStatusEXT(target)
+ return GLenum
+ param target FramebufferTarget in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxvendorpriv 1427
+ glxflags ignore
+ alias CheckFramebufferStatus
+
+FramebufferTexture1DEXT(target, attachment, textarget, texture, level)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param textarget GLenum in value
+ param texture UInt32 in value
+ param level Int32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4321
+ glxflags ignore
+ alias FramebufferTexture1D
+
+FramebufferTexture2DEXT(target, attachment, textarget, texture, level)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param textarget GLenum in value
+ param texture UInt32 in value
+ param level Int32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4322
+ glxflags ignore
+ alias FramebufferTexture2D
+
+FramebufferTexture3DEXT(target, attachment, textarget, texture, level, zoffset)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param textarget GLenum in value
+ param texture UInt32 in value
+ param level Int32 in value
+ param zoffset Int32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4323
+ glxflags ignore
+ alias FramebufferTexture3D
+
+FramebufferRenderbufferEXT(target, attachment, renderbuffertarget, renderbuffer)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param renderbuffertarget RenderbufferTarget in value
+ param renderbuffer UInt32 in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4324
+ glxflags ignore
+ alias FramebufferRenderbuffer
+
+GetFramebufferAttachmentParameterivEXT(target, attachment, pname, params)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_framebuffer_object
+ dlflags notlistable
+ version 1.2
+ extension
+ glxvendorpriv 1428
+ glxflags ignore
+ alias GetFramebufferAttachmentParameteriv
+
+GenerateMipmapEXT(target)
+ return void
+ param target GLenum in value
+ category EXT_framebuffer_object
+ version 1.2
+ extension
+ glxropcode 4325
+ glxflags ignore
+ alias GenerateMipmap
+
+
+###############################################################################
+#
+# Extension #311
+# GREMEDY_string_marker commands
+#
+###############################################################################
+
+StringMarkerGREMEDY(len, string)
+ return void
+ param len SizeI in value
+ param string Void in array [len]
+ category GREMEDY_string_marker
+ version 1.0
+ extension
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #312
+# EXT_packed_depth_stencil commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_packed_depth_stencil
+
+###############################################################################
+#
+# Extension #313 - WGL_3DL_stereo_control
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #314
+# EXT_stencil_clear_tag commands
+#
+###############################################################################
+
+StencilClearTagEXT(stencilTagBits, stencilClearTag)
+ return void
+ param stencilTagBits SizeI in value
+ param stencilClearTag UInt32 in value
+ category EXT_stencil_clear_tag
+ version 1.5
+ extension
+ glxropcode 4223
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #315
+# EXT_texture_sRGB commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_sRGB
+
+###############################################################################
+#
+# Extension #316
+# EXT_framebuffer_blit commands
+#
+###############################################################################
+
+BlitFramebufferEXT(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
+ return void
+ param srcX0 Int32 in value
+ param srcY0 Int32 in value
+ param srcX1 Int32 in value
+ param srcY1 Int32 in value
+ param dstX0 Int32 in value
+ param dstY0 Int32 in value
+ param dstX1 Int32 in value
+ param dstY1 Int32 in value
+ param mask ClearBufferMask in value
+ param filter GLenum in value
+ category EXT_framebuffer_blit
+ version 1.5
+ glxropcode 4330
+ alias BlitFramebuffer
+
+###############################################################################
+#
+# Extension #317
+# EXT_framebuffer_multisample commands
+#
+###############################################################################
+
+RenderbufferStorageMultisampleEXT(target, samples, internalformat, width, height)
+ return void
+ param target GLenum in value
+ param samples SizeI in value
+ param internalformat GLenum in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_framebuffer_multisample
+ version 1.5
+ glxropcode 4331
+ alias RenderbufferStorageMultisample
+
+###############################################################################
+#
+# Extension #318
+# MESAX_texture_stack commands
+#
+###############################################################################
+
+# (none)
+newcategory: MESAX_texture_stack
+
+###############################################################################
+#
+# Extension #319
+# EXT_timer_query commands
+#
+###############################################################################
+
+GetQueryObjecti64vEXT(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params Int64EXT out array [pname]
+ category EXT_timer_query
+ dlflags notlistable
+ version 1.5
+ glxvendorpriv 1328
+ glxflags ignore
+ offset ?
+
+GetQueryObjectui64vEXT(id, pname, params)
+ return void
+ param id UInt32 in value
+ param pname GLenum in value
+ param params UInt64EXT out array [pname]
+ category EXT_timer_query
+ dlflags notlistable
+ version 1.5
+ glxvendorpriv 1329
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #320
+# EXT_gpu_program_parameters commands
+#
+###############################################################################
+
+ProgramEnvParameters4fvEXT(target, index, count, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Float32 in array [count*4]
+ category EXT_gpu_program_parameters
+ version 1.2
+ glxropcode 4281
+ offset ?
+
+ProgramLocalParameters4fvEXT(target, index, count, params)
+ return void
+ param target ProgramTargetARB in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Float32 in array [count*4]
+ category EXT_gpu_program_parameters
+ version 1.2
+ glxropcode 4282
+ offset ?
+
+###############################################################################
+#
+# Extension #321
+# APPLE_flush_buffer_range commands
+#
+###############################################################################
+
+BufferParameteriAPPLE(target, pname, param)
+ return void
+ param target GLenum in value
+ param pname GLenum in value
+ param param Int32 in value
+ category APPLE_flush_buffer_range
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FlushMappedBufferRangeAPPLE(target, offset, size)
+ return void
+ param target GLenum in value
+ param offset BufferOffset in value
+ param size BufferSize in value
+ category APPLE_flush_buffer_range
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ alias FlushMappedBufferRange
+
+###############################################################################
+#
+# Extension #322
+# NV_gpu_program4 commands
+#
+###############################################################################
+
+ProgramLocalParameterI4iNV(target, index, x, y, z, w)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ param w Int32 in value
+ category NV_gpu_program4
+ version 1.3
+ vectorequiv ProgramLocalParameterI4ivNV
+ glxvectorequiv ProgramLocalParameterI4ivNV
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramLocalParameterI4ivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Int32 in array [4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramLocalParametersI4ivNV(target, index, count, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Int32 in array [count*4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramLocalParameterI4uiNV(target, index, x, y, z, w)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ param z UInt32 in value
+ param w UInt32 in value
+ category NV_gpu_program4
+ version 1.3
+ vectorequiv ProgramLocalParameterI4uivNV
+ glxvectorequiv ProgramLocalParameterI4uivNV
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramLocalParameterI4uivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params UInt32 in array [4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramLocalParametersI4uivNV(target, index, count, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params UInt32 in array [count*4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramEnvParameterI4iNV(target, index, x, y, z, w)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ param w Int32 in value
+ category NV_gpu_program4
+ version 1.3
+ vectorequiv ProgramEnvParameterI4ivNV
+ glxvectorequiv ProgramEnvParameterI4ivNV
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramEnvParameterI4ivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Int32 in array [4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramEnvParametersI4ivNV(target, index, count, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Int32 in array [count*4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramEnvParameterI4uiNV(target, index, x, y, z, w)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ param z UInt32 in value
+ param w UInt32 in value
+ category NV_gpu_program4
+ version 1.3
+ vectorequiv ProgramEnvParameterI4uivNV
+ glxvectorequiv ProgramEnvParameterI4uivNV
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramEnvParameterI4uivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params UInt32 in array [4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramEnvParametersI4uivNV(target, index, count, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params UInt32 in array [count*4]
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+GetProgramLocalParameterIivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Int32 out array [4]
+ dlflags notlistable
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+GetProgramLocalParameterIuivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params UInt32 out array [4]
+ dlflags notlistable
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+GetProgramEnvParameterIivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Int32 out array [4]
+ dlflags notlistable
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+GetProgramEnvParameterIuivNV(target, index, params)
+ return void
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params UInt32 out array [4]
+ dlflags notlistable
+ category NV_gpu_program4
+ version 1.3
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #323
+# NV_geometry_program4 commands
+#
+###############################################################################
+
+ProgramVertexLimitNV(target, limit)
+ return void
+ param target ProgramTarget in value
+ param limit Int32 in value
+ category NV_geometry_program4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+
+FramebufferTextureEXT(target, attachment, texture, level)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ category NV_geometry_program4
+ version 2.0
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ alias FramebufferTextureARB
+
+FramebufferTextureLayerEXT(target, attachment, texture, level, layer)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param layer CheckedInt32 in value
+ category NV_geometry_program4
+ version 2.0
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ alias FramebufferTextureLayer
+
+FramebufferTextureFaceEXT(target, attachment, texture, level, face)
+ return void
+ param target FramebufferTarget in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param face TextureTarget in value
+ category NV_geometry_program4
+ version 2.0
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ alias FramebufferTextureFaceARB
+
+###############################################################################
+#
+# Extension #324
+# EXT_geometry_shader4 commands
+#
+###############################################################################
+
+ProgramParameteriEXT(program, pname, value)
+ return void
+ param program UInt32 in value
+ param pname ProgramParameterPName in value
+ param value Int32 in value
+ category EXT_geometry_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias ProgramParameteriARB
+
+###############################################################################
+#
+# Extension #325
+# NV_vertex_program4 commands
+#
+###############################################################################
+
+VertexAttribI1iEXT(index, x)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI1ivEXT
+ glxvectorequiv VertexAttribI1ivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI1i
+
+VertexAttribI2iEXT(index, x, y)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI2ivEXT
+ glxvectorequiv VertexAttribI2ivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI2i
+
+VertexAttribI3iEXT(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI3ivEXT
+ glxvectorequiv VertexAttribI3ivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI3i
+
+VertexAttribI4iEXT(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ param w Int32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI4ivEXT
+ glxvectorequiv VertexAttribI4ivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4i
+
+VertexAttribI1uiEXT(index, x)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI1uivEXT
+ glxvectorequiv VertexAttribI1uivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI1ui
+
+VertexAttribI2uiEXT(index, x, y)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI2uivEXT
+ glxvectorequiv VertexAttribI2uivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI2ui
+
+VertexAttribI3uiEXT(index, x, y, z)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ param z UInt32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI3uivEXT
+ glxvectorequiv VertexAttribI3uivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI3ui
+
+VertexAttribI4uiEXT(index, x, y, z, w)
+ return void
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ param z UInt32 in value
+ param w UInt32 in value
+ category NV_vertex_program4
+ beginend allow-inside
+ vectorequiv VertexAttribI4uivEXT
+ glxvectorequiv VertexAttribI4uivEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4ui
+
+VertexAttribI1ivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [1]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI1iv
+
+VertexAttribI2ivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [2]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI2iv
+
+VertexAttribI3ivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [3]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI3iv
+
+VertexAttribI4ivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v Int32 in array [4]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4iv
+
+VertexAttribI1uivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [1]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI1uiv
+
+VertexAttribI2uivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [2]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI2uiv
+
+VertexAttribI3uivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [3]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI3uiv
+
+VertexAttribI4uivEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt32 in array [4]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4uiv
+
+VertexAttribI4bvEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v Int8 in array [4]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4bv
+
+VertexAttribI4svEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v Int16 in array [4]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4sv
+
+VertexAttribI4ubvEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt8 in array [4]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4ubv
+
+VertexAttribI4usvEXT(index, v)
+ return void
+ param index UInt32 in value
+ param v UInt16 in array [4]
+ category NV_vertex_program4
+ beginend allow-inside
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribI4usv
+
+VertexAttribIPointerEXT(index, size, type, stride, pointer)
+ return void
+ param index UInt32 in value
+ param size Int32 in value
+ param type VertexAttribEnum in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category NV_vertex_program4
+ dlflags notlistable
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias VertexAttribIPointer
+
+GetVertexAttribIivEXT(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnum in value
+ param params Int32 out array [1]
+ category NV_vertex_program4
+ dlflags notlistable
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias GetVertexAttribIiv
+
+GetVertexAttribIuivEXT(index, pname, params)
+ return void
+ param index UInt32 in value
+ param pname VertexAttribEnum in value
+ param params UInt32 out array [1]
+ category NV_vertex_program4
+ dlflags notlistable
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ alias GetVertexAttribIuiv
+
+###############################################################################
+#
+# Extension #326
+# EXT_gpu_shader4 commands
+#
+###############################################################################
+
+GetUniformuivEXT(program, location, params)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param params UInt32 out array [COMPSIZE(program/location)]
+ category EXT_gpu_shader4
+ dlflags notlistable
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias GetUniformuiv
+
+BindFragDataLocationEXT(program, color, name)
+ return void
+ param program UInt32 in value
+ param color UInt32 in value
+ param name Char in array [COMPSIZE(name)]
+ category EXT_gpu_shader4
+ dlflags notlistable
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias BindFragDataLocation
+
+GetFragDataLocationEXT(program, name)
+ return Int32
+ param program UInt32 in value
+ param name Char in array [COMPSIZE(name)]
+ category EXT_gpu_shader4
+ dlflags notlistable
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias GetFragDataLocation
+
+Uniform1uiEXT(location, v0)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform1ui
+
+Uniform2uiEXT(location, v0, v1)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform2ui
+
+Uniform3uiEXT(location, v0, v1, v2)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ param v2 UInt32 in value
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform3ui
+
+Uniform4uiEXT(location, v0, v1, v2, v3)
+ return void
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ param v2 UInt32 in value
+ param v3 UInt32 in value
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform4ui
+
+Uniform1uivEXT(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count]
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform1uiv
+
+Uniform2uivEXT(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*2]
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform2uiv
+
+Uniform3uivEXT(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*3]
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform3uiv
+
+Uniform4uivEXT(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*4]
+ category EXT_gpu_shader4
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias Uniform4uiv
+
+###############################################################################
+#
+# Extension #327
+# EXT_draw_instanced commands
+#
+###############################################################################
+
+DrawArraysInstancedEXT(mode, start, count, primcount)
+ return void
+ param mode BeginMode in value
+ param start Int32 in value
+ param count SizeI in value
+ param primcount SizeI in value
+ category EXT_draw_instanced
+ version 2.0
+ extension soft WINSOFT
+ dlflags notlistable
+ vectorequiv ArrayElement
+ glfflags ignore
+ glxflags ignore
+ alias DrawArraysInstancedARB
+
+DrawElementsInstancedEXT(mode, count, type, indices, primcount)
+ return void
+ param mode BeginMode in value
+ param count SizeI in value
+ param type DrawElementsType in value
+ param indices Void in array [COMPSIZE(count/type)]
+ param primcount SizeI in value
+ category EXT_draw_instanced
+ version 2.0
+ extension soft WINSOFT
+ dlflags notlistable
+ vectorequiv ArrayElement
+ glfflags ignore
+ glxflags ignore
+ alias DrawElementsInstancedARB
+
+###############################################################################
+#
+# Extension #328
+# EXT_packed_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_packed_float
+
+###############################################################################
+#
+# Extension #329
+# EXT_texture_array commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_array
+
+###############################################################################
+#
+# Extension #330
+# EXT_texture_buffer_object commands
+#
+###############################################################################
+
+TexBufferEXT(target, internalformat, buffer)
+ return void
+ param target TextureTarget in value
+ param internalformat GLenum in value
+ param buffer UInt32 in value
+ category EXT_texture_buffer_object
+ version 2.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ alias TexBufferARB
+
+###############################################################################
+#
+# Extension #331
+# EXT_texture_compression_latc commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_compression_latc
+
+###############################################################################
+#
+# Extension #332
+# EXT_texture_compression_rgtc commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_compression_rgtc
+
+###############################################################################
+#
+# Extension #333
+# EXT_texture_shared_exponent commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_shared_exponent
+
+###############################################################################
+#
+# Extension #334
+# NV_depth_buffer_float commands
+#
+###############################################################################
+
+DepthRangedNV(zNear, zFar)
+ return void
+ param zNear Float64 in value
+ param zFar Float64 in value
+ category NV_depth_buffer_float
+ extension soft WINSOFT NV50
+ version 2.0
+ glfflags ignore
+ glxflags ignore
+
+ClearDepthdNV(depth)
+ return void
+ param depth Float64 in value
+ category NV_depth_buffer_float
+ extension soft WINSOFT NV50
+ version 2.0
+ glfflags ignore
+ glxflags ignore
+
+DepthBoundsdNV(zmin, zmax)
+ return void
+ param zmin Float64 in value
+ param zmax Float64 in value
+ category NV_depth_buffer_float
+ extension soft WINSOFT NV50
+ version 2.0
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #335
+# NV_fragment_program4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_fragment_program4
+
+###############################################################################
+#
+# Extension #336
+# NV_framebuffer_multisample_coverage commands
+#
+###############################################################################
+
+RenderbufferStorageMultisampleCoverageNV(target, coverageSamples, colorSamples, internalformat, width, height)
+ return void
+ param target RenderbufferTarget in value
+ param coverageSamples SizeI in value
+ param colorSamples SizeI in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ category NV_framebuffer_multisample_coverage
+ version 1.5
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #337
+# EXT_framebuffer_sRGB commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_framebuffer_sRGB
+
+###############################################################################
+#
+# Extension #338
+# NV_geometry_shader4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_geometry_shader4
+
+###############################################################################
+#
+# Extension #339
+# NV_parameter_buffer_object commands
+#
+###############################################################################
+
+ProgramBufferParametersfvNV(target, buffer, index, count, params)
+ return void
+ param target ProgramTarget in value
+ param buffer UInt32 in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Float32 in array [count]
+ category NV_parameter_buffer_object
+ version 1.2
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramBufferParametersIivNV(target, buffer, index, count, params)
+ return void
+ param target ProgramTarget in value
+ param buffer UInt32 in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Int32 in array [count]
+ category NV_parameter_buffer_object
+ version 1.2
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ProgramBufferParametersIuivNV(target, buffer, index, count, params)
+ return void
+ param target ProgramTarget in value
+ param buffer UInt32 in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params UInt32 in array [count]
+ category NV_parameter_buffer_object
+ version 1.2
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #340
+# EXT_draw_buffers2 commands
+#
+###############################################################################
+
+ColorMaskIndexedEXT(index, r, g, b, a)
+ return void
+ param index UInt32 in value
+ param r Boolean in value
+ param g Boolean in value
+ param b Boolean in value
+ param a Boolean in value
+ category EXT_draw_buffers2
+ version 2.0
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias ColorMaski
+
+GetBooleanIndexedvEXT(target, index, data)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param data Boolean out array [COMPSIZE(target)]
+ category EXT_draw_buffers2
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias GetBooleani_v
+
+GetIntegerIndexedvEXT(target, index, data)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param data Int32 out array [COMPSIZE(target)]
+ category EXT_draw_buffers2
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias GetIntegeri_v
+
+EnableIndexedEXT(target, index)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ category EXT_draw_buffers2
+ version 2.0
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias Enablei
+
+DisableIndexedEXT(target, index)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ category EXT_draw_buffers2
+ version 2.0
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias Disablei
+
+IsEnabledIndexedEXT(target, index)
+ return Boolean
+ param target GLenum in value
+ param index UInt32 in value
+ category EXT_draw_buffers2
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias IsEnabledi
+
+###############################################################################
+#
+# Extension #341
+# NV_transform_feedback commands
+#
+###############################################################################
+
+BeginTransformFeedbackNV(primitiveMode)
+ return void
+ param primitiveMode GLenum in value
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias BeginTransformFeedback
+
+EndTransformFeedbackNV()
+ return void
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias EndTransformFeedback
+
+TransformFeedbackAttribsNV(count, attribs, bufferMode)
+ return void
+ param count UInt32 in value
+ param attribs Int32 in array [COMPSIZE(count)]
+ param bufferMode GLenum in value
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+
+BindBufferRangeNV(target, index, buffer, offset, size)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ param offset BufferOffset in value
+ param size BufferSize in value
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias BindBufferRange
+
+BindBufferOffsetNV(target, index, buffer, offset)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ param offset BufferOffset in value
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias BindBufferOffsetEXT
+
+BindBufferBaseNV(target, index, buffer)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias BindBufferBase
+
+TransformFeedbackVaryingsNV(program, count, varyings, bufferMode)
+ return void
+ param program UInt32 in value
+ param count SizeI in value
+ param varyings CharPointer in array [count]
+ param bufferMode GLenum in value
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias TransformFeedbackVaryings
+
+ActiveVaryingNV(program, name)
+ return void
+ param program UInt32 in value
+ param name Char in array [COMPSIZE(name)]
+ category NV_transform_feedback
+ version 1.5
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+
+GetVaryingLocationNV(program, name)
+ return Int32
+ param program UInt32 in value
+ param name Char in array [COMPSIZE(name)]
+ category NV_transform_feedback
+ dlflags notlistable
+ version 1.5
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+
+GetActiveVaryingNV(program, index, bufSize, length, size, type, name)
+ return void
+ param program UInt32 in value
+ param index UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param size SizeI out array [1]
+ param type GLenum out array [1]
+ param name Char out array [COMPSIZE(program/index/bufSize)]
+ category NV_transform_feedback
+ dlflags notlistable
+ version 1.5
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+
+GetTransformFeedbackVaryingNV(program, index, location)
+ return void
+ param program UInt32 in value
+ param index UInt32 in value
+ param location Int32 out array [1]
+ category NV_transform_feedback
+ dlflags notlistable
+ version 1.5
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias GetTransformFeedbackVarying
+
+###############################################################################
+#
+# Extension #342
+# EXT_bindable_uniform commands
+#
+###############################################################################
+
+UniformBufferEXT(program, location, buffer)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param buffer UInt32 in value
+ category EXT_bindable_uniform
+ version 2.0
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+GetUniformBufferSizeEXT(program, location)
+ return Int32
+ param program UInt32 in value
+ param location Int32 in value
+ category EXT_bindable_uniform
+ dlflags notlistable
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+
+GetUniformOffsetEXT(program, location)
+ return BufferOffset
+ param program UInt32 in value
+ param location Int32 in value
+ category EXT_bindable_uniform
+ dlflags notlistable
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #343
+# EXT_texture_integer extension commands
+#
+###############################################################################
+
+TexParameterIivEXT(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params Int32 in array [COMPSIZE(pname)]
+ category EXT_texture_integer
+ version 2.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ alias TexParameterIiv
+
+TexParameterIuivEXT(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params UInt32 in array [COMPSIZE(pname)]
+ category EXT_texture_integer
+ version 2.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ alias TexParameterIuiv
+
+GetTexParameterIivEXT(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_texture_integer
+ dlflags notlistable
+ version 1.0
+ version 2.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ alias GetTexParameterIiv
+
+GetTexParameterIuivEXT(target, pname, params)
+ return void
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params UInt32 out array [COMPSIZE(pname)]
+ category EXT_texture_integer
+ dlflags notlistable
+ version 1.0
+ version 2.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ alias GetTexParameterIuiv
+
+ClearColorIiEXT(red, green, blue, alpha)
+ return void
+ param red Int32 in value
+ param green Int32 in value
+ param blue Int32 in value
+ param alpha Int32 in value
+ category EXT_texture_integer
+ version 2.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+ClearColorIuiEXT(red, green, blue, alpha)
+ return void
+ param red UInt32 in value
+ param green UInt32 in value
+ param blue UInt32 in value
+ param alpha UInt32 in value
+ category EXT_texture_integer
+ version 2.0
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #344 - GLX_EXT_texture_from_pixmap
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #345
+# GREMEDY_frame_terminator commands
+#
+###############################################################################
+
+FrameTerminatorGREMEDY()
+ return void
+ category GREMEDY_frame_terminator
+ version 1.0
+ extension
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #346
+# NV_conditional_render commands
+#
+###############################################################################
+
+BeginConditionalRenderNV(id, mode)
+ return void
+ param id UInt32 in value
+ param mode TypeEnum in value
+ category NV_conditional_render
+ glfflags ignore
+ glxflags ignore
+ alias BeginConditionalRender
+
+EndConditionalRenderNV()
+ return void
+ category NV_conditional_render
+ glfflags ignore
+ glxflags ignore
+ alias EndConditionalRender
+
+###############################################################################
+#
+# Extension #347
+# NV_present_video commands
+#
+###############################################################################
+
+# TBD
+# void PresentFrameKeyedNV(uint video_slot, uint64EXT minPresentTime,
+# uint beginPresentTimeId, uint
+# presentDurationId, enum type, enum target0,
+# uint fill0, uint key0, enum target1, uint
+# fill1, uint key1);
+#
+# void PresentFrameDualFillNV(uint video_slot, uint64EXT
+# minPresentTime, uint beginPresentTimeId,
+# uint presentDurationId, enum type, enum
+# target0, uint fill0, enum target1, uint
+# fill1, enum target2, uint fill2, enum
+# target3, uint fill3);
+#
+# void GetVideoivNV(uint video_slot, enum pname, int *params);
+# void GetVideouivNV(uint video_slot, enum pname, uint *params);
+# void GetVideoi64vNV(uint video_slot, enum pname, int64EXT *params);
+# void GetVideoui64vNV(uint video_slot, enum pname, uint64EXT *params);
+# void VideoParameterivNV(uint video_slot, enum pname, const int *params);
+
+PresentFrameKeyedNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, key0, target1, fill1, key1)
+ return void
+ param video_slot UInt32 in value
+ param minPresentTime UInt64EXT in value
+ param beginPresentTimeId UInt32 in value
+ param presentDurationId UInt32 in value
+ param type GLenum in value
+ param target0 GLenum in value
+ param fill0 UInt32 in value
+ param key0 UInt32 in value
+ param target1 GLenum in value
+ param fill1 UInt32 in value
+ param key1 UInt32 in value
+ category NV_present_video
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+PresentFrameDualFillNV(video_slot, minPresentTime, beginPresentTimeId, presentDurationId, type, target0, fill0, target1, fill1, target2, fill2, target3, fill3)
+ return void
+ param video_slot UInt32 in value
+ param minPresentTime UInt64EXT in value
+ param beginPresentTimeId UInt32 in value
+ param presentDurationId UInt32 in value
+ param type GLenum in value
+ param target0 GLenum in value
+ param fill0 UInt32 in value
+ param target1 GLenum in value
+ param fill1 UInt32 in value
+ param target2 GLenum in value
+ param fill2 UInt32 in value
+ param target3 GLenum in value
+ param fill3 UInt32 in value
+ category NV_present_video
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetVideoivNV(video_slot, pname, params)
+ return void
+ param video_slot UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category NV_present_video
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVideouivNV(video_slot, pname, params)
+ return void
+ param video_slot UInt32 in value
+ param pname GLenum in value
+ param params UInt32 out array [COMPSIZE(pname)]
+ category NV_present_video
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVideoi64vNV(video_slot, pname, params)
+ return void
+ param video_slot UInt32 in value
+ param pname GLenum in value
+ param params Int64EXT out array [COMPSIZE(pname)]
+ category NV_present_video
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVideoui64vNV(video_slot, pname, params)
+ return void
+ param video_slot UInt32 in value
+ param pname GLenum in value
+ param params UInt64EXT out array [COMPSIZE(pname)]
+ category NV_present_video
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #348 - GLX_NV_video_out
+# Extension #349 - WGL_NV_video_out
+# Extension #350 - GLX_NV_swap_group
+# Extension #351 - WGL_NV_swap_group
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #352
+# EXT_transform_feedback commands
+#
+###############################################################################
+
+# From EXT_draw_buffers2: GetBooleanIndexedvEXT / GetIntegerIndexedvEXT
+
+BeginTransformFeedbackEXT(primitiveMode)
+ return void
+ param primitiveMode GLenum in value
+ category EXT_transform_feedback
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias BeginTransformFeedback
+
+EndTransformFeedbackEXT()
+ return void
+ category EXT_transform_feedback
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias EndTransformFeedback
+
+BindBufferRangeEXT(target, index, buffer, offset, size)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ param offset BufferOffset in value
+ param size BufferSize in value
+ category EXT_transform_feedback
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias BindBufferRange
+
+# Not promoted to the OpenGL 3.0 core
+BindBufferOffsetEXT(target, index, buffer, offset)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ param offset BufferOffset in value
+ category EXT_transform_feedback
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+
+BindBufferBaseEXT(target, index, buffer)
+ return void
+ param target GLenum in value
+ param index UInt32 in value
+ param buffer UInt32 in value
+ category EXT_transform_feedback
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias BindBufferBase
+
+TransformFeedbackVaryingsEXT(program, count, varyings, bufferMode)
+ return void
+ param program UInt32 in value
+ param count SizeI in value
+ param varyings CharPointer in array [count]
+ param bufferMode GLenum in value
+ category EXT_transform_feedback
+ version 2.0
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+ alias TransformFeedbackVaryings
+
+GetTransformFeedbackVaryingEXT(program, index, bufSize, length, size, type, name)
+ return void
+ param program UInt32 in value
+ param index UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param size SizeI out array [1]
+ param type GLenum out array [1]
+ param name Char out array [COMPSIZE(length)]
+ category EXT_transform_feedback
+ dlflags notlistable
+ version 2.0
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ alias GetTransformFeedbackVarying
+
+###############################################################################
+#
+# Extension #353
+# EXT_direct_state_access commands
+#
+###############################################################################
+
+# New 1.1 client commands
+
+ClientAttribDefaultEXT(mask)
+ return void
+ param mask ClientAttribMask in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore ### client-handcode client-intercept server-handcode
+
+PushClientAttribDefaultEXT(mask)
+ return void
+ param mask ClientAttribMask in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore ### client-handcode client-intercept server-handcode
+
+# New 1.0 matrix commands
+
+MatrixLoadfEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float32 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixLoaddEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float64 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixMultfEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float32 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixMultdEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float64 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixLoadIdentityEXT(mode)
+ return void
+ param mode MatrixMode in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixRotatefEXT(mode, angle, x, y, z)
+ return void
+ param mode MatrixMode in value
+ param angle Float32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixRotatedEXT(mode, angle, x, y, z)
+ return void
+ param mode MatrixMode in value
+ param angle Float64 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixScalefEXT(mode, x, y, z)
+ return void
+ param mode MatrixMode in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixScaledEXT(mode, x, y, z)
+ return void
+ param mode MatrixMode in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixTranslatefEXT(mode, x, y, z)
+ return void
+ param mode MatrixMode in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixTranslatedEXT(mode, x, y, z)
+ return void
+ param mode MatrixMode in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixFrustumEXT(mode, left, right, bottom, top, zNear, zFar)
+ return void
+ param mode MatrixMode in value
+ param left Float64 in value
+ param right Float64 in value
+ param bottom Float64 in value
+ param top Float64 in value
+ param zNear Float64 in value
+ param zFar Float64 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixOrthoEXT(mode, left, right, bottom, top, zNear, zFar)
+ return void
+ param mode MatrixMode in value
+ param left Float64 in value
+ param right Float64 in value
+ param bottom Float64 in value
+ param top Float64 in value
+ param zNear Float64 in value
+ param zFar Float64 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixPopEXT(mode)
+ return void
+ param mode MatrixMode in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixPushEXT(mode)
+ return void
+ param mode MatrixMode in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+# New 1.3 matrix transpose commands
+
+MatrixLoadTransposefEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float32 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixLoadTransposedEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float64 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixMultTransposefEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float32 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MatrixMultTransposedEXT(mode, m)
+ return void
+ param mode MatrixMode in value
+ param m Float64 in array [16]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+# New 1.1 texture object commands
+
+TextureParameterfEXT(texture, target, pname, param)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param param CheckedFloat32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ vectorequiv TextureParameterfvEXT
+
+TextureParameterfvEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+TextureParameteriEXT(texture, target, pname, param)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param param CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ vectorequiv TextureParameterivEXT
+
+TextureParameterivEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+TextureImage1DEXT(texture, target, level, internalformat, width, border, format, type, pixels)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags capture-handcode decode-handcode pixel-unpack
+
+TextureImage2DEXT(texture, target, level, internalformat, width, height, border, format, type, pixels)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags capture-handcode decode-handcode pixel-unpack
+
+TextureSubImage1DEXT(texture, target, level, xoffset, width, format, type, pixels)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### EXT client-handcode server-handcode
+ glxflags ignore
+ extension soft WINSOFT
+ glfflags ignore
+
+TextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, type, pixels)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### EXT client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags ignore
+
+CopyTextureImage1DEXT(texture, target, level, internalformat, x, y, width, border)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+CopyTextureImage2DEXT(texture, target, level, internalformat, x, y, width, height, border)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+CopyTextureSubImage1DEXT(texture, target, level, xoffset, x, y, width)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+CopyTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, x, y, width, height)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+# New 1.1 texture object queries
+
+GetTextureImageEXT(texture, target, level, format, type, pixels)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void out array [COMPSIZE(target/level/format/type)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore ### client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags capture-execute capture-handcode decode-handcode pixel-pack
+
+GetTextureParameterfvEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetTextureParameterivEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetTextureLevelParameterfvEXT(texture, target, level, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param pname GetTextureParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetTextureLevelParameterivEXT(texture, target, level, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+# New 1.2 3D texture object commands
+
+TextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, format, type, pixels)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode EXT
+ extension soft WINSOFT
+ glfflags ignore
+
+TextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode EXT
+ extension soft WINSOFT
+ glfflags ignore
+
+CopyTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, x, y, width, height)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_direct_state_access
+ glxflags ignore ### EXT
+ extension soft WINSOFT
+ glfflags ignore
+
+# New 1.1 multitexture commands
+
+MultiTexParameterfEXT(texunit, target, pname, param)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param param CheckedFloat32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ vectorequiv MultiTexParameterfvEXT
+
+MultiTexParameterfvEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MultiTexParameteriEXT(texunit, target, pname, param)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param param CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ vectorequiv MultiTexParameterivEXT
+
+MultiTexParameterivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+
+MultiTexImage1DEXT(texunit, target, level, internalformat, width, border, format, type, pixels)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags capture-handcode decode-handcode pixel-unpack
+
+MultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, format, type, pixels)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags capture-handcode decode-handcode pixel-unpack
+
+MultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, type, pixels)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### EXT client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags ignore
+
+MultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, type, pixels)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### EXT client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags ignore
+
+CopyMultiTexImage1DEXT(texunit, target, level, internalformat, x, y, width, border)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+CopyMultiTexImage2DEXT(texunit, target, level, internalformat, x, y, width, height, border)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+CopyMultiTexSubImage1DEXT(texunit, target, level, xoffset, x, y, width)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+CopyMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, x, y, width, height)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+# New 1.1 multitexture queries
+
+GetMultiTexImageEXT(texunit, target, level, format, type, pixels)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void out array [COMPSIZE(target/level/format/type)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore ### client-handcode server-handcode
+ extension soft WINSOFT
+ glfflags capture-execute capture-handcode decode-handcode pixel-pack
+
+GetMultiTexParameterfvEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetMultiTexParameterivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetMultiTexLevelParameterfvEXT(texunit, target, level, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param pname GetTextureParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetMultiTexLevelParameterivEXT(texunit, target, level, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+# New 1.2 3D multitexture commands
+
+MultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, format, type, pixels)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode EXT
+ extension soft WINSOFT
+ glfflags ignore
+
+MultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param type PixelType in value
+ param pixels Void in array [COMPSIZE(format/type/width/height/depth)]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode EXT
+ extension soft WINSOFT
+ glfflags ignore
+
+CopyMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, x, y, width, height)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param x WinCoord in value
+ param y WinCoord in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_direct_state_access
+ glxflags ignore ### EXT
+ extension soft WINSOFT
+ glfflags ignore
+
+# New 1.2.1 multitexture texture commands
+
+BindMultiTextureEXT(texunit, target, texture)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param texture Texture in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore ### EXT
+
+EnableClientStateIndexedEXT(array, index)
+ return void
+ param array EnableCap in value
+ param index UInt32 in value
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore ### client-handcode client-intercept server-handcode
+ extension soft WINSOFT
+
+DisableClientStateIndexedEXT(array, index)
+ return void
+ param array EnableCap in value
+ param index UInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore ### client-handcode client-intercept server-handcode
+
+MultiTexCoordPointerEXT(texunit, size, type, stride, pointer)
+ return void
+ param texunit TextureUnit in value
+ param size Int32 in value
+ param type TexCoordPointerType in value
+ param stride SizeI in value
+ param pointer Void in array [COMPSIZE(size/type/stride)] retained
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore ### client-handcode client-intercept server-handcode
+ extension soft WINSOFT
+ glfflags ignore
+
+MultiTexEnvfEXT(texunit, target, pname, param)
+ return void
+ param texunit TextureUnit in value
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param param CheckedFloat32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ vectorequiv MultiTexEnvfvEXT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexEnvfvEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexEnviEXT(texunit, target, pname, param)
+ return void
+ param texunit TextureUnit in value
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param param CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ vectorequiv MultiTexEnvivEXT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexEnvivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexGendEXT(texunit, coord, pname, param)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param param Float64 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ vectorequiv MultiTexGendvEXT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexGendvEXT(texunit, coord, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Float64 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexGenfEXT(texunit, coord, pname, param)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param param CheckedFloat32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ vectorequiv MultiTexGenfvEXT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexGenfvEXT(texunit, coord, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params CheckedFloat32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexGeniEXT(texunit, coord, pname, param)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param param CheckedInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ vectorequiv MultiTexGenivEXT
+ glxflags ignore
+ glfflags gl-enum
+
+MultiTexGenivEXT(texunit, coord, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags gl-enum
+
+# New 1.2.1 multitexture texture queries
+
+GetMultiTexEnvfvEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetMultiTexEnvivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureEnvTarget in value
+ param pname TextureEnvParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetMultiTexGendvEXT(texunit, coord, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Float64 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetMultiTexGenfvEXT(texunit, coord, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+GetMultiTexGenivEXT(texunit, coord, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param coord TextureCoordName in value
+ param pname TextureGenParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+# From EXT_draw_buffers2
+# EnableIndexedEXT
+# DisableIndexedEXT
+# IsEnabledIndexedEXT
+
+GetFloatIndexedvEXT(target, index, data)
+ return void
+ param target TypeEnum in value
+ param index UInt32 in value
+ param data Float32 out array [COMPSIZE(target)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+
+GetDoubleIndexedvEXT(target, index, data)
+ return void
+ param target TypeEnum in value
+ param index UInt32 in value
+ param data Float64 out array [COMPSIZE(target)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+
+GetPointerIndexedvEXT(target, index, data)
+ return void
+ param target TypeEnum in value
+ param index UInt32 in value
+ param data VoidPointer out array [COMPSIZE(target)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+ extension soft WINSOFT
+
+# New compressed texture commands
+
+CompressedTextureImage3DEXT(texture, target, level, internalformat, width, height, depth, border, imageSize, bits)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedTextureImage2DEXT(texture, target, level, internalformat, width, height, border, imageSize, bits)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedTextureImage1DEXT(texture, target, level, internalformat, width, border, imageSize, bits)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedTextureSubImage3DEXT(texture, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedTextureSubImage2DEXT(texture, target, level, xoffset, yoffset, width, height, format, imageSize, bits)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedTextureSubImage1DEXT(texture, target, level, xoffset, width, format, imageSize, bits)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+# New compressed texture query
+
+GetCompressedTextureImageEXT(texture, target, lod, img)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param lod CheckedInt32 in value
+ param img Void out array [COMPSIZE(target/lod)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore ### server-handcode
+ extension soft WINSOFT
+
+# New compressed multitexture commands
+
+CompressedMultiTexImage3DEXT(texunit, target, level, internalformat, width, height, depth, border, imageSize, bits)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedMultiTexImage2DEXT(texunit, target, level, internalformat, width, height, border, imageSize, bits)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedMultiTexImage1DEXT(texunit, target, level, internalformat, width, border, imageSize, bits)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param internalformat TextureInternalFormat in value
+ param width SizeI in value
+ param border CheckedInt32 in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedMultiTexSubImage3DEXT(texunit, target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, bits)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedMultiTexSubImage2DEXT(texunit, target, level, xoffset, yoffset, width, height, format, imageSize, bits)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param yoffset CheckedInt32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+CompressedMultiTexSubImage1DEXT(texunit, target, level, xoffset, width, format, imageSize, bits)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param level CheckedInt32 in value
+ param xoffset CheckedInt32 in value
+ param width SizeI in value
+ param format PixelFormat in value
+ param imageSize SizeI in value
+ param bits Void in array [imageSize]
+ category EXT_direct_state_access
+ dlflags handcode
+ glxflags ignore ### client-handcode server-handcode
+ glfflags ignore
+ extension soft WINSOFT
+
+# New compressed multitexture query
+
+GetCompressedMultiTexImageEXT(texunit, target, lod, img)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param lod CheckedInt32 in value
+ param img Void out array [COMPSIZE(target/lod)]
+ category EXT_direct_state_access
+ dlflags notlistable
+ glxflags ignore ### server-handcode
+ extension soft WINSOFT
+
+# New ARB assembly program named commands
+
+NamedProgramStringEXT(program, target, format, len, string)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param format ProgramFormat in value
+ param len SizeI in value
+ param string Void in array [len]
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore ### client-handcode server-handcode EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4dEXT(program, target, index, x, y, z, w)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x Float64 in value
+ param y Float64 in value
+ param z Float64 in value
+ param w Float64 in value
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ vectorequiv NamedProgramLocalParameter4dvEXT
+ glxvectorequiv NamedProgramLocalParameter4dvEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4dvEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Float64 in array [4]
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4fEXT(program, target, index, x, y, z, w)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x Float32 in value
+ param y Float32 in value
+ param z Float32 in value
+ param w Float32 in value
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ vectorequiv NamedProgramLocalParameter4fvEXT
+ glxvectorequiv NamedProgramLocalParameter4fvEXT
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+NamedProgramLocalParameter4fvEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Float32 in array [4]
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+# New ARB assembly program named queries
+
+GetNamedProgramLocalParameterdvEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Float64 out array [4]
+ dlflags notlistable
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### client-handcode server-handcode EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+GetNamedProgramLocalParameterfvEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Float32 out array [4]
+ dlflags notlistable
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### client-handcode server-handcode EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+GetNamedProgramivEXT(program, target, pname, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param pname ProgramProperty in value
+ param params Int32 out array [1]
+ dlflags notlistable
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### client-handcode server-handcode EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+GetNamedProgramStringEXT(program, target, pname, string)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param pname ProgramStringProperty in value
+ param string Void out array [COMPSIZE(program,pname)]
+ dlflags notlistable
+ category EXT_direct_state_access
+ subcategory ARB_vertex_program
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore ### client-handcode server-handcode EXT
+ glextmask GL_MASK_ARB_vertex_program|GL_MASK_ARB_fragment_program
+
+# New EXT_gpu_program_parameters command
+
+NamedProgramLocalParameters4fvEXT(program, target, index, count, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Float32 in array [count*4]
+ category EXT_direct_state_access
+ subcategory EXT_gpu_program_parameters
+ extension soft WINSOFT NV10
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_gpu_program_parameters
+
+# New NV_gpu_program4 commands
+
+NamedProgramLocalParameterI4iEXT(program, target, index, x, y, z, w)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x Int32 in value
+ param y Int32 in value
+ param z Int32 in value
+ param w Int32 in value
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ vectorequiv NamedProgramLocalParameterI4ivEXT
+ glxvectorequiv NamedProgramLocalParameterI4ivEXT
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParameterI4ivEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Int32 in array [4]
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParametersI4ivEXT(program, target, index, count, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params Int32 in array [count*4]
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParameterI4uiEXT(program, target, index, x, y, z, w)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param x UInt32 in value
+ param y UInt32 in value
+ param z UInt32 in value
+ param w UInt32 in value
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ vectorequiv NamedProgramLocalParameterI4uivEXT
+ glxvectorequiv NamedProgramLocalParameterI4uivEXT
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParameterI4uivEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params UInt32 in array [4]
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+NamedProgramLocalParametersI4uivEXT(program, target, index, count, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param count SizeI in value
+ param params UInt32 in array [count*4]
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+GetNamedProgramLocalParameterIivEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params Int32 out array [4]
+ dlflags notlistable
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+GetNamedProgramLocalParameterIuivEXT(program, target, index, params)
+ return void
+ param program UInt32 in value
+ param target ProgramTarget in value
+ param index UInt32 in value
+ param params UInt32 out array [4]
+ dlflags notlistable
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+# New EXT_texture_integer texture object commands
+
+TextureParameterIivEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ glextmask GL_MASK_EXT_texture_integer
+
+TextureParameterIuivEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params UInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ glextmask GL_MASK_EXT_texture_integer
+
+# New EXT_texture_integer texture object queries
+
+GetTextureParameterIivEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+ glextmask GL_MASK_EXT_texture_integer
+
+GetTextureParameterIuivEXT(texture, target, pname, params)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params UInt32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+ glextmask GL_MASK_EXT_texture_integer
+
+# New EXT_texture_integer multitexture commands
+
+MultiTexParameterIivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params CheckedInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ glextmask GL_MASK_EXT_texture_integer
+
+MultiTexParameterIuivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname TextureParameterName in value
+ param params UInt32 in array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags ignore
+ glextmask GL_MASK_EXT_texture_integer
+
+# New EXT_texture_integer multitexture queries
+
+GetMultiTexParameterIivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ dlflags notlistable
+ extension soft WINSOFT
+ glfflags capture-execute gl-enum
+ glxflags ignore
+ glextmask GL_MASK_EXT_texture_integer
+
+GetMultiTexParameterIuivEXT(texunit, target, pname, params)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param pname GetTextureParameter in value
+ param params UInt32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_texture_integer
+ dlflags notlistable
+ extension soft WINSOFT
+ glfflags capture-execute gl-enum
+ glxflags ignore
+ glextmask GL_MASK_EXT_texture_integer
+
+# New GLSL 2.0 uniform commands
+
+ProgramUniform1fEXT(program, location, v0)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Float32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform2fEXT(program, location, v0, v1)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform3fEXT(program, location, v0, v1, v2)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ param v2 Float32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform4fEXT(program, location, v0, v1, v2, v3)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Float32 in value
+ param v1 Float32 in value
+ param v2 Float32 in value
+ param v3 Float32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform1iEXT(program, location, v0)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Int32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform2iEXT(program, location, v0, v1)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform3iEXT(program, location, v0, v1, v2)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ param v2 Int32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform4iEXT(program, location, v0, v1, v2, v3)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 Int32 in value
+ param v1 Int32 in value
+ param v2 Int32 in value
+ param v3 Int32 in value
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform1fvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform2fvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count*2]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform3fvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count*3]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform4fvEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Float32 in array [count*4]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform1ivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform2ivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count*2]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform3ivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count*3]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform4ivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value Int32 in array [count*4]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix2fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*4]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix3fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*9]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix4fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*16]
+ category EXT_direct_state_access
+ subcategory VERSION_2_0
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+# New GLSL 2.1 uniform commands
+
+ProgramUniformMatrix2x3fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*6]
+ category EXT_direct_state_access
+ subcategory VERSION_2_1
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix3x2fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*6]
+ category EXT_direct_state_access
+ subcategory VERSION_2_1
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix2x4fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*8]
+ category EXT_direct_state_access
+ subcategory VERSION_2_1
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix4x2fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*8]
+ category EXT_direct_state_access
+ subcategory VERSION_2_1
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix3x4fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*12]
+ category EXT_direct_state_access
+ subcategory VERSION_2_1
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniformMatrix4x3fvEXT(program, location, count, transpose, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param transpose Boolean in value
+ param value Float32 in array [count*12]
+ category EXT_direct_state_access
+ subcategory VERSION_2_1
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+# New EXT_gpu_shader4 commands
+
+ProgramUniform1uiEXT(program, location, v0)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 UInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform2uiEXT(program, location, v0, v1)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform3uiEXT(program, location, v0, v1, v2)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ param v2 UInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform4uiEXT(program, location, v0, v1, v2, v3)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param v0 UInt32 in value
+ param v1 UInt32 in value
+ param v2 UInt32 in value
+ param v3 UInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform1uivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count]
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform2uivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*2]
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform3uivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*3]
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+ProgramUniform4uivEXT(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt32 in array [count*4]
+ category EXT_direct_state_access
+ subcategory EXT_gpu_shader4
+ glfflags ignore
+ glxflags ignore
+ extension soft WINSOFT
+ glextmask GL_MASK_OpenGL_2_0
+
+# New named buffer commands
+
+NamedBufferDataEXT(buffer, size, data, usage)
+ return void
+ param buffer UInt32 in value
+ param size Sizeiptr in value
+ param data Void in array [COMPSIZE(size)]
+ param usage VertexBufferObjectUsage in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+NamedBufferSubDataEXT(buffer, offset, size, data)
+ return void
+ param buffer UInt32 in value
+ param offset Intptr in value
+ param size Sizeiptr in value
+ param data Void in array [COMPSIZE(size)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+MapNamedBufferEXT(buffer, access)
+ return VoidPointer
+ param buffer UInt32 in value
+ param access VertexBufferObjectAccess in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+UnmapNamedBufferEXT(buffer)
+ return Boolean
+ param buffer UInt32 in value
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+# New named buffer queries
+
+GetNamedBufferParameterivEXT(buffer, pname, params)
+ return void
+ param buffer UInt32 in value
+ param pname VertexBufferObjectParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+GetNamedBufferPointervEXT(buffer, pname, params)
+ return void
+ param buffer UInt32 in value
+ param pname VertexBufferObjectParameter in value
+ param params VoidPointer out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+GetNamedBufferSubDataEXT(buffer, offset, size, data)
+ return void
+ param buffer UInt32 in value
+ param offset Intptr in value
+ param size Sizeiptr in value
+ param data Void out array [COMPSIZE(size)]
+ category EXT_direct_state_access
+ extension soft WINSOFT
+ dlflags notlistable
+ glxflags ignore
+ glfflags ignore
+
+# New named texture buffer texture object command
+
+TextureBufferEXT(texture, target, internalformat, buffer)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param internalformat TypeEnum in value
+ param buffer UInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_texture_buffer_object
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_texture_buffer_object
+ dlflags notlistable
+
+# New named texture buffer multitexture command
+
+MultiTexBufferEXT(texunit, target, internalformat, buffer)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param internalformat TypeEnum in value
+ param buffer UInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_texture_buffer_object
+ extension soft WINSOFT NV50
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_texture_buffer_object
+ dlflags notlistable
+
+# New named frame buffer object commands
+
+NamedRenderbufferStorageEXT(renderbuffer, internalformat, width, height)
+ return void
+ param renderbuffer Renderbuffer in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+GetNamedRenderbufferParameterivEXT(renderbuffer, pname, params)
+ return void
+ param renderbuffer Renderbuffer in value
+ param pname RenderbufferParameterName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+CheckNamedFramebufferStatusEXT(framebuffer, target)
+ return FramebufferStatus
+ param framebuffer Framebuffer in value
+ param target FramebufferTarget in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferTexture1DEXT(framebuffer, attachment, textarget, texture, level)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param textarget TextureTarget in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferTexture2DEXT(framebuffer, attachment, textarget, texture, level)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param textarget TextureTarget in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferTexture3DEXT(framebuffer, attachment, textarget, texture, level, zoffset)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param textarget TextureTarget in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param zoffset CheckedInt32 in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+NamedFramebufferRenderbufferEXT(framebuffer, attachment, renderbuffertarget, renderbuffer)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param renderbuffertarget RenderbufferTarget in value
+ param renderbuffer Renderbuffer in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+GetNamedFramebufferAttachmentParameterivEXT(framebuffer, attachment, pname, params)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param pname FramebufferAttachmentParameterName in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+GenerateTextureMipmapEXT(texture, target)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+GenerateMultiTexMipmapEXT(texunit, target)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+FramebufferDrawBufferEXT(framebuffer, mode)
+ return void
+ param framebuffer Framebuffer in value
+ param mode DrawBufferMode in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+FramebufferDrawBuffersEXT(framebuffer, n, bufs)
+ return void
+ param framebuffer Framebuffer in value
+ param n SizeI in value
+ param bufs DrawBufferMode in array [n]
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+FramebufferReadBufferEXT(framebuffer, mode)
+ return void
+ param framebuffer Framebuffer in value
+ param mode ReadBufferMode in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ extension soft WINSOFT
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_object
+
+GetFramebufferParameterivEXT(framebuffer, pname, params)
+ return void
+ param framebuffer Framebuffer in value
+ param pname GetFramebufferParameter in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_object
+ dlflags notlistable
+ extension soft WINSOFT
+ glxflags ignore
+ glfflags capture-execute gl-enum
+
+# New named framebuffer multisample object commands
+
+NamedRenderbufferStorageMultisampleEXT(renderbuffer, samples, internalformat, width, height)
+ return void
+ param renderbuffer Renderbuffer in value
+ param samples SizeI in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_direct_state_access
+ subcategory EXT_framebuffer_multisample
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_EXT_framebuffer_multisample
+
+# New named framebuffer multisample coverage object commands
+
+NamedRenderbufferStorageMultisampleCoverageEXT(renderbuffer, coverageSamples, colorSamples, internalformat, width, height)
+ return void
+ param renderbuffer Renderbuffer in value
+ param coverageSamples SizeI in value
+ param colorSamples SizeI in value
+ param internalformat PixelInternalFormat in value
+ param width SizeI in value
+ param height SizeI in value
+ category EXT_direct_state_access
+ subcategory NV_framebuffer_multisample_coverage
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_framebuffer_multisample_coverage
+
+# New named geometry program/shader frame buffer object commands
+
+NamedFramebufferTextureEXT(framebuffer, attachment, texture, level)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+NamedFramebufferTextureLayerEXT(framebuffer, attachment, texture, level, layer)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param layer CheckedInt32 in value
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+NamedFramebufferTextureFaceEXT(framebuffer, attachment, texture, level, face)
+ return void
+ param framebuffer Framebuffer in value
+ param attachment FramebufferAttachment in value
+ param texture Texture in value
+ param level CheckedInt32 in value
+ param face TextureTarget in value
+ category EXT_direct_state_access
+ subcategory NV_gpu_program4
+ extension soft WINSOFT
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_gpu_program4
+
+# New explicit multisample query and commands
+
+TextureRenderbufferEXT(texture, target, renderbuffer)
+ return void
+ param texture Texture in value
+ param target TextureTarget in value
+ param renderbuffer UInt32 in value
+ category EXT_direct_state_access
+ subcategory NV_explicit_multisample
+ extension soft WINSOFT NV50
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_explicit_multisample
+
+MultiTexRenderbufferEXT(texunit, target, renderbuffer)
+ return void
+ param texunit TextureUnit in value
+ param target TextureTarget in value
+ param renderbuffer UInt32 in value
+ category EXT_direct_state_access
+ subcategory NV_explicit_multisample
+ extension soft WINSOFT NV50
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+ glextmask GL_MASK_NV_explicit_multisample
+
+###############################################################################
+#
+# Extension #354
+# EXT_vertex_array_bgra commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_vertex_array_bgra
+
+###############################################################################
+#
+# Extension #355 - WGL_NV_gpu_affinity
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #356
+# EXT_texture_swizzle commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_swizzle
+
+###############################################################################
+#
+# Extension #357
+# NV_explicit_multisample commands
+#
+###############################################################################
+
+# From EXT_draw_buffers2: GetBooleanIndexedvEXT / GetIntegerIndexedvEXT
+
+GetMultisamplefvNV(pname, index, val)
+ return void
+ param pname GetMultisamplePNameNV in value
+ param index UInt32 in value
+ param val Float32 out array [2]
+ category NV_explicit_multisample
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+SampleMaskIndexedNV(index, mask)
+ return void
+ param index UInt32 in value
+ param mask SampleMaskNV in value
+ category NV_explicit_multisample
+ glfflags ignore
+ glxflags ignore
+
+TexRenderbufferNV(target, renderbuffer)
+ return void
+ param target TextureTarget in value
+ param renderbuffer UInt32 in value
+ category NV_explicit_multisample
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #358
+# NV_transform_feedback2 commands
+#
+###############################################################################
+
+BindTransformFeedbackNV(target, id)
+ return void
+ param target BufferTargetARB in value
+ param id UInt32 in value
+ category NV_transform_feedback2
+ glfflags ignore
+ glxflags ignore
+
+DeleteTransformFeedbacksNV(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 in array [n]
+ category NV_transform_feedback2
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+GenTransformFeedbacksNV(n, ids)
+ return void
+ param n SizeI in value
+ param ids UInt32 out array [n]
+ category NV_transform_feedback2
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+IsTransformFeedbackNV(id)
+ return Boolean
+ param id UInt32 in value
+ category NV_transform_feedback2
+ dlflags notlistable
+ glfflags ignore
+ glxflags ignore
+
+PauseTransformFeedbackNV()
+ return void
+ category NV_transform_feedback2
+ glfflags ignore
+ glxflags ignore
+
+ResumeTransformFeedbackNV()
+ return void
+ category NV_transform_feedback2
+ glfflags ignore
+ glxflags ignore
+
+DrawTransformFeedbackNV(mode, id)
+ return void
+ param mode GLenum in value
+ param id UInt32 in value
+ category NV_transform_feedback2
+ glfflags ignore
+ glxflags ignore
+
+###############################################################################
+#
+# Extension #359
+# ATI_meminfo commands
+#
+###############################################################################
+
+# (none)
+newcategory: ATI_meminfo
+
+###############################################################################
+#
+# Extension #360
+# AMD_performance_monitor commands
+#
+###############################################################################
+
+GetPerfMonitorGroupsAMD(numGroups, groupsSize, groups)
+ return void
+ param numGroups Int32 out array [1]
+ param groupsSize SizeI in value
+ param groups UInt32 out array [groupsSize]
+ category AMD_performance_monitor
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetPerfMonitorCountersAMD(group, numCounters, maxActiveCounters, counterSize, counters)
+ return void
+ param group UInt32 in value
+ param numCounters Int32 out array [1]
+ param maxActiveCounters Int32 out array [1]
+ param counterSize SizeI in value
+ param counters UInt32 out array [counterSize]
+ category AMD_performance_monitor
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetPerfMonitorGroupStringAMD(group, bufSize, length, groupString)
+ return void
+ param group UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param groupString Char out array [bufSize]
+ category AMD_performance_monitor
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetPerfMonitorCounterStringAMD(group, counter, bufSize, length, counterString)
+ return void
+ param group UInt32 in value
+ param counter UInt32 in value
+ param bufSize SizeI in value
+ param length SizeI out array [1]
+ param counterString Char out array [bufSize]
+ category AMD_performance_monitor
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetPerfMonitorCounterInfoAMD(group, counter, pname, data)
+ return void
+ param group UInt32 in value
+ param counter UInt32 in value
+ param pname GLenum in value
+ param data void out array [COMPSIZE(pname)]
+ category AMD_performance_monitor
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GenPerfMonitorsAMD(n, monitors)
+ return void
+ param n SizeI in value
+ param monitors UInt32 out array [n]
+ category AMD_performance_monitor
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+# 'monitors' is actually in, not out, but extension spec doesn't use const
+DeletePerfMonitorsAMD(n, monitors)
+ return void
+ param n SizeI in value
+ param monitors UInt32 out array [n]
+ category AMD_performance_monitor
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+# 'counterList' is actually in, not out, but extension spec doesn't use const
+SelectPerfMonitorCountersAMD(monitor, enable, group, numCounters, counterList)
+ return void
+ param monitor UInt32 in value
+ param enable Boolean in value
+ param group UInt32 in value
+ param numCounters Int32 in value
+ param counterList UInt32 out array [numCounters]
+ category AMD_performance_monitor
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BeginPerfMonitorAMD(monitor)
+ return void
+ param monitor UInt32 in value
+ category AMD_performance_monitor
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+EndPerfMonitorAMD(monitor)
+ return void
+ param monitor UInt32 in value
+ category AMD_performance_monitor
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetPerfMonitorCounterDataAMD(monitor, pname, dataSize, data, bytesWritten)
+ return void
+ param monitor UInt32 in value
+ param pname GLenum in value
+ param dataSize SizeI in value
+ param data UInt32 out array [dataSize]
+ param bytesWritten Int32 out array [1]
+ category AMD_performance_monitor
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #361 - WGL_AMD_gpu_association
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #362
+# AMD_texture_texture4 commands
+#
+###############################################################################
+
+# (none)
+newcategory: AMD_texture_texture4
+
+###############################################################################
+#
+# Extension #363
+# AMD_vertex_shader_tesselator commands
+#
+###############################################################################
+
+TessellationFactorAMD(factor)
+ return void
+ param factor Float32 in value
+ category AMD_vertex_shader_tesselator
+ version 2.0
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+TessellationModeAMD(mode)
+ return void
+ param mode GLenum in value
+ category AMD_vertex_shader_tesselator
+ version 2.0
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #364
+# EXT_provoking_vertex commands
+#
+###############################################################################
+
+ProvokingVertexEXT(mode)
+ return void
+ param mode GLenum in value
+ category EXT_provoking_vertex
+ version 2.1
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #365
+# EXT_texture_snorm commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_texture_snorm
+
+###############################################################################
+#
+# Extension #366
+# AMD_draw_buffers_blend commands
+#
+###############################################################################
+
+# void BlendFuncIndexedAMD(uint buf, enum src, enum dst)
+# void BlendFuncSeparateIndexedAMD(uint buf, enum srcRGB, enum dstRGB, enum srcAlpha, enum dstAlpha)
+# void BlendEquationIndexedAMD(uint buf, enum mode)
+# void BlendEquationSeparateIndexedAMD(uint buf, enum modeRGB, enum modeAlpha)
+
+BlendFuncIndexedAMD(buf, src, dst)
+ return void
+ param buf UInt32 in value
+ param src GLenum in value
+ param dst GLenum in value
+ category AMD_draw_buffers_blend
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BlendFuncSeparateIndexedAMD(buf, srcRGB, dstRGB, srcAlpha, dstAlpha)
+ return void
+ param buf UInt32 in value
+ param srcRGB GLenum in value
+ param dstRGB GLenum in value
+ param srcAlpha GLenum in value
+ param dstAlpha GLenum in value
+ category AMD_draw_buffers_blend
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BlendEquationIndexedAMD(buf, mode)
+ return void
+ param buf UInt32 in value
+ param mode GLenum in value
+ category AMD_draw_buffers_blend
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BlendEquationSeparateIndexedAMD(buf, modeRGB, modeAlpha)
+ return void
+ param buf UInt32 in value
+ param modeRGB GLenum in value
+ param modeAlpha GLenum in value
+ category AMD_draw_buffers_blend
+ version 2.0
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #367
+# APPLE_texture_range commands
+#
+###############################################################################
+
+TextureRangeAPPLE(target, length, pointer)
+ return void
+ param target GLenum in value
+ param length SizeI in value
+ param pointer Void in array [length]
+ category APPLE_texture_range
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetTexParameterPointervAPPLE(target, pname, params)
+ return void
+ param target GLenum in value
+ param pname GLenum in value
+ param params VoidPointer out array [1]
+ category APPLE_texture_range
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #368
+# APPLE_float_pixels commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_float_pixels
+
+###############################################################################
+#
+# Extension #369
+# APPLE_vertex_program_evaluators commands
+#
+###############################################################################
+
+EnableVertexAttribAPPLE(index, pname)
+ return void
+ param index UInt32 in value
+ param pname GLenum in value
+ category APPLE_vertex_program_evaluators
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+DisableVertexAttribAPPLE(index, pname)
+ return void
+ param index UInt32 in value
+ param pname GLenum in value
+ category APPLE_vertex_program_evaluators
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsVertexAttribEnabledAPPLE(index, pname)
+ return Boolean
+ param index UInt32 in value
+ param pname GLenum in value
+ category APPLE_vertex_program_evaluators
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MapVertexAttrib1dAPPLE(index, size, u1, u2, stride, order, points)
+ return void
+ param index UInt32 in value
+ param size UInt32 in value
+ param u1 CoordD in value
+ param u2 CoordD in value
+ param stride Int32 in value
+ param order CheckedInt32 in value
+ param points CoordD in array [COMPSIZE(size/stride/order)]
+ category APPLE_vertex_program_evaluators
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MapVertexAttrib1fAPPLE(index, size, u1, u2, stride, order, points)
+ return void
+ param index UInt32 in value
+ param size UInt32 in value
+ param u1 CoordF in value
+ param u2 CoordF in value
+ param stride Int32 in value
+ param order CheckedInt32 in value
+ param points CoordF in array [COMPSIZE(size/stride/order)]
+ category APPLE_vertex_program_evaluators
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MapVertexAttrib2dAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+ return void
+ param index UInt32 in value
+ param size UInt32 in value
+ param u1 CoordD in value
+ param u2 CoordD in value
+ param ustride Int32 in value
+ param uorder CheckedInt32 in value
+ param v1 CoordD in value
+ param v2 CoordD in value
+ param vstride Int32 in value
+ param vorder CheckedInt32 in value
+ param points CoordD in array [COMPSIZE(size/ustride/uorder/vstride/vorder)]
+ category APPLE_vertex_program_evaluators
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MapVertexAttrib2fAPPLE(index, size, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points)
+ return void
+ param index UInt32 in value
+ param size UInt32 in value
+ param u1 CoordF in value
+ param u2 CoordF in value
+ param ustride Int32 in value
+ param uorder CheckedInt32 in value
+ param v1 CoordF in value
+ param v2 CoordF in value
+ param vstride Int32 in value
+ param vorder CheckedInt32 in value
+ param points CoordF in array [COMPSIZE(size/ustride/uorder/vstride/vorder)]
+ category APPLE_vertex_program_evaluators
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #370
+# APPLE_aux_depth_stencil commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_aux_depth_stencil
+
+###############################################################################
+#
+# Extension #371
+# APPLE_object_purgeable commands
+#
+###############################################################################
+
+ObjectPurgeableAPPLE(objectType, name, option)
+ return GLenum
+ param objectType GLenum in value
+ param name UInt32 in value
+ param option GLenum in value
+ category APPLE_object_purgeable
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ObjectUnpurgeableAPPLE(objectType, name, option)
+ return GLenum
+ param objectType GLenum in value
+ param name UInt32 in value
+ param option GLenum in value
+ category APPLE_object_purgeable
+ version 1.5
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetObjectParameterivAPPLE(objectType, name, pname, params)
+ return void
+ param objectType GLenum in value
+ param name UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category APPLE_object_purgeable
+ dlflags notlistable
+ version 1.5
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #372
+# APPLE_row_bytes commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_row_bytes
+
+###############################################################################
+#
+# Extension #373
+# APPLE_rgb_422 commands
+#
+###############################################################################
+
+# (none)
+newcategory: APPLE_rgb_422
+
+###############################################################################
+#
+# Extension #374
+# NV_video_capture commands
+#
+###############################################################################
+
+BeginVideoCaptureNV(video_capture_slot)
+ return void
+ param video_capture_slot UInt32 in value
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindVideoCaptureStreamBufferNV(video_capture_slot, stream, frame_region, offset)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param frame_region GLenum in value
+ param offset BufferOffsetARB in value
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+BindVideoCaptureStreamTextureNV(video_capture_slot, stream, frame_region, target, texture)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param frame_region GLenum in value
+ param target GLenum in value
+ param texture UInt32 in value
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+EndVideoCaptureNV(video_capture_slot)
+ return void
+ param video_capture_slot UInt32 in value
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetVideoCaptureivNV(video_capture_slot, pname, params)
+ return void
+ param video_capture_slot UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category NV_video_capture
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVideoCaptureStreamivNV(video_capture_slot, stream, pname, params)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param pname GLenum in value
+ param params Int32 out array [COMPSIZE(pname)]
+ category NV_video_capture
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVideoCaptureStreamfvNV(video_capture_slot, stream, pname, params)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param pname GLenum in value
+ param params Float32 out array [COMPSIZE(pname)]
+ category NV_video_capture
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetVideoCaptureStreamdvNV(video_capture_slot, stream, pname, params)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param pname GLenum in value
+ param params Float64 out array [COMPSIZE(pname)]
+ category NV_video_capture
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+VideoCaptureNV(video_capture_slot, sequence_num, capture_time)
+ return GLenum
+ param video_capture_slot UInt32 in value
+ param sequence_num UInt32 out reference
+ param capture_time UInt64EXT out reference
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VideoCaptureStreamParameterivNV(video_capture_slot, stream, pname, params)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param pname GLenum in value
+ param params Int32 in array [COMPSIZE(pname)]
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VideoCaptureStreamParameterfvNV(video_capture_slot, stream, pname, params)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param pname GLenum in value
+ param params Float32 in array [COMPSIZE(pname)]
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VideoCaptureStreamParameterdvNV(video_capture_slot, stream, pname, params)
+ return void
+ param video_capture_slot UInt32 in value
+ param stream UInt32 in value
+ param pname GLenum in value
+ param params Float64 in array [COMPSIZE(pname)]
+ category NV_video_capture
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #375 - GLX_EXT_swap_control
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #376 - also GLX_NV_copy_image, WGL_NV_copy_image
+# NV_copy_image commands
+#
+###############################################################################
+
+CopyImageSubDataNV(srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth)
+ return void
+ param srcName UInt32 in value
+ param srcTarget GLenum in value
+ param srcLevel Int32 in value
+ param srcX Int32 in value
+ param srcY Int32 in value
+ param srcZ Int32 in value
+ param dstName UInt32 in value
+ param dstTarget GLenum in value
+ param dstLevel Int32 in value
+ param dstX Int32 in value
+ param dstY Int32 in value
+ param dstZ Int32 in value
+ param width SizeI in value
+ param height SizeI in value
+ param depth SizeI in value
+ category NV_copy_image
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #377
+# EXT_separate_shader_objects commands
+#
+###############################################################################
+
+UseShaderProgramEXT(type, program)
+ return void
+ param type GLenum in value
+ param program UInt32 in value
+ category EXT_separate_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ActiveProgramEXT(program)
+ return void
+ param program UInt32 in value
+ category EXT_separate_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+CreateShaderProgramEXT(type, string)
+ return UInt32
+ param type GLenum in value
+ param string Char in array []
+ category EXT_separate_shader_objects
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #378
+# NV_parameter_buffer_object2 commands
+#
+###############################################################################
+
+newcategory: NV_parameter_buffer_object2
+
+###############################################################################
+#
+# Extension #379
+# NV_shader_buffer_load commands
+#
+###############################################################################
+
+MakeBufferResidentNV(target, access)
+ return void
+ param target GLenum in value
+ param access GLenum in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MakeBufferNonResidentNV(target)
+ return void
+ param target GLenum in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsBufferResidentNV(target)
+ return Boolean
+ param target GLenum in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MakeNamedBufferResidentNV(buffer, access)
+ return void
+ param buffer UInt32 in value
+ param access GLenum in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+MakeNamedBufferNonResidentNV(buffer)
+ return void
+ param buffer UInt32 in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IsNamedBufferResidentNV(buffer)
+ return Boolean
+ param buffer UInt32 in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetBufferParameterui64vNV(target, pname, params)
+ return void
+ param target GLenum in value
+ param pname GLenum in value
+ param params UInt64EXT out array [COMPSIZE(pname)]
+ category NV_shader_buffer_load
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetNamedBufferParameterui64vNV(buffer, pname, params)
+ return void
+ param buffer UInt32 in value
+ param pname GLenum in value
+ param params UInt64EXT out array [COMPSIZE(pname)]
+ category NV_shader_buffer_load
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+GetIntegerui64vNV(value, result)
+ return void
+ param value GLenum in value
+ param result UInt64EXT out array [COMPSIZE(value)]
+ category NV_shader_buffer_load
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+Uniformui64NV(location, value)
+ return void
+ param location Int32 in value
+ param value UInt64EXT in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+Uniformui64vNV(location, count, value)
+ return void
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt64EXT in array [count]
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetUniformui64vNV(program, location, params)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param params UInt64EXT out array [COMPSIZE(program/location)]
+ category NV_shader_buffer_load
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformui64NV(program, location, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param value UInt64EXT in value
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ProgramUniformui64vNV(program, location, count, value)
+ return void
+ param program UInt32 in value
+ param location Int32 in value
+ param count SizeI in value
+ param value UInt64EXT in array [count]
+ category NV_shader_buffer_load
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #380
+# NV_vertex_buffer_unified_memory commands
+#
+###############################################################################
+
+BufferAddressRangeNV(pname, index, address, length)
+ return void
+ param pname GLenum in value
+ param index UInt32 in value
+ param address UInt64EXT in value
+ param length BufferSize in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexFormatNV(size, type, stride)
+ return void
+ param size Int32 in value
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+NormalFormatNV(type, stride)
+ return void
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+ColorFormatNV(size, type, stride)
+ return void
+ param size Int32 in value
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+IndexFormatNV(type, stride)
+ return void
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+TexCoordFormatNV(size, type, stride)
+ return void
+ param size Int32 in value
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+EdgeFlagFormatNV(stride)
+ return void
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+SecondaryColorFormatNV(size, type, stride)
+ return void
+ param size Int32 in value
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+FogCoordFormatNV(type, stride)
+ return void
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribFormatNV(index, size, type, normalized, stride)
+ return void
+ param index UInt32 in value
+ param size Int32 in value
+ param type GLenum in value
+ param normalized Boolean in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+VertexAttribIFormatNV(index, size, type, stride)
+ return void
+ param index UInt32 in value
+ param size Int32 in value
+ param type GLenum in value
+ param stride SizeI in value
+ category NV_vertex_buffer_unified_memory
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+GetIntegerui64i_vNV(value, index, result)
+ return void
+ param value GLenum in value
+ param index UInt32 in value
+ param result UInt64EXT out array [COMPSIZE(value)]
+ category NV_vertex_buffer_unified_memory
+ dlflags notlistable
+ version 1.2
+ extension
+ glxsingle ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #381
+# NV_texture_barrier commands
+#
+###############################################################################
+
+TextureBarrierNV()
+ return void
+ category NV_texture_barrier
+ version 1.2
+ extension
+ glxropcode ?
+ glxflags ignore
+ offset ?
+
+###############################################################################
+#
+# Extension #382
+# AMD_shader_stencil_export commands
+#
+###############################################################################
+
+newcategory: AMD_shader_stencil_export
+
+###############################################################################
+#
+# Extension #383
+# AMD_seamless_cubemap_per_texture commands
+#
+###############################################################################
+
+newcategory: AMD_seamless_cubemap_per_texture
+
+###############################################################################
+#
+# Extension #384 - GLX_INTEL_swap_event
+#
+###############################################################################
+
+###############################################################################
+#
+# Extension #385
+# AMD_conservative_depth commands
+#
+###############################################################################
+
+newcategory: AMD_conservative_depth
+
diff --git a/src/glx/apple/specs/gl.tm b/src/glx/apple/specs/gl.tm
new file mode 100644
index 0000000000..fb4f8515cd
--- /dev/null
+++ b/src/glx/apple/specs/gl.tm
@@ -0,0 +1,322 @@
+AccumOp,*,*, GLenum,*,*
+AlphaFunction,*,*, GLenum,*,*
+AttribMask,*,*, GLbitfield,*,*
+BeginMode,*,*, GLenum,*,*
+BinormalPointerTypeEXT,*,*, GLenum,*,*
+BlendEquationMode,*,*, GLenum,*,*
+BlendEquationModeEXT,*,*, GLenum,*,*
+BlendFuncSeparateParameterEXT,*,*, GLenum,*,*
+BlendingFactorDest,*,*, GLenum,*,*
+BlendingFactorSrc,*,*, GLenum,*,*
+Boolean,*,*, GLboolean,*,*
+BooleanPointer,*,*, GLboolean*,*,*
+Char,*,*, GLchar,*,*
+CharPointer,*,*, GLchar*,*,*
+CheckedFloat32,*,*, GLfloat,*,*
+CheckedInt32,*,*, GLint,*,*
+ClampColorTargetARB,*,*, GLenum,*,*
+ClampColorModeARB,*,*, GLenum,*,*
+ClampedColorF,*,*, GLclampf,*,*
+ClampedFloat32,*,*, GLclampf,*,*
+ClampedFloat64,*,*, GLclampd,*,*
+ClampedStencilValue,*,*, GLint,*,*
+ClearBufferMask,*,*, GLbitfield,*,*
+ClientAttribMask,*,*, GLbitfield,*,*
+ClipPlaneName,*,*, GLenum,*,*
+ColorB,*,*, GLbyte,*,*
+ColorD,*,*, GLdouble,*,*
+ColorF,*,*, GLfloat,*,*
+ColorI,*,*, GLint,*,*
+ColorIndexValueD,*,*, GLdouble,*,*
+ColorIndexValueF,*,*, GLfloat,*,*
+ColorIndexValueI,*,*, GLint,*,*
+ColorIndexValueS,*,*, GLshort,*,*
+ColorIndexValueUB,*,*, GLubyte,*,*
+ColorMaterialParameter,*,*, GLenum,*,*
+ColorPointerType,*,*, GLenum,*,*
+ColorS,*,*, GLshort,*,*
+ColorTableParameterPName,*,*, GLenum,*,*
+ColorTableParameterPNameSGI,*,*, GLenum,*,*
+ColorTableTarget,*,*, GLenum,*,*
+ColorTableTargetSGI,*,*, GLenum,*,*
+ColorUB,*,*, GLubyte,*,*
+ColorUI,*,*, GLuint,*,*
+ColorUS,*,*, GLushort,*,*
+CombinerBiasNV,*,*, GLenum,*,*
+CombinerComponentUsageNV,*,*, GLenum,*,*
+CombinerMappingNV,*,*, GLenum,*,*
+CombinerParameterNV,*,*, GLenum,*,*
+CombinerPortionNV,*,*, GLenum,*,*
+CombinerRegisterNV,*,*, GLenum,*,*
+CombinerScaleNV,*,*, GLenum,*,*
+CombinerStageNV,*,*, GLenum,*,*
+CombinerVariableNV,*,*, GLenum,*,*
+CompressedTextureARB,*,*, GLvoid,*,*
+ControlPointNV,*,*, GLvoid,*,*
+ControlPointTypeNV,*,*, GLenum,*,*
+ConvolutionParameter,*,*, GLenum,*,*
+ConvolutionParameterEXT,*,*, GLenum,*,*
+ConvolutionTarget,*,*, GLenum,*,*
+ConvolutionTargetEXT,*,*, GLenum,*,*
+CoordD,*,*, GLdouble,*,*
+CoordF,*,*, GLfloat,*,*
+CoordI,*,*, GLint,*,*
+CoordS,*,*, GLshort,*,*
+CullFaceMode,*,*, GLenum,*,*
+CullParameterEXT,*,*, GLenum,*,*
+DepthFunction,*,*, GLenum,*,*
+DrawBufferMode,*,*, GLenum,*,*
+DrawBufferName,*,*, GLint,*,*
+DrawElementsType,*,*, GLenum,*,*
+ElementPointerTypeATI,*,*, GLenum,*,*
+EnableCap,*,*, GLenum,*,*
+ErrorCode,*,*, GLenum,*,*
+EvalMapsModeNV,*,*, GLenum,*,*
+EvalTargetNV,*,*, GLenum,*,*
+FeedbackElement,*,*, GLfloat,*,*
+FeedbackType,*,*, GLenum,*,*
+FenceNV,*,*, GLuint,*,*
+FenceConditionNV,*,*, GLenum,*,*
+FenceParameterNameNV,*,*, GLenum,*,*
+FfdMaskSGIX,*,*, GLbitfield,*,*
+FfdTargetSGIX,*,*, GLenum,*,*
+Float32,*,*, GLfloat,*,*
+Float32Pointer,*,*, GLfloat*,*,*
+Float64,*,*, GLdouble,*,*
+Float64Pointer,*,*, GLdouble*,*,*
+FogParameter,*,*, GLenum,*,*
+FogPointerTypeEXT,*,*, GLenum,*,*
+FogPointerTypeIBM,*,*, GLenum,*,*
+FragmentLightModelParameterSGIX,*,*,GLenum,*,*
+FragmentLightNameSGIX,*,*, GLenum,*,*
+FragmentLightParameterSGIX,*,*, GLenum,*,*
+FramebufferAttachment,*,*, GLenum,*,*
+FramebufferTarget,*,*, GLenum,*,*
+FrontFaceDirection,*,*, GLenum,*,*
+FunctionPointer,*,*, _GLfuncptr,*,*
+GetColorTableParameterPName,*,*, GLenum,*,*
+GetColorTableParameterPNameSGI,*,*, GLenum,*,*
+GetConvolutionParameterPName,*,*, GLenum,*,*
+GetHistogramParameterPName,*,*, GLenum,*,*
+GetHistogramParameterPNameEXT,*,*, GLenum,*,*
+GetMapQuery,*,*, GLenum,*,*
+GetMinmaxParameterPName,*,*, GLenum,*,*
+GetMinmaxParameterPNameEXT,*,*, GLenum,*,*
+GetPName,*,*, GLenum,*,*
+GetPointervPName,*,*, GLenum,*,*
+GetTextureParameter,*,*, GLenum,*,*
+HintMode,*,*, GLenum,*,*
+HintTarget,*,*, GLenum,*,*
+HintTargetPGI,*,*, GLenum,*,*
+HistogramTarget,*,*, GLenum,*,*
+HistogramTargetEXT,*,*, GLenum,*,*
+IglooFunctionSelectSGIX,*,*, GLenum,*,*
+IglooParameterSGIX,*,*, GLvoid,*,*
+ImageTransformPNameHP,*,*, GLenum,*,*
+ImageTransformTargetHP,*,*, GLenum,*,*
+IndexFunctionEXT,*,*, GLenum,*,*
+IndexMaterialParameterEXT,*,*, GLenum,*,*
+IndexPointerType,*,*, GLenum,*,*
+Int16,*,*, GLshort,*,*
+Int32,*,*, GLint,*,*
+Int8,*,*, GLbyte,*,*
+InterleavedArrayFormat,*,*, GLenum,*,*
+LightEnvParameterSGIX,*,*, GLenum,*,*
+LightModelParameter,*,*, GLenum,*,*
+LightName,*,*, GLenum,*,*
+LightParameter,*,*, GLenum,*,*
+LightTextureModeEXT,*,*, GLenum,*,*
+LightTexturePNameEXT,*,*, GLenum,*,*
+LineStipple,*,*, GLushort,*,*
+List,*,*, GLuint,*,*
+ListMode,*,*, GLenum,*,*
+ListNameType,*,*, GLenum,*,*
+ListParameterName,*,*, GLenum,*,*
+LogicOp,*,*, GLenum,*,*
+MapAttribParameterNV,*,*, GLenum,*,*
+MapParameterNV,*,*, GLenum,*,*
+MapTarget,*,*, GLenum,*,*
+MapTargetNV,*,*, GLenum,*,*
+MapTypeNV,*,*, GLenum,*,*
+MaskedColorIndexValueF,*,*, GLfloat,*,*
+MaskedColorIndexValueI,*,*, GLuint,*,*
+MaskedStencilValue,*,*, GLuint,*,*
+MaterialFace,*,*, GLenum,*,*
+MaterialParameter,*,*, GLenum,*,*
+MatrixIndexPointerTypeARB,*,*, GLenum,*,*
+MatrixMode,*,*, GLenum,*,*
+MatrixTransformNV,*,*, GLenum,*,*
+MeshMode1,*,*, GLenum,*,*
+MeshMode2,*,*, GLenum,*,*
+MinmaxTarget,*,*, GLenum,*,*
+MinmaxTargetEXT,*,*, GLenum,*,*
+NormalPointerType,*,*, GLenum,*,*
+NurbsCallback,*,*, GLenum,*,*
+NurbsObj,*,*, GLUnurbs*,*,*
+NurbsProperty,*,*, GLenum,*,*
+NurbsTrim,*,*, GLenum,*,*
+OcclusionQueryParameterNameNV,*,*, GLenum,*,*
+PixelCopyType,*,*, GLenum,*,*
+PixelFormat,*,*, GLenum,*,*
+PixelInternalFormat,*,*, GLenum,*,*
+PixelMap,*,*, GLenum,*,*
+PixelStoreParameter,*,*, GLenum,*,*
+PixelTexGenModeSGIX,*,*, GLenum,*,*
+PixelTexGenParameterNameSGIS,*,*, GLenum,*,*
+PixelTransferParameter,*,*, GLenum,*,*
+PixelTransformPNameEXT,*,*, GLenum,*,*
+PixelTransformTargetEXT,*,*, GLenum,*,*
+PixelType,*,*, GLenum,*,*
+PointParameterNameARB,*,*, GLenum,*,*
+PolygonMode,*,*, GLenum,*,*
+ProgramNV,*,*, GLuint,*,*
+ProgramCharacterNV,*,*, GLubyte,*,*
+ProgramParameterNV,*,*, GLenum,*,*
+ProgramParameterPName,*,*, GLenum,*,*
+QuadricCallback,*,*, GLenum,*,*
+QuadricDrawStyle,*,*, GLenum,*,*
+QuadricNormal,*,*, GLenum,*,*
+QuadricObj,*,*, GLUquadric*,*,*
+QuadricOrientation,*,*, GLenum,*,*
+ReadBufferMode,*,*, GLenum,*,*
+RenderbufferTarget,*,*, GLenum,*,*
+RenderingMode,*,*, GLenum,*,*
+ReplacementCodeSUN,*,*, GLuint,*,*
+ReplacementCodeTypeSUN,*,*, GLenum,*,*
+SamplePassARB,*,*, GLenum,*,*
+SamplePatternEXT,*,*, GLenum,*,*
+SamplePatternSGIS,*,*, GLenum,*,*
+SecondaryColorPointerTypeIBM,*,*, GLenum,*,*
+SelectName,*,*, GLuint,*,*
+SeparableTarget,*,*, GLenum,*,*
+SeparableTargetEXT,*,*, GLenum,*,*
+ShadingModel,*,*, GLenum,*,*
+SizeI,*,*, GLsizei,*,*
+SpriteParameterNameSGIX,*,*, GLenum,*,*
+StencilFunction,*,*, GLenum,*,*
+StencilFaceDirection,*,*, GLenum,*,*
+StencilOp,*,*, GLenum,*,*
+StencilValue,*,*, GLint,*,*
+String,*,*, const GLubyte *,*,*
+StringName,*,*, GLenum,*,*
+TangentPointerTypeEXT,*,*, GLenum,*,*
+TessCallback,*,*, GLenum,*,*
+TessContour,*,*, GLenum,*,*
+TessProperty,*,*, GLenum,*,*
+TesselatorObj,*,*, GLUtesselator*,*,*
+TexCoordPointerType,*,*, GLenum,*,*
+Texture,*,*, GLuint,*,*
+TextureComponentCount,*,*, GLint,*,*
+TextureCoordName,*,*, GLenum,*,*
+TextureEnvParameter,*,*, GLenum,*,*
+TextureEnvTarget,*,*, GLenum,*,*
+TextureFilterSGIS,*,*, GLenum,*,*
+TextureGenParameter,*,*, GLenum,*,*
+TextureNormalModeEXT,*,*, GLenum,*,*
+TextureParameterName,*,*, GLenum,*,*
+TextureTarget,*,*, GLenum,*,*
+TextureUnit,*,*, GLenum,*,*
+UInt16,*,*, GLushort,*,*
+UInt32,*,*, GLuint,*,*
+UInt8,*,*, GLubyte,*,*
+VertexAttribEnum,*,*, GLenum,*,*
+VertexAttribEnumNV,*,*, GLenum,*,*
+VertexAttribPointerTypeNV,*,*, GLenum,*,*
+VertexPointerType,*,*, GLenum,*,*
+VertexWeightPointerTypeEXT,*,*, GLenum,*,*
+Void,*,*, GLvoid,*,*
+VoidPointer,*,*, GLvoid*,*,*
+ConstVoidPointer,*,*, GLvoid* const,*,*
+WeightPointerTypeARB,*,*, GLenum,*,*
+WinCoord,*,*, GLint,*,*
+void,*,*, *,*,*
+ArrayObjectPNameATI,*,*, GLenum,*,*
+ArrayObjectUsageATI,*,*, GLenum,*,*,
+ConstFloat32,*,*, GLfloat,*,*
+ConstInt32,*,*, GLint,*,*
+ConstUInt32,*,*, GLuint,*,*
+ConstVoid,*,*, GLvoid,*,*
+DataTypeEXT,*,*, GLenum,*,*
+FragmentOpATI,*,*, GLenum,*,*
+GetTexBumpParameterATI,*,*, GLenum,*,*
+GetVariantValueEXT,*,*, GLenum,*,*
+ParameterRangeEXT,*,*, GLenum,*,*
+PreserveModeATI,*,*, GLenum,*,*
+ProgramFormatARB,*,*, GLenum,*,*
+ProgramTargetARB,*,*, GLenum,*,*
+ProgramTarget,*,*, GLenum,*,*
+ProgramPropertyARB,*,*, GLenum,*,*
+ProgramStringPropertyARB,*,*, GLenum,*,*
+ScalarType,*,*, GLenum,*,*
+SwizzleOpATI,*,*, GLenum,*,*
+TexBumpParameterATI,*,*, GLenum,*,*
+VariantCapEXT,*,*, GLenum,*,*
+VertexAttribPointerPropertyARB,*,*, GLenum,*,*
+VertexAttribPointerTypeARB,*,*, GLenum,*,*
+VertexAttribPropertyARB,*,*, GLenum,*,*
+VertexShaderCoordOutEXT,*,*, GLenum,*,*
+VertexShaderOpEXT,*,*, GLenum,*,*
+VertexShaderParameterEXT,*,*, GLenum,*,*
+VertexShaderStorageTypeEXT,*,*, GLenum,*,*
+VertexShaderTextureUnitParameter,*,*, GLenum,*,*
+VertexShaderWriteMaskEXT,*,*, GLenum,*,*
+VertexStreamATI,*,*, GLenum,*,*
+PNTrianglesPNameATI,*,*, GLenum,*,*
+# ARB_vertex_buffer_object types and core equivalents for new types
+BufferOffset,*,*, GLintptr,*,*
+BufferSize,*,*, GLsizeiptr,*,*
+BufferAccessARB,*,*, GLenum,*,*
+BufferOffsetARB,*,*, GLintptrARB,*,*
+BufferPNameARB,*,*, GLenum,*,*
+BufferPointerNameARB,*,*, GLenum,*,*
+BufferSizeARB,*,*, GLsizeiptrARB,*,*
+BufferTargetARB,*,*, GLenum,*,*
+BufferUsageARB,*,*, GLenum,*,*
+# APPLE_fence
+ObjectTypeAPPLE,*,*, GLenum,*,*
+# APPLE_vertex_array_range
+VertexArrayPNameAPPLE,*,*, GLenum,*,*
+# ATI_draw_buffers
+DrawBufferModeATI,*,*, GLenum,*,*
+# NV_half
+Half16NV,*,*, GLhalfNV,*,*
+# NV_pixel_data_range
+PixelDataRangeTargetNV,*,*, GLenum,*,*
+# Generic types for as-yet-unspecified enums
+TypeEnum,*,*, GLenum,*,*
+GLbitfield,*,*, GLbitfield,*,*
+GLenum,*,*, GLenum,*,*
+Int64,*,*, GLint64,*,*
+UInt64,*,*, GLuint64,*,*
+# Object handle & data pointers
+handleARB,*,*, GLhandleARB,*,*
+charARB,*,*, GLcharARB,*,*
+charPointerARB,*,*, GLcharARB*,*,*
+sync,*,*, GLsync,*,*,
+# EXT_timer_query
+Int64EXT,*,*, GLint64EXT,*,*
+UInt64EXT,*,*, GLuint64EXT,*,*
+# EXT_direct_state_access
+FramebufferAttachment,*,*, GLenum,*,*
+FramebufferAttachmentParameterName,*,*, GLenum,*,*
+Framebuffer,*,*, GLuint,*,*
+FramebufferStatus,*,*, GLenum,*,*
+FramebufferTarget,*,*, GLenum,*,*
+GetFramebufferParameter,*,*, GLenum,*,*
+Intptr,*,*, GLintptr,*,*
+ProgramFormat,*,*, GLenum,*,*
+ProgramProperty,*,*, GLenum,*,*
+ProgramStringProperty,*,*, GLenum,*,*
+ProgramTarget,*,*, GLenum,*,*
+Renderbuffer,*,*, GLuint,*,*
+RenderbufferParameterName,*,*, GLenum,*,*
+Sizeiptr,*,*, GLsizeiptr,*,*
+TextureInternalFormat,*,*, GLenum,*,*
+VertexBufferObjectAccess,*,*, GLenum,*,*
+VertexBufferObjectParameter,*,*, GLenum,*,*
+VertexBufferObjectUsage,*,*, GLenum,*,*
+# ARB_map_buffer_range
+BufferAccessMask,*,*, GLbitfield,*,*
+# NV_explicit_multisample
+GetMultisamplePNameNV,*,*, GLenum,*,*
+SampleMaskNV,*,*, GLbitfield,*,*
diff --git a/src/glx/apple/specs/glx.spec b/src/glx/apple/specs/glx.spec
new file mode 100644
index 0000000000..b8b8df296c
--- /dev/null
+++ b/src/glx/apple/specs/glx.spec
@@ -0,0 +1,602 @@
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+required-props:
+param: retval retained
+dlflags: notlistable handcode nop
+glxflags: client-handcode server-handcode
+glxvendorglx: *
+vectorequiv: *
+category: pixel-rw bgn-end display-list drawing drawing-control feedback framebuf misc modeling pixel-op pixel-rw state-req xform glx glxopcode
+glxopcode: *
+
+###############################################################################
+#
+# GLX1.0 commands
+#
+###############################################################################
+Render()
+ return void
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 1
+
+
+RenderLarge()
+ return void
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 2
+
+
+CreateContext(gc_id, screen, visual, share_list)
+ return void
+ param gc_id Int32 in value
+ param screen Int32 in value
+ param visual Int32 in value
+ param share_list Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 3
+
+
+DestroyContext(context)
+ return void
+ param context Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 4
+
+
+MakeCurrent(drawable, context)
+ return void
+ param drawable Int32 in value
+ param context Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 5
+
+
+IsDirect(dpy, context)
+ return void
+ param dpy Int32 in value
+ param context Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 6
+
+
+QueryVersion(major, minor)
+ return void
+ param major Int32 out reference
+ param minor Int32 out reference
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 7
+
+
+WaitGL(context)
+ return void
+ param context Int32 in value
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 8
+
+
+WaitX()
+ return void
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 9
+
+
+CopyContext(source, dest, mask)
+ return void
+ param source Int32 in value
+ param dest Int32 in value
+ param mask Int32 in value
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 10
+
+
+SwapBuffers(drawable)
+ return void
+ param drawable Int32 in value
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 11
+
+
+UseXFont(font, first, count, list_base)
+ return void
+ param font Int32 in value
+ param first Int32 in value
+ param count Int32 in value
+ param list_base Int32 in value
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 12
+
+
+CreateGLXPixmap(visual, pixmap, glxpixmap)
+ return void
+ param visual Int32 in value
+ param pixmap Int32 in value
+ param glxpixmap Int32 in value
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 13
+
+GetVisualConfigs()
+ return void
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 14
+
+
+DestroyGLXPixmap(pixmap)
+ return void
+ param pixmap Int32 in value
+ glxflags client-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 15
+
+
+VendorPrivate()
+ return void
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 16
+
+
+VendorPrivateWithReply()
+ return void
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 17
+
+###############################################################################
+#
+# GLX1.1 commands
+#
+###############################################################################
+QueryExtensionsString(screen)
+ return void
+ param screen Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 18
+
+QueryServerString(screen, name)
+ return void
+ param screen Int32 in value
+ param name Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 19
+
+ClientInfo()
+ return void
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxopcode 20
+
+###############################################################################
+#
+# GLX1.3 commands
+#
+###############################################################################
+GetFBConfigs()
+ return void
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxopcode 21
+
+CreatePixmap(config, pixmap, glxpixmap)
+ return void
+ param config Int32 in value
+ param pixmap Int32 in value
+ param glxpixmap Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 22
+
+DestroyPixmap(glxpixmap)
+ return void
+ param glxpixmap Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 23
+
+CreateNewContext(config, render_type, share_list, direct)
+ return void
+ param config Int32 in value
+ param render_type Int32 in value
+ param share_list Int32 in value
+ param direct Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 24
+
+QueryContext()
+ return void
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 25
+
+MakeContextCurrent(drawable, readdrawable, context)
+ return void
+ param drawable Int32 in value
+ param readdrawable Int32 in value
+ param context Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 26
+
+CreatePbuffer(config, pbuffer)
+ return void
+ param config Int32 in value
+ param pbuffer Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 27
+
+DestroyPbuffer(pbuffer)
+ return void
+ param pbuffer Int32 in value
+ dlflags notlistable
+ glxflags client-handcode
+ category glx
+ glxopcode 28
+
+GetDrawableAttributes(drawable)
+ return void
+ param drawable Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 29
+
+ChangeDrawableAttributes(drawable)
+ return void
+ param drawable Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 30
+
+CreateWindow(config, window, glxwindow)
+ return void
+ param config Int32 in value
+ param window Int32 in value
+ param glxwindow Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 31
+
+DestroyWindow(glxwindow)
+ return void
+ param glxwindow Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxopcode 32
+
+###############################################################################
+#
+# IRIX5.3 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# SGI_swap_control extension commands
+#
+###############################################################################
+SwapIntervalSGI()
+ return void
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65536
+
+###############################################################################
+#
+# IRIX5.3-PATCH154 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# SGI_make_current_read extension commands
+#
+###############################################################################
+MakeCurrentReadSGI(drawable, readdrawable, context)
+ return void
+ param drawable Int32 in value
+ param readdrawable Int32 in value
+ param context Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65537
+
+###############################################################################
+#
+# SGIX_video_source extension commands
+#
+###############################################################################
+CreateGLXVideoSourceSGIX(dpy, screen, server, path, class, node)
+ return void
+ param dpy Int32 in value
+ param screen Int32 in value
+ param server Int32 in value
+ param path Int32 in value
+ param class Int32 in value
+ param node Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65538
+
+DestroyGLXVideoSourceSGIX(dpy, glxvideosource)
+ return void
+ param dpy Int32 in value
+ param glxvideosource Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65539
+
+###############################################################################
+#
+# IRIX6.2 extension commands
+#
+###############################################################################
+
+###############################################################################
+#
+# EXT_import_context extension commands
+#
+###############################################################################
+QueryContextInfoEXT()
+ return void
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxvendorglx 1024
+
+###############################################################################
+#
+# SGIX_fbconfig extension commands
+#
+###############################################################################
+GetFBConfigsSGIX()
+ return void
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxvendorglx 65540
+
+CreateContextWithConfigSGIX(gc_id, screen, config, share_list)
+ return void
+ param gc_id Int32 in value
+ param screen Int32 in value
+ param config Int32 in value
+ param share_list Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65541
+
+CreateGLXPixmapWithConfigSGIX(config, pixmap, glxpixmap)
+ return void
+ param config Int32 in value
+ param pixmap Int32 in value
+ param glxpixmap Int32 in value
+ category glx
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ glxvendorglx 65542
+
+###############################################################################
+#
+# SGIX_pbuffer extension commands
+#
+###############################################################################
+
+CreateGLXPbufferSGIX(config, pbuffer)
+ return void
+ param config Int32 in value
+ param pbuffer Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxvendorglx 65543
+
+DestroyGLXPbufferSGIX(pbuffer)
+ return void
+ param pbuffer Int32 in value
+ dlflags notlistable
+ glxflags client-handcode
+ category glx
+ glxvendorglx 65544
+
+ChangeDrawableAttributesSGIX(drawable)
+ return void
+ param drawable Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxvendorglx 65545
+
+GetDrawableAttributesSGIX(drawable)
+ return void
+ param drawable Int32 in value
+ dlflags notlistable
+ glxflags client-handcode server-handcode
+ category glx
+ glxvendorglx 65546
+
+###############################################################################
+#
+# SGIX_swap_group extension commands
+#
+###############################################################################
+
+JoinSwapGroupSGIX(window,group)
+ return void
+ param window Int32 in value
+ param group Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65547
+
+###############################################################################
+#
+# SGIX_swap_barrier extension commands
+#
+###############################################################################
+
+BindSwapBarrierSGIX(window,barrier)
+ return void
+ param window Int32 in value
+ param barrier Int32 in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65548
+
+QueryMaxSwapBarriersSGIX()
+ return void
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65549
+
+###############################################################################
+#
+# SGIX_hyperpipe extension commands
+#
+###############################################################################
+
+QueryHyperpipeNetworkSGIX(dpy, npipes)
+ return GLXHyperpipeNetworkPointer
+ param dpy Display out reference
+ param npipes int out reference
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65550
+
+HyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId)
+ return int
+ param dpy Display out reference
+ param networkId int in value
+ param npipes int in value
+ param cfg GLXHyperpipeConfig in array[npipes]
+ param hpId int out reference
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65552
+
+QueryHyperpipeConfigSGIX(dpy, hpId, npipes)
+ return GLXHyperpipeConfigPointer
+ param dpy Display out reference
+ param hpId int in value
+ param npipes int out reference
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65551
+
+DestroyHyperpipeConfigSGIX(dpy, hpId)
+ return int
+ param dpy Display out reference
+ param hpId int in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx 65553
+
+BindHyperpipeSGIX(dpy, hpId)
+ return int
+ param dpy Display out reference
+ param hpId int in value
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx ???
+
+QueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList)
+ return int
+ param dpy Display out reference
+ param timeSlice int in value
+ param attrib int in value
+ param size int in value
+ param attribList Void in array[size]
+ param returnAttribList Void out array[size]
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx ???
+
+HyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList)
+ return int
+ param dpy Display out reference
+ param timeSlice int in value
+ param attrib int in value
+ param size int in value
+ param attribList void in array[size]
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx ???
+
+QueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList)
+ return int
+ param dpy Display out reference
+ param timeSlice int in value
+ param attrib int in value
+ param size int in value
+ param returnAttribList void in array[size]
+ glxflags client-handcode server-handcode
+ category glx
+ dlflags notlistable
+ glxvendorglx ???
diff --git a/src/glx/apple/specs/glxenum.spec b/src/glx/apple/specs/glxenum.spec
new file mode 100644
index 0000000000..547f19e1c2
--- /dev/null
+++ b/src/glx/apple/specs/glxenum.spec
@@ -0,0 +1,420 @@
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+# This is the GLX enumerant registry.
+#
+# It is an extremely important file. Do not mess with it unless
+# you know what you're doing and have permission to do so.
+#
+# Rules for modification are the same as the rules for the OpenGL
+# enumerant registry (gl.spec). Basically, don't modify this
+# file unless you're the Khronos API Registrar.
+
+Extensions define:
+ VERSION_1_1 = 1
+ VERSION_1_2 = 1
+ VERSION_1_3 = 1
+ VERSION_1_4 = 1
+ SGIS_multisample = 1
+ EXT_visual_info = 1
+ SGI_swap_control = 1
+ SGI_video_sync = 1
+ SGI_make_current_read = 1
+ SGIX_video_source = 1
+ EXT_visual_rating = 1
+ EXT_import_context = 1
+ SGIX_fbconfig = 1
+ SGIX_pbuffer = 1
+ SGI_cushion = 1
+ SGIX_video_resize = 1
+ SGIX_dmbuffer = 1
+ SGIX_swap_group = 1
+ SGIX_swap_barrier = 1
+ SGIS_blended_overlay = 1
+ SGIS_shared_multisample = 1
+ SUN_get_transparent_index = 1
+ 3DFX_multisample = 1
+ MESA_copy_sub_buffer = 1
+ MESA_pixmap_colormap = 1
+ MESA_release_buffers = 1
+ MESA_set_3dfx_mode = 1
+ SGIX_visual_select_group = 1
+ SGIX_hyperpipe = 1
+
+GLXStringName enum:
+ VENDOR = 0x1
+ VERSION = 0x2
+ EXTENSIONS = 0x3
+
+GLXErrorCode enum:
+ BAD_SCREEN = 1
+ BAD_ATTRIBUTE = 2
+ NO_EXTENSION = 3
+ BAD_VISUAL = 4
+ BAD_CONTEXT = 5
+ BAD_VALUE = 6
+ BAD_ENUM = 7
+ BAD_HYPERPIPE_CONFIG_SGIX = 91 # SGIX_hyperpipe
+ BAD_HYPERPIPE_SGIX = 92 # "
+
+# Reserved bits in bitfields of various purposes
+
+GLXDrawableTypeMask enum:
+ WINDOW_BIT = 0x00000001 # DRAWABLE_TYPE value
+ PIXMAP_BIT = 0x00000002 # "
+ PBUFFER_BIT = 0x00000004 # "
+ WINDOW_BIT_SGIX = 0x00000001 # DRAWABLE_TYPE_SGIX value
+ PIXMAP_BIT_SGIX = 0x00000002 # "
+ PBUFFER_BIT_SGIX = 0x00000004 # "
+
+GLXRenderTypeMask enum:
+ RGBA_BIT = 0x00000001 # RENDER_TYPE value
+ COLOR_INDEX_BIT = 0x00000002 # "
+ RGBA_BIT_SGIX = 0x00000001 # RENDER_TYPE_SGIX value
+ COLOR_INDEX_BIT_SGIX = 0x00000002 # "
+ RGBA_FLOAT_BIT_ARB = 0x00000004 # RENDER_TYPE value (from ARB_fbconfig_float)
+ RGBA_UNSIGNED_FLOAT_BIT_EXT = 0x00000008 # RENDER_TYPE value (from EXT_fbconfig_packed_float)
+
+GLXSyncType enum:
+ SYNC_FRAME_SGIX = 0x00000000 # ChannelRectSyncSGIX synctype
+ SYNC_SWAP_SGIX = 0x00000001 # "
+
+GLXEventMask enum:
+ PBUFFER_CLOBBER_MASK = 0x08000000 # SelectEvent mask
+ BUFFER_CLOBBER_MASK_SGIX = 0x08000000 # SelectEventSGIX mask
+ BUFFER_SWAP_COMPLETE_INTEL_MASK = 0x04000000 # SelectEvent mask (for GLX_INTEL_swap_event)
+
+GLXPbufferClobberMask enum:
+ FRONT_LEFT_BUFFER_BIT = 0x00000001 # PbufferClobberEvent mask
+ FRONT_RIGHT_BUFFER_BIT = 0x00000002 # "
+ BACK_LEFT_BUFFER_BIT = 0x00000004 # "
+ BACK_RIGHT_BUFFER_BIT = 0x00000008 # "
+ AUX_BUFFERS_BIT = 0x00000010 # "
+ DEPTH_BUFFER_BIT = 0x00000020 # "
+ STENCIL_BUFFER_BIT = 0x00000040 # "
+ ACCUM_BUFFER_BIT = 0x00000080 # "
+ FRONT_LEFT_BUFFER_BIT_SGIX = 0x00000001 # BufferClobberEventSGIX mask
+ FRONT_RIGHT_BUFFER_BIT_SGIX = 0x00000002 # "
+ BACK_LEFT_BUFFER_BIT_SGIX = 0x00000004 # "
+ BACK_RIGHT_BUFFER_BIT_SGIX = 0x00000008 # "
+ AUX_BUFFERS_BIT_SGIX = 0x00000010 # "
+ DEPTH_BUFFER_BIT_SGIX = 0x00000020 # "
+ STENCIL_BUFFER_BIT_SGIX = 0x00000040 # "
+ ACCUM_BUFFER_BIT_SGIX = 0x00000080 # "
+ SAMPLE_BUFFERS_BIT_SGIX = 0x00000100 # "
+
+GLXHyperpipeTypeMask enum:
+ HYPERPIPE_DISPLAY_PIPE_SGIX = 0x00000001 # SGIX_hyperpipe
+ HYPERPIPE_RENDER_PIPE_SGIX = 0x00000002 # "
+
+GLXHyperpipeAttrib enum:
+ PIPE_RECT_SGIX = 0x00000001 # SGIX_hyperpipe
+ PIPE_RECT_LIMITS_SGIX = 0x00000002 # "
+ HYPERPIPE_STEREO_SGIX = 0x00000003 # "
+ HYPERPIPE_PIXEL_AVERAGE_SGIX = 0x00000004 # "
+
+GLXHyperpipeMisc enum:
+ HYPERPIPE_PIPE_NAME_LENGTH_SGIX = 80 # SGIX_hyperpipe
+
+GLXBindToTextureTargetMask enum:
+ TEXTURE_1D_BIT_EXT = 0x00000001 # EXT_texture_from_pixmap
+ TEXTURE_2D_BIT_EXT = 0x00000002
+ TEXTURE_RECTANGLE_BIT_EXT = 0x00000004
+
+# CONTEXT_FLAGS_ARB bits
+GLXContextFlags enum:
+ CONTEXT_DEBUG_BIT_ARB = 0x00000001 # ARB_create_context
+ CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x00000002 # ARB_create_context
+
+# CONTEXT_PROFILE_MASK_ARB bits
+GLXContextProfileMask enum:
+ CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001 # ARB_create_context_profile
+ CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002 # ARB_create_context_profile
+
+GLXAttribute enum:
+ USE_GL = 1 # Visual attributes
+ BUFFER_SIZE = 2 # "
+ LEVEL = 3 # "
+ RGBA = 4 # "
+ DOUBLEBUFFER = 5 # "
+ STEREO = 6 # "
+ AUX_BUFFERS = 7 # "
+ RED_SIZE = 8 # "
+ GREEN_SIZE = 9 # "
+ BLUE_SIZE = 10 # "
+ ALPHA_SIZE = 11 # "
+ DEPTH_SIZE = 12 # "
+ STENCIL_SIZE = 13 # "
+ ACCUM_RED_SIZE = 14 # "
+ ACCUM_GREEN_SIZE = 15 # "
+ ACCUM_BLUE_SIZE = 16 # "
+ ACCUM_ALPHA_SIZE = 17 # "
+ CONFIG_CAVEAT = 0x20 # "
+ X_VISUAL_TYPE = 0x22 # "
+ TRANSPARENT_TYPE = 0x23 # "
+ TRANSPARENT_INDEX_VALUE = 0x24 # "
+ TRANSPARENT_RED_VALUE = 0x25 # "
+ TRANSPARENT_GREEN_VALUE = 0x26 # "
+ TRANSPARENT_BLUE_VALUE = 0x27 # "
+ TRANSPARENT_ALPHA_VALUE = 0x28 # "
+ DONT_CARE = 0xFFFFFFFF # may be specified for ChooseFBConfig attributes
+ NONE = 0x8000 # several attribute values
+ SLOW_CONFIG = 0x8001 # CONFIG_CAVEAT attribute value
+ TRUE_COLOR = 0x8002 # X_VISUAL_TYPE attribute value
+ DIRECT_COLOR = 0x8003 # "
+ PSEUDO_COLOR = 0x8004 # "
+ STATIC_COLOR = 0x8005 # "
+ GRAY_SCALE = 0x8006 # "
+ STATIC_GRAY = 0x8007 # "
+ TRANSPARENT_RGB = 0x8008 # TRANSPARENT_TYPE attribute value
+ TRANSPARENT_INDEX = 0x8009 # "
+ VISUAL_ID = 0x800B # Context attribute
+ SCREEN = 0x800C # "
+ NON_CONFORMANT_CONFIG = 0x800D # CONFIG_CAVEAT attribute value
+ DRAWABLE_TYPE = 0x8010 # FBConfig attribute
+ RENDER_TYPE = 0x8011 # "
+ X_RENDERABLE = 0x8012 # "
+ FBCONFIG_ID = 0x8013 # "
+ RGBA_TYPE = 0x8014 # CreateNewContext render_type value
+ COLOR_INDEX_TYPE = 0x8015 # "
+ MAX_PBUFFER_WIDTH = 0x8016 # FBConfig attribute
+ MAX_PBUFFER_HEIGHT = 0x8017 # "
+ MAX_PBUFFER_PIXELS = 0x8018 # "
+ PRESERVED_CONTENTS = 0x801B # CreateGLXPbuffer attribute
+ LARGEST_PBUFFER = 0x801C # "
+ WIDTH = 0x801D # Drawable attribute
+ HEIGHT = 0x801E # "
+ EVENT_MASK = 0x801F # "
+ DAMAGED = 0x8020 # PbufferClobber event_type value
+ SAVED = 0x8021 # "
+ WINDOW = 0x8022 # PbufferClobber draw_type value
+ PBUFFER = 0x8023 # "
+ PBUFFER_HEIGHT = 0x8040 # CreateGLXPbuffer attribute
+ PBUFFER_WIDTH = 0x8041 # "
+ VISUAL_CAVEAT_EXT = 0x20 # Visual attribute
+ X_VISUAL_TYPE_EXT = 0x22 # "
+ TRANSPARENT_TYPE_EXT = 0x23 # "
+ TRANSPARENT_INDEX_VALUE_EXT = 0x24 # "
+ TRANSPARENT_RED_VALUE_EXT = 0x25 # "
+ TRANSPARENT_GREEN_VALUE_EXT = 0x26 # "
+ TRANSPARENT_BLUE_VALUE_EXT = 0x27 # "
+ TRANSPARENT_ALPHA_VALUE_EXT = 0x28 # "
+ NONE_EXT = 0x8000 # several EXT attribute values
+ SLOW_VISUAL_EXT = 0x8001 # VISUAL_CAVEAT_EXT attribute value
+ TRUE_COLOR_EXT = 0x8002 # X_VISUAL_TYPE_EXT attribute value
+ DIRECT_COLOR_EXT = 0x8003 # "
+ PSEUDO_COLOR_EXT = 0x8004 # "
+ STATIC_COLOR_EXT = 0x8005 # "
+ GRAY_SCALE_EXT = 0x8006 # "
+ STATIC_GRAY_EXT = 0x8007 # "
+ TRANSPARENT_RGB_EXT = 0x8008 # TRANSPARENT_TYPE_EXT attribute value
+ TRANSPARENT_INDEX_EXT = 0x8009 # "
+ SHARE_CONTEXT_EXT = 0x800A # QueryContextInfoEXT attribute
+ VISUAL_ID_EXT = 0x800B # "
+ SCREEN_EXT = 0x800C # "
+ NON_CONFORMANT_VISUAL_EXT = 0x800D # VISUAL_CAVEAT_EXT attribute value
+ DRAWABLE_TYPE_SGIX = 0x8010 # FBConfigSGIX attribute
+ RENDER_TYPE_SGIX = 0x8011 # "
+ X_RENDERABLE_SGIX = 0x8012 # "
+ FBCONFIG_ID_SGIX = 0x8013 # "
+ RGBA_TYPE_SGIX = 0x8014 # CreateContextWithConfigSGIX render_type value
+ COLOR_INDEX_TYPE_SGIX = 0x8015 # "
+ MAX_PBUFFER_WIDTH_SGIX = 0x8016 # FBConfigSGIX attribute
+ MAX_PBUFFER_HEIGHT_SGIX = 0x8017 # "
+ MAX_PBUFFER_PIXELS_SGIX = 0x8018 # "
+ OPTIMAL_PBUFFER_WIDTH_SGIX = 0x8019 # "
+ OPTIMAL_PBUFFER_HEIGHT_SGIX = 0x801A # "
+ PRESERVED_CONTENTS_SGIX = 0x801B # PbufferSGIX attribute
+ LARGEST_PBUFFER_SGIX = 0x801C # "
+ WIDTH_SGIX = 0x801D # "
+ HEIGHT_SGIX = 0x801E # "
+ EVENT_MASK_SGIX = 0x801F # "
+ DAMAGED_SGIX = 0x8020 # BufferClobberSGIX event_type value
+ SAVED_SGIX = 0x8021 # "
+ WINDOW_SGIX = 0x8022 # BufferClobberSGIX draw_type value
+ PBUFFER_SGIX = 0x8023 # "
+ DIGITAL_MEDIA_PBUFFER_SGIX = 0x8024 # PbufferSGIX attribute
+ BLENDED_RGBA_SGIS = 0x8025 # TRANSPARENT_TYPE_EXT attribute value
+ MULTISAMPLE_SUB_RECT_WIDTH_SGIS = 0x8026 # Visual attribute (shared_multisample)
+ MULTISAMPLE_SUB_RECT_HEIGHT_SGIS = 0x8027 # "
+ VISUAL_SELECT_GROUP_SGIX = 0x8028 # Visual attribute (visual_select_group)
+ HYPERPIPE_ID_SGIX = 0x8030 # Associated hyperpipe ID (SGIX_hyperpipe)
+ SAMPLE_BUFFERS_SGIS = 100000 # Visual attribute (SGIS_multisample)
+ SAMPLES_SGIS = 100001 # "
+ SAMPLE_BUFFERS_ARB = 100000 # Visual attribute (ARB_multisample - alias of SGIS_multisample)
+ SAMPLES_ARB = 100001 # "
+ SAMPLE_BUFFERS = 100000 # Visual attribute (GLX 1.4 core - alias of SGIS_multisample)
+ SAMPLES = 100001 # "
+
+###############################################################################
+
+# ARB: 0x2070-0x209F (shared with WGL)
+
+# Also includes a bitmask - see ContextFlags above
+# ARB_create_context enum:
+ CONTEXT_MAJOR_VERSION_ARB = 0x2091
+ CONTEXT_MINOR_VERSION_ARB = 0x2092
+ CONTEXT_FLAGS_ARB = 0x2094
+
+###############################################################################
+
+# NVIDIA: 0x20A0 - 0x219F (shared with WGL)
+
+# NV_float_buffer enum:
+ FLOAT_COMPONENTS_NV = 0x20B0
+# EXT_fbconfig_packed_float enum:
+ RGBA_UNSIGNED_FLOAT_TYPE_EXT = 0x20B1
+# EXT_framebuffer_sRGB enum:
+ FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x20B2
+
+# NV_future_use: 0x20B3-0x20B8
+
+# ARB_fbconfig_float enum:
+ RGBA_FLOAT_TYPE_ARB = 0x20B9
+
+# NV_future_use: 0x20BA-0x20C2
+
+# NV_video_out enum:
+ VIDEO_OUT_COLOR_NV = 0x20C3
+ VIDEO_OUT_ALPHA_NV = 0x20C4
+ VIDEO_OUT_DEPTH_NV = 0x20C5
+ VIDEO_OUT_COLOR_AND_ALPHA_NV = 0x20C6
+ VIDEO_OUT_COLOR_AND_DEPTH_NV = 0x20C7
+ VIDEO_OUT_FRAME_NV = 0x20C8
+ VIDEO_OUT_FIELD_1_NV = 0x20C9
+ VIDEO_OUT_FIELD_2_NV = 0x20CA
+ VIDEO_OUT_STACKED_FIELDS_1_2_NV = 0x20CB
+ VIDEO_OUT_STACKED_FIELDS_2_1_NV = 0x20CC
+
+# NV_video_capture enum:
+ DEVICE_ID_NV = 0x20CD
+ UNIQUE_ID_NV = 0x20CE
+ NUM_VIDEO_CAPTURE_SLOTS_NV = 0x20CF
+
+# EXT_texture_from_pixmap enum:
+ BIND_TO_TEXTURE_RGB_EXT = 0x20D0
+ BIND_TO_TEXTURE_RGBA_EXT = 0x20D1
+ BIND_TO_MIPMAP_TEXTURE_EXT = 0x20D2
+ BIND_TO_TEXTURE_TARGETS_EXT = 0x20D3
+ Y_INVERTED_EXT = 0x20D4
+ TEXTURE_FORMAT_EXT = 0x20D5
+ TEXTURE_TARGET_EXT = 0x20D6
+ MIPMAP_TEXTURE_EXT = 0x20D7
+ TEXTURE_FORMAT_NONE_EXT = 0x20D8
+ TEXTURE_FORMAT_RGB_EXT = 0x20D9
+ TEXTURE_FORMAT_RGBA_EXT = 0x20DA
+ TEXTURE_1D_EXT = 0x20DB
+ TEXTURE_2D_EXT = 0x20DC
+ TEXTURE_RECTANGLE_EXT = 0x20DD
+ FRONT_LEFT_EXT = 0x20DE
+ FRONT_RIGHT_EXT = 0x20DF
+ BACK_LEFT_EXT = 0x20E0
+ BACK_RIGHT_EXT = 0x20E1
+ FRONT_EXT = GLX_FRONT_LEFT_EXT
+ BACK_EXT = GLX_BACK_LEFT_EXT
+ AUX0_EXT = 0x20E2
+ AUX1_EXT = 0x20E3
+ AUX2_EXT = 0x20E4
+ AUX3_EXT = 0x20E5
+ AUX4_EXT = 0x20E6
+ AUX5_EXT = 0x20E7
+ AUX6_EXT = 0x20E8
+ AUX7_EXT = 0x20E9
+ AUX8_EXT = 0x20EA
+ AUX9_EXT = 0x20EB
+
+# NV_future_use: 0x20EC-0x20EF
+
+NV_present_video enum:
+ NUM_VIDEO_SLOTS_NV = 0x20F0
+
+EXT_swap_control enum:
+ SWAP_INTERVAL_EXT = 0x20F1
+ MAX_SWAP_INTERVAL_EXT = 0x20F2
+
+# NV_future_use: 0x20F3-0x219F
+
+###############################################################################
+
+# MESA (not in a reserved block)
+
+# MESA_set_3dfx_mode enum:
+# 3DFX_WINDOW_MODE_MESA = 0x1
+# 3DFX_FULLSCREEN_MODE_MESA = 0x2
+
+###############################################################################
+
+# SGI_future_use: 0x8029-0x802F
+# SGIX_hyperpipe adds attribute name HYPERPIPE_ID_SGIX = 0x8030
+# SGI_future_use: 0x8031-0x803F
+
+###############################################################################
+
+# ARB_future_use: 0x8042-0x804F
+
+###############################################################################
+
+# 3DFX: 0x8050-0x805F
+
+# 3DFX_multisample enum:
+# SAMPLE_BUFFERS_3DFX = 0x8050
+# SAMPLES_3DFX = 0x8051
+
+###############################################################################
+
+# OML: 0x8060-0x806F
+
+# OML_swap_method enum:
+# SWAP_METHOD_OML = 0x8060
+# SWAP_EXCHANGE_OML = 0x8061
+# SWAP_COPY_OML = 0x8062
+# SWAP_UNDEFINED_OML = 0x8063
+
+# OML_future_use: 0x8064-0x806F
+
+###############################################################################
+
+# NVIDIA: 0x8070 - 0x816F
+
+NVIDIA_future_use: 0x8070-0x816F
+
+###############################################################################
+
+# SUN: 0x8170 - 0x817F
+
+SUN_future_use: 0x8170-0x817F
+
+###############################################################################
+
+# INTEL: 0x8180 - 0x818F
+
+# INTEL_swap_event: 0x8180-0x8182
+# EXCHANGE_COMPLETE_INTEL = 0x8180
+# COPY_COMPLETE_INTEL = 0x8181
+# FLIP_COMPLETE_INTEL = 0x8182
+
+INTEL_future_use: 0x8183-0x818F
+
+###############################################################################
+### Please remember that new GLX enum allocations must be obtained by request
+### to the Khronos API Registrar (see comments at the top of this file)
+### File requests in the Khronos Bugzilla, OpenGL project, Registry component.
+###############################################################################
+
+# Any_vendor_future_use: 0x8180-0x9125
+
+# Also includes a bitmask - see ContextProfileMask above
+# ARB_create_context_profile enum: (equivalent to corresponding GL token)
+ CONTEXT_PROFILE_MASK_ARB = 0x9126
+
+# Any_vendor_future_use: 0x9127-0xFFFF
+#
+# This range must be the last range in the file. To generate a new
+# range, allocate multiples of 16 from the beginning of the
+# Any_vendor_future_use range and update glxenum.spec, glxenumext.spec,
+# and extensions.reserved.
diff --git a/src/glx/apple/specs/glxenumext.spec b/src/glx/apple/specs/glxenumext.spec
new file mode 100644
index 0000000000..797e6970dd
--- /dev/null
+++ b/src/glx/apple/specs/glxenumext.spec
@@ -0,0 +1,515 @@
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+# List of GLX enumerants for glxext.h header
+#
+# This is NOT the master GLX enumerant registry (glxenum.spec).
+#
+# Unlike glxenum.spec, glxenumext.spec is
+# (1) In order by extension number.
+# (2) Includes only GLX extensions and GLX 1.3/1.4 core enumerants,
+# since it's assumed all <glx.h> today support at least GLX 1.2.
+# (3) Has no 'Extensions' section, since enums are always
+# conditionally protected against multiple definition
+# by glextenum.pl.
+# (4) Is processed by glextenum.pl, which has evolved
+# from enum.pl - should merge back into one script.
+
+# glxext.h version number - this should be automatically updated,
+# when changing either enum or template spec files.
+
+passthru:
+passthru: /* Header file version number, required by OpenGL ABI for Linux */
+passthru: /* glxext.h last updated 2010/02/10 */
+passthru: /* Current version at http://www.opengl.org/registry/ */
+passthru: #define GLX_GLXEXT_VERSION 27
+
+###############################################################################
+#
+# GLX 1.3 enums
+#
+###############################################################################
+
+VERSION_1_3 enum:
+ WINDOW_BIT = 0x00000001 # DRAWABLE_TYPE value
+ PIXMAP_BIT = 0x00000002 # "
+ PBUFFER_BIT = 0x00000004 # "
+ RGBA_BIT = 0x00000001 # RENDER_TYPE value
+ COLOR_INDEX_BIT = 0x00000002 # "
+ PBUFFER_CLOBBER_MASK = 0x08000000 # SelectEvent mask
+ FRONT_LEFT_BUFFER_BIT = 0x00000001 # PbufferClobberEvent mask
+ FRONT_RIGHT_BUFFER_BIT = 0x00000002 # "
+ BACK_LEFT_BUFFER_BIT = 0x00000004 # "
+ BACK_RIGHT_BUFFER_BIT = 0x00000008 # "
+ AUX_BUFFERS_BIT = 0x00000010 # "
+ DEPTH_BUFFER_BIT = 0x00000020 # "
+ STENCIL_BUFFER_BIT = 0x00000040 # "
+ ACCUM_BUFFER_BIT = 0x00000080 # "
+ CONFIG_CAVEAT = 0x20 # "
+ X_VISUAL_TYPE = 0x22 # "
+ TRANSPARENT_TYPE = 0x23 # "
+ TRANSPARENT_INDEX_VALUE = 0x24 # "
+ TRANSPARENT_RED_VALUE = 0x25 # "
+ TRANSPARENT_GREEN_VALUE = 0x26 # "
+ TRANSPARENT_BLUE_VALUE = 0x27 # "
+ TRANSPARENT_ALPHA_VALUE = 0x28 # "
+ DONT_CARE = 0xFFFFFFFF # may be specified for ChooseFBConfig attributes
+ NONE = 0x8000 # several attribute values
+ SLOW_CONFIG = 0x8001 # CONFIG_CAVEAT attribute value
+ TRUE_COLOR = 0x8002 # X_VISUAL_TYPE attribute value
+ DIRECT_COLOR = 0x8003 # "
+ PSEUDO_COLOR = 0x8004 # "
+ STATIC_COLOR = 0x8005 # "
+ GRAY_SCALE = 0x8006 # "
+ STATIC_GRAY = 0x8007 # "
+ TRANSPARENT_RGB = 0x8008 # TRANSPARENT_TYPE attribute value
+ TRANSPARENT_INDEX = 0x8009 # "
+ VISUAL_ID = 0x800B # Context attribute
+ SCREEN = 0x800C # "
+ NON_CONFORMANT_CONFIG = 0x800D # CONFIG_CAVEAT attribute value
+ DRAWABLE_TYPE = 0x8010 # FBConfig attribute
+ RENDER_TYPE = 0x8011 # "
+ X_RENDERABLE = 0x8012 # "
+ FBCONFIG_ID = 0x8013 # "
+ RGBA_TYPE = 0x8014 # CreateNewContext render_type value
+ COLOR_INDEX_TYPE = 0x8015 # "
+ MAX_PBUFFER_WIDTH = 0x8016 # FBConfig attribute
+ MAX_PBUFFER_HEIGHT = 0x8017 # "
+ MAX_PBUFFER_PIXELS = 0x8018 # "
+ PRESERVED_CONTENTS = 0x801B # CreateGLXPbuffer attribute
+ LARGEST_PBUFFER = 0x801C # "
+ WIDTH = 0x801D # Drawable attribute
+ HEIGHT = 0x801E # "
+ EVENT_MASK = 0x801F # "
+ DAMAGED = 0x8020 # PbufferClobber event_type value
+ SAVED = 0x8021 # "
+ WINDOW = 0x8022 # PbufferClobber draw_type value
+ PBUFFER = 0x8023 # "
+ PBUFFER_HEIGHT = 0x8040 # CreateGLXPbuffer attribute
+ PBUFFER_WIDTH = 0x8041 # "
+
+###############################################################################
+#
+# GLX 1.4 enums
+#
+###############################################################################
+
+VERSION_1_4 enum:
+ SAMPLE_BUFFERS = 100000
+ SAMPLES = 100001
+
+###############################################################################
+#
+# ARB GLX extensions, in ARB extension order
+#
+###############################################################################
+
+###############################################################################
+
+# No new tokens
+# ARB Extension #2
+ARB_get_proc_address enum:
+
+###############################################################################
+
+# ARB Extension #5
+ARB_multisample enum:
+ SAMPLE_BUFFERS_ARB = 100000
+ SAMPLES_ARB = 100001
+
+###############################################################################
+
+# ARB Extension #39
+ARB_fbconfig_float enum:
+ RGBA_FLOAT_TYPE_ARB = 0x20B9
+ RGBA_FLOAT_BIT_ARB = 0x00000004
+
+###############################################################################
+
+# ARB Extension #56
+ARB_create_context enum:
+ CONTEXT_DEBUG_BIT_ARB = 0x00000001
+ CONTEXT_FORWARD_COMPATIBLE_BIT_ARB = 0x00000002
+ CONTEXT_MAJOR_VERSION_ARB = 0x2091
+ CONTEXT_MINOR_VERSION_ARB = 0x2092
+ CONTEXT_FLAGS_ARB = 0x2094
+
+###############################################################################
+
+# ARB Extension #75
+ARB_create_context_profile enum:
+ CONTEXT_CORE_PROFILE_BIT_ARB = 0x00000001
+ CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB = 0x00000002
+ CONTEXT_PROFILE_MASK_ARB = 0x9126
+
+
+###############################################################################
+#
+# non-ARB GLX extensions, in registry order
+#
+###############################################################################
+
+###############################################################################
+
+# Unfortunately, the SGIS_multisample specification and the IRIX
+# implementation are inconsistent; the spec assigns enums as follows.
+# ARB_multisample reuses these enums with ARB suffixes, and it can't
+# be changed at this point. So in the interest of supporting both
+# extensions on non-IRIX platforms, the SGIS enums will be defined
+# here as originally specified.
+
+# Extension #25
+SGIS_multisample enum:
+ SAMPLE_BUFFERS_SGIS = 100000
+ SAMPLES_SGIS = 100001
+
+###############################################################################
+
+# Extension #28
+EXT_visual_info enum:
+ X_VISUAL_TYPE_EXT = 0x22
+ TRANSPARENT_TYPE_EXT = 0x23
+ TRANSPARENT_INDEX_VALUE_EXT = 0x24
+ TRANSPARENT_RED_VALUE_EXT = 0x25
+ TRANSPARENT_GREEN_VALUE_EXT = 0x26
+ TRANSPARENT_BLUE_VALUE_EXT = 0x27
+ TRANSPARENT_ALPHA_VALUE_EXT = 0x28
+ NONE_EXT = 0x8000
+ TRUE_COLOR_EXT = 0x8002
+ DIRECT_COLOR_EXT = 0x8003
+ PSEUDO_COLOR_EXT = 0x8004
+ STATIC_COLOR_EXT = 0x8005
+ GRAY_SCALE_EXT = 0x8006
+ STATIC_GRAY_EXT = 0x8007
+ TRANSPARENT_RGB_EXT = 0x8008
+ TRANSPARENT_INDEX_EXT = 0x8009
+
+###############################################################################
+
+# No new tokens
+# Extension #40
+SGI_swap_control enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #41
+SGI_video_sync enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #42
+SGI_make_current_read enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #43
+SGIX_video_source enum:
+
+###############################################################################
+
+# Extension #44
+EXT_visual_rating enum:
+ VISUAL_CAVEAT_EXT = 0x20
+ SLOW_VISUAL_EXT = 0x8001
+ NON_CONFORMANT_VISUAL_EXT = 0x800D
+ use EXT_visual_info NONE_EXT
+
+###############################################################################
+
+# Extension #47
+EXT_import_context enum:
+ SHARE_CONTEXT_EXT = 0x800A
+ VISUAL_ID_EXT = 0x800B
+ SCREEN_EXT = 0x800C
+
+###############################################################################
+
+# Extension #49
+SGIX_fbconfig enum:
+ WINDOW_BIT_SGIX = 0x00000001
+ PIXMAP_BIT_SGIX = 0x00000002
+ RGBA_BIT_SGIX = 0x00000001
+ COLOR_INDEX_BIT_SGIX = 0x00000002
+ DRAWABLE_TYPE_SGIX = 0x8010
+ RENDER_TYPE_SGIX = 0x8011
+ X_RENDERABLE_SGIX = 0x8012
+ FBCONFIG_ID_SGIX = 0x8013
+ RGBA_TYPE_SGIX = 0x8014
+ COLOR_INDEX_TYPE_SGIX = 0x8015
+ use EXT_import_context SCREEN_EXT
+
+###############################################################################
+
+# Extension #50
+SGIX_pbuffer enum:
+ PBUFFER_BIT_SGIX = 0x00000004
+ BUFFER_CLOBBER_MASK_SGIX = 0x08000000
+ FRONT_LEFT_BUFFER_BIT_SGIX = 0x00000001
+ FRONT_RIGHT_BUFFER_BIT_SGIX = 0x00000002
+ BACK_LEFT_BUFFER_BIT_SGIX = 0x00000004
+ BACK_RIGHT_BUFFER_BIT_SGIX = 0x00000008
+ AUX_BUFFERS_BIT_SGIX = 0x00000010
+ DEPTH_BUFFER_BIT_SGIX = 0x00000020
+ STENCIL_BUFFER_BIT_SGIX = 0x00000040
+ ACCUM_BUFFER_BIT_SGIX = 0x00000080
+ SAMPLE_BUFFERS_BIT_SGIX = 0x00000100
+ MAX_PBUFFER_WIDTH_SGIX = 0x8016
+ MAX_PBUFFER_HEIGHT_SGIX = 0x8017
+ MAX_PBUFFER_PIXELS_SGIX = 0x8018
+ OPTIMAL_PBUFFER_WIDTH_SGIX = 0x8019
+ OPTIMAL_PBUFFER_HEIGHT_SGIX = 0x801A
+ PRESERVED_CONTENTS_SGIX = 0x801B
+ LARGEST_PBUFFER_SGIX = 0x801C
+ WIDTH_SGIX = 0x801D
+ HEIGHT_SGIX = 0x801E
+ EVENT_MASK_SGIX = 0x801F
+ DAMAGED_SGIX = 0x8020
+ SAVED_SGIX = 0x8021
+ WINDOW_SGIX = 0x8022
+ PBUFFER_SGIX = 0x8023
+
+###############################################################################
+
+# Extension #62
+SGI_cushion enum:
+# CUSHION_BUFFERS_SGI ????
+
+###############################################################################
+
+# Extension #83
+SGIX_video_resize enum:
+ SYNC_FRAME_SGIX = 0x00000000
+ SYNC_SWAP_SGIX = 0x00000001
+
+###############################################################################
+
+# Extension #86
+SGIX_dmbuffer enum:
+ DIGITAL_MEDIA_PBUFFER_SGIX = 0x8024
+
+###############################################################################
+
+# No new tokens
+# Extension #91
+SGIX_swap_group enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #92
+SGIX_swap_barrier enum:
+
+###############################################################################
+
+# Extension #142
+SGIS_blended_overlay enum:
+ BLENDED_RGBA_SGIS = 0x8025
+
+###############################################################################
+
+# Extension #143
+SGIS_shared_multisample enum:
+ MULTISAMPLE_SUB_RECT_WIDTH_SGIS = 0x8026
+ MULTISAMPLE_SUB_RECT_HEIGHT_SGIS = 0x8027
+
+###############################################################################
+
+# No new tokens
+# Extension #183
+SUN_get_transparent_index enum:
+
+###############################################################################
+
+# Extension #207
+3DFX_multisample enum:
+ SAMPLE_BUFFERS_3DFX = 0x8050
+ SAMPLES_3DFX = 0x8051
+
+###############################################################################
+
+# No new tokens
+# Extension #215
+MESA_copy_sub_buffer enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #216
+MESA_pixmap_colormap enum:
+
+###############################################################################
+
+# No new tokens
+# Extension #217
+MESA_release_buffers enum:
+
+###############################################################################
+
+# Extension #218
+MESA_set_3dfx_mode enum:
+ 3DFX_WINDOW_MODE_MESA = 0x1
+ 3DFX_FULLSCREEN_MODE_MESA = 0x2
+
+###############################################################################
+
+# Extension #234
+SGIX_visual_select_group enum:
+ VISUAL_SELECT_GROUP_SGIX = 0x8028
+
+###############################################################################
+
+# Extension #237
+OML_swap_method enum:
+ SWAP_METHOD_OML = 0x8060
+ SWAP_EXCHANGE_OML = 0x8061
+ SWAP_COPY_OML = 0x8062
+ SWAP_UNDEFINED_OML = 0x8063
+
+###############################################################################
+
+# No new tokens
+# Extension #238
+OML_sync_control enum:
+
+###############################################################################
+
+# Extension #281
+NV_float_buffer enum:
+ FLOAT_COMPONENTS_NV = 0x20B0
+
+###############################################################################
+
+# Extension #307
+SGIX_hyperpipe enum:
+ HYPERPIPE_PIPE_NAME_LENGTH_SGIX = 80
+ BAD_HYPERPIPE_CONFIG_SGIX = 91
+ BAD_HYPERPIPE_SGIX = 92
+ HYPERPIPE_DISPLAY_PIPE_SGIX = 0x00000001
+ HYPERPIPE_RENDER_PIPE_SGIX = 0x00000002
+ PIPE_RECT_SGIX = 0x00000001
+ PIPE_RECT_LIMITS_SGIX = 0x00000002
+ HYPERPIPE_STEREO_SGIX = 0x00000003
+ HYPERPIPE_PIXEL_AVERAGE_SGIX = 0x00000004
+ HYPERPIPE_ID_SGIX = 0x8030
+
+###############################################################################
+
+# No new tokens
+# Extension #308
+MESA_agp_offset enum:
+
+###############################################################################
+
+# Extension #328
+EXT_fbconfig_packed_float enum:
+ RGBA_UNSIGNED_FLOAT_TYPE_EXT = 0x20B1
+ RGBA_UNSIGNED_FLOAT_BIT_EXT = 0x00000008
+
+###############################################################################
+
+# Extension #337
+EXT_framebuffer_sRGB enum:
+ FRAMEBUFFER_SRGB_CAPABLE_EXT = 0x20B2
+
+###############################################################################
+
+# Extension #344
+EXT_texture_from_pixmap enum:
+ TEXTURE_1D_BIT_EXT = 0x00000001
+ TEXTURE_2D_BIT_EXT = 0x00000002
+ TEXTURE_RECTANGLE_BIT_EXT = 0x00000004
+ BIND_TO_TEXTURE_RGB_EXT = 0x20D0
+ BIND_TO_TEXTURE_RGBA_EXT = 0x20D1
+ BIND_TO_MIPMAP_TEXTURE_EXT = 0x20D2
+ BIND_TO_TEXTURE_TARGETS_EXT = 0x20D3
+ Y_INVERTED_EXT = 0x20D4
+ TEXTURE_FORMAT_EXT = 0x20D5
+ TEXTURE_TARGET_EXT = 0x20D6
+ MIPMAP_TEXTURE_EXT = 0x20D7
+ TEXTURE_FORMAT_NONE_EXT = 0x20D8
+ TEXTURE_FORMAT_RGB_EXT = 0x20D9
+ TEXTURE_FORMAT_RGBA_EXT = 0x20DA
+ TEXTURE_1D_EXT = 0x20DB
+ TEXTURE_2D_EXT = 0x20DC
+ TEXTURE_RECTANGLE_EXT = 0x20DD
+ FRONT_LEFT_EXT = 0x20DE
+ FRONT_RIGHT_EXT = 0x20DF
+ BACK_LEFT_EXT = 0x20E0
+ BACK_RIGHT_EXT = 0x20E1
+ FRONT_EXT = GLX_FRONT_LEFT_EXT
+ BACK_EXT = GLX_BACK_LEFT_EXT
+ AUX0_EXT = 0x20E2
+ AUX1_EXT = 0x20E3
+ AUX2_EXT = 0x20E4
+ AUX3_EXT = 0x20E5
+ AUX4_EXT = 0x20E6
+ AUX5_EXT = 0x20E7
+ AUX6_EXT = 0x20E8
+ AUX7_EXT = 0x20E9
+ AUX8_EXT = 0x20EA
+ AUX9_EXT = 0x20EB
+
+###############################################################################
+
+# Extension #347
+NV_present_video enum:
+ NUM_VIDEO_SLOTS_NV = 0x20F0
+
+###############################################################################
+
+# Extension #348
+NV_video_out enum:
+ VIDEO_OUT_COLOR_NV = 0x20C3
+ VIDEO_OUT_ALPHA_NV = 0x20C4
+ VIDEO_OUT_DEPTH_NV = 0x20C5
+ VIDEO_OUT_COLOR_AND_ALPHA_NV = 0x20C6
+ VIDEO_OUT_COLOR_AND_DEPTH_NV = 0x20C7
+ VIDEO_OUT_FRAME_NV = 0x20C8
+ VIDEO_OUT_FIELD_1_NV = 0x20C9
+ VIDEO_OUT_FIELD_2_NV = 0x20CA
+ VIDEO_OUT_STACKED_FIELDS_1_2_NV = 0x20CB
+ VIDEO_OUT_STACKED_FIELDS_2_1_NV = 0x20CC
+
+###############################################################################
+
+# No new tokens
+# Extension #350
+NV_swap_group enum:
+
+###############################################################################
+
+# Extension #374
+NV_video_capture enum:
+ DEVICE_ID_NV = 0x20CD
+ UNIQUE_ID_NV = 0x20CE
+ NUM_VIDEO_CAPTURE_SLOTS_NV = 0x20CF
+
+###############################################################################
+
+# Extension #375
+EXT_swap_control enum:
+ SWAP_INTERVAL_EXT = 0x20F1
+ MAX_SWAP_INTERVAL_EXT = 0x20F2
+
+###############################################################################
+
+# No new tokens
+# Extension #376
+NV_copy_image enum:
+
+###############################################################################
+
+# Extension #384
+INTEL_swap_event enum:
+ BUFFER_SWAP_COMPLETE_INTEL_MASK = 0x04000000
+ EXCHANGE_COMPLETE_INTEL = 0x8180
+ COPY_COMPLETE_INTEL = 0x8181
+ FLIP_COMPLETE_INTEL = 0x8182
diff --git a/src/glx/apple/specs/glxext.spec b/src/glx/apple/specs/glxext.spec
new file mode 100644
index 0000000000..c25b7e6b38
--- /dev/null
+++ b/src/glx/apple/specs/glxext.spec
@@ -0,0 +1,1330 @@
+# glxext.spec file
+# DON'T REMOVE PREVIOUS LINE!!! libspec depends on it!
+#
+# Copyright (c) 1991-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2006-2010 The Khronos Group, Inc.
+#
+# This document is licensed under the SGI Free Software B License Version
+# 2.0. For details, see http://oss.sgi.com/projects/FreeB/ .
+#
+# $Revision: 10796 $ on $Date: 2010-03-19 17:31:10 -0700 (Fri, 19 Mar 2010) $
+
+required-props:
+param: retval retained
+glxflags: client-handcode client-intercept server-handcode
+glxvendorglx: *
+vectorequiv: *
+category: VERSION_1_3 VERSION_1_4 ARB_get_proc_address ARB_multisample ARB_fbconfig_float EXT_import_context SGIX_dmbuffer SGIX_fbconfig SGIX_pbuffer SGIX_swap_barrier SGIX_swap_group SGIX_video_resize SGIX_video_source SGI_cushion SGI_make_current_read SGI_swap_control SGI_video_sync SUN_get_transparent_index MESA_agp_offset MESA_copy_sub_buffer MESA_pixmap_colormap MESA_release_buffers MESA_set_3dfx_mode SGIX_visual_select_group OML_sync_control SGIX_hyperpipe EXT_texture_from_pixmap NV_swap_group NV_video_output NV_present_video ARB_create_context NV_video_capture NV_copy_image EXT_swap_control
+glxopcode: *
+
+#
+# Boilerplate to define types used by some extensions. This is done
+# up front, since it involves some complexities in protecting
+# the declarations whether or not the -protect flag is given to
+# the generator scripts.
+#
+
+passthru: #ifndef GLX_ARB_get_proc_address
+passthru: typedef void (*__GLXextFuncPtr)(void);
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_video_source
+passthru: typedef XID GLXVideoSourceSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_fbconfig
+passthru: typedef XID GLXFBConfigIDSGIX;
+passthru: typedef struct __GLXFBConfigRec *GLXFBConfigSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_SGIX_pbuffer
+passthru: typedef XID GLXPbufferSGIX;
+passthru: typedef struct {
+passthru: int type;
+passthru: unsigned long serial; /* # of last request processed by server */
+passthru: Bool send_event; /* true if this came for SendEvent request */
+passthru: Display *display; /* display the event was read from */
+passthru: GLXDrawable drawable; /* i.d. of Drawable */
+passthru: int event_type; /* GLX_DAMAGED_SGIX or GLX_SAVED_SGIX */
+passthru: int draw_type; /* GLX_WINDOW_SGIX or GLX_PBUFFER_SGIX */
+passthru: unsigned int mask; /* mask indicating which buffers are affected*/
+passthru: int x, y;
+passthru: int width, height;
+passthru: int count; /* if nonzero, at least this many more */
+passthru: } GLXBufferClobberEventSGIX;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_NV_video_output
+passthru: typedef unsigned int GLXVideoDeviceNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLX_NV_video_capture
+passthru: typedef XID GLXVideoCaptureDeviceNV;
+passthru: #endif
+passthru:
+passthru: #ifndef GLEXT_64_TYPES_DEFINED
+passthru: /* This code block is duplicated in glext.h, so must be protected */
+passthru: #define GLEXT_64_TYPES_DEFINED
+passthru: /* Define int32_t, int64_t, and uint64_t types for UST/MSC */
+passthru: /* (as used in the GLX_OML_sync_control extension). */
+passthru: #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+passthru: #include <inttypes.h>
+passthru: #elif defined(__sun__) || defined(__digital__)
+passthru: #include <inttypes.h>
+passthru: #if defined(__STDC__)
+passthru: #if defined(__arch64__) || defined(_LP64)
+passthru: typedef long int int64_t;
+passthru: typedef unsigned long int uint64_t;
+passthru: #else
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #endif /* __arch64__ */
+passthru: #endif /* __STDC__ */
+passthru: #elif defined( __VMS ) || defined(__sgi)
+passthru: #include <inttypes.h>
+passthru: #elif defined(__SCO__) || defined(__USLC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(__UNIXOS2__) || defined(__SOL64__)
+passthru: typedef long int int32_t;
+passthru: typedef long long int int64_t;
+passthru: typedef unsigned long long int uint64_t;
+passthru: #elif defined(_WIN32) && defined(__GNUC__)
+passthru: #include <stdint.h>
+passthru: #elif defined(_WIN32)
+passthru: typedef __int32 int32_t;
+passthru: typedef __int64 int64_t;
+passthru: typedef unsigned __int64 uint64_t;
+passthru: #else
+passthru: #include <inttypes.h> /* Fallback option */
+passthru: #endif
+passthru: #endif
+passthru:
+
+###############################################################################
+#
+# GLX 1.3 commands
+#
+###############################################################################
+
+GetFBConfigs(dpy, screen, nelements)
+ return GLXFBConfigPointer
+ param dpy Display out reference
+ param screen int in value
+ param nelements int out reference
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 21
+
+ChooseFBConfig(dpy, screen, attrib_list, nelements)
+ return GLXFBConfigPointer
+ param dpy Display out reference
+ param screen int in value
+ param attrib_list int in reference
+ param nelements int out reference
+ category VERSION_1_3
+ glxflags client-handcode client-intercept server-handcode
+
+GetFBConfigAttrib(dpy, config, attribute, value)
+ return int
+ param dpy Display out reference
+ param config GLXFBConfig in value
+ param attribute int in value
+ param value int out reference
+ category VERSION_1_3
+ glxflags client-handcode client-intercept server-handcode
+
+GetVisualFromFBConfig(dpy, config)
+ return XVisualInfoPointer
+ param dpy Display out reference
+ param config GLXFBConfig in value
+ category VERSION_1_3
+ glxflags client-handcode client-intercept server-handcode
+
+CreateWindow(dpy, config, win, attrib_list)
+ return GLXWindow
+ param dpy Display out reference
+ param config GLXFBConfig in value
+ param win Window in value
+ param attrib_list int in reference
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 31
+
+DestroyWindow(dpy, win)
+ return void
+ param dpy Display out reference
+ param win GLXWindow in value
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 32
+
+CreatePixmap(dpy, config, pixmap, attrib_list)
+ return GLXPixmap
+ param dpy Display out reference
+ param config GLXFBConfig in value
+ param pixmap Pixmap in value
+ param attrib_list int in reference
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 22
+
+DestroyPixmap(dpy, pixmap)
+ return void
+ param dpy Display out reference
+ param pixmap GLXPixmap in value
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 23
+
+CreatePbuffer(dpy, config, attrib_list)
+ return GLXPbuffer
+ param dpy Display out reference
+ param config GLXFBConfig in value
+ param attrib_list int in reference
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 27
+
+DestroyPbuffer(dpy, pbuf)
+ return void
+ param dpy Display out reference
+ param pbuf GLXPbuffer in value
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 28
+
+# glXGetDrawableAttributes -> GLX opcode 29
+# glXChangeDrawableAttributes -> GLX opcode 30
+
+# Uses glXGetDrawableAttributes protocol
+QueryDrawable(dpy, draw, attribute, value)
+ return void
+ param dpy Display out reference
+ param draw GLXDrawable in value
+ param attribute int in value
+ param value uint out reference
+ category VERSION_1_3
+ glxflags client-handcode client-intercept server-handcode
+
+CreateNewContext(dpy, config, render_type, share_list, direct)
+ return GLXContext
+ param dpy Display out reference
+ param config GLXFBConfig in value
+ param render_type int in value
+ param share_list GLXContext in value
+ param direct Bool in value
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 24
+
+MakeContextCurrent(dpy, draw, read, ctx)
+ return Bool
+ param dpy Display out reference
+ param draw GLXDrawable in value
+ param read GLXDrawable in value
+ param ctx GLXContext in value
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 26
+
+GetCurrentReadDrawable()
+ return GLXDrawable
+ category VERSION_1_3
+ glxflags client-handcode client-intercept server-handcode
+
+GetCurrentDisplay()
+ return DisplayPointer
+ category VERSION_1_3
+ glxflags client-handcode client-intercept server-handcode
+
+QueryContext(dpy, ctx, attribute, value)
+ return int
+ param dpy Display out reference
+ param ctx GLXContext in value
+ param attribute int in value
+ param value int out reference
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+ glxopcode 25
+
+# Uses glXChangeDrawableAttributes protocol
+SelectEvent(dpy, draw, event_mask)
+ return void
+ param dpy Display out reference
+ param draw GLXDrawable in value
+ param event_mask ulong in value
+ category VERSION_1_3
+ glxflags client-handcode server-handcode
+
+# Uses glXGetDrawableAttributes protocol
+GetSelectedEvent(dpy, draw, event_mask)
+ return void
+ param dpy Display out reference
+ param draw GLXDrawable in value
+ param event_mask ulong out reference
+ category VERSION_1_3
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# GLX 1.4 commands
+#
+###############################################################################
+
+GetProcAddress(procName)
+ return FunctionPointer
+ param procName GLubyte in reference
+ category VERSION_1_4
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# ARB Extension #2
+# ARB_get_proc_address commands
+# @promoted to core in GLX 1.4, but there's no provision for aliasing
+# @in GLX spec files, yet
+#
+###############################################################################
+
+GetProcAddressARB(procName)
+ return FunctionPointer
+ param procName GLubyte in reference
+ category ARB_get_proc_address
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# ARB Extension #5
+# ARB_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_multisample
+
+###############################################################################
+#
+# ARB Extension #39
+# ARB_fbconfig_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_fbconfig_float
+
+###############################################################################
+#
+# ARB Extension #56
+# ARB_create_context commands
+#
+###############################################################################
+
+CreateContextAttribsARB(dpy, config, share_context, direct, attrib_list)
+ return GLXContext
+ param dpy Display out reference
+ param config GLXFBConfig in value
+ param share_context GLXContext in value
+ param direct Bool in value
+ param attrib_list int in reference
+ category ARB_create_context
+ glxflags client-handcode client-intercept server-handcode
+ glxopcode 34
+
+###############################################################################
+#
+# ARB Extension #75
+# ARB_create_context_profile commands
+#
+###############################################################################
+
+# (none)
+newcategory: ARB_create_context_profile
+
+
+###############################################################################
+#
+# Extension #25
+# SGIS_multisample commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIS_multisample
+
+###############################################################################
+#
+# Extension #28
+# EXT_visual_info commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_visual_info
+
+###############################################################################
+#
+# Extension #40
+# SGI_swap_control commands
+#
+###############################################################################
+
+SwapIntervalSGI(interval)
+ return int
+ param interval int in value
+ category SGI_swap_control
+ glxflags client-handcode server-handcode
+ glxvendorglx 65536
+
+###############################################################################
+#
+# Extension #41
+# SGI_video_sync commands
+#
+###############################################################################
+
+GetVideoSyncSGI(count)
+ return int
+ param count uint out reference
+ category SGI_video_sync
+ glxflags client-handcode client-intercept server-handcode
+
+WaitVideoSyncSGI(divisor, remainder, count)
+ return int
+ param divisor int in value
+ param remainder int in value
+ param count uint out reference
+ category SGI_video_sync
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #42
+# SGI_make_current_read commands
+#
+###############################################################################
+
+MakeCurrentReadSGI(dpy, draw, read, ctx)
+ return Bool
+ param dpy Display out reference
+ param draw GLXDrawable in value
+ param read GLXDrawable in value
+ param ctx GLXContext in value
+ category SGI_make_current_read
+ glxflags client-handcode server-handcode
+ glxvendorglx 65537
+
+GetCurrentReadDrawableSGI()
+ return GLXDrawable
+ category SGI_make_current_read
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #43
+# SGIX_video_source commands
+#
+###############################################################################
+
+newcategory: SGIX_video_source
+passthru: #ifdef _VL_H
+
+CreateGLXVideoSourceSGIX(display, screen, server, path, nodeClass, drainNode)
+ return GLXVideoSourceSGIX
+ param display Display out reference
+ param screen int in value
+ param server VLServer in value
+ param path VLPath in value
+ param nodeClass int in value
+ param drainNode VLNode in value
+ category SGIX_video_source
+ glxflags client-handcode server-handcode
+ glxvendorglx 65538
+
+DestroyGLXVideoSourceSGIX(dpy, glxvideosource)
+ return void
+ param dpy Display out reference
+ param glxvideosource GLXVideoSourceSGIX in value
+ category SGIX_video_source
+ glxflags client-handcode server-handcode
+ glxvendorglx 65539
+
+passend: #endif /* _VL_H */
+endcategory:
+
+###############################################################################
+#
+# Extension #44
+# EXT_visual_rating commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_visual_rating
+
+###############################################################################
+#
+# Extension #47
+# EXT_import_context commands
+#
+###############################################################################
+
+GetCurrentDisplayEXT()
+ return DisplayPointer
+ category EXT_import_context
+ glxflags client-handcode client-intercept server-handcode
+
+QueryContextInfoEXT(dpy, context, attribute, value)
+ return int
+ param dpy Display out reference
+ param context GLXContext in value
+ param attribute int in value
+ param value int out reference
+ category EXT_import_context
+ glxflags client-handcode server-handcode
+ glxvendorglx 1024
+
+# 'constGLXContext' is a hack; the extension specification and glx.h
+# should be fixed instead.
+GetContextIDEXT(context)
+ return GLXContextID
+ param context constGLXContext in value
+ category EXT_import_context
+ glxflags client-handcode client-intercept server-handcode
+
+ImportContextEXT(dpy, contextID)
+ return GLXContext
+ param dpy Display out reference
+ param contextID GLXContextID in value
+ category EXT_import_context
+ glxflags client-handcode client-intercept server-handcode
+
+FreeContextEXT(dpy, context)
+ return void
+ param dpy Display out reference
+ param context GLXContext in value
+ category EXT_import_context
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #49
+# SGIX_fbconfig commands
+#
+###############################################################################
+
+# GetFBConfigsSGIX protocol -> VendorPrivate opcode 65540
+
+GetFBConfigAttribSGIX(dpy, config, attribute, value)
+ return int
+ param dpy Display out reference
+ param config GLXFBConfigSGIX in value
+ param attribute int in value
+ param value int out reference
+ category SGIX_fbconfig
+ glxflags client-handcode client-intercept server-handcode
+
+ChooseFBConfigSGIX(dpy, screen, attrib_list, nelements)
+ return GLXFBConfigSGIXPointer
+ param dpy Display out reference
+ param screen int in value
+ param attrib_list int out reference
+ param nelements int out reference
+ category SGIX_fbconfig
+ glxflags client-handcode client-intercept server-handcode
+
+CreateGLXPixmapWithConfigSGIX(dpy, config, pixmap)
+ return GLXPixmap
+ param dpy Display out reference
+ param config GLXFBConfigSGIX in value
+ param pixmap Pixmap in value
+ category SGIX_fbconfig
+ glxflags client-handcode server-handcode
+ glxvendorglx 65542
+
+CreateContextWithConfigSGIX(dpy, config, render_type, share_list, direct)
+ return GLXContext
+ param dpy Display out reference
+ param config GLXFBConfigSGIX in value
+ param render_type int in value
+ param share_list GLXContext in value
+ param direct Bool in value
+ category SGIX_fbconfig
+ glxflags client-handcode server-handcode
+ glxvendorglx 65541
+
+GetVisualFromFBConfigSGIX(dpy, config)
+ return XVisualInfoPointer
+ param dpy Display out reference
+ param config GLXFBConfigSGIX in value
+ category SGIX_fbconfig
+ glxflags client-handcode client-intercept server-handcode
+
+GetFBConfigFromVisualSGIX(dpy, vis)
+ return GLXFBConfigSGIX
+ param dpy Display out reference
+ param vis XVisualInfo out reference
+ category SGIX_fbconfig
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #50
+# SGIX_pbuffer commands
+#
+###############################################################################
+
+# ChangeDrawableAttributesSGIX protocol -> VendorPrivate opcode 65545
+# GetDrawableAttributesSGIX protocol -> VendorPrivate opcode 65546
+
+CreateGLXPbufferSGIX(dpy, config, width, height, attrib_list)
+ return GLXPbufferSGIX
+ param dpy Display out reference
+ param config GLXFBConfigSGIX in value
+ param width uint in value
+ param height uint in value
+ param attrib_list int out reference
+ category SGIX_pbuffer
+ glxflags client-handcode server-handcode
+ glxvendorglx 65543
+
+DestroyGLXPbufferSGIX(dpy, pbuf)
+ return void
+ param dpy Display out reference
+ param pbuf GLXPbufferSGIX in value
+ category SGIX_pbuffer
+ glxflags client-handcode
+ glxvendorglx 65544
+
+QueryGLXPbufferSGIX(dpy, pbuf, attribute, value)
+ return int
+ param dpy Display out reference
+ param pbuf GLXPbufferSGIX in value
+ param attribute int in value
+ param value uint out reference
+ category SGIX_pbuffer
+
+SelectEventSGIX(dpy, drawable, mask)
+ return void
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param mask ulong in value
+ category SGIX_pbuffer
+
+GetSelectedEventSGIX(dpy, drawable, mask)
+ return void
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param mask ulong out reference
+ category SGIX_pbuffer
+
+###############################################################################
+#
+# Extension #62
+# SGI_cushion commands
+#
+###############################################################################
+
+CushionSGI(dpy, window, cushion)
+ return void
+ param dpy Display out reference
+ param window Window in value
+ param cushion float in value
+ category SGI_cushion
+
+###############################################################################
+#
+# Extension #83
+# SGIX_video_resize commands
+#
+###############################################################################
+
+BindChannelToWindowSGIX(display, screen, channel, window)
+ return int
+ param display Display out reference
+ param screen int in value
+ param channel int in value
+ param window Window in value
+ category SGIX_video_resize
+
+ChannelRectSGIX(display, screen, channel, x, y, w, h)
+ return int
+ param display Display out reference
+ param screen int in value
+ param channel int in value
+ param x int in value
+ param y int in value
+ param w int in value
+ param h int in value
+ category SGIX_video_resize
+
+QueryChannelRectSGIX(display, screen, channel, dx, dy, dw, dh)
+ return int
+ param display Display out reference
+ param screen int in value
+ param channel int in value
+ param dx int out reference
+ param dy int out reference
+ param dw int out reference
+ param dh int out reference
+ category SGIX_video_resize
+
+QueryChannelDeltasSGIX(display, screen, channel, x, y, w, h)
+ return int
+ param display Display out reference
+ param screen int in value
+ param channel int in value
+ param x int out reference
+ param y int out reference
+ param w int out reference
+ param h int out reference
+ category SGIX_video_resize
+
+# @@@ Not in man page - this entry point may not be shipping?
+ChannelRectSyncSGIX(display, screen, channel, synctype)
+ return int
+ param display Display out reference
+ param screen int in value
+ param channel int in value
+ param synctype GLenum in value
+ category SGIX_video_resize
+
+###############################################################################
+#
+# Extension #86
+# SGIX_dmbuffer commands
+#
+###############################################################################
+
+newcategory: SGIX_dmbuffer
+passthru: #ifdef _DM_BUFFER_H_
+
+AssociateDMPbufferSGIX(dpy, pbuffer, params, dmbuffer)
+ return Bool
+ param dpy Display out reference
+ param pbuffer GLXPbufferSGIX in value
+ param params DMparams out reference
+ param dmbuffer DMbuffer in value
+ category SGIX_dmbuffer
+
+passend: #endif /* _DM_BUFFER_H_ */
+endcategory:
+
+###############################################################################
+#
+# Extension #91
+# SGIX_swap_group commands
+#
+###############################################################################
+
+JoinSwapGroupSGIX(dpy, drawable, member)
+ return void
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param member GLXDrawable in value
+ category SGIX_swap_group
+ glxflags client-handcode server-handcode
+ glxvendorglx 65547
+
+###############################################################################
+#
+# Extension #92
+# SGIX_swap_barrier commands
+#
+###############################################################################
+
+BindSwapBarrierSGIX(dpy, drawable, barrier)
+ return void
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param barrier int in value
+ category SGIX_swap_barrier
+ glxflags client-handcode server-handcode
+ glxvendorglx 65548
+
+QueryMaxSwapBarriersSGIX(dpy, screen, max)
+ return Bool
+ param dpy Display out reference
+ param screen int in value
+ param max int out reference
+ category SGIX_swap_barrier
+ glxflags client-handcode server-handcode
+ glxvendorglx 65549
+
+###############################################################################
+#
+# Extension #183
+# SUN_get_transparent_index commands
+#
+###############################################################################
+
+GetTransparentIndexSUN(dpy, overlay, underlay, pTransparentIndex)
+ return Status
+ param dpy Display out reference
+ param overlay Window in value
+ param underlay Window in value
+ param pTransparentIndex long out reference
+ category SUN_get_transparent_index
+
+###############################################################################
+#
+# Extension #215
+# MESA_copy_sub_buffer commands
+#
+###############################################################################
+
+CopySubBufferMESA(dpy, drawable, x, y, width, height)
+ return void
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param x int in value
+ param y int in value
+ param width int in value
+ param height int in value
+ category MESA_copy_sub_buffer
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #216
+# MESA_pixmap_colormap commands
+#
+###############################################################################
+
+CreateGLXPixmapMESA(dpy, visual, pixmap, cmap)
+ return GLXPixmap
+ param dpy Display out reference
+ param visual XVisualInfo out reference
+ param pixmap Pixmap in value
+ param cmap Colormap in value
+ category MESA_pixmap_colormap
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #217
+# MESA_release_buffers commands
+#
+###############################################################################
+
+ReleaseBuffersMESA(dpy, drawable)
+ return Bool
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ category MESA_release_buffers
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #218
+# MESA_set_3dfx_mode commands
+#
+###############################################################################
+
+# Brian's spec has this as returning 'GLboolean' and taking 'GLint mode'
+Set3DfxModeMESA(mode)
+ return Bool
+ param mode int in value
+ category MESA_set_3dfx_mode
+ glxflags client-handcode client-intercept server-handcode
+
+###############################################################################
+#
+# Extension #234
+# SGIX_visual_select_group commands
+#
+###############################################################################
+
+# (none)
+newcategory: SGIX_visual_select_group
+
+###############################################################################
+#
+# Extension #237
+# OML_swap_method commands
+#
+###############################################################################
+
+# (none)
+newcategory: OML_swap_method
+
+###############################################################################
+#
+# Extension #238
+# OML_sync_control commands
+#
+###############################################################################
+
+GetSyncValuesOML(dpy, drawable, ust, msc, sbc)
+ return Bool
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param ust int64_t out reference
+ param msc int64_t out reference
+ param sbc int64_t out reference
+ category OML_sync_control
+ glxflags client-handcode server-handcode
+
+GetMscRateOML(dpy, drawable, numerator, denominator)
+ return Bool
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param numerator int32_t out reference
+ param denominator int32_t out reference
+ category OML_sync_control
+ glxflags client-handcode server-handcode
+
+SwapBuffersMscOML(dpy, drawable, target_msc, divisor, remainder)
+ return int64_t
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param target_msc int64_t in value
+ param divisor int64_t in value
+ param remainder int64_t in value
+ category OML_sync_control
+ glxflags client-handcode server-handcode
+
+WaitForMscOML(dpy, drawable, target_msc, divisor, remainder, ust, msc, sbc)
+ return Bool
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param target_msc int64_t in value
+ param divisor int64_t in value
+ param remainder int64_t in value
+ param ust int64_t out reference
+ param msc int64_t out reference
+ param sbc int64_t out reference
+ category OML_sync_control
+ glxflags client-handcode server-handcode
+
+WaitForSbcOML(dpy, drawable, target_sbc, ust, msc, sbc)
+ return Bool
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param target_sbc int64_t in value
+ param ust int64_t out reference
+ param msc int64_t out reference
+ param sbc int64_t out reference
+ category OML_sync_control
+ glxflags client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #281
+# NV_float_buffer commands
+#
+###############################################################################
+
+# (none)
+newcategory: NV_float_buffer
+
+###############################################################################
+#
+# Extension #307
+# SGIX_hyperpipe commands
+#
+###############################################################################
+
+newcategory: SGIX_hyperpipe
+passthru:
+passthru: typedef struct {
+passthru: char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru: int networkId;
+passthru: } GLXHyperpipeNetworkSGIX;
+passthru:
+passthru: typedef struct {
+passthru: char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru: int channel;
+passthru: unsigned int
+passthru: participationType;
+passthru: int timeSlice;
+passthru: } GLXHyperpipeConfigSGIX;
+passthru:
+passthru: typedef struct {
+passthru: char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru: int srcXOrigin, srcYOrigin, srcWidth, srcHeight;
+passthru: int destXOrigin, destYOrigin, destWidth, destHeight;
+passthru: } GLXPipeRect;
+passthru:
+passthru: typedef struct {
+passthru: char pipeName[GLX_HYPERPIPE_PIPE_NAME_LENGTH_SGIX];
+passthru: int XOrigin, YOrigin, maxHeight, maxWidth;
+passthru: } GLXPipeRectLimits;
+passthru:
+
+QueryHyperpipeNetworkSGIX(dpy, npipes)
+ return GLXHyperpipeNetworkSGIXPointer
+ param dpy Display out reference
+ param npipes int out reference
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx 65550
+
+HyperpipeConfigSGIX(dpy, networkId, npipes, cfg, hpId)
+ return int
+ param dpy Display out reference
+ param networkId int in value
+ param npipes int in value
+ param cfg GLXHyperpipeConfigSGIX out array [COMPSIZE(npipes)]
+ param hpId int out reference
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx 65552
+
+QueryHyperpipeConfigSGIX(dpy, hpId, npipes)
+ return GLXHyperpipeConfigSGIXPointer
+ param dpy Display out reference
+ param hpId int in value
+ param npipes int out reference
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx 65551
+
+DestroyHyperpipeConfigSGIX(dpy, hpId)
+ return int
+ param dpy Display out reference
+ param hpId int in value
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx 65553
+
+BindHyperpipeSGIX(dpy, hpId)
+ return int
+ param dpy Display out reference
+ param hpId int in value
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx ???
+
+QueryHyperpipeBestAttribSGIX(dpy, timeSlice, attrib, size, attribList, returnAttribList)
+ return int
+ param dpy Display out reference
+ param timeSlice int in value
+ param attrib int in value
+ param size int in value
+ param attribList void out array [COMPSIZE(size)]
+ param returnAttribList void out array [COMPSIZE(size)]
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx ???
+
+HyperpipeAttribSGIX(dpy, timeSlice, attrib, size, attribList)
+ return int
+ param dpy Display out reference
+ param timeSlice int in value
+ param attrib int in value
+ param size int in value
+ param attribList void out array [COMPSIZE(size)]
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx ???
+
+QueryHyperpipeAttribSGIX(dpy, timeSlice, attrib, size, returnAttribList)
+ return int
+ param dpy Display out reference
+ param timeSlice int in value
+ param attrib int in value
+ param size int in value
+ param returnAttribList void out array [COMPSIZE(size)]
+ glxflags client-handcode server-handcode
+ category SGIX_hyperpipe
+ glxvendorglx ???
+
+###############################################################################
+#
+# Extension #308
+# MESA_agp_offset commands
+#
+###############################################################################
+
+GetAGPOffsetMESA(pointer)
+ return uint
+ param pointer void in reference
+ glxflags client-handcode client-intercept server-handcode
+ category MESA_agp_offset
+
+###############################################################################
+#
+# Extension #328
+# EXT_fbconfig_packed_float commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_fbconfig_packed_float
+
+###############################################################################
+#
+# Extension #337
+# EXT_framebuffer_sRGB commands
+#
+###############################################################################
+
+# (none)
+newcategory: EXT_framebuffer_sRGB
+
+###############################################################################
+#
+# Extension #344
+# EXT_texture_from_pixmap commands
+#
+###############################################################################
+
+BindTexImageEXT(dpy, drawable, buffer, attrib_list)
+ return void
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param buffer int in value
+ param attrib_list int in reference
+ category EXT_texture_from_pixmap
+ glxflags client-handcode server-handcode
+ glxvendorglx 1330
+
+ReleaseTexImageEXT(dpy, drawable, buffer)
+ return void
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param buffer int in value
+ category EXT_texture_from_pixmap
+ glxflags client-handcode server-handcode
+ glxvendorglx 1331
+
+###############################################################################
+#
+# Extension #347
+# NV_present_video commands
+#
+###############################################################################
+
+EnumerateVideoDevicesNV(dpy, screen, nelements)
+ return uintPointer
+ param dpy Display out reference
+ param screen int in value
+ param nelements int out reference
+ category NV_present_video
+ glxflags client-handcode server-handcode
+
+BindVideoDeviceNV(dpy, video_slot, video_device, attrib_list)
+ return int
+ param dpy Display out reference
+ param video_slot uint in value
+ param video_device uint in value
+ param attrib_list int in reference
+ category NV_present_video
+ glxflags client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #348
+# NV_video_output commands
+#
+###############################################################################
+
+GetVideoDeviceNV(dpy, screen, numVideoDevices, pVideoDevice)
+ return int
+ param dpy Display out reference
+ param screen int in value
+ param numVideoDevices int in value
+ param pVideoDevice GLXVideoDeviceNV out array [COMPSIZE(numVideoDevices)]
+ category NV_video_output
+ glxflags client-handcode server-handcode
+
+ReleaseVideoDeviceNV(dpy, screen, VideoDevice)
+ return int
+ param dpy Display out reference
+ param screen int in value
+ param VideoDevice GLXVideoDeviceNV in value
+ category NV_video_output
+ glxflags client-handcode server-handcode
+
+BindVideoImageNV(dpy, VideoDevice, pbuf, iVideoBuffer)
+ return int
+ param dpy Display out reference
+ param VideoDevice GLXVideoDeviceNV in value
+ param pbuf GLXPbuffer in value
+ param iVideoBuffer int in value
+ category NV_video_output
+ glxflags client-handcode server-handcode
+
+ReleaseVideoImageNV(dpy, pbuf)
+ return int
+ param dpy Display out reference
+ param pbuf GLXPbuffer in value
+ category NV_video_output
+ glxflags client-handcode server-handcode
+
+SendPbufferToVideoNV(dpy, pbuf, iBufferType, pulCounterPbuffer, bBlock)
+ return int
+ param dpy Display out reference
+ param pbuf GLXPbuffer in value
+ param iBufferType int in value
+ param pulCounterPbuffer ulong out reference
+ param bBlock GLboolean in value
+ category NV_video_output
+ glxflags client-handcode server-handcode
+
+GetVideoInfoNV(dpy, screen, VideoDevice, pulCounterOutputPbuffer, pulCounterOutputVideo)
+ return int
+ param dpy Display out reference
+ param screen int in value
+ param VideoDevice GLXVideoDeviceNV in value
+ param pulCounterOutputPbuffer ulong out reference
+ param pulCounterOutputVideo ulong out reference
+ category NV_video_output
+ glxflags client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #350
+# NV_swap_group commands
+#
+###############################################################################
+
+JoinSwapGroupNV(dpy, drawable, group)
+ return Bool
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param group GLuint in value
+ category NV_swap_group
+ glxflags client-handcode server-handcode
+
+BindSwapBarrierNV(dpy, group, barrier)
+ return Bool
+ param dpy Display out reference
+ param group GLuint in value
+ param barrier GLuint in value
+ category NV_swap_group
+ glxflags client-handcode server-handcode
+
+QuerySwapGroupNV(dpy, drawable, group, barrier)
+ return Bool
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param group GLuint out reference
+ param barrier GLuint out reference
+ category NV_swap_group
+ glxflags client-handcode server-handcode
+
+QueryMaxSwapGroupsNV(dpy, screen, maxGroups, maxBarriers)
+ return Bool
+ param dpy Display out reference
+ param screen int in value
+ param maxGroups GLuint out reference
+ param maxBarriers GLuint out reference
+ category NV_swap_group
+ glxflags client-handcode server-handcode
+
+QueryFrameCountNV(dpy, screen, count)
+ return Bool
+ param dpy Display out reference
+ param screen int in value
+ param count GLuint out reference
+ category NV_swap_group
+ glxflags client-handcode server-handcode
+
+ResetFrameCountNV(dpy, screen)
+ return Bool
+ param dpy Display out reference
+ param screen int in value
+ category NV_swap_group
+ glxflags client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #374
+# NV_video_capture commands
+#
+###############################################################################
+
+BindVideoCaptureDeviceNV(dpy, video_capture_slot, device)
+ return int
+ param dpy Display out reference
+ param video_capture_slot uint in value
+ param device GLXVideoCaptureDeviceNV in value
+ category NV_video_capture
+ glxflags client-handcode server-handcode
+
+EnumerateVideoCaptureDevicesNV(dpy, screen, nelements)
+ return GLXVideoCaptureDeviceNVPointer
+ param dpy Display out reference
+ param screen int in value
+ param nelements int out reference
+ category NV_video_capture
+ glxflags client-handcode server-handcode
+
+LockVideoCaptureDeviceNV(dpy, device)
+ return void
+ param dpy Display out reference
+ param device GLXVideoCaptureDeviceNV in value
+ category NV_video_capture
+ glxflags client-handcode server-handcode
+
+QueryVideoCaptureDeviceNV(dpy, device, attribute, value)
+ return int
+ param dpy Display out reference
+ param device GLXVideoCaptureDeviceNV in value
+ param attribute int in value
+ param value int out array [COMPSIZE(attribute)]
+ category NV_video_capture
+ glxflags client-handcode server-handcode
+
+ReleaseVideoCaptureDeviceNV(dpy, device)
+ return void
+ param dpy Display out reference
+ param device GLXVideoCaptureDeviceNV in value
+ category NV_video_capture
+ glxflags client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #375
+# EXT_swap_control commands
+#
+###############################################################################
+
+SwapIntervalEXT(dpy, drawable, interval)
+ return int
+ param dpy Display out reference
+ param drawable GLXDrawable in value
+ param interval int in value
+ category EXT_swap_control
+ glxflags client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #376
+# NV_copy_image commands
+#
+###############################################################################
+
+CopyImageSubDataNV(dpy, srcCtx, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstCtx, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, width, height, depth)
+ return void
+ param dpy Display out reference
+ param srcCtx GLXContext in value
+ param srcName GLuint in value
+ param srcTarget GLenum in value
+ param srcLevel GLint in value
+ param srcX GLint in value
+ param srcY GLint in value
+ param srcZ GLint in value
+ param dstCtx GLXContext in value
+ param dstName GLuint in value
+ param dstTarget GLenum in value
+ param dstLevel GLint in value
+ param dstX GLint in value
+ param dstY GLint in value
+ param dstZ GLint in value
+ param width GLsizei in value
+ param height GLsizei in value
+ param depth GLsizei in value
+ category NV_copy_image
+ glxflags client-handcode server-handcode
+
+###############################################################################
+#
+# Extension #384
+# INTEL_swap_event commands
+#
+###############################################################################
+
+# (none)
+newcategory: INTEL_swap_event
diff --git a/src/glx/apple/specs/update.sh b/src/glx/apple/specs/update.sh
new file mode 100755
index 0000000000..f8c3158a53
--- /dev/null
+++ b/src/glx/apple/specs/update.sh
@@ -0,0 +1,4 @@
+for f in enum.spec enumext.spec gl.spec gl.tm glx.spec glxenum.spec glxenumext.spec glxext.spec ; do
+ curl -LO http://www.opengl.org/registry/api/$f
+done
+
diff --git a/src/glx/clientattrib.c b/src/glx/clientattrib.c
index a7dfb53486..b26c17938d 100644
--- a/src/glx/clientattrib.c
+++ b/src/glx/clientattrib.c
@@ -35,6 +35,7 @@
/*****************************************************************************/
+#ifndef GLX_USE_APPLEGL
static void
do_enable_disable(GLenum array, GLboolean val)
{
@@ -123,6 +124,7 @@ __indirect_glPopClientAttrib(void)
return;
}
}
+#endif
void
__glFreeAttributeState(__GLXcontext * gc)
diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c
index 3a53ce91b3..6058c721da 100644
--- a/src/glx/dri2_glx.c
+++ b/src/glx/dri2_glx.c
@@ -30,7 +30,7 @@
* Kristian Høgsberg (krh@redhat.com)
*/
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
#include <X11/Xlib.h>
#include <X11/extensions/Xfixes.h>
@@ -47,7 +47,12 @@
#include "xf86drm.h"
#include "dri2.h"
#include "dri_common.h"
-#include "../../mesa/drivers/dri/common/dri_util.h"
+
+/* From xmlpool/options.h, user exposed so should be stable */
+#define DRI_CONF_VBLANK_NEVER 0
+#define DRI_CONF_VBLANK_DEF_INTERVAL_0 1
+#define DRI_CONF_VBLANK_DEF_INTERVAL_1 2
+#define DRI_CONF_VBLANK_ALWAYS_SYNC 3
#undef DRI2_MINOR
#define DRI2_MINOR 1
@@ -177,6 +182,7 @@ dri2CreateDrawable(__GLXscreenConfigs * psc,
__GLXDRIconfigPrivate *config = (__GLXDRIconfigPrivate *) modes;
__GLXdisplayPrivate *dpyPriv;
__GLXDRIdisplayPrivate *pdp;
+ GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
pdraw = Xmalloc(sizeof(*pdraw));
if (!pdraw)
@@ -187,7 +193,23 @@ dri2CreateDrawable(__GLXscreenConfigs * psc,
pdraw->base.drawable = drawable;
pdraw->base.psc = psc;
pdraw->bufferCount = 0;
- pdraw->swap_interval = 1;
+ pdraw->swap_interval = 1; /* default may be overridden below */
+ pdraw->have_back = 0;
+
+ if (psc->config)
+ psc->config->configQueryi(psc->__driScreen, "vblank_mode", &vblank_mode);
+
+ switch (vblank_mode) {
+ case DRI_CONF_VBLANK_NEVER:
+ case DRI_CONF_VBLANK_DEF_INTERVAL_0:
+ pdraw->swap_interval = 0;
+ break;
+ case DRI_CONF_VBLANK_DEF_INTERVAL_1:
+ case DRI_CONF_VBLANK_ALWAYS_SYNC:
+ default:
+ pdraw->swap_interval = 1;
+ break;
+ }
DRI2CreateDrawable(psc->dpy, xDrawable);
@@ -204,12 +226,14 @@ dri2CreateDrawable(__GLXscreenConfigs * psc,
return NULL;
}
+#ifdef X_DRI2SwapInterval
/*
* Make sure server has the same swap interval we do for the new
* drawable.
*/
if (pdp->swapAvailable)
DRI2SwapInterval(psc->dpy, xDrawable, pdraw->swap_interval);
+#endif
return &pdraw->base;
}
@@ -474,7 +498,23 @@ dri2GetBuffersWithFormat(__DRIdrawable * driDrawable,
static void
dri2SetSwapInterval(__GLXDRIdrawable *pdraw, int interval)
{
+ __GLXscreenConfigs *psc = pdraw->psc;
__GLXDRIdrawablePrivate *priv = (__GLXDRIdrawablePrivate *) pdraw;
+ GLint vblank_mode = DRI_CONF_VBLANK_DEF_INTERVAL_1;
+
+ if (psc->config)
+ psc->config->configQueryi(psc->__driScreen, "vblank_mode", &vblank_mode);
+
+ switch (vblank_mode) {
+ case DRI_CONF_VBLANK_NEVER:
+ return;
+ case DRI_CONF_VBLANK_ALWAYS_SYNC:
+ if (interval <= 0)
+ return;
+ break;
+ default:
+ break;
+ }
DRI2SwapInterval(priv->base.psc->dpy, pdraw->xDrawable, interval);
priv->swap_interval = interval;
diff --git a/src/glx/dri_common.c b/src/glx/dri_common.c
index e4034161bb..429fc6d891 100644
--- a/src/glx/dri_common.c
+++ b/src/glx/dri_common.c
@@ -33,7 +33,7 @@
* Kristian Høgsberg (krh@redhat.com)
*/
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
#include <unistd.h>
#include <dlfcn.h>
@@ -403,6 +403,11 @@ dri2BindExtensions(__GLXscreenConfigs *psc)
/* internal driver extension, no GL extension exposed */
}
#endif
+
+#ifdef __DRI2_CONFIG_QUERY
+ if ((strcmp(extensions[i]->name, __DRI2_CONFIG_QUERY) == 0))
+ psc->config = (__DRI2configQueryExtension *) extensions[i];
+#endif
}
}
diff --git a/src/glx/dri_glx.c b/src/glx/dri_glx.c
index e47db82b70..74afa60301 100644
--- a/src/glx/dri_glx.c
+++ b/src/glx/dri_glx.c
@@ -32,7 +32,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
#include <X11/Xlib.h>
#include <X11/extensions/Xfixes.h>
diff --git a/src/glx/drisw_glx.c b/src/glx/drisw_glx.c
index 786faff81c..cdb1d9f4dc 100644
--- a/src/glx/drisw_glx.c
+++ b/src/glx/drisw_glx.c
@@ -21,7 +21,7 @@
* SOFTWARE.
*/
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
#include <X11/Xlib.h>
#include "glxclient.h"
diff --git a/src/glx/glcontextmodes.c b/src/glx/glcontextmodes.c
index eb9037907f..cdc16f8330 100644
--- a/src/glx/glcontextmodes.c
+++ b/src/glx/glcontextmodes.c
@@ -237,9 +237,11 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute,
case GLX_LEVEL:
*value_return = mode->level;
return 0;
+#ifndef GLX_USE_APPLEGL /* This isn't supported by CGL. */
case GLX_TRANSPARENT_TYPE_EXT:
*value_return = mode->transparentPixel;
return 0;
+#endif
case GLX_TRANSPARENT_RED_VALUE:
*value_return = mode->transparentRed;
return 0;
@@ -285,6 +287,7 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute,
case GLX_MAX_PBUFFER_PIXELS:
*value_return = mode->maxPbufferPixels;
return 0;
+#ifndef GLX_USE_APPLEGL /* These aren't supported by CGL. */
case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
*value_return = mode->optimalPbufferWidth;
return 0;
@@ -294,6 +297,7 @@ _gl_get_context_mode_data(const __GLcontextModes * mode, int attribute,
case GLX_SWAP_METHOD_OML:
*value_return = mode->swapMethod;
return 0;
+#endif
case GLX_SAMPLE_BUFFERS_SGIS:
*value_return = mode->sampleBuffers;
return 0;
diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c
index 2098cc6a52..b8d0f21bf0 100644
--- a/src/glx/glx_pbuffer.c
+++ b/src/glx/glx_pbuffer.c
@@ -37,6 +37,12 @@
#include <string.h>
#include "glxextensions.h"
+#ifdef GLX_USE_APPLEGL
+#include <pthread.h>
+#include "apple_glx_drawable.h"
+#include "glx_error.h"
+#endif
+
#define WARN_ONCE_GLX_1_3(a, b) { \
static int warned=1; \
if(warned) { \
@@ -49,19 +55,19 @@
* Emit a warning when clients use GLX 1.3 functions on pre-1.3 systems.
*/
static void
-warn_GLX_1_3(Display *dpy, const char *function_name)
+warn_GLX_1_3(Display * dpy, const char *function_name)
{
__GLXdisplayPrivate *priv = __glXInitialize(dpy);
if (priv->minorVersion < 3) {
- fprintf(stderr,
- "WARNING: Application calling GLX 1.3 function \"%s\" "
- "when GLX 1.3 is not supported! This is an application bug!\n",
- function_name);
+ fprintf(stderr,
+ "WARNING: Application calling GLX 1.3 function \"%s\" "
+ "when GLX 1.3 is not supported! This is an application bug!\n",
+ function_name);
}
}
-
+#ifndef GLX_USE_APPLEGL
/**
* Change a drawable's attribute.
*
@@ -320,7 +326,7 @@ GetDrawableAttribute(Display * dpy, GLXDrawable drawable,
}
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
{
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
@@ -586,6 +592,7 @@ glXCreateGLXPbufferSGIX(Display * dpy, GLXFBConfigSGIX config,
attrib_list, GL_FALSE);
}
+#endif /* GLX_USE_APPLEGL */
/**
* Create a new pbuffer.
@@ -594,12 +601,57 @@ PUBLIC GLXPbuffer
glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list)
{
int i, width, height;
+#ifdef GLX_USE_APPLEGL
+ GLXPbuffer result;
+ int errorcode;
+#endif
width = 0;
height = 0;
WARN_ONCE_GLX_1_3(dpy, __func__);
+#ifdef GLX_USE_APPLEGL
+ for (i = 0; attrib_list[i]; ++i) {
+ switch (attrib_list[i]) {
+ case GLX_PBUFFER_WIDTH:
+ width = attrib_list[i + 1];
+ ++i;
+ break;
+
+ case GLX_PBUFFER_HEIGHT:
+ height = attrib_list[i + 1];
+ ++i;
+ break;
+
+ case GLX_LARGEST_PBUFFER:
+ /* This is a hint we should probably handle, but how? */
+ ++i;
+ break;
+
+ case GLX_PRESERVED_CONTENTS:
+ /* The contents are always preserved with AppleSGLX with CGL. */
+ ++i;
+ break;
+
+ default:
+ return None;
+ }
+ }
+
+ if (apple_glx_pbuffer_create(dpy, config, width, height, &errorcode,
+ &result)) {
+ /*
+ * apple_glx_pbuffer_create only sets the errorcode to core X11
+ * errors.
+ */
+ __glXSendError(dpy, errorcode, 0, X_GLXCreatePbuffer, true);
+
+ return None;
+ }
+
+ return result;
+#else
for (i = 0; attrib_list[i * 2]; i++) {
switch (attrib_list[i * 2]) {
case GLX_PBUFFER_WIDTH:
@@ -613,6 +665,7 @@ glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list)
return (GLXPbuffer) CreatePbuffer(dpy, (__GLcontextModes *) config,
width, height, attrib_list, GL_TRUE);
+#endif
}
@@ -622,7 +675,13 @@ glXCreatePbuffer(Display * dpy, GLXFBConfig config, const int *attrib_list)
PUBLIC void
glXDestroyPbuffer(Display * dpy, GLXPbuffer pbuf)
{
+#ifdef GLX_USE_APPLEGL
+ if (apple_glx_pbuffer_destroy(dpy, pbuf)) {
+ __glXSendError(dpy, GLXBadPbuffer, pbuf, X_GLXDestroyPbuffer, false);
+ }
+#else
DestroyPbuffer(dpy, pbuf);
+#endif
}
@@ -634,10 +693,47 @@ glXQueryDrawable(Display * dpy, GLXDrawable drawable,
int attribute, unsigned int *value)
{
WARN_ONCE_GLX_1_3(dpy, __func__);
+#ifdef GLX_USE_APPLEGL
+ Window root;
+ int x, y;
+ unsigned int width, height, bd, depth;
+
+ if (apple_glx_pixmap_query(drawable, attribute, value))
+ return; /*done */
+
+ if (apple_glx_pbuffer_query(drawable, attribute, value))
+ return; /*done */
+
+ /*
+ * The OpenGL spec states that we should report GLXBadDrawable if
+ * the drawable is invalid, however doing so would require that we
+ * use XSetErrorHandler(), which is known to not be thread safe.
+ * If we use a round-trip call to validate the drawable, there could
+ * be a race, so instead we just opt in favor of letting the
+ * XGetGeometry request fail with a GetGeometry request X error
+ * rather than GLXBadDrawable, in what is hoped to be a rare
+ * case of an invalid drawable. In practice most and possibly all
+ * X11 apps using GLX shouldn't notice a difference.
+ */
+ if (XGetGeometry
+ (dpy, drawable, &root, &x, &y, &width, &height, &bd, &depth)) {
+ switch (attribute) {
+ case GLX_WIDTH:
+ *value = width;
+ break;
+
+ case GLX_HEIGHT:
+ *value = height;
+ break;
+ }
+ }
+#else
GetDrawableAttribute(dpy, drawable, attribute, value);
+#endif
}
+#ifndef GLX_USE_APPLEGL
/**
* Query an attribute of a pbuffer.
*/
@@ -647,7 +743,7 @@ glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable,
{
return GetDrawableAttribute(dpy, drawable, attribute, value);
}
-
+#endif
/**
* Select the event mask for a drawable.
@@ -655,12 +751,30 @@ glXQueryGLXPbufferSGIX(Display * dpy, GLXPbufferSGIX drawable,
PUBLIC void
glXSelectEvent(Display * dpy, GLXDrawable drawable, unsigned long mask)
{
+#ifdef GLX_USE_APPLEGL
+ XWindowAttributes xwattr;
+
+ if (apple_glx_pbuffer_set_event_mask(drawable, mask))
+ return; /*done */
+
+ /*
+ * The spec allows a window, but currently there are no valid
+ * events for a window, so do nothing.
+ */
+ if (XGetWindowAttributes(dpy, drawable, &xwattr))
+ return; /*done */
+ /* The drawable seems to be invalid. Report an error. */
+
+ __glXSendError(dpy, GLXBadDrawable, drawable,
+ X_GLXChangeDrawableAttributes, false);
+#else
CARD32 attribs[2];
attribs[0] = (CARD32) GLX_EVENT_MASK;
attribs[1] = (CARD32) mask;
ChangeDrawableAttribute(dpy, drawable, attribs, 1);
+#endif
}
@@ -670,6 +784,26 @@ glXSelectEvent(Display * dpy, GLXDrawable drawable, unsigned long mask)
PUBLIC void
glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask)
{
+#ifdef GLX_USE_APPLEGL
+ XWindowAttributes xwattr;
+
+ if (apple_glx_pbuffer_get_event_mask(drawable, mask))
+ return; /*done */
+
+ /*
+ * The spec allows a window, but currently there are no valid
+ * events for a window, so do nothing, but set the mask to 0.
+ */
+ if (XGetWindowAttributes(dpy, drawable, &xwattr)) {
+ /* The window is valid, so set the mask to 0. */
+ *mask = 0;
+ return; /*done */
+ }
+ /* The drawable seems to be invalid. Report an error. */
+
+ __glXSendError(dpy, GLXBadDrawable, drawable, X_GLXGetDrawableAttributes,
+ true);
+#else
unsigned int value;
@@ -680,6 +814,7 @@ glXGetSelectedEvent(Display * dpy, GLXDrawable drawable, unsigned long *mask)
GetDrawableAttribute(dpy, drawable, GLX_EVENT_MASK_SGIX, &value);
*mask = value;
+#endif
}
@@ -689,8 +824,17 @@ glXCreatePixmap(Display * dpy, GLXFBConfig config, Pixmap pixmap,
{
WARN_ONCE_GLX_1_3(dpy, __func__);
+#ifdef GLX_USE_APPLEGL
+ const __GLcontextModes *modes = (const __GLcontextModes *) config;
+
+ if (apple_glx_pixmap_create(dpy, modes->screen, pixmap, modes))
+ return None;
+
+ return pixmap;
+#else
return CreateDrawable(dpy, (__GLcontextModes *) config,
(Drawable) pixmap, attrib_list, X_GLXCreatePixmap);
+#endif
}
@@ -699,9 +843,33 @@ glXCreateWindow(Display * dpy, GLXFBConfig config, Window win,
const int *attrib_list)
{
WARN_ONCE_GLX_1_3(dpy, __func__);
+#ifdef GLX_USE_APPLEGL
+ XWindowAttributes xwattr;
+ XVisualInfo *visinfo;
+
+ (void) attrib_list; /*unused according to GLX 1.4 */
+
+ XGetWindowAttributes(dpy, win, &xwattr);
+ visinfo = glXGetVisualFromFBConfig(dpy, config);
+
+ if (NULL == visinfo) {
+ __glXSendError(dpy, GLXBadFBConfig, 0, X_GLXCreateWindow, false);
+ return None;
+ }
+
+ if (visinfo->visualid != XVisualIDFromVisual(xwattr.visual)) {
+ __glXSendError(dpy, BadMatch, 0, X_GLXCreateWindow, true);
+ return None;
+ }
+
+ XFree(visinfo);
+
+ return win;
+#else
return CreateDrawable(dpy, (__GLcontextModes *) config,
(Drawable) win, attrib_list, X_GLXCreateWindow);
+#endif
}
@@ -709,8 +877,12 @@ PUBLIC void
glXDestroyPixmap(Display * dpy, GLXPixmap pixmap)
{
WARN_ONCE_GLX_1_3(dpy, __func__);
-
+#ifdef GLX_USE_APPLEGL
+ if (apple_glx_pixmap_destroy(dpy, pixmap))
+ __glXSendError(dpy, GLXBadPixmap, pixmap, X_GLXDestroyPixmap, false);
+#else
DestroyDrawable(dpy, (GLXDrawable) pixmap, X_GLXDestroyPixmap);
+#endif
}
@@ -718,11 +890,12 @@ PUBLIC void
glXDestroyWindow(Display * dpy, GLXWindow win)
{
WARN_ONCE_GLX_1_3(dpy, __func__);
-
+#ifndef GLX_USE_APPLEGL
DestroyDrawable(dpy, (GLXDrawable) win, X_GLXDestroyWindow);
+#endif
}
-
+#ifndef GLX_USE_APPLEGL
PUBLIC
GLX_ALIAS_VOID(glXDestroyGLXPbufferSGIX,
(Display * dpy, GLXPbufferSGIX pbuf),
@@ -738,4 +911,4 @@ GLX_ALIAS_VOID(glXGetSelectedEventSGIX,
(Display * dpy, GLXDrawable drawable,
unsigned long *mask), (dpy, drawable, mask),
glXGetSelectedEvent)
-
+#endif
diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h
index 8e5dc785dd..57d254ea98 100644
--- a/src/glx/glxclient.h
+++ b/src/glx/glxclient.h
@@ -97,8 +97,13 @@ typedef struct _glapi_table __GLapi;
#define containerOf(ptr, type, member) \
(type *)( (char *)ptr - offsetof(type,member) )
-#include <GL/internal/dri_interface.h>
+extern void DRI_glXUseXFont(Font font, int first, int count, int listbase);
+
+#endif
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
+
+#include <GL/internal/dri_interface.h>
/**
* Display dependent methods. This structure is initialized during the
@@ -185,8 +190,6 @@ extern __GLXDRIdisplay *dri2CreateDisplay(Display * dpy);
extern void dri2InvalidateBuffers(Display *dpy, XID drawable);
-extern void DRI_glXUseXFont(Font font, int first, int count, int listbase);
-
/*
** Functions to obtain driver configuration information from a direct
** rendering client application
@@ -405,9 +408,14 @@ struct __GLXcontextRec
const __GLcontextModes *mode;
#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+ void *driContext;
+ Bool do_destroy;
+#else
__GLXDRIcontext *driContext;
__DRIcontext *__driContext;
#endif
+#endif
/**
* The current read-drawable for this context. Will be None if this
@@ -503,7 +511,7 @@ struct __GLXscreenConfigsRec
*/
char *effectiveGLXexts;
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/**
* Per screen direct rendering interface functions and data.
*/
@@ -549,6 +557,10 @@ struct __GLXscreenConfigsRec
const __DRI2flushExtension *f;
#endif
+#ifdef __DRI2_CONFIG_QUERY
+ const __DRI2configQueryExtension *config;
+#endif
+
#endif
/**
@@ -614,7 +626,7 @@ struct __GLXdisplayPrivateRec
*/
__GLXscreenConfigs *screenConfigs;
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/**
* Per display direct rendering interface functions and data.
*/
@@ -792,7 +804,7 @@ extern GLboolean __glXGetMscRateOML(Display * dpy, GLXDrawable drawable,
int32_t * numerator,
int32_t * denominator);
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
GLboolean
__driGetMscRateOML(__DRIdrawable * draw,
int32_t * numerator, int32_t * denominator, void *private);
diff --git a/src/glx/glxcmds.c b/src/glx/glxcmds.c
index e256a078f1..926be1014a 100644
--- a/src/glx/glxcmds.c
+++ b/src/glx/glxcmds.c
@@ -39,10 +39,17 @@
#include "glcontextmodes.h"
#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+#include "apple_glx_context.h"
+#include "apple_glx.h"
+#include "glx_error.h"
+#define GC_IS_DIRECT(gc) ((gc)->isDirect)
+#else
#include <sys/time.h>
#include <X11/extensions/xf86vmode.h>
#include "xf86dri.h"
#define GC_IS_DIRECT(gc) ((gc)->driContext != NULL)
+#endif
#else
#define GC_IS_DIRECT(gc) (0)
#endif
@@ -59,7 +66,7 @@ static const char __glXGLXClientVersion[] = "1.4";
/****************************************************************************/
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
static Bool windowExistsFlag;
static int
@@ -344,6 +351,12 @@ AllocateGLXContext(Display * dpy)
bufSize = __GLX_MAX_RENDER_CMD_SIZE;
}
gc->maxSmallRenderCommandSize = bufSize;
+
+#ifdef GLX_USE_APPLEGL
+ gc->driContext = NULL;
+ gc->do_destroy = False;
+#endif
+
return gc;
}
@@ -366,9 +379,14 @@ CreateContext(Display * dpy, int generic_id,
{
GLXContext gc;
#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+ int errorcode;
+ bool x11error;
+#else
__GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
#endif
-
+#endif
+
if (dpy == NULL)
return NULL;
@@ -379,6 +397,7 @@ CreateContext(Display * dpy, int generic_id,
if (!gc)
return NULL;
+#ifndef GLX_USE_APPLEGL /* TODO: darwin indirect */
#ifdef GLX_DIRECT_RENDERING
if (allowDirect && psc->driScreen) {
gc->driContext = psc->driScreen->createContext(psc, fbconfig, gc,
@@ -455,10 +474,26 @@ CreateContext(Display * dpy, int generic_id,
UnlockDisplay(dpy);
SyncHandle();
+#endif
gc->imported = GL_FALSE;
gc->renderType = renderType;
+ /* TODO: darwin: Integrate with above to do indirect */
+#ifdef GLX_USE_APPLEGL
+ if(apple_glx_create_context(&gc->driContext, dpy, screen, fbconfig,
+ shareList ? shareList->driContext : NULL,
+ &errorcode, &x11error)) {
+ __glXSendError(dpy, errorcode, 0, X_GLXCreateContext, x11error);
+ __glXFreeContext(gc);
+ return NULL;
+ }
+
+ gc->currentContextTag = -1;
+ gc->mode = fbconfig;
+ gc->isDirect = allowDirect;
+#endif
+
return gc;
}
@@ -469,7 +504,7 @@ glXCreateContext(Display * dpy, XVisualInfo * vis,
const __GLcontextModes *mode = NULL;
int renderType = 0;
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) || defined(GLX_USE_APPLEGL)
__GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, vis->screen);
mode = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
@@ -517,6 +552,7 @@ __glXFreeContext(__GLXcontext * gc)
static void
DestroyContext(Display * dpy, GLXContext gc)
{
+#ifndef GLX_USE_APPLEGL /* TODO: darwin: indirect */
xGLXDestroyContextReq *req;
GLXContextID xid;
CARD8 opcode;
@@ -542,7 +578,7 @@ DestroyContext(Display * dpy, GLXContext gc)
return;
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/* Destroy the direct rendering context */
if (gc->driContext) {
(*gc->driContext->destroyContext) (gc->driContext, gc->psc, dpy);
@@ -552,17 +588,31 @@ DestroyContext(Display * dpy, GLXContext gc)
#endif
__glXFreeVertexArrayState(gc);
+#else
+ __glXLock();
+#endif /* GLX_USE_APPLEGL */
if (gc->currentDpy) {
+#ifdef GLX_USE_APPLEGL
+ /*
+ * Set the Bool that indicates that we should destroy this GLX context
+ * when the context is no longer current.
+ */
+ gc->do_destroy = True;
+#endif
/* Have to free later cuz it's in use now */
__glXUnlock();
}
else {
/* Destroy the handle if not current to anybody */
__glXUnlock();
+#ifdef GLX_USE_APPLEGL
+ if(gc->driContext)
+ apple_glx_destroy_context(&gc->driContext, dpy);
+#endif
__glXFreeContext(gc);
}
-
+#ifndef GLX_USE_APPLEGL
if (!imported) {
/*
** This dpy also created the server side part of the context.
@@ -576,6 +626,7 @@ DestroyContext(Display * dpy, GLXContext gc)
UnlockDisplay(dpy);
SyncHandle();
}
+#endif
}
PUBLIC void
@@ -630,7 +681,9 @@ glXQueryExtension(Display * dpy, int *errorBase, int *eventBase)
PUBLIC void
glXWaitGL(void)
{
+#ifndef GLX_USE_APPLEGL
xGLXWaitGLReq *req;
+#endif
GLXContext gc = __glXGetCurrentContext();
Display *dpy = gc->currentDpy;
@@ -639,8 +692,10 @@ glXWaitGL(void)
/* Flush any pending commands out */
__glXFlushRenderBuffer(gc, gc->pc);
-
-#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+ glFinish();
+#else
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
int screen;
__GLXDRIdrawable *pdraw =
@@ -664,6 +719,7 @@ glXWaitGL(void)
req->contextTag = gc->currentContextTag;
UnlockDisplay(dpy);
SyncHandle();
+#endif /* GLX_USE_APPLEGL */
}
/*
@@ -673,7 +729,9 @@ glXWaitGL(void)
PUBLIC void
glXWaitX(void)
{
+#ifndef GLX_USE_APPLEGL
xGLXWaitXReq *req;
+#endif
GLXContext gc = __glXGetCurrentContext();
Display *dpy = gc->currentDpy;
@@ -683,7 +741,10 @@ glXWaitX(void)
/* Flush any pending commands out */
__glXFlushRenderBuffer(gc, gc->pc);
-#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+ apple_glx_waitx(dpy, gc->driContext);
+#else
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
int screen;
__GLXDRIdrawable *pdraw =
@@ -710,12 +771,15 @@ glXWaitX(void)
req->contextTag = gc->currentContextTag;
UnlockDisplay(dpy);
SyncHandle();
+#endif /* GLX_USE_APPLEGL */
}
PUBLIC void
glXUseXFont(Font font, int first, int count, int listBase)
{
+#ifndef GLX_USE_APPLEGL
xGLXUseXFontReq *req;
+#endif
GLXContext gc = __glXGetCurrentContext();
Display *dpy = gc->currentDpy;
@@ -724,8 +788,10 @@ glXUseXFont(Font font, int first, int count, int listBase)
/* Flush any pending commands out */
(void) __glXFlushRenderBuffer(gc, gc->pc);
-
-#ifdef GLX_DIRECT_RENDERING
+#ifdef GLX_USE_APPLEGL
+ DRI_glXUseXFont(font, first, count, listBase);
+#else
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
DRI_glXUseXFont(font, first, count, listBase);
return;
@@ -744,6 +810,7 @@ glXUseXFont(Font font, int first, int count, int listBase)
req->listBase = listBase;
UnlockDisplay(dpy);
SyncHandle();
+#endif /* GLX_USE_APPLEGL */
}
/************************************************************************/
@@ -756,6 +823,17 @@ PUBLIC void
glXCopyContext(Display * dpy, GLXContext source,
GLXContext dest, unsigned long mask)
{
+#ifdef GLX_USE_APPLEGL
+ GLXContext gc = __glXGetCurrentContext();
+ int errorcode;
+ bool x11error;
+
+ if(apple_glx_copy_context(gc->driContext, source->driContext, dest->driContext,
+ mask, &errorcode, &x11error)) {
+ __glXSendError(dpy, errorcode, 0, X_GLXCopyContext, x11error);
+ }
+
+#else
xGLXCopyContextReq *req;
GLXContext gc = __glXGetCurrentContext();
GLXContextTag tag;
@@ -766,7 +844,7 @@ glXCopyContext(Display * dpy, GLXContext source,
return;
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
/* NOT_DONE: This does not work yet */
}
@@ -794,6 +872,7 @@ glXCopyContext(Display * dpy, GLXContext source,
req->contextTag = tag;
UnlockDisplay(dpy);
SyncHandle();
+#endif /* GLX_USE_APPLEGL */
}
@@ -808,6 +887,9 @@ glXCopyContext(Display * dpy, GLXContext source,
static Bool
__glXIsDirect(Display * dpy, GLXContextID contextID)
{
+#ifdef GLX_USE_APPLEGL /* TODO: apple indirect */
+ return GC_IS_DIRECT(gc);
+#else
#if !defined(USE_XCB)
xGLXIsDirectReq *req;
xGLXIsDirectReply reply;
@@ -843,6 +925,7 @@ __glXIsDirect(Display * dpy, GLXContextID contextID)
return reply.isDirect;
#endif /* USE_XCB */
+#endif /* GLX_USE_APPLEGL */
}
/**
@@ -866,6 +949,18 @@ glXIsDirect(Display * dpy, GLXContext gc)
PUBLIC GLXPixmap
glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
{
+#ifdef GLX_USE_APPLEGL
+ int screen = vis->screen;
+ __GLXscreenConfigs *const psc = GetGLXScreenConfigs(dpy, screen);
+ const __GLcontextModes *modes;
+
+ modes = _gl_context_modes_find_visual(psc->visuals, vis->visualid);
+
+ if(apple_glx_pixmap_create(dpy, vis->screen, pixmap, modes))
+ return None;
+
+ return pixmap;
+#else
xGLXCreateGLXPixmapReq *req;
GLXPixmap xid;
CARD8 opcode;
@@ -887,7 +982,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
UnlockDisplay(dpy);
SyncHandle();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
do {
/* FIXME: Maybe delay __DRIdrawable creation until the drawable
* is actually bound to a context... */
@@ -915,6 +1010,7 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
#endif
return xid;
+#endif
}
/*
@@ -923,6 +1019,10 @@ glXCreateGLXPixmap(Display * dpy, XVisualInfo * vis, Pixmap pixmap)
PUBLIC void
glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
{
+#ifdef GLX_USE_APPLEGL
+ if(apple_glx_pixmap_destroy(dpy, glxpixmap))
+ __glXSendError(dpy, GLXBadPixmap, glxpixmap, X_GLXDestroyPixmap, false);
+#else
xGLXDestroyGLXPixmapReq *req;
CARD8 opcode;
@@ -940,7 +1040,7 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
UnlockDisplay(dpy);
SyncHandle();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
{
int screen;
__GLXdisplayPrivate *const priv = __glXInitialize(dpy);
@@ -953,11 +1053,20 @@ glXDestroyGLXPixmap(Display * dpy, GLXPixmap glxpixmap)
}
}
#endif
+#endif /* GLX_USE_APPLEGL */
}
PUBLIC void
glXSwapBuffers(Display * dpy, GLXDrawable drawable)
{
+#ifdef GLX_USE_APPLEGL
+ GLXContext gc = glXGetCurrentContext();
+ if(gc && apple_glx_is_current_drawable(dpy, gc->driContext, drawable)) {
+ apple_glx_swap_buffers(gc->driContext);
+ } else {
+ __glXSendError(dpy, GLXBadCurrentWindow, 0, X_GLXSwapBuffers, false);
+ }
+#else
GLXContext gc;
GLXContextTag tag;
CARD8 opcode;
@@ -967,7 +1076,7 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
xGLXSwapBuffersReq *req;
#endif
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
if (pdraw != NULL) {
@@ -1012,6 +1121,7 @@ glXSwapBuffers(Display * dpy, GLXDrawable drawable)
SyncHandle();
XFlush(dpy);
#endif /* USE_XCB */
+#endif /* GLX_USE_APPLEGL */
}
@@ -1440,6 +1550,12 @@ glXChooseVisual(Display * dpy, int screen, int *attribList)
}
}
+#ifdef GLX_USE_APPLEGL
+ if(visualList && getenv("LIBGL_DUMP_VISUALID")) {
+ printf("visualid 0x%lx\n", visualList[0].visualid);
+ }
+#endif
+
return visualList;
}
@@ -1462,7 +1578,7 @@ glXQueryExtensionsString(Display * dpy, int screen)
}
__glXCalculateUsableExtensions(psc,
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
(psc->driScreen != NULL),
#else
GL_FALSE,
@@ -1573,6 +1689,7 @@ PUBLIC
GLX_ALIAS(Display *, glXGetCurrentDisplayEXT, (void), (),
glXGetCurrentDisplay)
+#ifndef GLX_USE_APPLEGL
/**
* Used internally by libGL to send \c xGLXQueryContextinfoExtReq requests
* to the X-server.
@@ -1684,13 +1801,16 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
return retval;
}
+#endif
+
PUBLIC int
glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value)
{
+#ifndef GLX_USE_APPLEGL
int retVal;
/* get the information from the server if we don't have it already */
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (!ctx->driContext && (ctx->mode == NULL)) {
#else
if (ctx->mode == NULL) {
@@ -1699,13 +1819,17 @@ glXQueryContext(Display * dpy, GLXContext ctx, int attribute, int *value)
if (Success != retVal)
return retVal;
}
+#endif
+
switch (attribute) {
- case GLX_SHARE_CONTEXT_EXT:
+#ifndef GLX_USE_APPLEGL
+ case GLX_SHARE_CONTEXT_EXT:
*value = (int) (ctx->share_xid);
break;
case GLX_VISUAL_ID_EXT:
*value = ctx->mode ? ctx->mode->visualID : None;
break;
+#endif
case GLX_SCREEN:
*value = (int) (ctx->screen);
break;
@@ -1734,6 +1858,9 @@ PUBLIC GLXContextID glXGetContextIDEXT(const GLXContext ctx)
PUBLIC GLXContext
glXImportContextEXT(Display * dpy, GLXContextID contextID)
{
+#ifdef GLX_USE_APPLEGL
+ return NULL;
+#else
GLXContext ctx;
if (contextID == None) {
@@ -1754,6 +1881,7 @@ glXImportContextEXT(Display * dpy, GLXContextID contextID)
}
}
return ctx;
+#endif
}
PUBLIC void
@@ -1881,7 +2009,7 @@ glXGetVisualFromFBConfig(Display * dpy, GLXFBConfig config)
return XGetVisualInfo(dpy, VisualIDMask, &visualTemplate, &count);
}
-
+#ifndef GLX_USE_APPLEGL
/*
** GLX_SGI_swap_control
*/
@@ -2236,6 +2364,7 @@ __glXWaitVideoSyncSGI(int divisor, int remainder, unsigned int *count)
return GLX_BAD_CONTEXT;
}
+#endif /* GLX_USE_APPLEGL */
/*
** GLX_SGIX_fbconfig
@@ -2262,17 +2391,24 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
GLXFBConfigSGIX config,
Pixmap pixmap)
{
+#ifndef GLX_USE_APPLEGL
xGLXVendorPrivateWithReplyReq *vpreq;
xGLXCreateGLXPixmapWithConfigSGIXReq *req;
GLXPixmap xid = None;
CARD8 opcode;
- const __GLcontextModes *const fbconfig = (__GLcontextModes *) config;
__GLXscreenConfigs *psc;
+#endif
+ const __GLcontextModes *const fbconfig = (__GLcontextModes *) config;
if ((dpy == NULL) || (config == NULL)) {
return None;
}
+#ifdef GLX_USE_APPLEGL
+ if(apple_glx_pixmap_create(dpy, fbconfig->screen, pixmap, fbconfig))
+ return None;
+ return pixmap;
+#else
psc = GetGLXScreenConfigs(dpy, fbconfig->screen);
if ((psc != NULL)
@@ -2300,6 +2436,7 @@ glXCreateGLXPixmapWithConfigSGIX(Display * dpy,
}
return xid;
+#endif
}
PUBLIC GLXContext
@@ -2345,7 +2482,7 @@ glXGetFBConfigFromVisualSGIX(Display * dpy, XVisualInfo * vis)
return NULL;
}
-
+#ifndef GLX_USE_APPLEGL
/*
** GLX_SGIX_swap_group
*/
@@ -2420,7 +2557,7 @@ __glXGetSyncValuesOML(Display * dpy, GLXDrawable drawable,
return False;
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
_X_HIDDEN GLboolean
__driGetMscRateOML(__DRIdrawable * draw,
int32_t * numerator, int32_t * denominator, void *private)
@@ -2876,7 +3013,7 @@ __glXBindTexImageEXT(Display * dpy,
i++;
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
__GLXDRIdrawable *pdraw = GetGLXDRIDrawable(dpy, drawable, NULL);
@@ -2966,6 +3103,8 @@ __glXReleaseTexImageEXT(Display * dpy, GLXDrawable drawable, int buffer)
/*@}*/
+#endif /* GLX_USE_APPLEGL */
+
/**
* \c strdup is actually not a standard ANSI C or POSIX routine.
* Irix will not define it if ANSI mode is in effect.
@@ -3043,6 +3182,7 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION(glXQueryDrawable),
GLX_FUNCTION(glXSelectEvent),
+#ifndef GLX_USE_APPLEGL
/*** GLX_SGI_swap_control ***/
GLX_FUNCTION2(glXSwapIntervalSGI, __glXSwapIntervalSGI),
@@ -3060,6 +3200,7 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION2(glXGetCurrentDisplayEXT, glXGetCurrentDisplay),
GLX_FUNCTION(glXImportContextEXT),
GLX_FUNCTION2(glXQueryContextInfoEXT, glXQueryContext),
+#endif
/*** GLX_SGIX_fbconfig ***/
GLX_FUNCTION2(glXGetFBConfigAttribSGIX, glXGetFBConfigAttrib),
@@ -3069,6 +3210,7 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION2(glXGetVisualFromFBConfigSGIX, glXGetVisualFromFBConfig),
GLX_FUNCTION(glXGetFBConfigFromVisualSGIX),
+#ifndef GLX_USE_APPLEGL
/*** GLX_SGIX_pbuffer ***/
GLX_FUNCTION(glXCreateGLXPbufferSGIX),
GLX_FUNCTION(glXDestroyGLXPbufferSGIX),
@@ -3106,6 +3248,7 @@ static const struct name_address_pair GLX_functions[] = {
GLX_FUNCTION2(glXEndFrameTrackingMESA, __glXEndFrameTrackingMESA),
GLX_FUNCTION2(glXGetFrameUsageMESA, __glXGetFrameUsageMESA),
GLX_FUNCTION2(glXQueryFrameTrackingMESA, __glXQueryFrameTrackingMESA),
+#endif
/*** GLX_ARB_get_proc_address ***/
GLX_FUNCTION(glXGetProcAddressARB),
@@ -3113,6 +3256,7 @@ static const struct name_address_pair GLX_functions[] = {
/*** GLX 1.4 ***/
GLX_FUNCTION2(glXGetProcAddress, glXGetProcAddressARB),
+#ifndef GLX_USE_APPLEGL
/*** GLX_OML_sync_control ***/
GLX_FUNCTION2(glXWaitForSbcOML, __glXWaitForSbcOML),
GLX_FUNCTION2(glXWaitForMscOML, __glXWaitForMscOML),
@@ -3123,8 +3267,9 @@ static const struct name_address_pair GLX_functions[] = {
/*** GLX_EXT_texture_from_pixmap ***/
GLX_FUNCTION2(glXBindTexImageEXT, __glXBindTexImageEXT),
GLX_FUNCTION2(glXReleaseTexImageEXT, __glXReleaseTexImageEXT),
+#endif
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/*** DRI configuration ***/
GLX_FUNCTION(glXGetScreenDriver),
GLX_FUNCTION(glXGetDriverConfig),
@@ -3133,7 +3278,7 @@ static const struct name_address_pair GLX_functions[] = {
{NULL, NULL} /* end of list */
};
-
+#ifndef GLX_USE_APPLEGL
static const GLvoid *
get_glx_proc_address(const char *funcName)
{
@@ -3147,7 +3292,7 @@ get_glx_proc_address(const char *funcName)
return NULL;
}
-
+#endif
/**
* Get the address of a named GL function. This is the pre-GLX 1.4 name for
@@ -3170,13 +3315,15 @@ PUBLIC void (*glXGetProcAddressARB(const GLubyte * procName)) (void)
* DRI based drivers from searching the core GL function table for
* internal API functions.
*/
-
+#ifdef GLX_USE_APPLEGL
+ f = (gl_function) apple_glx_get_proc_address(procName);
+#else
f = (gl_function) get_glx_proc_address((const char *) procName);
if ((f == NULL) && (procName[0] == 'g') && (procName[1] == 'l')
&& (procName[2] != 'X')) {
f = (gl_function) _glapi_get_proc_address((const char *) procName);
}
-
+#endif
return f;
}
@@ -3199,7 +3346,7 @@ PUBLIC void (*glXGetProcAddress(const GLubyte * procName)) (void)
#endif /* __GNUC__ */
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/**
* Get the unadjusted system time (UST). Currently, the UST is measured in
* microseconds since Epoc. The actual resolution of the UST may vary from
diff --git a/src/glx/glxcurrent.c b/src/glx/glxcurrent.c
index c28360bdde..691e8dfadf 100644
--- a/src/glx/glxcurrent.c
+++ b/src/glx/glxcurrent.c
@@ -33,9 +33,20 @@
* Client-side GLX interface for current context management.
*/
+#ifdef PTHREADS
+#include <pthread.h>
+#endif
+
#include "glxclient.h"
+#ifdef GLX_USE_APPLEGL
+#include <stdlib.h>
+
+#include "apple_glx.h"
+#include "apple_glx_context.h"
+#else
#include "glapi.h"
#include "indirect_init.h"
+#endif
/*
** We setup some dummy structures here so that the API can be used
@@ -59,11 +70,12 @@ static __GLXcontext dummyContext = {
};
+#ifndef GLX_USE_APPLEGL
/*
** All indirect rendering contexts will share the same indirect dispatch table.
*/
static __GLapi *IndirectAPI = NULL;
-
+#endif
/*
* Current context management and locking
@@ -156,10 +168,12 @@ _X_HIDDEN void
__glXSetCurrentContextNull(void)
{
__glXSetCurrentContext(&dummyContext);
-#ifdef GLX_DIRECT_RENDERING
+#ifndef GLX_USE_APPLEGL
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
_glapi_set_dispatch(NULL); /* no-op functions */
_glapi_set_context(NULL);
#endif
+#endif
}
@@ -186,6 +200,7 @@ glXGetCurrentDrawable(void)
}
+#ifndef GLX_USE_APPLEGL
/************************************************************************/
/**
@@ -269,7 +284,7 @@ SendMakeCurrentRequest(Display * dpy, CARD8 opcode,
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
static __GLXDRIdrawable *
FetchDRIDrawable(Display * dpy, GLXDrawable glxDrawable, GLXContext gc)
{
@@ -313,6 +328,8 @@ __glXGenerateError(Display * dpy, GLXContext gc, XID resource,
_XError(dpy, &error);
}
+#endif /* GLX_USE_APPLEGL */
+
/**
* Make a particular context current.
*
@@ -322,8 +339,17 @@ static Bool
MakeContextCurrent(Display * dpy, GLXDrawable draw,
GLXDrawable read, GLXContext gc)
{
- xGLXMakeCurrentReply reply;
const GLXContext oldGC = __glXGetCurrentContext();
+#ifdef GLX_USE_APPLEGL
+ bool error = apple_glx_make_current_context(dpy,
+ (oldGC && oldGC != &dummyContext) ? oldGC->driContext : NULL,
+ gc ? gc->driContext : NULL, draw);
+
+ apple_glx_diagnostic("%s: error %s\n", __func__, error ? "YES" : "NO");
+ if(error)
+ return GL_FALSE;
+#else
+ xGLXMakeCurrentReply reply;
const CARD8 opcode = __glXSetupForCommand(dpy);
const CARD8 oldOpcode = ((gc == oldGC) || (oldGC == &dummyContext))
? opcode : __glXSetupForCommand(oldGC->currentDpy);
@@ -360,7 +386,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
return False;
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/* Bind the direct rendering context to the drawable */
if (gc && gc->driContext) {
__GLXDRIdrawable *pdraw = FetchDRIDrawable(dpy, draw, gc);
@@ -395,7 +421,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
return False;
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if ((dpy != oldGC->currentDpy || (gc && gc->driContext)) &&
!oldGC->isDirect && oldGC != &dummyContext) {
#else
@@ -413,12 +439,13 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
oldGC->currentContextTag, None, None,
&dummy_reply);
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
else if (oldGC->driContext && oldGC != gc) {
oldGC->driContext->unbindContext(oldGC->driContext);
}
#endif
+#endif /* GLX_USE_APPLEGL */
/* Update our notion of what is current */
__glXLock();
@@ -428,8 +455,10 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
* cannot be NULL, therefore if they are the same, gc is not
* NULL and not the dummy.
*/
- gc->currentDrawable = draw;
- gc->currentReadable = read;
+ if(gc) {
+ gc->currentDrawable = draw;
+ gc->currentReadable = read;
+ }
}
else {
if (oldGC != &dummyContext) {
@@ -439,13 +468,24 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
oldGC->currentReadable = None;
oldGC->currentContextTag = 0;
oldGC->thread_id = 0;
-
+#ifdef GLX_USE_APPLEGL
+
+ /*
+ * At this point we should check if the context has been
+ * through glXDestroyContext, and redestroy it if so.
+ */
+ if(oldGC->do_destroy) {
+ __glXUnlock();
+ /* glXDestroyContext uses the same global lock. */
+ glXDestroyContext(dpy, oldGC);
+ __glXLock();
+#else
if (oldGC->xid == None) {
/* We are switching away from a context that was
* previously destroyed, so we need to free the memory
* for the old handle.
*/
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/* Destroy the old direct rendering context */
if (oldGC->driContext) {
oldGC->driContext->destroyContext(oldGC->driContext,
@@ -455,6 +495,7 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
}
#endif
__glXFreeContext(oldGC);
+#endif /* GLX_USE_APPLEGL */
}
}
if (gc) {
@@ -463,9 +504,10 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
gc->currentDpy = dpy;
gc->currentDrawable = draw;
gc->currentReadable = read;
+#ifndef GLX_USE_APPLEGL
gc->thread_id = _glthread_GetID();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (!gc->driContext) {
#endif
if (!IndirectAPI)
@@ -480,12 +522,13 @@ MakeContextCurrent(Display * dpy, GLXDrawable draw,
(void) glGetString(GL_VERSION);
__glXInitVertexArrayState(gc);
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
}
else {
gc->currentContextTag = -1;
}
#endif
+#endif /* GLX_USE_APPLEGL */
}
else {
__glXSetCurrentContextNull();
diff --git a/src/glx/glxext.c b/src/glx/glxext.c
index 5289354a52..82d3a56f37 100644
--- a/src/glx/glxext.c
+++ b/src/glx/glxext.c
@@ -42,6 +42,10 @@
#include <X11/extensions/Xext.h>
#include <X11/extensions/extutil.h>
#include <X11/extensions/dri2proto.h>
+#ifdef GLX_USE_APPLEGL
+#include "apple_glx.h"
+#include "apple_visual.h"
+#endif
#include "glxextensions.h"
#include "glcontextmodes.h"
@@ -65,7 +69,12 @@ _X_HIDDEN int __glXDebug = 0;
/* Extension required boiler plate */
static char *__glXExtensionName = GLX_EXTENSION_NAME;
+#ifdef GLX_USE_APPLEGL
+static XExtensionInfo __glXExtensionInfo_data;
+XExtensionInfo *__glXExtensionInfo = &__glXExtensionInfo_data;
+#else
XExtensionInfo *__glXExtensionInfo = NULL;
+#endif
static /* const */ char *error_list[] = {
"GLXBadContext",
@@ -98,6 +107,11 @@ __glXCloseDisplay(Display * dpy, XExtCodes * codes)
}
+#ifdef GLX_USE_APPLEGL
+static char *__glXErrorString(Display *dpy, int code, XExtCodes *codes,
+ char *buf, int n);
+#endif
+
static
XEXT_GENERATE_ERROR_STRING(__glXErrorString, __glXExtensionName,
__GLX_NUMBER_ERRORS, error_list)
@@ -245,7 +259,7 @@ FreeScreenConfigs(__GLXdisplayPrivate * priv)
}
Xfree((char *) psc->serverGLXexts);
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (psc->driver_configs) {
unsigned int j;
for (j = 0; psc->driver_configs[j]; j++)
@@ -285,7 +299,7 @@ __glXFreeDisplayPrivate(XExtData * extension)
priv->serverGLXversion = 0x0; /* to protect against double free's */
}
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
/* Free the direct rendering per display data */
if (priv->driswDisplay)
(*priv->driswDisplay->destroyDisplay) (priv->driswDisplay);
@@ -358,7 +372,20 @@ QueryVersion(Display * dpy, int opcode, int *major, int *minor)
#endif /* USE_XCB */
}
+/*
+ * We don't want to enable this GLX_OML_swap_method in glxext.h,
+ * because we can't support it. The X server writes it out though,
+ * so we should handle it somehow, to avoid false warnings.
+ */
+enum {
+ IGNORE_GLX_SWAP_METHOD_OML = 0x8060
+};
+
+/*
+ * getVisualConfigs uses the !tagged_only path.
+ * getFBConfigs uses the tagged_only path.
+ */
_X_HIDDEN void
__glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
const INT32 * bp, Bool tagged_only,
@@ -392,7 +419,14 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
config->numAuxBuffers = *bp++;
config->level = *bp++;
+#ifdef GLX_USE_APPLEGL
+ /* AppleSGLX supports pixmap and pbuffers with all config. */
+ config->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
+ /* Unfortunately this can create an ABI compatibility problem. */
+ count -= 18;
+#else
count -= __GLX_MIN_CONFIG_PROPS;
+#endif
}
/*
@@ -405,7 +439,9 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
config-> tag = ( fbconfig_style_tags ) ? *bp++ : 1
for (i = 0; i < count; i += 2) {
- switch (*bp++) {
+ long int tag = *bp++;
+
+ switch (tag) {
case GLX_RGBA:
FETCH_OR_SET(rgbMode);
break;
@@ -483,6 +519,10 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
break;
case GLX_DRAWABLE_TYPE:
config->drawableType = *bp++;
+#ifdef GLX_USE_APPLEGL
+ /* AppleSGLX supports pixmap and pbuffers with all config. */
+ config->drawableType |= GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
+#endif
break;
case GLX_RENDER_TYPE:
config->renderType = *bp++;
@@ -502,6 +542,7 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
case GLX_MAX_PBUFFER_PIXELS:
config->maxPbufferPixels = *bp++;
break;
+#ifndef GLX_USE_APPLEGL
case GLX_OPTIMAL_PBUFFER_WIDTH_SGIX:
config->optimalPbufferWidth = *bp++;
break;
@@ -514,12 +555,19 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
case GLX_SWAP_METHOD_OML:
config->swapMethod = *bp++;
break;
+#endif
case GLX_SAMPLE_BUFFERS_SGIS:
config->sampleBuffers = *bp++;
break;
case GLX_SAMPLES_SGIS:
config->samples = *bp++;
break;
+#ifdef GLX_USE_APPLEGL
+ case IGNORE_GLX_SWAP_METHOD_OML:
+ /* We ignore this tag. See the comment above this function. */
+ ++bp;
+ break;
+#else
case GLX_BIND_TO_TEXTURE_RGB_EXT:
config->bindToTextureRgb = *bp++;
break;
@@ -535,11 +583,21 @@ __glXInitializeVisualConfigFromTags(__GLcontextModes * config, int count,
case GLX_Y_INVERTED_EXT:
config->yInverted = *bp++;
break;
+#endif
case None:
i = count;
break;
default:
- break;
+ if(getenv("LIBGL_DIAGNOSTIC")) {
+ long int tagvalue = *bp++;
+ fprintf(stderr, "WARNING: unknown GLX tag from server: "
+ "tag 0x%lx value 0x%lx\n", tag, tagvalue);
+ } else {
+ /* Ignore the unrecognized tag's value */
+ bp++;
+ break;
+ }
+ break;
}
}
@@ -587,9 +645,18 @@ createConfigsFromProperties(Display * dpy, int nvisuals, int nprops,
m = modes;
for (i = 0; i < nvisuals; i++) {
_XRead(dpy, (char *) props, prop_size);
- /* Older X servers don't send this so we default it here. */
+#ifdef GLX_USE_APPLEGL
+ /* Older X servers don't send this so we default it here. */
m->drawableType = GLX_WINDOW_BIT;
- __glXInitializeVisualConfigFromTags(m, nprops, props,
+#else
+ /*
+ * The XQuartz 2.3.2.1 X server doesn't set this properly, so
+ * set the proper bits here.
+ * AppleSGLX supports windows, pixmaps, and pbuffers with all config.
+ */
+ m->drawableType = GLX_WINDOW_BIT | GLX_PIXMAP_BIT | GLX_PBUFFER_BIT;
+#endif
+ __glXInitializeVisualConfigFromTags(m, nprops, props,
tagged_only, GL_TRUE);
m->screen = screen;
m = m->next;
@@ -710,7 +777,7 @@ AllocAndFetchScreenConfigs(Display * dpy, __GLXdisplayPrivate * priv)
getVisualConfigs(dpy, priv, i);
getFBConfigs(dpy, priv, i);
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
psc->scr = i;
psc->dpy = dpy;
psc->drawHash = __glxHashCreate();
@@ -750,7 +817,7 @@ __glXInitialize(Display * dpy)
__GLXdisplayPrivate *dpyPriv;
XEDataObject dataObj;
int major, minor;
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
Bool glx_direct, glx_accel;
#endif
@@ -807,7 +874,7 @@ __glXInitialize(Display * dpy)
dpyPriv->serverGLXvendor = 0x0;
dpyPriv->serverGLXversion = 0x0;
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
glx_direct = (getenv("LIBGL_ALWAYS_INDIRECT") == NULL);
glx_accel = (getenv("LIBGL_ALWAYS_SOFTWARE") == NULL);
@@ -823,8 +890,11 @@ __glXInitialize(Display * dpy)
if (glx_direct)
dpyPriv->driswDisplay = driswCreateDisplay(dpy);
#endif
-
+#ifdef GLX_USE_APPLEGL
+ if (apple_init_glx(dpy) || !AllocAndFetchScreenConfigs(dpy, dpyPriv)) {
+#else
if (!AllocAndFetchScreenConfigs(dpy, dpyPriv)) {
+#endif
__glXUnlock();
Xfree((char *) dpyPriv);
Xfree((char *) private);
diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
index 56c69cbfcb..e58c296b30 100644
--- a/src/glx/glxextensions.c
+++ b/src/glx/glxextensions.c
@@ -75,34 +75,72 @@ static const struct extension_info known_glx_extensions[] = {
{ GLX(ARB_multisample), VER(1,4), Y, Y, N, N },
{ GLX(ARB_render_texture), VER(0,0), N, N, N, N },
{ GLX(ATI_pixel_format_float), VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+ { GLX(EXT_import_context), VER(0,0), N, N, N, N },
+ { GLX(EXT_visual_info), VER(0,0), N, N, N, N },
+#else
{ GLX(EXT_import_context), VER(0,0), Y, Y, N, N },
{ GLX(EXT_visual_info), VER(0,0), Y, Y, N, N },
+#endif
{ GLX(EXT_visual_rating), VER(0,0), Y, Y, N, N },
+#ifdef GLX_USE_APPLEGL
+ { GLX(MESA_agp_offset), VER(0,0), N, N, N, N }, /* Deprecated */
+ { GLX(MESA_allocate_memory), VER(0,0), N, N, N, N },
+ { GLX(MESA_copy_sub_buffer), VER(0,0), N, N, N, N },
+#else
{ GLX(MESA_agp_offset), VER(0,0), N, N, N, Y }, /* Deprecated */
{ GLX(MESA_allocate_memory), VER(0,0), Y, N, N, Y },
{ GLX(MESA_copy_sub_buffer), VER(0,0), Y, N, N, N },
+#endif
{ GLX(MESA_pixmap_colormap), VER(0,0), N, N, N, N }, /* Deprecated */
{ GLX(MESA_release_buffers), VER(0,0), N, N, N, N }, /* Deprecated */
+#ifdef GLX_USE_APPLEGL
+ { GLX(MESA_swap_control), VER(0,0), N, N, N, N },
+ { GLX(MESA_swap_frame_usage), VER(0,0), N, N, N, N },
+#else
{ GLX(MESA_swap_control), VER(0,0), Y, N, N, Y },
{ GLX(MESA_swap_frame_usage), VER(0,0), Y, N, N, Y },
+#endif
{ GLX(NV_float_buffer), VER(0,0), N, N, N, N },
{ GLX(NV_render_depth_texture), VER(0,0), N, N, N, N },
{ GLX(NV_render_texture_rectangle), VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+ { GLX(NV_vertex_array_range), VER(0,0), N, N, N, N }, /* Deprecated */
+ { GLX(OML_swap_method), VER(0,0), N, N, N, N },
+ { GLX(OML_sync_control), VER(0,0), N, N, N, N },
+ { GLX(SGI_make_current_read), VER(1,3), N, N, N, N },
+ { GLX(SGI_swap_control), VER(0,0), N, N, N, N },
+ { GLX(SGI_video_sync), VER(0,0), N, N, N, N },
+#else
{ GLX(NV_vertex_array_range), VER(0,0), N, N, N, Y }, /* Deprecated */
{ GLX(OML_swap_method), VER(0,0), Y, Y, N, N },
{ GLX(OML_sync_control), VER(0,0), Y, N, N, Y },
{ GLX(SGI_make_current_read), VER(1,3), Y, N, N, N },
{ GLX(SGI_swap_control), VER(0,0), Y, N, N, N },
{ GLX(SGI_video_sync), VER(0,0), Y, N, N, Y },
+#endif
{ GLX(SGIS_blended_overlay), VER(0,0), N, N, N, N },
{ GLX(SGIS_color_range), VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+ { GLX(SGIS_multisample), VER(0,0), N, N, N, N },
+#else
{ GLX(SGIS_multisample), VER(0,0), Y, Y, N, N },
+#endif
{ GLX(SGIX_fbconfig), VER(1,3), Y, Y, N, N },
+#ifdef GLX_USE_APPLEGL
+ { GLX(SGIX_pbuffer), VER(1,3), N, N, N, N },
+#else
{ GLX(SGIX_pbuffer), VER(1,3), Y, Y, N, N },
+#endif
{ GLX(SGIX_swap_barrier), VER(0,0), N, N, N, N },
{ GLX(SGIX_swap_group), VER(0,0), N, N, N, N },
+#ifdef GLX_USE_APPLEGL
+ { GLX(SGIX_visual_select_group), VER(0,0), N, N, N, N },
+ { GLX(EXT_texture_from_pixmap), VER(0,0), N, N, N, N },
+#else
{ GLX(SGIX_visual_select_group), VER(0,0), Y, Y, N, N },
{ GLX(EXT_texture_from_pixmap), VER(0,0), Y, N, N, N },
+#endif
{ GLX(INTEL_swap_event), VER(1,4), Y, Y, N, N },
{ NULL }
};
diff --git a/src/glx/indirect.c b/src/glx/indirect.c
index 42a225f671..172727860e 100644
--- a/src/glx/indirect.c
+++ b/src/glx/indirect.c
@@ -5198,7 +5198,7 @@ glDeleteTexturesEXT(GLsizei n, const GLuint * textures)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_DeleteTextures(GET_DISPATCH(), (n, textures));
} else
@@ -5269,7 +5269,7 @@ glGenTexturesEXT(GLsizei n, GLuint * textures)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GenTextures(GET_DISPATCH(), (n, textures));
} else
@@ -5334,7 +5334,7 @@ glIsTextureEXT(GLuint texture)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
return CALL_IsTexture(GET_DISPATCH(), (texture));
} else
@@ -5650,7 +5650,7 @@ glGetColorTableEXT(GLenum target, GLenum format, GLenum type, GLvoid * table)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetColorTable(GET_DISPATCH(), (target, format, type, table));
} else
@@ -5726,7 +5726,7 @@ glGetColorTableParameterfvEXT(GLenum target, GLenum pname, GLfloat * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetColorTableParameterfv(GET_DISPATCH(),
(target, pname, params));
@@ -5799,7 +5799,7 @@ glGetColorTableParameterivEXT(GLenum target, GLenum pname, GLint * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetColorTableParameteriv(GET_DISPATCH(),
(target, pname, params));
@@ -6125,7 +6125,7 @@ gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type,
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetConvolutionFilter(GET_DISPATCH(),
(target, format, type, image));
@@ -6203,7 +6203,7 @@ gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetConvolutionParameterfv(GET_DISPATCH(),
(target, pname, params));
@@ -6276,7 +6276,7 @@ gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetConvolutionParameteriv(GET_DISPATCH(),
(target, pname, params));
@@ -6356,7 +6356,7 @@ gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format,
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetHistogram(GET_DISPATCH(),
(target, reset, format, type, values));
@@ -6433,7 +6433,7 @@ gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetHistogramParameterfv(GET_DISPATCH(), (target, pname, params));
} else
@@ -6504,7 +6504,7 @@ gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetHistogramParameteriv(GET_DISPATCH(), (target, pname, params));
} else
@@ -6579,7 +6579,7 @@ gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format,
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetMinmax(GET_DISPATCH(), (target, reset, format, type, values));
} else
@@ -6653,7 +6653,7 @@ gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetMinmaxParameterfv(GET_DISPATCH(), (target, pname, params));
} else
@@ -6721,7 +6721,7 @@ gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params)
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetMinmaxParameteriv(GET_DISPATCH(), (target, pname, params));
} else
diff --git a/src/glx/indirect_size.c b/src/glx/indirect_size.c
index 0c136d26cd..411a0e42c5 100644
--- a/src/glx/indirect_size.c
+++ b/src/glx/indirect_size.c
@@ -48,7 +48,7 @@
# endif
-#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__)
+#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(GLX_USE_APPLEGL)
# undef HAVE_ALIAS
#endif
#ifdef HAVE_ALIAS
diff --git a/src/glx/singlepix.c b/src/glx/singlepix.c
index f5ebf4dfdb..c4010d79bd 100644
--- a/src/glx/singlepix.c
+++ b/src/glx/singlepix.c
@@ -119,7 +119,7 @@ void NAME(_gloffset_GetSeparableFilter) (GLenum target, GLenum format,
{
__GLXcontext *const gc = __glXGetCurrentContext();
-#ifdef GLX_DIRECT_RENDERING
+#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)
if (gc->driContext) {
CALL_GetSeparableFilter(GET_DISPATCH(),
(target, format, type, row, column, span));
diff --git a/src/mesa/drivers/common/meta.c b/src/mesa/drivers/common/meta.c
index 84a2a5fcb3..ea9e417391 100644
--- a/src/mesa/drivers/common/meta.c
+++ b/src/mesa/drivers/common/meta.c
@@ -424,6 +424,7 @@ _mesa_meta_begin(GLcontext *ctx, GLbitfield state)
if (state & META_SCISSOR) {
save->Scissor = ctx->Scissor; /* struct copy */
+ _mesa_set_enable(ctx, GL_SCISSOR_TEST, GL_FALSE);
}
if (state & META_SHADER) {
@@ -1117,8 +1118,10 @@ blitframebuffer_texture(GLcontext *ctx,
_mesa_BindTexture(target, texObj->Name);
_mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, filter);
_mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, filter);
- _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel);
- _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel);
+ if (target != GL_TEXTURE_RECTANGLE_ARB) {
+ _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, srcLevel);
+ _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, srcLevel);
+ }
_mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
_mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
_mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
@@ -1176,8 +1179,10 @@ blitframebuffer_texture(GLcontext *ctx,
*/
_mesa_TexParameteri(target, GL_TEXTURE_MIN_FILTER, minFilterSave);
_mesa_TexParameteri(target, GL_TEXTURE_MAG_FILTER, magFilterSave);
- _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave);
- _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave);
+ if (target != GL_TEXTURE_RECTANGLE_ARB) {
+ _mesa_TexParameteri(target, GL_TEXTURE_BASE_LEVEL, baseLevelSave);
+ _mesa_TexParameteri(target, GL_TEXTURE_MAX_LEVEL, maxLevelSave);
+ }
_mesa_TexParameteri(target, GL_TEXTURE_WRAP_S, wrapSSave);
_mesa_TexParameteri(target, GL_TEXTURE_WRAP_T, wrapTSave);
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
index e08005f90b..360c524754 100644
--- a/src/mesa/drivers/dri/common/dri_util.c
+++ b/src/mesa/drivers/dri/common/dri_util.c
@@ -31,6 +31,16 @@
#include "dri_util.h"
#include "drm_sarea.h"
#include "utils.h"
+#include "xmlpool.h"
+
+PUBLIC const char __dri2ConfigOptions[] =
+ DRI_CONF_BEGIN
+ DRI_CONF_SECTION_PERFORMANCE
+ DRI_CONF_VBLANK_MODE(DRI_CONF_VBLANK_DEF_INTERVAL_1)
+ DRI_CONF_SECTION_END
+ DRI_CONF_END;
+
+static const uint __dri2NConfigOptions = 1;
#ifndef GLX_OML_sync_control
typedef GLboolean ( * PFNGLXGETMSCRATEOMLPROC) (__DRIdrawable *drawable, int32_t *numerator, int32_t *denominator);
@@ -143,19 +153,24 @@ static int driBindContext(__DRIcontext *pcp,
{
__DRIscreen *psp = NULL;
- /* Bind the drawable to the context */
+ /*
+ ** Assume error checking is done properly in glXMakeCurrent before
+ ** calling driUnbindContext.
+ */
- if (pcp) {
- psp = pcp->driScreenPriv;
- pcp->driDrawablePriv = pdp;
- pcp->driReadablePriv = prp;
- if (pdp) {
- pdp->driContextPriv = pcp;
- dri_get_drawable(pdp);
- }
- if ( prp && pdp != prp ) {
- dri_get_drawable(prp);
- }
+ if (!pcp)
+ return GL_FALSE;
+
+ /* Bind the drawable to the context */
+ psp = pcp->driScreenPriv;
+ pcp->driDrawablePriv = pdp;
+ pcp->driReadablePriv = prp;
+ if (pdp) {
+ pdp->driContextPriv = pcp;
+ dri_get_drawable(pdp);
+ }
+ if (prp && pdp != prp) {
+ dri_get_drawable(prp);
}
/*
@@ -163,7 +178,6 @@ static int driBindContext(__DRIcontext *pcp,
** initialize the drawable information if has not been done before.
*/
- assert(psp);
if (!psp->dri2.enabled) {
if (pdp && !pdp->pStamp) {
DRM_SPINLOCK(&psp->pSAREA->drawable_lock, psp->drawLockID);
@@ -178,7 +192,6 @@ static int driBindContext(__DRIcontext *pcp,
}
/* Call device-specific MakeCurrent */
-
return (*psp->DriverAPI.MakeCurrent)(pcp, pdp, prp);
}
@@ -467,6 +480,41 @@ dri2CreateNewDrawable(__DRIscreen *screen,
return pdraw;
}
+static int
+dri2ConfigQueryb(__DRIscreen *screen, const char *var, GLboolean *val)
+{
+ if (!driCheckOption(&screen->optionCache, var, DRI_BOOL))
+ return -1;
+
+ *val = driQueryOptionb(&screen->optionCache, var);
+
+ return 0;
+}
+
+static int
+dri2ConfigQueryi(__DRIscreen *screen, const char *var, GLint *val)
+{
+ if (!driCheckOption(&screen->optionCache, var, DRI_INT) &&
+ !driCheckOption(&screen->optionCache, var, DRI_ENUM))
+ return -1;
+
+ *val = driQueryOptioni(&screen->optionCache, var);
+
+ return 0;
+}
+
+static int
+dri2ConfigQueryf(__DRIscreen *screen, const char *var, GLfloat *val)
+{
+ if (!driCheckOption(&screen->optionCache, var, DRI_FLOAT))
+ return -1;
+
+ *val = driQueryOptionf(&screen->optionCache, var);
+
+ return 0;
+}
+
+
static void dri_get_drawable(__DRIdrawable *pdp)
{
pdp->refcount++;
@@ -788,6 +836,7 @@ dri2CreateNewScreen(int scrn, int fd,
static const __DRIextension *emptyExtensionList[] = { NULL };
__DRIscreen *psp;
drmVersionPtr version;
+ driOptionCache options;
if (driDriverAPI.InitScreen2 == NULL)
return NULL;
@@ -821,6 +870,9 @@ dri2CreateNewScreen(int scrn, int fd,
psp->DriverAPI = driDriverAPI;
+ driParseOptionInfo(&options, __dri2ConfigOptions, __dri2NConfigOptions);
+ driParseConfigFiles(&psp->optionCache, &options, psp->myNum, "dri2");
+
return psp;
}
@@ -865,6 +917,13 @@ const __DRIdri2Extension driDRI2Extension = {
dri2CreateNewContextForAPI
};
+const __DRI2configQueryExtension dri2ConfigQueryExtension = {
+ { __DRI2_CONFIG_QUERY, __DRI2_CONFIG_QUERY_VERSION },
+ dri2ConfigQueryb,
+ dri2ConfigQueryi,
+ dri2ConfigQueryf,
+};
+
static int
driFrameTracking(__DRIdrawable *drawable, GLboolean enable)
{
diff --git a/src/mesa/drivers/dri/common/dri_util.h b/src/mesa/drivers/dri/common/dri_util.h
index 4b7cd414b8..ab6c6e57af 100644
--- a/src/mesa/drivers/dri/common/dri_util.h
+++ b/src/mesa/drivers/dri/common/dri_util.h
@@ -51,6 +51,7 @@
#include <drm.h>
#include <drm_sarea.h>
#include <xf86drm.h>
+#include "xmlconfig.h"
#include "main/glheader.h"
#include "main/mtypes.h"
#include "GL/internal/glcore.h"
@@ -71,6 +72,7 @@ extern const __DRIcopySubBufferExtension driCopySubBufferExtension;
extern const __DRIswapControlExtension driSwapControlExtension;
extern const __DRIframeTrackingExtension driFrameTrackingExtension;
extern const __DRImediaStreamCounterExtension driMediaStreamCounterExtension;
+extern const __DRI2configQueryExtension dri2ConfigQueryExtension;
/**
* Used by DRI_VALIDATE_DRAWABLE_INFO
@@ -530,6 +532,7 @@ struct __DRIscreenRec {
/* The lock actually in use, old sarea or DRI2 */
drmLock *lock;
+ driOptionCache optionCache;
unsigned int api_mask;
};
diff --git a/src/mesa/drivers/dri/i915/i915_fragprog.c b/src/mesa/drivers/dri/i915/i915_fragprog.c
index 9f12e2c632..e60157f377 100644
--- a/src/mesa/drivers/dri/i915/i915_fragprog.c
+++ b/src/mesa/drivers/dri/i915/i915_fragprog.c
@@ -359,9 +359,10 @@ upload_program(struct i915_fragment_program *p)
}
if (program->Base.NumInstructions > I915_MAX_INSN) {
- i915_program_error( p, "Exceeded max instructions" );
- return;
- }
+ i915_program_error(p, "Exceeded max instructions (%d out of %d)",
+ program->Base.NumInstructions, I915_MAX_INSN);
+ return;
+ }
/* Not always needed:
*/
@@ -1099,12 +1100,23 @@ translate_program(struct i915_fragment_program *p)
{
struct i915_context *i915 = I915_CONTEXT(p->ctx);
+ if (INTEL_DEBUG & DEBUG_WM) {
+ printf("fp:\n");
+ _mesa_print_program(&p->ctx->FragmentProgram._Current->Base);
+ printf("\n");
+ }
+
i915_init_program(i915, p);
check_wpos(p);
upload_program(p);
fixup_depth_write(p);
i915_fini_program(p);
+ if (INTEL_DEBUG & DEBUG_WM) {
+ printf("i915:\n");
+ i915_disassemble_program(i915->state.Program, i915->state.ProgramSize);
+ }
+
p->translated = 1;
}
diff --git a/src/mesa/drivers/dri/i915/i915_program.c b/src/mesa/drivers/dri/i915/i915_program.c
index 3902c69097..670c713785 100644
--- a/src/mesa/drivers/dri/i915/i915_program.c
+++ b/src/mesa/drivers/dri/i915/i915_program.c
@@ -494,17 +494,25 @@ i915_fini_program(struct i915_fragment_program *p)
GLuint program_size = p->csr - p->program;
GLuint decl_size = p->decl - p->declarations;
- if (p->nr_tex_indirect > I915_MAX_TEX_INDIRECT)
- i915_program_error(p, "Exceeded max nr indirect texture lookups");
+ if (p->nr_tex_indirect > I915_MAX_TEX_INDIRECT) {
+ i915_program_error(p, "Exceeded max nr indirect texture lookups "
+ "(%d out of %d)",
+ p->nr_tex_indirect, I915_MAX_TEX_INDIRECT);
+ }
- if (p->nr_tex_insn > I915_MAX_TEX_INSN)
- i915_program_error(p, "Exceeded max TEX instructions");
+ if (p->nr_tex_insn > I915_MAX_TEX_INSN) {
+ i915_program_error(p, "Exceeded max TEX instructions (%d out of %d)",
+ p->nr_tex_insn, I915_MAX_TEX_INSN);
+ }
if (p->nr_alu_insn > I915_MAX_ALU_INSN)
- i915_program_error(p, "Exceeded max ALU instructions");
+ i915_program_error(p, "Exceeded max ALU instructions (%d out of %d)",
+ p->nr_alu_insn, I915_MAX_ALU_INSN);
- if (p->nr_decl_insn > I915_MAX_DECL_INSN)
- i915_program_error(p, "Exceeded max DECL instructions");
+ if (p->nr_decl_insn > I915_MAX_DECL_INSN) {
+ i915_program_error(p, "Exceeded max DECL instructions (%d out of %d)",
+ p->nr_decl_insn, I915_MAX_DECL_INSN);
+ }
if (p->error) {
p->FragProg.Base.NumNativeInstructions = 0;
diff --git a/src/mesa/drivers/dri/i915/i915_tex_layout.c b/src/mesa/drivers/dri/i915/i915_tex_layout.c
index af9c7ee9b6..6e4512129c 100644
--- a/src/mesa/drivers/dri/i915/i915_tex_layout.c
+++ b/src/mesa/drivers/dri/i915/i915_tex_layout.c
@@ -483,7 +483,7 @@ i945_miptree_layout(struct intel_context *intel, struct intel_mipmap_tree * mt,
case GL_TEXTURE_1D:
case GL_TEXTURE_2D:
case GL_TEXTURE_RECTANGLE_ARB:
- i945_miptree_layout_2d(intel, mt, tiling);
+ i945_miptree_layout_2d(intel, mt, tiling, 1);
break;
default:
_mesa_problem(NULL, "Unexpected tex target in i945_miptree_layout()");
diff --git a/src/mesa/drivers/dri/i965/brw_program.c b/src/mesa/drivers/dri/i965/brw_program.c
index 1fd957b3ad..41a1f438df 100644
--- a/src/mesa/drivers/dri/i965/brw_program.c
+++ b/src/mesa/drivers/dri/i965/brw_program.c
@@ -34,6 +34,7 @@
#include "shader/prog_parameter.h"
#include "shader/program.h"
#include "shader/programopt.h"
+#include "shader/shader_api.h"
#include "tnl/tnl.h"
#include "brw_context.h"
@@ -119,12 +120,28 @@ static GLboolean brwIsProgramNative( GLcontext *ctx,
return GL_TRUE;
}
+static void
+shader_error(GLcontext *ctx, struct gl_program *prog, const char *msg)
+{
+ struct gl_shader_program *shader;
+
+ shader = _mesa_lookup_shader_program(ctx, prog->Id);
+
+ if (shader) {
+ if (shader->InfoLog) {
+ free(shader->InfoLog);
+ }
+ shader->InfoLog = _mesa_strdup(msg);
+ shader->LinkStatus = GL_FALSE;
+ }
+}
static GLboolean brwProgramStringNotify( GLcontext *ctx,
GLenum target,
struct gl_program *prog )
{
struct brw_context *brw = brw_context(ctx);
+ int i;
if (target == GL_FRAGMENT_PROGRAM_ARB) {
struct gl_fragment_program *fprog = (struct gl_fragment_program *) prog;
@@ -160,7 +177,22 @@ static GLboolean brwProgramStringNotify( GLcontext *ctx,
_tnl_program_string(ctx, target, prog);
}
- /* XXX check if program is legal, within limits */
+ /* Reject programs with subroutines, which are totally broken at the moment
+ * (all program flows return when any program flow returns, and
+ * the VS also hangs if a function call calls a function.
+ *
+ * See piglit glsl-{vs,fs}-functions-[23] tests.
+ */
+ for (i = 0; i < prog->NumInstructions; i++) {
+ if (prog->Instructions[i].Opcode == OPCODE_CAL) {
+ shader_error(ctx, prog,
+ "i965 driver doesn't yet support uninlined function "
+ "calls. Move to using a single return statement at "
+ "the end of the function to work around it.");
+ return GL_FALSE;
+ }
+ }
+
return GL_TRUE;
}
diff --git a/src/mesa/drivers/dri/i965/brw_sf_state.c b/src/mesa/drivers/dri/i965/brw_sf_state.c
index 9712c31afe..1a6c8218fd 100644
--- a/src/mesa/drivers/dri/i965/brw_sf_state.c
+++ b/src/mesa/drivers/dri/i965/brw_sf_state.c
@@ -76,7 +76,20 @@ static void upload_sf_vp(struct brw_context *brw)
* Note that the hardware's coordinates are inclusive, while Mesa's min is
* inclusive but max is exclusive.
*/
- if (render_to_fbo) {
+
+ if (ctx->DrawBuffer->_Xmin == ctx->DrawBuffer->_Xmax ||
+ ctx->DrawBuffer->_Ymin == ctx->DrawBuffer->_Ymax) {
+ /* If the scissor was out of bounds and got clamped to 0
+ * width/height at the bounds, the subtraction of 1 from
+ * maximums could produce a negative number and thus not clip
+ * anything. Instead, just provide a min > max scissor inside
+ * the bounds, which produces the expected no rendering.
+ */
+ sfv.scissor.xmin = 1;
+ sfv.scissor.xmax = 0;
+ sfv.scissor.ymin = 1;
+ sfv.scissor.ymax = 0;
+ } else if (render_to_fbo) {
/* texmemory: Y=0=bottom */
sfv.scissor.xmin = ctx->DrawBuffer->_Xmin;
sfv.scissor.xmax = ctx->DrawBuffer->_Xmax - 1;
diff --git a/src/mesa/drivers/dri/i965/brw_tex_layout.c b/src/mesa/drivers/dri/i965/brw_tex_layout.c
index 9a215ab8a4..768ccfd79c 100644
--- a/src/mesa/drivers/dri/i965/brw_tex_layout.c
+++ b/src/mesa/drivers/dri/i965/brw_tex_layout.c
@@ -49,74 +49,30 @@ GLboolean brw_miptree_layout(struct intel_context *intel,
switch (mt->target) {
case GL_TEXTURE_CUBE_MAP:
if (intel->gen == 5) {
- GLuint align_h = 2, align_w = 4;
+ GLuint align_h = 2;
GLuint level;
- GLuint x = 0;
- GLuint y = 0;
- GLuint width = mt->width0;
- GLuint height = mt->height0;
GLuint qpitch = 0;
- GLuint y_pitch = 0;
+ int h0, h1, q;
- mt->total_width = mt->width0;
- intel_get_texture_alignment_unit(mt->internal_format, &align_w, &align_h);
- y_pitch = ALIGN(height, align_h);
+ /* On Ironlake, cube maps are finally represented as just a series
+ * of MIPLAYOUT_BELOW 2D textures (like 2D texture arrays), separated
+ * by a pitch of qpitch rows, where qpitch is defined by the equation
+ * given in Volume 1 of the BSpec.
+ */
+ h0 = ALIGN(mt->height0, align_h);
+ h1 = ALIGN(minify(h0), align_h);
+ qpitch = (h0 + h1 + 11 * align_h);
+ if (mt->compressed)
+ qpitch /= 4;
- if (mt->compressed) {
- mt->total_width = ALIGN(mt->width0, align_w);
- }
-
- if (mt->first_level != mt->last_level) {
- GLuint mip1_width;
-
- if (mt->compressed) {
- mip1_width = ALIGN(minify(mt->width0), align_w)
- + ALIGN(minify(minify(mt->width0)), align_w);
- } else {
- mip1_width = ALIGN(minify(mt->width0), align_w)
- + minify(minify(mt->width0));
- }
-
- if (mip1_width > mt->total_width) {
- mt->total_width = mip1_width;
- }
- }
-
- if (mt->compressed) {
- qpitch = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h) / 4;
- mt->total_height = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h) / 4 * 6;
- } else {
- qpitch = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h);
- mt->total_height = (y_pitch + ALIGN(minify(y_pitch), align_h) + 11 * align_h) * 6;
- }
+ i945_miptree_layout_2d(intel, mt, tiling, 6);
for (level = mt->first_level; level <= mt->last_level; level++) {
- GLuint img_height;
- GLuint nr_images = 6;
- GLuint q = 0;
-
- intel_miptree_set_level_info(mt, level, nr_images, x, y, width,
- height, 1);
-
- for (q = 0; q < nr_images; q++)
- intel_miptree_set_image_offset(mt, level, q,
- x, y + q * qpitch);
-
- if (mt->compressed)
- img_height = MAX2(1, height/4);
- else
- img_height = ALIGN(height, align_h);
-
- if (level == mt->first_level + 1) {
- x += ALIGN(width, align_w);
- }
- else {
- y += img_height;
- }
-
- width = minify(width);
- height = minify(height);
+ for (q = 0; q < 6; q++) {
+ intel_miptree_set_image_offset(mt, level, q, 0, q * qpitch);
+ }
}
+ mt->total_height = qpitch * 6;
break;
}
@@ -206,7 +162,7 @@ GLboolean brw_miptree_layout(struct intel_context *intel,
}
default:
- i945_miptree_layout_2d(intel, mt, tiling);
+ i945_miptree_layout_2d(intel, mt, tiling, 1);
break;
}
DBG("%s: %dx%dx%d\n", __FUNCTION__,
diff --git a/src/mesa/drivers/dri/i965/brw_vs_emit.c b/src/mesa/drivers/dri/i965/brw_vs_emit.c
index eeb3f366a4..dc6ab81c4a 100644
--- a/src/mesa/drivers/dri/i965/brw_vs_emit.c
+++ b/src/mesa/drivers/dri/i965/brw_vs_emit.c
@@ -37,6 +37,43 @@
#include "brw_context.h"
#include "brw_vs.h"
+/* Return the SrcReg index of the channels that can be immediate float operands
+ * instead of usage of PROGRAM_CONSTANT values through push/pull.
+ */
+static GLboolean
+brw_vs_arg_can_be_immediate(enum prog_opcode opcode, int arg)
+{
+ int opcode_array[] = {
+ [OPCODE_ADD] = 2,
+ [OPCODE_CMP] = 3,
+ [OPCODE_DP3] = 2,
+ [OPCODE_DP4] = 2,
+ [OPCODE_DPH] = 2,
+ [OPCODE_MAX] = 2,
+ [OPCODE_MIN] = 2,
+ [OPCODE_MUL] = 2,
+ [OPCODE_SEQ] = 2,
+ [OPCODE_SGE] = 2,
+ [OPCODE_SGT] = 2,
+ [OPCODE_SLE] = 2,
+ [OPCODE_SLT] = 2,
+ [OPCODE_SNE] = 2,
+ [OPCODE_XPD] = 2,
+ };
+
+ /* These opcodes get broken down in a way that allow two
+ * args to be immediates.
+ */
+ if (opcode == OPCODE_MAD || opcode == OPCODE_LRP) {
+ if (arg == 1 || arg == 2)
+ return GL_TRUE;
+ }
+
+ if (opcode > ARRAY_SIZE(opcode_array))
+ return GL_FALSE;
+
+ return arg == opcode_array[opcode] - 1;
+}
static struct brw_reg get_tmp( struct brw_vs_compile *c )
{
@@ -453,8 +490,8 @@ static void emit_max( struct brw_compile *p,
struct brw_reg arg0,
struct brw_reg arg1 )
{
- brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_L, arg0, arg1);
- brw_SEL(p, dst, arg1, arg0);
+ brw_CMP(p, brw_null_reg(), BRW_CONDITIONAL_GE, arg0, arg1);
+ brw_SEL(p, dst, arg0, arg1);
brw_set_predicate_control(p, BRW_PREDICATE_NONE);
}
@@ -983,6 +1020,55 @@ get_src_reg( struct brw_vs_compile *c,
const GLint index = inst->SrcReg[argIndex].Index;
const GLboolean relAddr = inst->SrcReg[argIndex].RelAddr;
+ if (brw_vs_arg_can_be_immediate(inst->Opcode, argIndex)) {
+ const struct prog_src_register *src = &inst->SrcReg[argIndex];
+
+ if (src->Swizzle == MAKE_SWIZZLE4(SWIZZLE_ZERO,
+ SWIZZLE_ZERO,
+ SWIZZLE_ZERO,
+ SWIZZLE_ZERO)) {
+ return brw_imm_f(0.0f);
+ } else if (src->Swizzle == MAKE_SWIZZLE4(SWIZZLE_ONE,
+ SWIZZLE_ONE,
+ SWIZZLE_ONE,
+ SWIZZLE_ONE)) {
+ if (src->Negate)
+ return brw_imm_f(-1.0F);
+ else
+ return brw_imm_f(1.0F);
+ } else if (src->File == PROGRAM_CONSTANT) {
+ const struct gl_program_parameter_list *params;
+ float f;
+ int component = -1;
+
+ switch (src->Swizzle) {
+ case SWIZZLE_XXXX:
+ component = 0;
+ break;
+ case SWIZZLE_YYYY:
+ component = 1;
+ break;
+ case SWIZZLE_ZZZZ:
+ component = 2;
+ break;
+ case SWIZZLE_WWWW:
+ component = 3;
+ break;
+ }
+
+ if (component >= 0) {
+ params = c->vp->program.Base.Parameters;
+ f = params->ParameterValues[src->Index][component];
+
+ if (src->Abs)
+ f = fabs(f);
+ if (src->Negate)
+ f = -f;
+ return brw_imm_f(f);
+ }
+ }
+ }
+
switch (file) {
case PROGRAM_TEMPORARY:
case PROGRAM_INPUT:
diff --git a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
index d7650af3d9..1582ff1ab6 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_sampler_state.c
@@ -228,6 +228,8 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
{
GLcontext *ctx = &brw->intel.ctx;
int unit;
+ char *last_entry_end = ((char*)&key->sampler_count) +
+ sizeof(key->sampler_count);
key->sampler_count = 0;
@@ -240,7 +242,9 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
struct gl_texture_image *firstImage =
texObj->Image[0][intelObj->firstLevel];
- memset(entry, 0, sizeof(*entry));
+ memset(last_entry_end, 0,
+ (char*)entry - last_entry_end + sizeof(*entry));
+ last_entry_end = ((char*)entry) + sizeof(*entry);
entry->tex_target = texObj->Target;
@@ -280,6 +284,8 @@ brw_wm_sampler_populate_key(struct brw_context *brw,
key->sampler_count = unit + 1;
}
}
+ struct wm_sampler_entry *entry = &key->sampler[key->sampler_count];
+ memset(last_entry_end, 0, (char*)entry - last_entry_end);
}
/* All samplers must be uploaded in a single contiguous array, which
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 6b9e566886..e51a1a0e26 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -588,7 +588,7 @@ brw_update_renderbuffer_surface(struct brw_context *brw,
tile_base = ((key.draw_y / 32) * (32 * pitch));
tile_base += (key.draw_x - tile_x) / (128 / key.cpp) * 4096;
}
- assert(intel->is_g4x || (tile_x == 0 && tile_y == 0));
+ assert(brw->has_surface_tile_offset || (tile_x == 0 && tile_y == 0));
assert(tile_x % 4 == 0);
assert(tile_y % 2 == 0);
/* Note that the low bits of these fields are missing, so
diff --git a/src/mesa/drivers/dri/intel/intel_screen.c b/src/mesa/drivers/dri/intel/intel_screen.c
index 2b54cda66d..3aed253e24 100644
--- a/src/mesa/drivers/dri/intel/intel_screen.c
+++ b/src/mesa/drivers/dri/intel/intel_screen.c
@@ -225,6 +225,7 @@ static const __DRIextension *intelScreenExtensions[] = {
&intelTexBufferExtension.base,
&intelFlushExtension.base,
&intelImageExtension.base,
+ &dri2ConfigQueryExtension.base,
NULL
};
diff --git a/src/mesa/drivers/dri/intel/intel_tex_layout.c b/src/mesa/drivers/dri/intel/intel_tex_layout.c
index d132e19e83..d39733b6c5 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_layout.c
+++ b/src/mesa/drivers/dri/intel/intel_tex_layout.c
@@ -63,9 +63,9 @@ void intel_get_texture_alignment_unit(GLenum internalFormat, GLuint *w, GLuint *
}
}
-void i945_miptree_layout_2d( struct intel_context *intel,
- struct intel_mipmap_tree *mt,
- uint32_t tiling )
+void i945_miptree_layout_2d(struct intel_context *intel,
+ struct intel_mipmap_tree *mt,
+ uint32_t tiling, int nr_images)
{
GLuint align_h = 2, align_w = 4;
GLuint level;
@@ -107,7 +107,7 @@ void i945_miptree_layout_2d( struct intel_context *intel,
for ( level = mt->first_level ; level <= mt->last_level ; level++ ) {
GLuint img_height;
- intel_miptree_set_level_info(mt, level, 1, x, y, width,
+ intel_miptree_set_level_info(mt, level, nr_images, x, y, width,
height, 1);
if (mt->compressed)
diff --git a/src/mesa/drivers/dri/intel/intel_tex_layout.h b/src/mesa/drivers/dri/intel/intel_tex_layout.h
index a9ac9e7eb4..1c8c53e545 100644
--- a/src/mesa/drivers/dri/intel/intel_tex_layout.h
+++ b/src/mesa/drivers/dri/intel/intel_tex_layout.h
@@ -40,5 +40,5 @@ static INLINE GLuint minify( GLuint d )
extern void i945_miptree_layout_2d(struct intel_context *intel,
struct intel_mipmap_tree *mt,
- uint32_t tiling);
+ uint32_t tiling, int nr_images);
extern void intel_get_texture_alignment_unit(GLenum, GLuint *, GLuint *);
diff --git a/src/mesa/drivers/dri/nouveau/nouveau_screen.c b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
index 18db12f626..78987f633c 100644
--- a/src/mesa/drivers/dri/nouveau/nouveau_screen.c
+++ b/src/mesa/drivers/dri/nouveau/nouveau_screen.c
@@ -236,6 +236,7 @@ static const struct __DRItexBufferExtensionRec nouveau_texbuffer_extension = {
static const __DRIextension *nouveau_screen_extensions[] = {
&nouveau_flush_extension.base,
&nouveau_texbuffer_extension.base,
+ &dri2ConfigQueryExtension.base,
NULL
};
diff --git a/src/mesa/drivers/dri/r300/r300_state.c b/src/mesa/drivers/dri/r300/r300_state.c
index 02ba300eb0..fa33be4998 100644
--- a/src/mesa/drivers/dri/r300/r300_state.c
+++ b/src/mesa/drivers/dri/r300/r300_state.c
@@ -1658,20 +1658,21 @@ void r300VapCntl(r300ContextPtr rmesa, GLuint input_count,
(5 << R300_PVS_NUM_CNTLRS_SHIFT) |
(5 << R300_VF_MAX_VTX_NUM_SHIFT));
- if (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV515)
- rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (2 << R300_PVS_NUM_FPUS_SHIFT);
- else if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV530) ||
- (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV560) ||
- (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV570))
+ if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R300) ||
+ (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R350))
+ rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (4 << R300_PVS_NUM_FPUS_SHIFT);
+ else if (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV530)
rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (5 << R300_PVS_NUM_FPUS_SHIFT);
else if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV410) ||
(rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R420))
rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (6 << R300_PVS_NUM_FPUS_SHIFT);
else if ((rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R520) ||
- (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R580))
+ (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_R580) ||
+ (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV560) ||
+ (rmesa->radeon.radeonScreen->chip_family == CHIP_FAMILY_RV570))
rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (8 << R300_PVS_NUM_FPUS_SHIFT);
else
- rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (4 << R300_PVS_NUM_FPUS_SHIFT);
+ rmesa->hw.vap_cntl.cmd[R300_VAP_CNTL_INSTR] |= (2 << R300_PVS_NUM_FPUS_SHIFT);
}
diff --git a/src/mesa/drivers/dri/r600/r600_blit.c b/src/mesa/drivers/dri/r600/r600_blit.c
index 244fdc4ffb..172f85eb26 100644
--- a/src/mesa/drivers/dri/r600/r600_blit.c
+++ b/src/mesa/drivers/dri/r600/r600_blit.c
@@ -344,6 +344,10 @@ set_render_target(context_t *context, struct radeon_bo *bo, gl_format mesa_forma
return;
}
+ /* must be 0 on r7xx */
+ if (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV770)
+ CLEARbit(cb_color0_info, BLEND_FLOAT32_bit);
+
SETfield(cb_color0_info, format, CB_COLOR0_INFO__FORMAT_shift,
CB_COLOR0_INFO__FORMAT_mask);
SETfield(cb_color0_info, comp_swap, COMP_SWAP_shift, COMP_SWAP_mask);
diff --git a/src/mesa/drivers/dri/r600/r600_context.c b/src/mesa/drivers/dri/r600/r600_context.c
index 9f8923f09d..f4aed4e87f 100644
--- a/src/mesa/drivers/dri/r600/r600_context.c
+++ b/src/mesa/drivers/dri/r600/r600_context.c
@@ -239,7 +239,7 @@ static void r600_init_vtbl(radeonContextPtr radeon)
radeon->vtbl.emit_query_finish = r600_emit_query_finish;
radeon->vtbl.check_blit = r600_check_blit;
radeon->vtbl.blit = r600_blit;
- radeon->vtbl.is_format_renderable = radeonIsFormatRenderable;
+ radeon->vtbl.is_format_renderable = r600IsFormatRenderable;
}
static void r600InitConstValues(GLcontext *ctx, radeonScreenPtr screen)
diff --git a/src/mesa/drivers/dri/r600/r600_tex.c b/src/mesa/drivers/dri/r600/r600_tex.c
index 36a6e6e0a1..41419f8460 100644
--- a/src/mesa/drivers/dri/r600/r600_tex.c
+++ b/src/mesa/drivers/dri/r600/r600_tex.c
@@ -392,6 +392,54 @@ static struct gl_texture_object *r600NewTextureObject(GLcontext * ctx,
return &t->base;
}
+unsigned r600IsFormatRenderable(gl_format mesa_format)
+{
+ switch (mesa_format) {
+ case MESA_FORMAT_RGBA8888:
+ case MESA_FORMAT_SIGNED_RGBA8888:
+ case MESA_FORMAT_RGBA8888_REV:
+ case MESA_FORMAT_SIGNED_RGBA8888_REV:
+ case MESA_FORMAT_ARGB8888:
+ case MESA_FORMAT_XRGB8888:
+ case MESA_FORMAT_ARGB8888_REV:
+ case MESA_FORMAT_XRGB8888_REV:
+ case MESA_FORMAT_RGB565:
+ case MESA_FORMAT_RGB565_REV:
+ case MESA_FORMAT_ARGB4444:
+ case MESA_FORMAT_ARGB4444_REV:
+ case MESA_FORMAT_ARGB1555:
+ case MESA_FORMAT_ARGB1555_REV:
+ case MESA_FORMAT_AL88:
+ case MESA_FORMAT_AL88_REV:
+ case MESA_FORMAT_RGB332:
+ case MESA_FORMAT_A8:
+ case MESA_FORMAT_I8:
+ case MESA_FORMAT_CI8:
+ case MESA_FORMAT_L8:
+ case MESA_FORMAT_RGBA_FLOAT32:
+ case MESA_FORMAT_RGBA_FLOAT16:
+ case MESA_FORMAT_ALPHA_FLOAT32:
+ case MESA_FORMAT_ALPHA_FLOAT16:
+ case MESA_FORMAT_LUMINANCE_FLOAT32:
+ case MESA_FORMAT_LUMINANCE_FLOAT16:
+ case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+ case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+ case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
+ case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
+ case MESA_FORMAT_X8_Z24:
+ case MESA_FORMAT_S8_Z24:
+ case MESA_FORMAT_Z24_S8:
+ case MESA_FORMAT_Z16:
+ case MESA_FORMAT_Z32:
+ case MESA_FORMAT_SRGBA8:
+ case MESA_FORMAT_SLA8:
+ case MESA_FORMAT_SL8:
+ return 1;
+ default:
+ return 0;
+ }
+}
+
void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions)
{
/* Note: we only plug in the functions we implement in the driver
diff --git a/src/mesa/drivers/dri/r600/r600_tex.h b/src/mesa/drivers/dri/r600/r600_tex.h
index 1d75a2ecd6..771affdfa6 100644
--- a/src/mesa/drivers/dri/r600/r600_tex.h
+++ b/src/mesa/drivers/dri/r600/r600_tex.h
@@ -60,4 +60,6 @@ extern GLboolean r600ValidateBuffers(GLcontext * ctx);
extern void r600InitTextureFuncs(radeonContextPtr radeon, struct dd_function_table *functions);
+unsigned r600IsFormatRenderable(gl_format mesa_format);
+
#endif /* __r600_TEX_H__ */
diff --git a/src/mesa/drivers/dri/r600/r700_assembler.c b/src/mesa/drivers/dri/r600/r700_assembler.c
index 834bcc63e3..0677c54bea 100644
--- a/src/mesa/drivers/dri/r600/r700_assembler.c
+++ b/src/mesa/drivers/dri/r600/r700_assembler.c
@@ -6511,13 +6511,30 @@ GLboolean Process_Vertex_Exports(r700_AssemblerBase *pR700AsmCode,
{
return GL_FALSE;
}
+ export_starting_index++;
+ export_count--;
+ }
+ unBit = 1 << VERT_RESULT_PSIZ;
+ if(OutputsWritten & unBit)
+ {
+ if( GL_FALSE == Process_Export(pR700AsmCode,
+ SQ_EXPORT_POS,
+ export_starting_index,
+ 1,
+ pR700AsmCode->ucVP_OutputMap[VERT_RESULT_PSIZ],
+ GL_FALSE) )
+ {
+ return GL_FALSE;
+ }
export_count--;
+ }
+
+ pR700AsmCode->cf_last_export_ptr->m_Word1.f.cf_inst = SQ_CF_INST_EXPORT_DONE;
- pR700AsmCode->cf_last_export_ptr->m_Word1.f.cf_inst = SQ_CF_INST_EXPORT_DONE;
- }
pR700AsmCode->number_of_exports = export_count;
+ export_starting_index = 0;
unBit = 1 << VERT_RESULT_COL0;
if(OutputsWritten & unBit)
diff --git a/src/mesa/drivers/dri/r600/r700_chip.c b/src/mesa/drivers/dri/r600/r700_chip.c
index 63614b160c..cefda3ac4b 100644
--- a/src/mesa/drivers/dri/r600/r700_chip.c
+++ b/src/mesa/drivers/dri/r600/r700_chip.c
@@ -290,7 +290,7 @@ static void r700SendVTXState(GLcontext *ctx, struct radeon_state_atom *atom)
static void r700SetRenderTarget(context_t *context, int id)
{
R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw);
-
+ uint32_t format = COLOR_8_8_8_8, comp_swap = SWAP_ALT, number_type = NUMBER_UNORM;
struct radeon_renderbuffer *rrb;
unsigned int nPitchInPixel;
@@ -312,22 +312,251 @@ static void r700SetRenderTarget(context_t *context, int id)
SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ENDIAN_NONE, ENDIAN_shift, ENDIAN_mask);
SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_LINEAR_GENERAL,
CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
- if(4 == rrb->cpp)
- {
- SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, COLOR_8_8_8_8,
- CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask);
- SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, SWAP_ALT, COMP_SWAP_shift, COMP_SWAP_mask);
- }
- else
- {
- SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, COLOR_5_6_5,
- CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask);
- SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, SWAP_ALT_REV,
- COMP_SWAP_shift, COMP_SWAP_mask);
+
+ switch (rrb->base.Format) {
+ case MESA_FORMAT_RGBA8888:
+ format = COLOR_8_8_8_8;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_SIGNED_RGBA8888:
+ format = COLOR_8_8_8_8;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_SNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_RGBA8888_REV:
+ format = COLOR_8_8_8_8;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_SIGNED_RGBA8888_REV:
+ format = COLOR_8_8_8_8;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_SNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ARGB8888:
+ case MESA_FORMAT_XRGB8888:
+ format = COLOR_8_8_8_8;
+ comp_swap = SWAP_ALT;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ARGB8888_REV:
+ case MESA_FORMAT_XRGB8888_REV:
+ format = COLOR_8_8_8_8;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_RGB565:
+ format = COLOR_5_6_5;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_RGB565_REV:
+ format = COLOR_5_6_5;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ARGB4444:
+ format = COLOR_4_4_4_4;
+ comp_swap = SWAP_ALT;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ARGB4444_REV:
+ format = COLOR_4_4_4_4;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ARGB1555:
+ format = COLOR_1_5_5_5;
+ comp_swap = SWAP_ALT;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ARGB1555_REV:
+ format = COLOR_1_5_5_5;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_AL88:
+ format = COLOR_8_8;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_AL88_REV:
+ format = COLOR_8_8;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_RGB332:
+ format = COLOR_3_3_2;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_A8:
+ format = COLOR_8;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_I8:
+ case MESA_FORMAT_CI8:
+ format = COLOR_8;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_L8:
+ format = COLOR_8;
+ comp_swap = SWAP_ALT;
+ number_type = NUMBER_UNORM;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_RGBA_FLOAT32:
+ format = COLOR_32_32_32_32_FLOAT;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_FLOAT;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_RGBA_FLOAT16:
+ format = COLOR_16_16_16_16_FLOAT;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_FLOAT;
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ALPHA_FLOAT32:
+ format = COLOR_32_FLOAT;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_FLOAT;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_ALPHA_FLOAT16:
+ format = COLOR_16_FLOAT;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_FLOAT;
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_LUMINANCE_FLOAT32:
+ format = COLOR_32_FLOAT;
+ comp_swap = SWAP_ALT;
+ number_type = NUMBER_FLOAT;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_LUMINANCE_FLOAT16:
+ format = COLOR_16_FLOAT;
+ comp_swap = SWAP_ALT;
+ number_type = NUMBER_FLOAT;
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32:
+ format = COLOR_32_32_FLOAT;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_FLOAT;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16:
+ format = COLOR_16_16_FLOAT;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_FLOAT;
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_INTENSITY_FLOAT32: /* X, X, X, X */
+ format = COLOR_32_FLOAT;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_FLOAT;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_INTENSITY_FLOAT16: /* X, X, X, X */
+ format = COLOR_16_FLOAT;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_X8_Z24:
+ case MESA_FORMAT_S8_Z24:
+ format = COLOR_8_24;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+ CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_Z24_S8:
+ format = COLOR_24_8;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+ CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_Z16:
+ format = COLOR_16;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+ CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_Z32:
+ format = COLOR_32;
+ comp_swap = SWAP_STD;
+ number_type = NUMBER_UNORM;
+ SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, ARRAY_1D_TILED_THIN1,
+ CB_COLOR0_INFO__ARRAY_MODE_shift, CB_COLOR0_INFO__ARRAY_MODE_mask);
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_SRGBA8:
+ format = COLOR_8_8_8_8;
+ comp_swap = SWAP_STD_REV;
+ number_type = NUMBER_SRGB;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_SLA8:
+ format = COLOR_8_8;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_SRGB;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ case MESA_FORMAT_SL8:
+ format = COLOR_8;
+ comp_swap = SWAP_ALT_REV;
+ number_type = NUMBER_SRGB;
+ SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+ break;
+ default:
+ _mesa_problem(context->radeon.glCtx, "unexpected format in r700SetRenderTarget()");
+ break;
}
- SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, SOURCE_FORMAT_bit);
+
+ /* must be 0 on r7xx */
+ if (context->radeon.radeonScreen->chip_family >= CHIP_FAMILY_RV770)
+ CLEARbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_FLOAT32_bit);
+
+ SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, format,
+ CB_COLOR0_INFO__FORMAT_shift, CB_COLOR0_INFO__FORMAT_mask);
+ SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, comp_swap,
+ COMP_SWAP_shift, COMP_SWAP_mask);
+ SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, number_type,
+ NUMBER_TYPE_shift, NUMBER_TYPE_mask);
SETbit(r700->render_target[id].CB_COLOR0_INFO.u32All, BLEND_CLAMP_bit);
- SETfield(r700->render_target[id].CB_COLOR0_INFO.u32All, NUMBER_UNORM, NUMBER_TYPE_shift, NUMBER_TYPE_mask);
r700->render_target[id].enabled = GL_TRUE;
}
diff --git a/src/mesa/drivers/dri/r600/r700_fragprog.c b/src/mesa/drivers/dri/r600/r700_fragprog.c
index 84d51e6606..ee4d2828cf 100644
--- a/src/mesa/drivers/dri/r600/r700_fragprog.c
+++ b/src/mesa/drivers/dri/r600/r700_fragprog.c
@@ -560,21 +560,22 @@ GLboolean r700SetupFragmentProgram(GLcontext * ctx)
CLEARbit(r700->SPI_PS_IN_CONTROL_1.u32All, FRONT_FACE_ENA_bit);
}
- /* see if we need any point_sprite replacements */
- for (i = VERT_RESULT_TEX0; i<= VERT_RESULT_TEX7; i++)
+ /* see if we need any point_sprite replacements, also increase num_interp
+ * as there's no vp output for them */
+ for (i = FRAG_ATTRIB_TEX0; i<= FRAG_ATTRIB_TEX7; i++)
{
- if(ctx->Point.CoordReplace[i - VERT_RESULT_TEX0] == GL_TRUE)
+ if(ctx->Point.CoordReplace[i - FRAG_ATTRIB_TEX0] == GL_TRUE) {
+ ui++;
point_sprite = GL_TRUE;
+ }
}
+ if( mesa_fp->Base.InputsRead & (1 << FRAG_ATTRIB_PNTC))
+ ui++;
+
if ((mesa_fp->Base.InputsRead & (1 << FRAG_ATTRIB_PNTC)) || point_sprite)
{
- /* for FRAG_ATTRIB_PNTC we need to increase num_interp */
- if(mesa_fp->Base.InputsRead & (1 << FRAG_ATTRIB_PNTC))
- {
- ui++;
- SETfield(r700->SPI_PS_IN_CONTROL_0.u32All, ui, NUM_INTERP_shift, NUM_INTERP_mask);
- }
+ SETfield(r700->SPI_PS_IN_CONTROL_0.u32All, ui, NUM_INTERP_shift, NUM_INTERP_mask);
SETbit(r700->SPI_INTERP_CONTROL_0.u32All, PNT_SPRITE_ENA_bit);
SETfield(r700->SPI_INTERP_CONTROL_0.u32All, SPI_PNT_SPRITE_SEL_S, PNT_SPRITE_OVRD_X_shift, PNT_SPRITE_OVRD_X_mask);
SETfield(r700->SPI_INTERP_CONTROL_0.u32All, SPI_PNT_SPRITE_SEL_T, PNT_SPRITE_OVRD_Y_shift, PNT_SPRITE_OVRD_Y_mask);
@@ -669,7 +670,7 @@ GLboolean r700SetupFragmentProgram(GLcontext * ctx)
for(i=0; i<8; i++)
{
unBit = 1 << (VERT_RESULT_TEX0 + i);
- if(OutputsWritten & unBit)
+ if((OutputsWritten & unBit) || (ctx->Point.CoordReplace[i] == GL_TRUE))
{
ui = pAsm->uiFP_AttributeMap[FRAG_ATTRIB_TEX0 + i];
SETbit(r700->SPI_PS_INPUT_CNTL[ui].u32All, SEL_CENTROID_bit);
diff --git a/src/mesa/drivers/dri/r600/r700_state.c b/src/mesa/drivers/dri/r600/r700_state.c
index 1da31e7b2b..ac64bbf874 100644
--- a/src/mesa/drivers/dri/r600/r700_state.c
+++ b/src/mesa/drivers/dri/r600/r700_state.c
@@ -253,12 +253,15 @@ void r700UpdateShaderStates(GLcontext * ctx)
static void r700SetDepthState(GLcontext * ctx)
{
+ struct radeon_renderbuffer *rrb;
context_t *context = R700_CONTEXT(ctx);
R700_CHIP_CONTEXT *r700 = (R700_CHIP_CONTEXT*)(&context->hw);
R600_STATECHANGE(context, db);
- if (ctx->Depth.Test)
+ rrb = radeon_get_depthbuffer(&context->radeon);
+
+ if (ctx->Depth.Test && rrb && rrb->bo)
{
SETbit(r700->DB_DEPTH_CONTROL.u32All, Z_ENABLE_bit);
if (ctx->Depth.Mask)
diff --git a/src/mesa/drivers/dri/r600/r700_vertprog.c b/src/mesa/drivers/dri/r600/r700_vertprog.c
index 05c65164d6..14dd2a5482 100644
--- a/src/mesa/drivers/dri/r600/r700_vertprog.c
+++ b/src/mesa/drivers/dri/r600/r700_vertprog.c
@@ -628,6 +628,16 @@ GLboolean r700SetupVertexProgram(GLcontext * ctx)
R600_STATECHANGE(context, spi);
+ if(vp->mesa_program->Base.OutputsWritten & (1 << VERT_RESULT_PSIZ)) {
+ R600_STATECHANGE(context, cl);
+ SETbit(r700->PA_CL_VS_OUT_CNTL.u32All, USE_VTX_POINT_SIZE_bit);
+ SETbit(r700->PA_CL_VS_OUT_CNTL.u32All, VS_OUT_MISC_VEC_ENA_bit);
+ } else if (r700->PA_CL_VS_OUT_CNTL.u32All != 0) {
+ R600_STATECHANGE(context, cl);
+ CLEARbit(r700->PA_CL_VS_OUT_CNTL.u32All, USE_VTX_POINT_SIZE_bit);
+ CLEARbit(r700->PA_CL_VS_OUT_CNTL.u32All, VS_OUT_MISC_VEC_ENA_bit);
+ }
+
SETfield(r700->SPI_VS_OUT_CONFIG.u32All,
vp->r700Shader.nParamExports ? (vp->r700Shader.nParamExports - 1) : 0,
VS_EXPORT_COUNT_shift, VS_EXPORT_COUNT_mask);
diff --git a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
index cf12664bac..78f73bf99c 100644
--- a/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
+++ b/src/mesa/drivers/dri/radeon/radeon_bo_legacy.c
@@ -618,8 +618,7 @@ static int bo_vram_validate(struct radeon_bo_int *bo,
assert(bo_legacy->tobj->base.memBlock);
- if (bo_legacy->tobj)
- driUpdateTextureLRU(&bo_legacy->tobj->base);
+ driUpdateTextureLRU(&bo_legacy->tobj->base);
if (bo_legacy->dirty || bo_legacy->tobj->base.dirty_images[0]) {
if (IS_R600_CLASS(boml->screen)) {
diff --git a/src/mesa/drivers/dri/radeon/radeon_queryobj.c b/src/mesa/drivers/dri/radeon/radeon_queryobj.c
index 04ce12493e..ab6d02e56b 100644
--- a/src/mesa/drivers/dri/radeon/radeon_queryobj.c
+++ b/src/mesa/drivers/dri/radeon/radeon_queryobj.c
@@ -31,6 +31,8 @@
#include "main/imports.h"
#include "main/simple_list.h"
+#include <inttypes.h>
+
static void radeonQueryGetResult(GLcontext *ctx, struct gl_query_object *q)
{
radeonContextPtr radeon = RADEON_CONTEXT(ctx);
@@ -65,7 +67,7 @@ static void radeonQueryGetResult(GLcontext *ctx, struct gl_query_object *q)
}
radeon_print(RADEON_STATE, RADEON_TRACE,
- "%d start: %llx, end: %llx %lld\n", i, start, end, end - start);
+ "%d start: %" PRIu64 ", end: %" PRIu64 " %" PRIu64 "\n", i, start, end, end - start);
}
} else {
for (i = 0; i < query->curr_offset/sizeof(uint32_t); ++i) {
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.c b/src/mesa/drivers/dri/radeon/radeon_screen.c
index fca0f8173b..4f59511a52 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.c
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.c
@@ -1137,6 +1137,7 @@ radeonCreateScreen( __DRIscreen *sPriv )
/* pipe overrides */
switch (dri_priv->deviceID) {
case PCI_CHIP_R300_AD: /* 9500 with 1 quadpipe verified by: Reid Linnemann <lreid@cs.okstate.edu> */
+ case PCI_CHIP_R350_AH: /* 9800 SE only have 1 quadpipe */
case PCI_CHIP_RV410_5E4C: /* RV410 SE only have 1 quadpipe */
case PCI_CHIP_RV410_5E4F: /* RV410 SE only have 1 quadpipe */
screen->num_gb_pipes = 1;
@@ -1235,6 +1236,8 @@ radeonCreateScreen( __DRIscreen *sPriv )
screen->extensions[i++] = &r600texOffsetExtension.base;
#endif
+ screen->extensions[i++] = &dri2ConfigQueryExtension.base;
+
screen->extensions[i++] = NULL;
sPriv->extensions = screen->extensions;
@@ -1344,6 +1347,7 @@ radeonCreateScreen2(__DRIscreen *sPriv)
/* pipe overrides */
switch (device_id) {
case PCI_CHIP_R300_AD: /* 9500 with 1 quadpipe verified by: Reid Linnemann <lreid@cs.okstate.edu> */
+ case PCI_CHIP_R350_AH: /* 9800 SE only have 1 quadpipe */
case PCI_CHIP_RV410_5E4C: /* RV410 SE only have 1 quadpipe */
case PCI_CHIP_RV410_5E4F: /* RV410 SE only have 1 quadpipe */
screen->num_gb_pipes = 1;
diff --git a/src/mesa/drivers/dri/radeon/radeon_screen.h b/src/mesa/drivers/dri/radeon/radeon_screen.h
index 5e6d432e11..0d7e335fa3 100644
--- a/src/mesa/drivers/dri/radeon/radeon_screen.h
+++ b/src/mesa/drivers/dri/radeon/radeon_screen.h
@@ -105,7 +105,7 @@ typedef struct radeon_screen {
/* Configuration cache with default values for all contexts */
driOptionCache optionCache;
- const __DRIextension *extensions[16];
+ const __DRIextension *extensions[17];
int num_gb_pipes;
int num_z_pipes;
diff --git a/src/mesa/glapi/gen/ARB_seamless_cube_map.xml b/src/mesa/glapi/gen/ARB_seamless_cube_map.xml
index 3cdc84d2b9..8dc827c5a8 100644
--- a/src/mesa/glapi/gen/ARB_seamless_cube_map.xml
+++ b/src/mesa/glapi/gen/ARB_seamless_cube_map.xml
@@ -3,7 +3,7 @@
<OpenGLAPI>
-<category name="GL_ARB_seamless_cubemap" number="65">
+<category name="GL_ARB_seamless_cube_map" number="65">
<enum name="TEXTURE_CUBE_MAP_SEAMLESS" count="1" value="0x88F4">
<size name="Get" mode="get"/>
</enum>
diff --git a/src/mesa/glapi/glapi_getproc.c b/src/mesa/glapi/glapi_getproc.c
index c73e8dd3b0..ec96ab36f0 100644
--- a/src/mesa/glapi/glapi_getproc.c
+++ b/src/mesa/glapi/glapi_getproc.c
@@ -265,7 +265,8 @@ str_dup(const char *str)
copy = (char*) malloc(strlen(str) + 1);
if (!copy)
return NULL;
- strcpy(copy, str);
+ strncpy(copy, str, strlen(str));
+ copy[strlen(str)] = '\0';
return copy;
}
diff --git a/src/mesa/glapi/glapi_nop.c b/src/mesa/glapi/glapi_nop.c
index df9c587284..4257b1fbce 100644
--- a/src/mesa/glapi/glapi_nop.c
+++ b/src/mesa/glapi/glapi_nop.c
@@ -48,6 +48,26 @@
#include "glapi/glapi.h"
+
+/*
+ * These stubs are kept so that the old DRI drivers still load.
+ */
+PUBLIC void
+_glapi_noop_enable_warnings(GLboolean enable);
+
+PUBLIC void
+_glapi_set_warning_func(_glapi_proc func);
+
+void
+_glapi_noop_enable_warnings(GLboolean enable)
+{
+}
+
+void
+_glapi_set_warning_func(_glapi_proc func)
+{
+}
+
#ifdef DEBUG
/**
diff --git a/src/mesa/main/debug.c b/src/mesa/main/debug.c
index 9bcfc1008a..526145aecc 100644
--- a/src/mesa/main/debug.c
+++ b/src/mesa/main/debug.c
@@ -315,7 +315,7 @@ write_texture_image(struct gl_texture_object *texObj,
buffer, texObj, img);
/* make filename */
- sprintf(s, "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face);
+ _mesa_snprintf(s, sizeof(s), "/tmp/tex%u.l%u.f%u.ppm", texObj->Name, level, face);
printf(" Writing image level %u to %s\n", level, s);
write_ppm(s, buffer, img->Width, img->Height, 4, 0, 1, 2, GL_FALSE);
@@ -357,7 +357,7 @@ write_renderbuffer_image(const struct gl_renderbuffer *rb)
format, type, &ctx->DefaultPacking, buffer);
/* make filename */
- sprintf(s, "/tmp/renderbuffer%u.ppm", rb->Name);
+ _mesa_snprintf(s, sizeof(s), "/tmp/renderbuffer%u.ppm", rb->Name);
printf(" Writing renderbuffer image to %s\n", s);
write_ppm(s, buffer, rb->Width, rb->Height, 4, 0, 1, 2, GL_TRUE);
diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c
index 168c424ea1..3f093cb697 100644
--- a/src/mesa/main/dlist.c
+++ b/src/mesa/main/dlist.c
@@ -7725,7 +7725,7 @@ execute_list(GLcontext *ctx, GLuint list)
default:
{
char msg[1000];
- sprintf(msg, "Error in execute_list: opcode=%d",
+ _mesa_snprintf(msg, sizeof(msg), "Error in execute_list: opcode=%d",
(int) opcode);
_mesa_problem(ctx, msg);
}
diff --git a/src/mesa/main/enums.c b/src/mesa/main/enums.c
index 162a7b9526..13705b9f67 100644
--- a/src/mesa/main/enums.c
+++ b/src/mesa/main/enums.c
@@ -5581,7 +5581,7 @@ const char *_mesa_lookup_enum_by_nr( int nr )
}
else {
/* this is not re-entrant safe, no big deal here */
- sprintf(token_tmp, "0x%x", nr);
+ _mesa_snprintf(token_tmp, sizeof(token_tmp), "0x%x", nr);
return token_tmp;
}
}
diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index d0c9c0028b..b9796e4a42 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -637,6 +637,35 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
0, 0, 0, 0, 0,
1, 1, 2
},
+
+ /* Signed 8 bits / channel */
+ {
+ MESA_FORMAT_SIGNED_R8, /* Name */
+ "MESA_FORMAT_SIGNED_R8", /* StrName */
+ GL_RGBA, /* BaseFormat */
+ GL_SIGNED_NORMALIZED, /* DataType */
+ 8, 0, 0, 0, /* Red/Green/Blue/AlphaBits */
+ 0, 0, 0, 0, 0, /* Lum/Int/Index/Depth/StencilBits */
+ 1, 1, 1 /* BlockWidth/Height,Bytes */
+ },
+ {
+ MESA_FORMAT_SIGNED_RG88,
+ "MESA_FORMAT_SIGNED_RG88",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 8, 8, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_SIGNED_RGBX8888,
+ "MESA_FORMAT_SIGNED_RGBX8888",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 8, 8, 8, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4 /* 4 bpp, but no alpha */
+ },
{
MESA_FORMAT_SIGNED_RGBA8888,
"MESA_FORMAT_SIGNED_RGBA8888",
@@ -655,6 +684,35 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
0, 0, 0, 0, 0,
1, 1, 4
},
+
+ /* Signed 16 bits / channel */
+ {
+ MESA_FORMAT_SIGNED_R_16,
+ "MESA_FORMAT_SIGNED_R_16",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 16, 0, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 2
+ },
+ {
+ MESA_FORMAT_SIGNED_RG_16,
+ "MESA_FORMAT_SIGNED_RG_16",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 16, 16, 0, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 4
+ },
+ {
+ MESA_FORMAT_SIGNED_RGB_16,
+ "MESA_FORMAT_SIGNED_RGB_16",
+ GL_RGBA,
+ GL_SIGNED_NORMALIZED,
+ 16, 16, 16, 0,
+ 0, 0, 0, 0, 0,
+ 1, 1, 6
+ },
{
MESA_FORMAT_SIGNED_RGBA_16,
"MESA_FORMAT_SIGNED_RGBA_16",
diff --git a/src/mesa/main/formats.h b/src/mesa/main/formats.h
index 0eeeb8b2ba..97e1fc5df4 100644
--- a/src/mesa/main/formats.h
+++ b/src/mesa/main/formats.h
@@ -130,13 +130,21 @@ typedef enum
MESA_FORMAT_INTENSITY_FLOAT16,
/*@}*/
+ /* msb <------ TEXEL BITS -----------> lsb */
+ /* ---- ---- ---- ---- ---- ---- ---- ---- */
/**
* \name Signed fixed point texture formats.
*/
/*@{*/
- MESA_FORMAT_DUDV8,
- MESA_FORMAT_SIGNED_RGBA8888,
- MESA_FORMAT_SIGNED_RGBA8888_REV,
+ MESA_FORMAT_DUDV8, /* DUDU DUDU DVDV DVDV */
+ MESA_FORMAT_SIGNED_R8, /* RRRR RRRR */
+ MESA_FORMAT_SIGNED_RG88, /* RRRR RRRR GGGG GGGG */
+ MESA_FORMAT_SIGNED_RGBX8888, /* RRRR RRRR GGGG GGGG BBBB BBBB xxxx xxxx */
+ MESA_FORMAT_SIGNED_RGBA8888, /* RRRR RRRR GGGG GGGG BBBB BBBB AAAA AAAA */
+ MESA_FORMAT_SIGNED_RGBA8888_REV,/*AAAA AAAA BBBB BBBB GGGG GGGG RRRR RRRR */
+ MESA_FORMAT_SIGNED_R_16,
+ MESA_FORMAT_SIGNED_RG_16,
+ MESA_FORMAT_SIGNED_RGB_16,
MESA_FORMAT_SIGNED_RGBA_16,
/*@}*/
diff --git a/src/mesa/main/framebuffer.c b/src/mesa/main/framebuffer.c
index 5a654e5c2a..31689c8fe8 100644
--- a/src/mesa/main/framebuffer.c
+++ b/src/mesa/main/framebuffer.c
@@ -35,6 +35,7 @@
#include "buffers.h"
#include "context.h"
#include "depthstencil.h"
+#include "enums.h"
#include "formats.h"
#include "macros.h"
#include "mtypes.h"
@@ -1019,3 +1020,43 @@ _mesa_get_color_read_type(GLcontext *ctx)
return GL_UNSIGNED_BYTE;
}
}
+
+
+/**
+ * Print framebuffer info to stderr, for debugging.
+ */
+void
+_mesa_print_framebuffer(const struct gl_framebuffer *fb)
+{
+ GLuint i;
+
+ fprintf(stderr, "Mesa Framebuffer %u at %p\n", fb->Name, (void *) fb);
+ fprintf(stderr, " Size: %u x %u Status: %s\n", fb->Width, fb->Height,
+ _mesa_lookup_enum_by_nr(fb->_Status));
+ fprintf(stderr, " Attachments:\n");
+
+ for (i = 0; i < BUFFER_COUNT; i++) {
+ const struct gl_renderbuffer_attachment *att = &fb->Attachment[i];
+ if (att->Type == GL_TEXTURE) {
+ const struct gl_texture_image *texImage;
+ fprintf(stderr,
+ " %2d: Texture %u, level %u, face %u, slice %u, complete %d\n",
+ i, att->Texture->Name, att->TextureLevel, att->CubeMapFace,
+ att->Zoffset, att->Complete);
+ texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
+ fprintf(stderr, " Size: %u x %u x %u Format %s\n",
+ texImage->Width, texImage->Height, texImage->Depth,
+ _mesa_get_format_name(texImage->TexFormat));
+ }
+ else if (att->Type == GL_RENDERBUFFER) {
+ fprintf(stderr, " %2d: Renderbuffer %u, complete %d\n",
+ i, att->Renderbuffer->Name, att->Complete);
+ fprintf(stderr, " Size: %u x %u Format %s\n",
+ att->Renderbuffer->Width, att->Renderbuffer->Height,
+ _mesa_get_format_name(att->Renderbuffer->Format));
+ }
+ else {
+ fprintf(stderr, " %2d: none\n", i);
+ }
+ }
+}
diff --git a/src/mesa/main/framebuffer.h b/src/mesa/main/framebuffer.h
index 960513812c..1b6e3b1f0c 100644
--- a/src/mesa/main/framebuffer.h
+++ b/src/mesa/main/framebuffer.h
@@ -91,4 +91,7 @@ _mesa_get_color_read_type(GLcontext *ctx);
extern GLenum
_mesa_get_color_read_format(GLcontext *ctx);
+extern void
+_mesa_print_framebuffer(const struct gl_framebuffer *fb);
+
#endif /* FRAMEBUFFER_H */
diff --git a/src/mesa/main/image.c b/src/mesa/main/image.c
index dc8d97728b..93b01423dc 100644
--- a/src/mesa/main/image.c
+++ b/src/mesa/main/image.c
@@ -734,6 +734,32 @@ _mesa_is_depthstencil_format(GLenum format)
}
}
+
+/**
+ * Test if the given image format is a depth or stencil format.
+ */
+GLboolean
+_mesa_is_depth_or_stencil_format(GLenum format)
+{
+ switch (format) {
+ case GL_DEPTH_COMPONENT:
+ case GL_DEPTH_COMPONENT16:
+ case GL_DEPTH_COMPONENT24:
+ case GL_DEPTH_COMPONENT32:
+ case GL_STENCIL_INDEX:
+ case GL_STENCIL_INDEX1_EXT:
+ case GL_STENCIL_INDEX4_EXT:
+ case GL_STENCIL_INDEX8_EXT:
+ case GL_STENCIL_INDEX16_EXT:
+ case GL_DEPTH_STENCIL_EXT:
+ case GL_DEPTH24_STENCIL8_EXT:
+ return GL_TRUE;
+ default:
+ return GL_FALSE;
+ }
+}
+
+
/**
* Test if the given image format is a dudv format.
*/
@@ -751,6 +777,40 @@ _mesa_is_dudv_format(GLenum format)
/**
+ * Test if an image format is a supported compressed format.
+ * \param format the internal format token provided by the user.
+ * \return GL_TRUE if compressed, GL_FALSE if uncompressed
+ */
+GLboolean
+_mesa_is_compressed_format(GLcontext *ctx, GLenum format)
+{
+ switch (format) {
+ case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
+ case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
+ case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
+ case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
+ return ctx->Extensions.EXT_texture_compression_s3tc;
+ case GL_RGB_S3TC:
+ case GL_RGB4_S3TC:
+ case GL_RGBA_S3TC:
+ case GL_RGBA4_S3TC:
+ return ctx->Extensions.S3_s3tc;
+ case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT:
+ case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT:
+ return ctx->Extensions.EXT_texture_sRGB
+ && ctx->Extensions.EXT_texture_compression_s3tc;
+ case GL_COMPRESSED_RGB_FXT1_3DFX:
+ case GL_COMPRESSED_RGBA_FXT1_3DFX:
+ return ctx->Extensions.TDFX_texture_compression_FXT1;
+ default:
+ return GL_FALSE;
+ }
+}
+
+
+/**
* Return the address of a specific pixel in an image (1D, 2D or 3D).
*
* Pixel unpacking/packing parameters are observed according to \p packing.
diff --git a/src/mesa/main/image.h b/src/mesa/main/image.h
index 9b34be0dfa..48582eb3bb 100644
--- a/src/mesa/main/image.h
+++ b/src/mesa/main/image.h
@@ -73,8 +73,13 @@ extern GLboolean
_mesa_is_depthstencil_format(GLenum format);
extern GLboolean
+_mesa_is_depth_or_stencil_format(GLenum format);
+
+extern GLboolean
_mesa_is_dudv_format(GLenum format);
+extern GLboolean
+_mesa_is_compressed_format(GLcontext *ctx, GLenum format);
extern GLvoid *
_mesa_image_address( GLuint dimensions,
diff --git a/src/mesa/main/mipmap.c b/src/mesa/main/mipmap.c
index 51f7edfab1..c0c29f7889 100644
--- a/src/mesa/main/mipmap.c
+++ b/src/mesa/main/mipmap.c
@@ -1581,7 +1581,7 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
struct gl_texture_image *dstImage;
GLint srcWidth, srcHeight, srcDepth;
GLint dstWidth, dstHeight, dstDepth;
- GLint border, bytesPerTexel;
+ GLint border;
GLboolean nextLevel;
/* get src image parameters */
@@ -1623,33 +1623,24 @@ _mesa_generate_mipmap(GLcontext *ctx, GLenum target,
dstImage->FetchTexelc = srcImage->FetchTexelc;
dstImage->FetchTexelf = srcImage->FetchTexelf;
- /* Alloc new teximage data buffer.
- * Setup src and dest data pointers.
- */
- if (_mesa_is_format_compressed(dstImage->TexFormat)) {
- GLuint dstCompressedSize =
- _mesa_format_image_size(dstImage->TexFormat, dstImage->Width,
- dstImage->Height, dstImage->Depth);
- ASSERT(dstCompressedSize > 0);
-
- dstImage->Data = _mesa_alloc_texmemory(dstCompressedSize);
+ /* Alloc new teximage data buffer */
+ {
+ GLuint size = _mesa_format_image_size(dstImage->TexFormat,
+ dstWidth, dstHeight, dstDepth);
+ dstImage->Data = _mesa_alloc_texmemory(size);
if (!dstImage->Data) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
return;
}
+ }
+
+ /* Setup src and dest data pointers */
+ if (_mesa_is_format_compressed(dstImage->TexFormat)) {
/* srcData and dstData are already set */
ASSERT(srcData);
ASSERT(dstData);
}
else {
- bytesPerTexel = _mesa_get_format_bytes(dstImage->TexFormat);
- ASSERT(dstWidth * dstHeight * dstDepth * bytesPerTexel > 0);
- dstImage->Data = _mesa_alloc_texmemory(dstWidth * dstHeight
- * dstDepth * bytesPerTexel);
- if (!dstImage->Data) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "generating mipmaps");
- return;
- }
srcData = (const GLubyte *) srcImage->Data;
dstData = (GLubyte *) dstImage->Data;
}
diff --git a/src/mesa/main/shaders.c b/src/mesa/main/shaders.c
index f877320d69..863f878fea 100644
--- a/src/mesa/main/shaders.c
+++ b/src/mesa/main/shaders.c
@@ -485,7 +485,7 @@ _mesa_ShaderSourceARB(GLhandleARB shaderObj, GLsizei count,
checksum = _mesa_str_checksum(source);
- sprintf(filename, "newshader_%d", checksum);
+ _mesa_snprintf(filename, sizeof(filename), "newshader_%d", checksum);
newSource = _mesa_read_shader(filename);
if (newSource) {
diff --git a/src/mesa/main/texfetch.c b/src/mesa/main/texfetch.c
index b37039429f..48a22c1945 100644
--- a/src/mesa/main/texfetch.c
+++ b/src/mesa/main/texfetch.c
@@ -115,7 +115,7 @@ static void store_null_texel(struct gl_texture_image *texImage,
* XXX this is somewhat temporary.
*/
static struct {
- GLuint Name;
+ gl_format Name;
FetchTexelFuncF Fetch1D;
FetchTexelFuncF Fetch2D;
FetchTexelFuncF Fetch3D;
@@ -124,222 +124,13 @@ static struct {
texfetch_funcs[MESA_FORMAT_COUNT] =
{
{
- MESA_FORMAT_SRGB8,
- fetch_texel_1d_srgb8,
- fetch_texel_2d_srgb8,
- fetch_texel_3d_srgb8,
- store_texel_srgb8
- },
- {
- MESA_FORMAT_SRGBA8,
- fetch_texel_1d_srgba8,
- fetch_texel_2d_srgba8,
- fetch_texel_3d_srgba8,
- store_texel_srgba8
- },
- {
- MESA_FORMAT_SARGB8,
- fetch_texel_1d_sargb8,
- fetch_texel_2d_sargb8,
- fetch_texel_3d_sargb8,
- store_texel_sargb8
- },
- {
- MESA_FORMAT_SL8,
- fetch_texel_1d_sl8,
- fetch_texel_2d_sl8,
- fetch_texel_3d_sl8,
- store_texel_sl8
- },
- {
- MESA_FORMAT_SLA8,
- fetch_texel_1d_sla8,
- fetch_texel_2d_sla8,
- fetch_texel_3d_sla8,
- store_texel_sla8
- },
- {
- MESA_FORMAT_RGB_FXT1,
- NULL,
- _mesa_fetch_texel_2d_f_rgb_fxt1,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_RGBA_FXT1,
- NULL,
- _mesa_fetch_texel_2d_f_rgba_fxt1,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_RGB_DXT1,
- NULL,
- _mesa_fetch_texel_2d_f_rgb_dxt1,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_RGBA_DXT1,
- NULL,
- _mesa_fetch_texel_2d_f_rgba_dxt1,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_RGBA_DXT3,
- NULL,
- _mesa_fetch_texel_2d_f_rgba_dxt3,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_RGBA_DXT5,
- NULL,
- _mesa_fetch_texel_2d_f_rgba_dxt5,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_SRGB_DXT1,
- NULL,
- _mesa_fetch_texel_2d_f_srgb_dxt1,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_SRGBA_DXT1,
- NULL,
- _mesa_fetch_texel_2d_f_srgba_dxt1,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_SRGBA_DXT3,
- NULL,
- _mesa_fetch_texel_2d_f_srgba_dxt3,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_SRGBA_DXT5,
- NULL,
- _mesa_fetch_texel_2d_f_srgba_dxt5,
- NULL,
- NULL
- },
- {
- MESA_FORMAT_RGBA_FLOAT32,
- fetch_texel_1d_f_rgba_f32,
- fetch_texel_2d_f_rgba_f32,
- fetch_texel_3d_f_rgba_f32,
- store_texel_rgba_f32
- },
- {
- MESA_FORMAT_RGBA_FLOAT16,
- fetch_texel_1d_f_rgba_f16,
- fetch_texel_2d_f_rgba_f16,
- fetch_texel_3d_f_rgba_f16,
- store_texel_rgba_f16
- },
- {
- MESA_FORMAT_RGB_FLOAT32,
- fetch_texel_1d_f_rgb_f32,
- fetch_texel_2d_f_rgb_f32,
- fetch_texel_3d_f_rgb_f32,
- store_texel_rgb_f32
- },
- {
- MESA_FORMAT_RGB_FLOAT16,
- fetch_texel_1d_f_rgb_f16,
- fetch_texel_2d_f_rgb_f16,
- fetch_texel_3d_f_rgb_f16,
- store_texel_rgb_f16
- },
- {
- MESA_FORMAT_ALPHA_FLOAT32,
- fetch_texel_1d_f_alpha_f32,
- fetch_texel_2d_f_alpha_f32,
- fetch_texel_3d_f_alpha_f32,
- store_texel_alpha_f32
- },
- {
- MESA_FORMAT_ALPHA_FLOAT16,
- fetch_texel_1d_f_alpha_f16,
- fetch_texel_2d_f_alpha_f16,
- fetch_texel_3d_f_alpha_f16,
- store_texel_alpha_f16
- },
- {
- MESA_FORMAT_LUMINANCE_FLOAT32,
- fetch_texel_1d_f_luminance_f32,
- fetch_texel_2d_f_luminance_f32,
- fetch_texel_3d_f_luminance_f32,
- store_texel_luminance_f32
- },
- {
- MESA_FORMAT_LUMINANCE_FLOAT16,
- fetch_texel_1d_f_luminance_f16,
- fetch_texel_2d_f_luminance_f16,
- fetch_texel_3d_f_luminance_f16,
- store_texel_luminance_f16
- },
- {
- MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
- fetch_texel_1d_f_luminance_alpha_f32,
- fetch_texel_2d_f_luminance_alpha_f32,
- fetch_texel_3d_f_luminance_alpha_f32,
- store_texel_luminance_alpha_f32
- },
- {
- MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
- fetch_texel_1d_f_luminance_alpha_f16,
- fetch_texel_2d_f_luminance_alpha_f16,
- fetch_texel_3d_f_luminance_alpha_f16,
- store_texel_luminance_alpha_f16
- },
- {
- MESA_FORMAT_INTENSITY_FLOAT32,
- fetch_texel_1d_f_intensity_f32,
- fetch_texel_2d_f_intensity_f32,
- fetch_texel_3d_f_intensity_f32,
- store_texel_intensity_f32
- },
- {
- MESA_FORMAT_INTENSITY_FLOAT16,
- fetch_texel_1d_f_intensity_f16,
- fetch_texel_2d_f_intensity_f16,
- fetch_texel_3d_f_intensity_f16,
- store_texel_intensity_f16
- },
- {
- MESA_FORMAT_DUDV8,
- fetch_texel_1d_dudv8,
- fetch_texel_2d_dudv8,
- fetch_texel_3d_dudv8,
- NULL
- },
- {
- MESA_FORMAT_SIGNED_RGBA8888,
- fetch_texel_1d_signed_rgba8888,
- fetch_texel_2d_signed_rgba8888,
- fetch_texel_3d_signed_rgba8888,
- store_texel_signed_rgba8888
- },
- {
- MESA_FORMAT_SIGNED_RGBA8888_REV,
- fetch_texel_1d_signed_rgba8888_rev,
- fetch_texel_2d_signed_rgba8888_rev,
- fetch_texel_3d_signed_rgba8888_rev,
- store_texel_signed_rgba8888_rev
- },
- {
- MESA_FORMAT_SIGNED_RGBA_16,
- NULL, /* XXX to do */
- NULL,
- NULL,
- NULL
+ MESA_FORMAT_NONE,
+ fetch_null_texelf,
+ fetch_null_texelf,
+ fetch_null_texelf,
+ store_null_texel
},
+
{
MESA_FORMAT_RGBA8888,
fetch_texel_1d_f_rgba8888,
@@ -563,56 +354,313 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
fetch_texel_2d_f_z32,
fetch_texel_3d_f_z32,
store_texel_z32
- }
+ },
+ {
+ MESA_FORMAT_S8,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_SRGB8,
+ fetch_texel_1d_srgb8,
+ fetch_texel_2d_srgb8,
+ fetch_texel_3d_srgb8,
+ store_texel_srgb8
+ },
+ {
+ MESA_FORMAT_SRGBA8,
+ fetch_texel_1d_srgba8,
+ fetch_texel_2d_srgba8,
+ fetch_texel_3d_srgba8,
+ store_texel_srgba8
+ },
+ {
+ MESA_FORMAT_SARGB8,
+ fetch_texel_1d_sargb8,
+ fetch_texel_2d_sargb8,
+ fetch_texel_3d_sargb8,
+ store_texel_sargb8
+ },
+ {
+ MESA_FORMAT_SL8,
+ fetch_texel_1d_sl8,
+ fetch_texel_2d_sl8,
+ fetch_texel_3d_sl8,
+ store_texel_sl8
+ },
+ {
+ MESA_FORMAT_SLA8,
+ fetch_texel_1d_sla8,
+ fetch_texel_2d_sla8,
+ fetch_texel_3d_sla8,
+ store_texel_sla8
+ },
+ {
+ MESA_FORMAT_SRGB_DXT1,
+ NULL,
+ _mesa_fetch_texel_2d_f_srgb_dxt1,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_SRGBA_DXT1,
+ NULL,
+ _mesa_fetch_texel_2d_f_srgba_dxt1,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_SRGBA_DXT3,
+ NULL,
+ _mesa_fetch_texel_2d_f_srgba_dxt3,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_SRGBA_DXT5,
+ NULL,
+ _mesa_fetch_texel_2d_f_srgba_dxt5,
+ NULL,
+ NULL
+ },
+
+ {
+ MESA_FORMAT_RGB_FXT1,
+ NULL,
+ _mesa_fetch_texel_2d_f_rgb_fxt1,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_RGBA_FXT1,
+ NULL,
+ _mesa_fetch_texel_2d_f_rgba_fxt1,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_RGB_DXT1,
+ NULL,
+ _mesa_fetch_texel_2d_f_rgb_dxt1,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_RGBA_DXT1,
+ NULL,
+ _mesa_fetch_texel_2d_f_rgba_dxt1,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_RGBA_DXT3,
+ NULL,
+ _mesa_fetch_texel_2d_f_rgba_dxt3,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_RGBA_DXT5,
+ NULL,
+ _mesa_fetch_texel_2d_f_rgba_dxt5,
+ NULL,
+ NULL
+ },
+ {
+ MESA_FORMAT_RGBA_FLOAT32,
+ fetch_texel_1d_f_rgba_f32,
+ fetch_texel_2d_f_rgba_f32,
+ fetch_texel_3d_f_rgba_f32,
+ store_texel_rgba_f32
+ },
+ {
+ MESA_FORMAT_RGBA_FLOAT16,
+ fetch_texel_1d_f_rgba_f16,
+ fetch_texel_2d_f_rgba_f16,
+ fetch_texel_3d_f_rgba_f16,
+ store_texel_rgba_f16
+ },
+ {
+ MESA_FORMAT_RGB_FLOAT32,
+ fetch_texel_1d_f_rgb_f32,
+ fetch_texel_2d_f_rgb_f32,
+ fetch_texel_3d_f_rgb_f32,
+ store_texel_rgb_f32
+ },
+ {
+ MESA_FORMAT_RGB_FLOAT16,
+ fetch_texel_1d_f_rgb_f16,
+ fetch_texel_2d_f_rgb_f16,
+ fetch_texel_3d_f_rgb_f16,
+ store_texel_rgb_f16
+ },
+ {
+ MESA_FORMAT_ALPHA_FLOAT32,
+ fetch_texel_1d_f_alpha_f32,
+ fetch_texel_2d_f_alpha_f32,
+ fetch_texel_3d_f_alpha_f32,
+ store_texel_alpha_f32
+ },
+ {
+ MESA_FORMAT_ALPHA_FLOAT16,
+ fetch_texel_1d_f_alpha_f16,
+ fetch_texel_2d_f_alpha_f16,
+ fetch_texel_3d_f_alpha_f16,
+ store_texel_alpha_f16
+ },
+ {
+ MESA_FORMAT_LUMINANCE_FLOAT32,
+ fetch_texel_1d_f_luminance_f32,
+ fetch_texel_2d_f_luminance_f32,
+ fetch_texel_3d_f_luminance_f32,
+ store_texel_luminance_f32
+ },
+ {
+ MESA_FORMAT_LUMINANCE_FLOAT16,
+ fetch_texel_1d_f_luminance_f16,
+ fetch_texel_2d_f_luminance_f16,
+ fetch_texel_3d_f_luminance_f16,
+ store_texel_luminance_f16
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_FLOAT32,
+ fetch_texel_1d_f_luminance_alpha_f32,
+ fetch_texel_2d_f_luminance_alpha_f32,
+ fetch_texel_3d_f_luminance_alpha_f32,
+ store_texel_luminance_alpha_f32
+ },
+ {
+ MESA_FORMAT_LUMINANCE_ALPHA_FLOAT16,
+ fetch_texel_1d_f_luminance_alpha_f16,
+ fetch_texel_2d_f_luminance_alpha_f16,
+ fetch_texel_3d_f_luminance_alpha_f16,
+ store_texel_luminance_alpha_f16
+ },
+ {
+ MESA_FORMAT_INTENSITY_FLOAT32,
+ fetch_texel_1d_f_intensity_f32,
+ fetch_texel_2d_f_intensity_f32,
+ fetch_texel_3d_f_intensity_f32,
+ store_texel_intensity_f32
+ },
+ {
+ MESA_FORMAT_INTENSITY_FLOAT16,
+ fetch_texel_1d_f_intensity_f16,
+ fetch_texel_2d_f_intensity_f16,
+ fetch_texel_3d_f_intensity_f16,
+ store_texel_intensity_f16
+ },
+ {
+ MESA_FORMAT_DUDV8,
+ fetch_texel_1d_dudv8,
+ fetch_texel_2d_dudv8,
+ fetch_texel_3d_dudv8,
+ NULL
+ },
+ {
+ MESA_FORMAT_SIGNED_R8,
+ fetch_texel_1d_signed_r8,
+ fetch_texel_2d_signed_r8,
+ fetch_texel_3d_signed_r8,
+ store_texel_signed_r8
+ },
+ {
+ MESA_FORMAT_SIGNED_RG88,
+ fetch_texel_1d_signed_rg88,
+ fetch_texel_2d_signed_rg88,
+ fetch_texel_3d_signed_rg88,
+ store_texel_signed_rg88
+ },
+ {
+ MESA_FORMAT_SIGNED_RGBX8888,
+ fetch_texel_1d_signed_rgbx8888,
+ fetch_texel_2d_signed_rgbx8888,
+ fetch_texel_3d_signed_rgbx8888,
+ store_texel_signed_rgbx8888
+ },
+ {
+ MESA_FORMAT_SIGNED_RGBA8888,
+ fetch_texel_1d_signed_rgba8888,
+ fetch_texel_2d_signed_rgba8888,
+ fetch_texel_3d_signed_rgba8888,
+ store_texel_signed_rgba8888
+ },
+ {
+ MESA_FORMAT_SIGNED_RGBA8888_REV,
+ fetch_texel_1d_signed_rgba8888_rev,
+ fetch_texel_2d_signed_rgba8888_rev,
+ fetch_texel_3d_signed_rgba8888_rev,
+ store_texel_signed_rgba8888_rev
+ },
+ {
+ MESA_FORMAT_SIGNED_R_16,
+ fetch_texel_1d_signed_r_16,
+ fetch_texel_2d_signed_r_16,
+ fetch_texel_3d_signed_r_16,
+ store_texel_signed_r_16
+ },
+ {
+ MESA_FORMAT_SIGNED_RG_16,
+ fetch_texel_1d_signed_rg_16,
+ fetch_texel_2d_signed_rg_16,
+ fetch_texel_3d_signed_rg_16,
+ store_texel_signed_rg_16
+ },
+ {
+ MESA_FORMAT_SIGNED_RGB_16,
+ fetch_texel_1d_signed_rgb_16,
+ fetch_texel_2d_signed_rgb_16,
+ fetch_texel_3d_signed_rgb_16,
+ store_texel_signed_rgb_16
+ },
+ {
+ MESA_FORMAT_SIGNED_RGBA_16,
+ fetch_texel_1d_signed_rgba_16,
+ fetch_texel_2d_signed_rgba_16,
+ fetch_texel_3d_signed_rgba_16,
+ store_texel_signed_rgba_16
+ },
};
static FetchTexelFuncF
_mesa_get_texel_fetch_func(gl_format format, GLuint dims)
{
- FetchTexelFuncF f = NULL;
- GLuint i;
- /* XXX replace loop with direct table lookup */
- for (i = 0; i < MESA_FORMAT_COUNT; i++) {
- if (texfetch_funcs[i].Name == format) {
- switch (dims) {
- case 1:
- f = texfetch_funcs[i].Fetch1D;
- break;
- case 2:
- f = texfetch_funcs[i].Fetch2D;
- break;
- case 3:
- f = texfetch_funcs[i].Fetch3D;
- break;
- }
- if (!f)
- f = fetch_null_texelf;
- return f;
- }
+#ifdef DEBUG
+ /* check that the table entries are sorted by format name */
+ gl_format fmt;
+ for (fmt = 0; fmt < MESA_FORMAT_COUNT; fmt++) {
+ assert(texfetch_funcs[fmt].Name == fmt);
+ }
+#endif
+
+ assert(Elements(texfetch_funcs) == MESA_FORMAT_COUNT);
+ assert(format < MESA_FORMAT_COUNT);
+
+ switch (dims) {
+ case 1:
+ return texfetch_funcs[format].Fetch1D;
+ case 2:
+ return texfetch_funcs[format].Fetch2D;
+ case 3:
+ return texfetch_funcs[format].Fetch3D;
+ default:
+ assert(0 && "bad dims in _mesa_get_texel_fetch_func");
+ return NULL;
}
- return NULL;
}
StoreTexelFunc
_mesa_get_texel_store_func(gl_format format)
{
- GLuint i;
- /* XXX replace loop with direct table lookup */
- for (i = 0; i < MESA_FORMAT_COUNT; i++) {
- if (texfetch_funcs[i].Name == format) {
- if (texfetch_funcs[i].StoreTexel)
- return texfetch_funcs[i].StoreTexel;
- else
- return store_null_texel;
- }
- }
- return NULL;
+ assert(format < MESA_FORMAT_COUNT);
+ return texfetch_funcs[format].StoreTexel;
}
-
/**
* Adaptor for fetching a GLchan texel from a float-valued texture.
*/
diff --git a/src/mesa/main/texfetch_tmp.h b/src/mesa/main/texfetch_tmp.h
index e6772c89f3..4df2b19181 100644
--- a/src/mesa/main/texfetch_tmp.h
+++ b/src/mesa/main/texfetch_tmp.h
@@ -1209,16 +1209,86 @@ static void FETCH(dudv8)(const struct gl_texture_image *texImage,
texel[ACOMP] = 0;
}
+
+/* MESA_FORMAT_SIGNED_R8 ***********************************************/
+
+static void FETCH(signed_r8)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLbyte s = *TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ texel[RCOMP] = BYTE_TO_FLOAT_TEX( s );
+ texel[GCOMP] = 0.0F;
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_signed_r8(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLbyte *rgba = (const GLbyte *) texel;
+ GLbyte *dst = TEXEL_ADDR(GLbyte, texImage, i, j, k, 1);
+ *dst = rgba[RCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RG88 ***********************************************/
+
+static void FETCH(signed_rg88)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLushort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
+ texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s & 0xff) );
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void store_texel_signed_rg88(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLbyte *rg = (const GLbyte *) texel;
+ GLushort *dst = TEXEL_ADDR(GLushort, texImage, i, j, k, 2);
+ *dst = PACK_COLOR_88(rg[RCOMP], rg[GCOMP]);
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RGBX8888 ***********************************************/
+
+static void FETCH(signed_rgbx8888)( const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel )
+{
+ const GLuint s = *TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
+ texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 24) );
+ texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 16) );
+ texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
+ texel[ACOMP] = 1.0f;
+}
+
+#if DIM == 3
+static void store_texel_signed_rgbx8888(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLbyte *rgba = (const GLbyte *) texel;
+ GLuint *dst = TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
+ *dst = PACK_COLOR_8888(rgba[RCOMP], rgba[GCOMP], rgba[BCOMP], 255);
+}
+#endif
+
+
/* MESA_FORMAT_SIGNED_RGBA8888 ***********************************************/
static void FETCH(signed_rgba8888)( const struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, GLfloat *texel )
{
const GLuint s = *TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
- texel[RCOMP] = BYTE_TO_FLOAT_TEX( (s >> 24) );
- texel[GCOMP] = BYTE_TO_FLOAT_TEX( (s >> 16) & 0xff );
- texel[BCOMP] = BYTE_TO_FLOAT_TEX( (s >> 8) & 0xff );
- texel[ACOMP] = BYTE_TO_FLOAT_TEX( (s ) & 0xff );
+ texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 24) );
+ texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 16) );
+ texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
+ texel[ACOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s ) );
}
#if DIM == 3
@@ -1235,10 +1305,10 @@ static void FETCH(signed_rgba8888_rev)( const struct gl_texture_image *texImage,
GLint i, GLint j, GLint k, GLfloat *texel )
{
const GLuint s = *TEXEL_ADDR(GLuint, texImage, i, j, k, 1);
- texel[RCOMP] = BYTE_TO_FLOAT_TEX( (s ) & 0xff );
- texel[GCOMP] = BYTE_TO_FLOAT_TEX( (s >> 8) & 0xff );
- texel[BCOMP] = BYTE_TO_FLOAT_TEX( (s >> 16) & 0xff );
- texel[ACOMP] = BYTE_TO_FLOAT_TEX( (s >> 24) );
+ texel[RCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s ) );
+ texel[GCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 8) );
+ texel[BCOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 16) );
+ texel[ACOMP] = BYTE_TO_FLOAT_TEX( (GLbyte) (s >> 24) );
}
#if DIM == 3
@@ -1253,6 +1323,113 @@ static void store_texel_signed_rgba8888_rev(struct gl_texture_image *texImage,
+/* MESA_FORMAT_SIGNED_R_16 ***********************************************/
+
+static void
+FETCH(signed_r_16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort s = *TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ texel[RCOMP] = SHORT_TO_FLOAT_TEX( s );
+ texel[GCOMP] = 0.0F;
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void
+store_texel_signed_r_16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 1);
+ *dst = rgba[0];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RG_16 ***********************************************/
+
+static void
+FETCH(signed_rg_16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 2);
+ texel[RCOMP] = SHORT_TO_FLOAT_TEX( s[0] );
+ texel[GCOMP] = SHORT_TO_FLOAT_TEX( s[1] );
+ texel[BCOMP] = 0.0F;
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void
+store_texel_signed_rg_16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 2);
+ dst[0] = rgba[RCOMP];
+ dst[1] = rgba[GCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/
+
+static void
+FETCH(signed_rgb_16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 3);
+ texel[RCOMP] = SHORT_TO_FLOAT_TEX( s[0] );
+ texel[GCOMP] = SHORT_TO_FLOAT_TEX( s[1] );
+ texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[3] );
+ texel[ACOMP] = 1.0F;
+}
+
+#if DIM == 3
+static void
+store_texel_signed_rgb_16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 3);
+ dst[0] = rgba[RCOMP];
+ dst[1] = rgba[GCOMP];
+ dst[2] = rgba[BCOMP];
+}
+#endif
+
+
+/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/
+
+static void
+FETCH(signed_rgba_16)(const struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, GLfloat *texel)
+{
+ const GLshort *s = TEXEL_ADDR(GLshort, texImage, i, j, k, 4);
+ texel[RCOMP] = SHORT_TO_FLOAT_TEX( s[0] );
+ texel[GCOMP] = SHORT_TO_FLOAT_TEX( s[1] );
+ texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[3] );
+ texel[ACOMP] = SHORT_TO_FLOAT_TEX( s[4] );
+}
+
+#if DIM == 3
+static void
+store_texel_signed_rgba_16(struct gl_texture_image *texImage,
+ GLint i, GLint j, GLint k, const void *texel)
+{
+ const GLshort *rgba = (const GLshort *) texel;
+ GLshort *dst = TEXEL_ADDR(GLshort, texImage, i, j, k, 4);
+ dst[0] = rgba[RCOMP];
+ dst[1] = rgba[GCOMP];
+ dst[2] = rgba[BCOMP];
+ dst[3] = rgba[ACOMP];
+}
+#endif
+
+
+
/* MESA_FORMAT_YCBCR *********************************************************/
/* Fetch texel from 1D, 2D or 3D ycbcr texture, return 4 GLfloats.
diff --git a/src/mesa/main/texformat.c b/src/mesa/main/texformat.c
index 096945a643..06e6fd92fc 100644
--- a/src/mesa/main/texformat.c
+++ b/src/mesa/main/texformat.c
@@ -294,6 +294,32 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
}
}
+ if (ctx->VersionMajor * 10 + ctx->VersionMinor >= 31) {
+ switch (internalFormat) {
+ case GL_RED_SNORM:
+ case GL_R8_SNORM:
+ return MESA_FORMAT_SIGNED_R8;
+ case GL_RG_SNORM:
+ case GL_RG8_SNORM:
+ return MESA_FORMAT_SIGNED_RG88;
+ case GL_RGB_SNORM:
+ case GL_RGB8_SNORM:
+ return MESA_FORMAT_SIGNED_RGBX8888;
+ case GL_RGBA_SNORM:
+ case GL_RGBA8_SNORM:
+ return MESA_FORMAT_SIGNED_RGBA8888;
+ case GL_R16_SNORM:
+ return MESA_FORMAT_SIGNED_R_16;
+ case GL_RG16_SNORM:
+ return MESA_FORMAT_SIGNED_RG_16;
+ case GL_RGB16_SNORM:
+ return MESA_FORMAT_SIGNED_RGB_16;
+ case GL_RGBA16_SNORM:
+ return MESA_FORMAT_SIGNED_RGBA_16;
+ default:
+ ; /* fall-through */
+ }
+ }
#if FEATURE_EXT_texture_sRGB
if (ctx->Extensions.EXT_texture_sRGB) {
diff --git a/src/mesa/main/teximage.c b/src/mesa/main/teximage.c
index 0c583ed14d..0b55097bd6 100644
--- a/src/mesa/main/teximage.c
+++ b/src/mesa/main/teximage.c
@@ -359,34 +359,6 @@ _mesa_base_tex_format( GLcontext *ctx, GLint internalFormat )
/**
- * Test if it is a supported compressed format.
- *
- * \param internalFormat the internal format token provided by the user.
- *
- * \ret GL_TRUE if \p internalFormat is a supported compressed format, or
- * GL_FALSE otherwise.
- *
- * Currently only GL_COMPRESSED_RGB_FXT1_3DFX and GL_COMPRESSED_RGBA_FXT1_3DFX
- * are supported.
- */
-static GLboolean
-is_compressed_format(GLcontext *ctx, GLenum internalFormat)
-{
- GLint supported[100]; /* 100 should be plenty */
- GLuint i, n;
-
- n = _mesa_get_compressed_formats(ctx, supported, GL_TRUE);
- ASSERT(n < 100);
- for (i = 0; i < n; i++) {
- if ((GLint) internalFormat == supported[i]) {
- return GL_TRUE;
- }
- }
- return GL_FALSE;
-}
-
-
-/**
* For cube map faces, return a face index in [0,5].
* For other targets return 0;
*/
@@ -1308,8 +1280,8 @@ texture_error_check( GLcontext *ctx, GLenum target,
if (type != GL_UNSIGNED_SHORT_8_8_MESA &&
type != GL_UNSIGNED_SHORT_8_8_REV_MESA) {
char message[100];
- sprintf(message,
- "glTexImage%d(format/type YCBCR mismatch", dimensions);
+ _mesa_snprintf(message, sizeof(message),
+ "glTexImage%d(format/type YCBCR mismatch", dimensions);
_mesa_error(ctx, GL_INVALID_ENUM, message);
return GL_TRUE; /* error */
}
@@ -1324,9 +1296,9 @@ texture_error_check( GLcontext *ctx, GLenum target,
if (border != 0) {
if (!isProxy) {
char message[100];
- sprintf(message,
- "glTexImage%d(format=GL_YCBCR_MESA and border=%d)",
- dimensions, border);
+ _mesa_snprintf(message, sizeof(message),
+ "glTexImage%d(format=GL_YCBCR_MESA and border=%d)",
+ dimensions, border);
_mesa_error(ctx, GL_INVALID_VALUE, message);
}
return GL_TRUE;
@@ -1350,7 +1322,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
}
/* additional checks for compressed textures */
- if (is_compressed_format(ctx, internalFormat)) {
+ if (_mesa_is_compressed_format(ctx, internalFormat)) {
if (!target_can_be_compressed(ctx, target) && !isProxy) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glTexImage%d(target)", dimensions);
@@ -1716,7 +1688,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
return GL_TRUE;
}
- if (is_compressed_format(ctx, internalFormat)) {
+ if (_mesa_is_compressed_format(ctx, internalFormat)) {
if (!target_can_be_compressed(ctx, target)) {
_mesa_error(ctx, GL_INVALID_ENUM,
"glCopyTexImage%d(target)", dimensions);
@@ -3114,7 +3086,7 @@ compressed_texture_error_check(GLcontext *ctx, GLint dimensions,
maxTextureSize = 1 << (maxLevels - 1);
/* This will detect any invalid internalFormat value */
- if (!is_compressed_format(ctx, internalFormat))
+ if (!_mesa_is_compressed_format(ctx, internalFormat))
return GL_INVALID_ENUM;
/* This should really never fail */
@@ -3219,7 +3191,7 @@ compressed_subtexture_error_check(GLcontext *ctx, GLint dimensions,
maxTextureSize = 1 << (maxLevels - 1);
/* this will catch any invalid compressed format token */
- if (!is_compressed_format(ctx, format))
+ if (!_mesa_is_compressed_format(ctx, format))
return GL_INVALID_ENUM;
if (width < 1 || width > maxTextureSize)
diff --git a/src/mesa/main/texobj.c b/src/mesa/main/texobj.c
index 2753b55c36..de37e34039 100644
--- a/src/mesa/main/texobj.c
+++ b/src/mesa/main/texobj.c
@@ -416,7 +416,7 @@ _mesa_test_texobj_completeness( const GLcontext *ctx,
*/
if ((baseLevel < 0) || (baseLevel >= MAX_TEXTURE_LEVELS)) {
char s[100];
- sprintf(s, "base level = %d is invalid", baseLevel);
+ _mesa_snprintf(s, sizeof(s), "base level = %d is invalid", baseLevel);
incomplete(t, s);
t->_Complete = GL_FALSE;
return;
@@ -425,7 +425,7 @@ _mesa_test_texobj_completeness( const GLcontext *ctx,
/* Always need the base level image */
if (!t->Image[0][baseLevel]) {
char s[100];
- sprintf(s, "Image[baseLevel=%d] == NULL", baseLevel);
+ _mesa_snprintf(s, sizeof(s), "Image[baseLevel=%d] == NULL", baseLevel);
incomplete(t, s);
t->_Complete = GL_FALSE;
return;
diff --git a/src/mesa/main/texstore.c b/src/mesa/main/texstore.c
index 65e3fcaa95..94c0894de1 100644
--- a/src/mesa/main/texstore.c
+++ b/src/mesa/main/texstore.c
@@ -2551,6 +2551,147 @@ _mesa_texstore_dudv8(TEXSTORE_PARAMS)
return GL_TRUE;
}
+
+/**
+ * Store a texture in MESA_FORMAT_SIGNED_R8 format.
+ */
+static GLboolean
+_mesa_texstore_signed_r8(TEXSTORE_PARAMS)
+{
+ const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+ const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_R8);
+ ASSERT(texelBytes == 1);
+
+ /* XXX look at adding optimized paths */
+ {
+ /* general path */
+ const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+ baseInternalFormat,
+ baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr,
+ srcPacking);
+ const GLfloat *srcRow = tempImage;
+ GLint img, row, col;
+ if (!tempImage)
+ return GL_FALSE;
+ _mesa_adjust_image_for_convolution(ctx, dims, &srcWidth, &srcHeight);
+ for (img = 0; img < srcDepth; img++) {
+ GLubyte *dstRow = (GLubyte *) dstAddr
+ + dstImageOffsets[dstZoffset + img] * texelBytes
+ + dstYoffset * dstRowStride
+ + dstXoffset * texelBytes;
+ for (row = 0; row < srcHeight; row++) {
+ GLubyte *dstB = (GLubyte *) dstRow;
+ for (col = 0; col < srcWidth; col++) {
+ dstB[col] = FLOAT_TO_BYTE_TEX(srcRow[RCOMP]);
+ }
+ dstRow += dstRowStride;
+ }
+ }
+ free((void *) tempImage);
+ }
+ return GL_TRUE;
+}
+
+
+/**
+ * Store a texture in MESA_FORMAT_SIGNED_RG88 format.
+ */
+static GLboolean
+_mesa_texstore_signed_rg88(TEXSTORE_PARAMS)
+{
+ const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+ const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_RG88);
+ ASSERT(texelBytes == 1);
+
+ /* XXX look at adding optimized paths */
+ {
+ /* general path */
+ const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+ baseInternalFormat,
+ baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr,
+ srcPacking);
+ const GLfloat *srcRow = tempImage;
+ GLint img, row, col;
+ if (!tempImage)
+ return GL_FALSE;
+ _mesa_adjust_image_for_convolution(ctx, dims, &srcWidth, &srcHeight);
+ for (img = 0; img < srcDepth; img++) {
+ GLubyte *dstRow = (GLubyte *) dstAddr
+ + dstImageOffsets[dstZoffset + img] * texelBytes
+ + dstYoffset * dstRowStride
+ + dstXoffset * texelBytes;
+ for (row = 0; row < srcHeight; row++) {
+ GLushort *dstUS = (GLushort *) dstRow;
+ for (col = 0; col < srcWidth; col++) {
+ dstUS[col] = PACK_COLOR_88(FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
+ FLOAT_TO_BYTE_TEX(srcRow[GCOMP]));
+ }
+ dstRow += dstRowStride;
+ }
+ }
+ free((void *) tempImage);
+ }
+ return GL_TRUE;
+}
+
+
+/**
+ * Store a texture in MESA_FORMAT_SIGNED_RGBX8888.
+ */
+static GLboolean
+_mesa_texstore_signed_rgbx8888(TEXSTORE_PARAMS)
+{
+ const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+ const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+ ASSERT(dstFormat == MESA_FORMAT_SIGNED_RGBX8888);
+ ASSERT(texelBytes == 4);
+
+ {
+ /* general path */
+ const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+ baseInternalFormat,
+ baseFormat,
+ srcWidth, srcHeight, srcDepth,
+ srcFormat, srcType, srcAddr,
+ srcPacking);
+ const GLfloat *srcRow = tempImage;
+ GLint img, row, col;
+ if (!tempImage)
+ return GL_FALSE;
+ _mesa_adjust_image_for_convolution(ctx, dims, &srcWidth, &srcHeight);
+ for (img = 0; img < srcDepth; img++) {
+ GLubyte *dstRow = (GLubyte *) dstAddr
+ + dstImageOffsets[dstZoffset + img] * texelBytes
+ + dstYoffset * dstRowStride
+ + dstXoffset * texelBytes;
+ for (row = 0; row < srcHeight; row++) {
+ GLuint *dstUI = (GLuint *) dstRow;
+ for (col = 0; col < srcWidth; col++) {
+ dstUI[col] = PACK_COLOR_8888( FLOAT_TO_BYTE_TEX(srcRow[RCOMP]),
+ FLOAT_TO_BYTE_TEX(srcRow[GCOMP]),
+ FLOAT_TO_BYTE_TEX(srcRow[BCOMP]),
+ 0xff );
+ srcRow += 4;
+ }
+ dstRow += dstRowStride;
+ }
+ }
+ free((void *) tempImage);
+ }
+ return GL_TRUE;
+}
+
+
+
/**
* Store a texture in MESA_FORMAT_SIGNED_RGBA8888 or MESA_FORMAT_SIGNED_RGBA8888_REV
*/
@@ -2672,6 +2813,7 @@ _mesa_texstore_signed_rgba8888(TEXSTORE_PARAMS)
return GL_TRUE;
}
+
/**
* Store a combined depth/stencil texture image.
*/
@@ -3197,9 +3339,18 @@ texstore_funcs[MESA_FORMAT_COUNT] =
{ MESA_FORMAT_INTENSITY_FLOAT32, _mesa_texstore_rgba_float32 },
{ MESA_FORMAT_INTENSITY_FLOAT16, _mesa_texstore_rgba_float16 },
{ MESA_FORMAT_DUDV8, _mesa_texstore_dudv8 },
+
+ { MESA_FORMAT_SIGNED_R8, _mesa_texstore_signed_r8 },
+ { MESA_FORMAT_SIGNED_RG88, _mesa_texstore_signed_rg88 },
+ { MESA_FORMAT_SIGNED_RGBX8888, _mesa_texstore_signed_rgbx8888 },
+
{ MESA_FORMAT_SIGNED_RGBA8888, _mesa_texstore_signed_rgba8888 },
{ MESA_FORMAT_SIGNED_RGBA8888_REV, _mesa_texstore_signed_rgba8888 },
- { MESA_FORMAT_SIGNED_RGBA_16, NULL },
+
+ { MESA_FORMAT_SIGNED_R_16, NULL/*_mesa_texstore_signed_r16*/ },
+ { MESA_FORMAT_SIGNED_RG_16, NULL/*_mesa_texstore_signed_rg16*/ },
+ { MESA_FORMAT_SIGNED_RGB_16, NULL/*_mesa_texstore_signed_rgb16*/ },
+ { MESA_FORMAT_SIGNED_RGBA_16, NULL/*_mesa_texstore_signed_rgba16*/ },
};
diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c
index e5ef25ec38..99c4b2baa5 100644
--- a/src/mesa/shader/program_parse.tab.c
+++ b/src/mesa/shader/program_parse.tab.c
@@ -5557,7 +5557,6 @@ make_error_string(const char *fmt, ...)
char *str;
va_list args;
- va_start(args, fmt);
/* Call vsnprintf once to determine how large the final string is. Call it
* again to do the actual formatting. from the vsnprintf manual page:
@@ -5566,15 +5565,17 @@ make_error_string(const char *fmt, ...)
* characters printed (not including the trailing '\0' used to end
* output to strings).
*/
+ va_start(args, fmt);
length = 1 + vsnprintf(NULL, 0, fmt, args);
+ va_end(args);
str = malloc(length);
if (str) {
+ va_start(args, fmt);
vsnprintf(str, length, fmt, args);
+ va_end(args);
}
- va_end(args);
-
return str;
}
diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y
index 299e2477e4..06c2db7a07 100644
--- a/src/mesa/shader/program_parse.y
+++ b/src/mesa/shader/program_parse.y
@@ -2596,7 +2596,6 @@ make_error_string(const char *fmt, ...)
char *str;
va_list args;
- va_start(args, fmt);
/* Call vsnprintf once to determine how large the final string is. Call it
* again to do the actual formatting. from the vsnprintf manual page:
@@ -2605,15 +2604,17 @@ make_error_string(const char *fmt, ...)
* characters printed (not including the trailing '\0' used to end
* output to strings).
*/
+ va_start(args, fmt);
length = 1 + vsnprintf(NULL, 0, fmt, args);
+ va_end(args);
str = malloc(length);
if (str) {
+ va_start(args, fmt);
vsnprintf(str, length, fmt, args);
+ va_end(args);
}
- va_end(args);
-
return str;
}
diff --git a/src/mesa/shader/slang/slang_codegen.c b/src/mesa/shader/slang/slang_codegen.c
index fa79632c18..27ac1da9ad 100644
--- a/src/mesa/shader/slang/slang_codegen.c
+++ b/src/mesa/shader/slang/slang_codegen.c
@@ -1560,7 +1560,7 @@ _slang_gen_function_call(slang_assemble_ctx *A, slang_function *fun,
char name[200];
prevFuncEndLabel = A->curFuncEndLabel;
- sprintf(name, "__endOfFunc_%s_", (char *) fun->header.a_name);
+ _mesa_snprintf(name, sizeof(name), "__endOfFunc_%s_", (char *) fun->header.a_name);
A->curFuncEndLabel = _slang_label_new(name);
assert(A->curFuncEndLabel);
diff --git a/src/mesa/shader/slang/slang_emit.c b/src/mesa/shader/slang/slang_emit.c
index 7c0ea0c114..974c4a3131 100644
--- a/src/mesa/shader/slang/slang_emit.c
+++ b/src/mesa/shader/slang/slang_emit.c
@@ -652,30 +652,30 @@ storage_annotation(const slang_ir_node *n, const struct gl_program *prog)
if (st->Index >= 0) {
const GLfloat *val = prog->Parameters->ParameterValues[st->Index];
if (st->Swizzle == SWIZZLE_NOOP)
- sprintf(s, "{%g, %g, %g, %g}", val[0], val[1], val[2], val[3]);
+ _mesa_snprintf(s, sizeof(s), "{%g, %g, %g, %g}", val[0], val[1], val[2], val[3]);
else {
- sprintf(s, "%g", val[GET_SWZ(st->Swizzle, 0)]);
+ _mesa_snprintf(s, sizeof(s), "%g", val[GET_SWZ(st->Swizzle, 0)]);
}
}
break;
case PROGRAM_TEMPORARY:
if (n->Var)
- sprintf(s, "%s", (char *) n->Var->a_name);
+ _mesa_snprintf(s, sizeof(s), "%s", (char *) n->Var->a_name);
else
- sprintf(s, "t[%d]", st->Index);
+ _mesa_snprintf(s, sizeof(s), "t[%d]", st->Index);
break;
case PROGRAM_STATE_VAR:
case PROGRAM_UNIFORM:
- sprintf(s, "%s", prog->Parameters->Parameters[st->Index].Name);
+ _mesa_snprintf(s, sizeof(s), "%s", prog->Parameters->Parameters[st->Index].Name);
break;
case PROGRAM_VARYING:
- sprintf(s, "%s", prog->Varying->Parameters[st->Index].Name);
+ _mesa_snprintf(s, sizeof(s), "%s", prog->Varying->Parameters[st->Index].Name);
break;
case PROGRAM_INPUT:
- sprintf(s, "input[%d]", st->Index);
+ _mesa_snprintf(s, sizeof(s), "input[%d]", st->Index);
break;
case PROGRAM_OUTPUT:
- sprintf(s, "output[%d]", st->Index);
+ _mesa_snprintf(s, sizeof(s), "output[%d]", st->Index);
break;
default:
s[0] = 0;
@@ -752,9 +752,8 @@ instruction_annotation(gl_inst_opcode opcode, char *dstAnnot,
}
s = (char *) malloc(len);
- sprintf(s, "%s = %s %s %s %s", dstAnnot,
- srcAnnot0, operator, srcAnnot1, srcAnnot2);
- assert(strlen(s) < len);
+ _mesa_snprintf(s, len, "%s = %s %s %s %s", dstAnnot,
+ srcAnnot0, operator, srcAnnot1, srcAnnot2);
free(dstAnnot);
free(srcAnnot0);
@@ -2274,11 +2273,11 @@ emit_var_decl(slang_emit_info *emitInfo, slang_ir_node *n)
if (emitInfo->EmitComments) {
/* emit NOP with comment describing the variable's storage location */
char s[1000];
- sprintf(s, "TEMP[%d]%s = variable %s (size %d)",
- n->Store->Index,
- _mesa_swizzle_string(n->Store->Swizzle, 0, GL_FALSE),
- (n->Var ? (char *) n->Var->a_name : "anonymous"),
- n->Store->Size);
+ _mesa_snprintf(s, sizeof(s), "TEMP[%d]%s = variable %s (size %d)",
+ n->Store->Index,
+ _mesa_swizzle_string(n->Store->Swizzle, 0, GL_FALSE),
+ (n->Var ? (char *) n->Var->a_name : "anonymous"),
+ n->Store->Size);
emit_comment(emitInfo, s);
}
return NULL;
diff --git a/src/mesa/shader/slang/slang_ir.c b/src/mesa/shader/slang/slang_ir.c
index 62603503dd..c223004b22 100644
--- a/src/mesa/shader/slang/slang_ir.c
+++ b/src/mesa/shader/slang/slang_ir.c
@@ -340,13 +340,13 @@ storage_string(const slang_ir_storage *st)
assert(Elements(files) == PROGRAM_FILE_MAX);
#if 0
if (st->Size == 1)
- sprintf(s, "%s[%d]", files[st->File], st->Index);
+ _mesa_snprintf(s, "%s[%d]", files[st->File], st->Index);
else
- sprintf(s, "%s[%d..%d]", files[st->File], st->Index,
- st->Index + st->Size - 1);
+ _mesa_snprintf(s, "%s[%d..%d]", files[st->File], st->Index,
+ st->Index + st->Size - 1);
#endif
assert(st->File < (GLint) (sizeof(files) / sizeof(files[0])));
- sprintf(s, "%s[%d]", files[st->File], st->Index);
+ _mesa_snprintf(s, sizeof(s), "%s[%d]", files[st->File], st->Index);
return s;
}
diff --git a/src/mesa/shader/slang/slang_label.c b/src/mesa/shader/slang/slang_label.c
index 225612a936..8e3a8ebc1a 100644
--- a/src/mesa/shader/slang/slang_label.c
+++ b/src/mesa/shader/slang/slang_label.c
@@ -37,7 +37,7 @@ _slang_label_new_unique(const char *name)
free(l);
return NULL;
}
- sprintf(l->Name, "%s_%d", name, id);
+ _mesa_snprintf(l->Name, strlen(name) + 10, "%s_%d", name, id);
id++;
l->Location = -1;
}
diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c
index f71fde1d72..b16778f8ad 100644
--- a/src/mesa/shader/slang/slang_link.c
+++ b/src/mesa/shader/slang/slang_link.c
@@ -370,8 +370,9 @@ link_uniform_vars(GLcontext *ctx,
GLuint newSampNum = *numSamplers;
if (newSampNum >= ctx->Const.MaxTextureImageUnits) {
char s[100];
- sprintf(s, "Too many texture samplers (%u, max is %u)",
- newSampNum, ctx->Const.MaxTextureImageUnits);
+ _mesa_snprintf(s, sizeof(s),
+ "Too many texture samplers (%u, max is %u)",
+ newSampNum, ctx->Const.MaxTextureImageUnits);
link_error(shProg, s);
return GL_FALSE;
}
@@ -1028,7 +1029,10 @@ _slang_link(GLcontext *ctx,
if (!vertNotify || !fragNotify) {
/* driver rejected one/both of the vertex/fragment programs */
- link_error(shProg, "Vertex and/or fragment program rejected by driver\n");
+ if (!shProg->InfoLog) {
+ link_error(shProg,
+ "Vertex and/or fragment program rejected by driver\n");
+ }
}
else {
shProg->LinkStatus = (shProg->VertexProgram || shProg->FragmentProgram);
diff --git a/src/mesa/shader/slang/slang_print.c b/src/mesa/shader/slang/slang_print.c
index 3c75523c42..6b34f395fd 100644
--- a/src/mesa/shader/slang/slang_print.c
+++ b/src/mesa/shader/slang/slang_print.c
@@ -813,7 +813,7 @@ static const char *
slang_fq_type_string(const slang_fully_specified_type *t)
{
static char str[1000];
- sprintf(str, "%s %s", slang_type_qual_string(t->qualifier),
+ _mesa_snprintf(str, sizeof(str), "%s %s", slang_type_qual_string(t->qualifier),
slang_type_string(t->specifier.type));
return str;
}
@@ -832,9 +832,9 @@ static char *
slang_var_string(const slang_variable *v)
{
static char str[1000];
- sprintf(str, "%s : %s",
- (char *) v->a_name,
- slang_fq_type_string(&v->type));
+ _mesa_snprintf(str, sizeof(str), "%s : %s",
+ (char *) v->a_name,
+ slang_fq_type_string(&v->type));
return str;
}
#endif
diff --git a/src/mesa/shader/slang/slang_utility.c b/src/mesa/shader/slang/slang_utility.c
index e77404f692..c1d57409a4 100644
--- a/src/mesa/shader/slang/slang_utility.c
+++ b/src/mesa/shader/slang/slang_utility.c
@@ -120,7 +120,7 @@ slang_string_pushi (slang_string *self, GLint i)
{
char buffer[12];
- sprintf (buffer, "%d", i);
+ _mesa_snprintf (buffer, sizeof(buffer), "%d", i);
slang_string_pushs (self, buffer, strlen (buffer));
}
diff --git a/src/mesa/state_tracker/st_atom_framebuffer.c b/src/mesa/state_tracker/st_atom_framebuffer.c
index 1cd5546337..52c507da3b 100644
--- a/src/mesa/state_tracker/st_atom_framebuffer.c
+++ b/src/mesa/state_tracker/st_atom_framebuffer.c
@@ -153,6 +153,16 @@ update_framebuffer_state( struct st_context *st )
pipe_surface_reference(&framebuffer->zsbuf, NULL);
}
+#ifdef DEBUG
+ /* Make sure the resource binding flags were set properly */
+ for (i = 0; i < framebuffer->nr_cbufs; i++) {
+ assert(framebuffer->cbufs[i]->texture->bind & PIPE_BIND_RENDER_TARGET);
+ }
+ if (framebuffer->zsbuf) {
+ assert(framebuffer->zsbuf->texture->bind & PIPE_BIND_DEPTH_STENCIL);
+ }
+#endif
+
cso_set_framebuffer(st->cso_context, framebuffer);
}
diff --git a/src/mesa/state_tracker/st_atom_pixeltransfer.c b/src/mesa/state_tracker/st_atom_pixeltransfer.c
index e8e67f8030..29c4d092bf 100644
--- a/src/mesa/state_tracker/st_atom_pixeltransfer.c
+++ b/src/mesa/state_tracker/st_atom_pixeltransfer.c
@@ -115,7 +115,8 @@ make_state_key(GLcontext *ctx, struct state_key *key)
static struct pipe_resource *
create_color_map_texture(GLcontext *ctx)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
struct pipe_resource *pt;
enum pipe_format format;
const uint texSize = 256; /* simple, and usually perfect */
@@ -125,7 +126,7 @@ create_color_map_texture(GLcontext *ctx)
PIPE_TEXTURE_2D, PIPE_BIND_SAMPLER_VIEW);
/* create texture for color map/table */
- pt = st_texture_create(ctx->st, PIPE_TEXTURE_2D, format, 0,
+ pt = st_texture_create(st, PIPE_TEXTURE_2D, format, 0,
texSize, texSize, 1, PIPE_BIND_SAMPLER_VIEW);
return pt;
}
@@ -137,7 +138,8 @@ create_color_map_texture(GLcontext *ctx)
static void
load_color_map_texture(GLcontext *ctx, struct pipe_resource *pt)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
struct pipe_transfer *transfer;
const GLuint rSize = ctx->PixelMaps.RtoR.Size;
const GLuint gSize = ctx->PixelMaps.GtoG.Size;
@@ -185,7 +187,7 @@ load_color_map_texture(GLcontext *ctx, struct pipe_resource *pt)
static struct gl_fragment_program *
get_pixel_transfer_program(GLcontext *ctx, const struct state_key *key)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct prog_instruction inst[MAX_INST];
struct gl_program_parameter_list *params;
struct gl_fragment_program *fp;
@@ -256,8 +258,9 @@ get_pixel_transfer_program(GLcontext *ctx, const struct state_key *key)
/* create the colormap/texture now if not already done */
if (!st->pixel_xfer.pixelmap_texture) {
st->pixel_xfer.pixelmap_texture = create_color_map_texture(ctx);
- st->pixel_xfer.pixelmap_sampler_view = st_create_texture_sampler_view(ctx->st->pipe,
- st->pixel_xfer.pixelmap_texture);
+ st->pixel_xfer.pixelmap_sampler_view =
+ st_create_texture_sampler_view(st->pipe,
+ st->pixel_xfer.pixelmap_texture);
}
/* with a little effort, we can do four pixel map look-ups with
diff --git a/src/mesa/state_tracker/st_atom_sampler.c b/src/mesa/state_tracker/st_atom_sampler.c
index a8262a5e1a..92fe72d4df 100644
--- a/src/mesa/state_tracker/st_atom_sampler.c
+++ b/src/mesa/state_tracker/st_atom_sampler.c
@@ -194,9 +194,12 @@ update_samplers(struct st_context *st)
sampler->normalized_coords = 1;
sampler->lod_bias = st->ctx->Texture.Unit[su].LodBias;
- sampler->min_lod = MAX2(0.0f, texobj->MinLod);
- sampler->max_lod = MIN2(texobj->MaxLevel - texobj->BaseLevel,
- texobj->MaxLod);
+
+ sampler->min_lod = texobj->BaseLevel + texobj->MinLod;
+ if (sampler->min_lod < texobj->BaseLevel)
+ sampler->min_lod = texobj->BaseLevel;
+
+ sampler->max_lod = MIN2((GLfloat) texobj->MaxLevel, texobj->MaxLod);
if (sampler->max_lod < sampler->min_lod) {
/* The GL spec doesn't seem to specify what to do in this case.
* Swap the values.
diff --git a/src/mesa/state_tracker/st_atom_texture.c b/src/mesa/state_tracker/st_atom_texture.c
index f4294ac1e6..2575adda8f 100644
--- a/src/mesa/state_tracker/st_atom_texture.c
+++ b/src/mesa/state_tracker/st_atom_texture.c
@@ -138,7 +138,6 @@ finalize_textures(struct st_context *st)
const GLuint texUnit = fprog->Base.SamplerUnits[su];
struct gl_texture_object *texObj
= st->ctx->Texture.Unit[texUnit]._Current;
- struct st_texture_object *stObj = st_texture_object(texObj);
if (texObj) {
GLboolean flush, retval;
@@ -149,8 +148,6 @@ finalize_textures(struct st_context *st)
st->missing_textures = GL_TRUE;
continue;
}
-
- stObj->teximage_realloc = TRUE;
}
}
}
diff --git a/src/mesa/state_tracker/st_cb_accum.c b/src/mesa/state_tracker/st_cb_accum.c
index 2732969d95..0101837f99 100644
--- a/src/mesa/state_tracker/st_cb_accum.c
+++ b/src/mesa/state_tracker/st_cb_accum.c
@@ -223,7 +223,7 @@ accum_return(GLcontext *ctx, GLfloat value,
struct st_renderbuffer *acc_strb,
struct st_renderbuffer *color_strb)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
const GLubyte *colormask = ctx->Color.ColorMask[0];
enum pipe_transfer_usage usage;
struct pipe_transfer *color_trans;
@@ -287,7 +287,7 @@ accum_return(GLcontext *ctx, GLfloat value,
static void
st_Accum(GLcontext *ctx, GLenum op, GLfloat value)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct st_renderbuffer *acc_strb
= st_renderbuffer(ctx->DrawBuffer->Attachment[BUFFER_ACCUM].Renderbuffer);
struct st_renderbuffer *color_strb
diff --git a/src/mesa/state_tracker/st_cb_bitmap.c b/src/mesa/state_tracker/st_cb_bitmap.c
index 12bba050a6..797c0ba7f5 100644
--- a/src/mesa/state_tracker/st_cb_bitmap.c
+++ b/src/mesa/state_tracker/st_cb_bitmap.c
@@ -114,6 +114,7 @@ struct bitmap_cache
static struct st_fragment_program *
make_bitmap_fragment_program(GLcontext *ctx, GLuint samplerIndex)
{
+ struct st_context *st = st_context(ctx);
struct st_fragment_program *stfp;
struct gl_program *p;
GLuint ic = 0;
@@ -145,7 +146,7 @@ make_bitmap_fragment_program(GLcontext *ctx, GLuint samplerIndex)
p->Instructions[ic].Opcode = OPCODE_KIL;
p->Instructions[ic].SrcReg[0].File = PROGRAM_TEMPORARY;
- if (ctx->st->bitmap.tex_format == PIPE_FORMAT_L8_UNORM)
+ if (st->bitmap.tex_format == PIPE_FORMAT_L8_UNORM)
p->Instructions[ic].SrcReg[0].Swizzle = SWIZZLE_XXXX;
p->Instructions[ic].SrcReg[0].Index = 0;
@@ -187,7 +188,7 @@ find_free_bit(uint bitfield)
static struct st_fragment_program *
combined_bitmap_fragment_program(GLcontext *ctx)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct st_fragment_program *stfp = st->fp;
if (!stfp->bitmap_program) {
@@ -258,7 +259,8 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
const struct gl_pixelstore_attrib *unpack,
const GLubyte *bitmap)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
struct pipe_transfer *transfer;
ubyte *dest;
struct pipe_resource *pt;
@@ -272,7 +274,7 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
/**
* Create texture to hold bitmap pattern.
*/
- pt = st_texture_create(ctx->st, PIPE_TEXTURE_2D, ctx->st->bitmap.tex_format,
+ pt = st_texture_create(st, PIPE_TEXTURE_2D, st->bitmap.tex_format,
0, width, height, 1,
PIPE_BIND_SAMPLER_VIEW);
if (!pt) {
@@ -280,7 +282,7 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
return NULL;
}
- transfer = st_no_flush_get_tex_transfer(st_context(ctx), pt, 0, 0, 0,
+ transfer = st_no_flush_get_tex_transfer(st, pt, 0, 0, 0,
PIPE_TRANSFER_WRITE,
0, 0, width, height);
@@ -288,7 +290,7 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
/* Put image into texture transfer */
memset(dest, 0xff, height * transfer->stride);
- unpack_bitmap(ctx->st, 0, 0, width, height, unpack, bitmap,
+ unpack_bitmap(st, 0, 0, width, height, unpack, bitmap,
dest, transfer->stride);
_mesa_unmap_pbo_source(ctx, unpack);
@@ -400,9 +402,9 @@ draw_bitmap_quad(GLcontext *ctx, GLint x, GLint y, GLfloat z,
struct pipe_sampler_view *sv,
const GLfloat *color)
{
- struct st_context *st = ctx->st;
- struct pipe_context *pipe = ctx->st->pipe;
- struct cso_context *cso = ctx->st->cso_context;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
+ struct cso_context *cso = st->cso_context;
struct st_fragment_program *stfp;
GLuint maxSize;
GLuint offset;
@@ -732,7 +734,7 @@ static void
st_Bitmap(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap )
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct pipe_resource *pt;
if (width == 0 || height == 0)
diff --git a/src/mesa/state_tracker/st_cb_blit.c b/src/mesa/state_tracker/st_cb_blit.c
index d6fdfaccd6..1c8dc0c07f 100644
--- a/src/mesa/state_tracker/st_cb_blit.c
+++ b/src/mesa/state_tracker/st_cb_blit.c
@@ -68,7 +68,7 @@ st_BlitFramebuffer(GLcontext *ctx,
{
const GLbitfield depthStencil = (GL_DEPTH_BUFFER_BIT |
GL_STENCIL_BUFFER_BIT);
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct pipe_context *pipe = st->pipe;
const uint pFilter = ((filter == GL_NEAREST)
? PIPE_TEX_MIPFILTER_NEAREST
diff --git a/src/mesa/state_tracker/st_cb_clear.c b/src/mesa/state_tracker/st_cb_clear.c
index 2f77aff7a6..736180ddc6 100644
--- a/src/mesa/state_tracker/st_cb_clear.c
+++ b/src/mesa/state_tracker/st_cb_clear.c
@@ -109,11 +109,10 @@ st_destroy_clear(struct st_context *st)
* Coords are clip coords with y=0=bottom.
*/
static void
-draw_quad(GLcontext *ctx,
+draw_quad(struct st_context *st,
float x0, float y0, float x1, float y1, GLfloat z,
const GLfloat color[4])
{
- struct st_context *st = ctx->st;
struct pipe_context *pipe = st->pipe;
/* XXX: Need to improve buffer_write to allow NO_WAIT (as well as
@@ -193,7 +192,7 @@ static void
clear_with_quad(GLcontext *ctx,
GLboolean color, GLboolean depth, GLboolean stencil)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
const struct gl_framebuffer *fb = ctx->DrawBuffer;
const GLfloat fb_width = (GLfloat) fb->Width;
const GLfloat fb_height = (GLfloat) fb->Height;
@@ -295,7 +294,7 @@ clear_with_quad(GLcontext *ctx,
cso_set_vertex_shader_handle(st->cso_context, st->clear.vs);
/* draw quad matching scissor rect (XXX verify coord round-off) */
- draw_quad(ctx, x0, y0, x1, y1,
+ draw_quad(st, x0, y0, x1, y1,
(GLfloat) ctx->Depth.Clear, ctx->Color.ClearColor);
/* Restore pipe state */
@@ -448,7 +447,7 @@ st_Clear(GLcontext *ctx, GLbitfield mask)
{
static const GLbitfield BUFFER_BITS_DS
= (BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL);
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct gl_renderbuffer *depthRb
= ctx->DrawBuffer->Attachment[BUFFER_DEPTH].Renderbuffer;
struct gl_renderbuffer *stencilRb
@@ -530,8 +529,8 @@ st_Clear(GLcontext *ctx, GLbitfield mask)
mask & BUFFER_BIT_DEPTH,
mask & BUFFER_BIT_STENCIL);
} else if (clear_buffers)
- ctx->st->pipe->clear(ctx->st->pipe, clear_buffers, ctx->Color.ClearColor,
- ctx->Depth.Clear, ctx->Stencil.Clear);
+ st->pipe->clear(st->pipe, clear_buffers, ctx->Color.ClearColor,
+ ctx->Depth.Clear, ctx->Stencil.Clear);
if (mask & BUFFER_BIT_ACCUM)
st_clear_accum_buffer(ctx,
diff --git a/src/mesa/state_tracker/st_cb_condrender.c b/src/mesa/state_tracker/st_cb_condrender.c
index 8483b93bd8..b509d43b7c 100644
--- a/src/mesa/state_tracker/st_cb_condrender.c
+++ b/src/mesa/state_tracker/st_cb_condrender.c
@@ -51,7 +51,7 @@ st_BeginConditionalRender(GLcontext *ctx, struct gl_query_object *q,
GLenum mode)
{
struct st_query_object *stq = st_query_object(q);
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
uint m;
switch (mode) {
@@ -82,7 +82,7 @@ st_BeginConditionalRender(GLcontext *ctx, struct gl_query_object *q,
static void
st_EndConditionalRender(GLcontext *ctx, struct gl_query_object *q)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
(void) q;
pipe->render_condition(pipe, NULL, 0);
}
diff --git a/src/mesa/state_tracker/st_cb_drawpixels.c b/src/mesa/state_tracker/st_cb_drawpixels.c
index 2c18ded2ab..e059002f15 100644
--- a/src/mesa/state_tracker/st_cb_drawpixels.c
+++ b/src/mesa/state_tracker/st_cb_drawpixels.c
@@ -858,7 +858,7 @@ copy_stencil_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
GLint dstx, GLint dsty)
{
struct st_renderbuffer *rbDraw = st_renderbuffer(ctx->DrawBuffer->_StencilBuffer);
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
enum pipe_transfer_usage usage;
struct pipe_transfer *ptDraw;
ubyte *drawMap;
diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c
index a924f87223..0fa1848e23 100644
--- a/src/mesa/state_tracker/st_cb_eglimage.c
+++ b/src/mesa/state_tracker/st_cb_eglimage.c
@@ -74,7 +74,7 @@ st_egl_image_target_renderbuffer_storage(GLcontext *ctx,
struct gl_renderbuffer *rb,
GLeglImageOES image_handle)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct st_renderbuffer *strb = st_renderbuffer(rb);
struct pipe_surface *ps;
unsigned usage;
@@ -138,7 +138,7 @@ st_egl_image_target_texture_2d(GLcontext *ctx, GLenum target,
struct gl_texture_image *texImage,
GLeglImageOES image_handle)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct pipe_surface *ps;
unsigned usage;
diff --git a/src/mesa/state_tracker/st_cb_fbo.c b/src/mesa/state_tracker/st_cb_fbo.c
index 1ba1fe1b97..c02121fbd1 100644
--- a/src/mesa/state_tracker/st_cb_fbo.c
+++ b/src/mesa/state_tracker/st_cb_fbo.c
@@ -64,7 +64,8 @@ st_renderbuffer_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
GLenum internalFormat,
GLuint width, GLuint height)
{
- struct pipe_screen *screen = ctx->st->pipe->screen;
+ struct st_context *st = st_context(ctx);
+ struct pipe_screen *screen = st->pipe->screen;
struct st_renderbuffer *strb = st_renderbuffer(rb);
enum pipe_format format;
@@ -312,23 +313,21 @@ st_render_texture(GLcontext *ctx,
struct gl_framebuffer *fb,
struct gl_renderbuffer_attachment *att)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct pipe_context *pipe = st->pipe;
- struct pipe_screen *screen = ctx->st->pipe->screen;
+ struct pipe_screen *screen = pipe->screen;
struct st_renderbuffer *strb;
struct gl_renderbuffer *rb;
struct pipe_resource *pt = st_get_texobj_resource(att->Texture);
struct st_texture_object *stObj;
const struct gl_texture_image *texImage;
- GLint pt_level;
/* When would this fail? Perhaps assert? */
if (!pt)
return;
- /* The first gallium texture level = Mesa BaseLevel */
- pt_level = MAX2(0, (GLint) att->TextureLevel - att->Texture->BaseLevel);
- texImage = att->Texture->Image[att->CubeMapFace][pt_level];
+ /* get pointer to texture image we're rendeing to */
+ texImage = att->Texture->Image[att->CubeMapFace][att->TextureLevel];
/* create new renderbuffer which wraps the texture image */
rb = st_new_renderbuffer(ctx, 0);
@@ -349,7 +348,7 @@ st_render_texture(GLcontext *ctx,
/* point renderbuffer at texobject */
strb->rtt = stObj;
- strb->rtt_level = pt_level;
+ strb->rtt_level = att->TextureLevel;
strb->rtt_face = att->CubeMapFace;
strb->rtt_slice = att->Zoffset;
@@ -403,12 +402,13 @@ static void
st_finish_render_texture(GLcontext *ctx,
struct gl_renderbuffer_attachment *att)
{
+ struct st_context *st = st_context(ctx);
struct st_renderbuffer *strb = st_renderbuffer(att->Renderbuffer);
if (!strb)
return;
- st_flush( ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL );
+ st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
strb->rtt = NULL;
@@ -422,23 +422,19 @@ st_finish_render_texture(GLcontext *ctx,
/**
- * Validate a renderbuffer attachment for a particular usage.
+ * Validate a renderbuffer attachment for a particular set of bindings.
*/
-
static GLboolean
st_validate_attachment(struct pipe_screen *screen,
const struct gl_renderbuffer_attachment *att,
- GLuint usage)
+ unsigned bindings)
{
- const struct st_texture_object *stObj =
- st_texture_object(att->Texture);
+ const struct st_texture_object *stObj = st_texture_object(att->Texture);
- /**
- * Only validate texture attachments for now, since
+ /* Only validate texture attachments for now, since
* st_renderbuffer_alloc_storage makes sure that
* the format is supported.
*/
-
if (att->Type != GL_TEXTURE)
return GL_TRUE;
@@ -446,10 +442,10 @@ st_validate_attachment(struct pipe_screen *screen,
return GL_FALSE;
return screen->is_format_supported(screen, stObj->pt->format,
- PIPE_TEXTURE_2D,
- usage, 0);
+ PIPE_TEXTURE_2D, bindings, 0);
}
+
/**
* Check that the framebuffer configuration is valid in terms of what
* the driver can support.
@@ -459,7 +455,8 @@ st_validate_attachment(struct pipe_screen *screen,
static void
st_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
{
- struct pipe_screen *screen = ctx->st->pipe->screen;
+ struct st_context *st = st_context(ctx);
+ struct pipe_screen *screen = st->pipe->screen;
const struct gl_renderbuffer *depthRb =
fb->Attachment[BUFFER_DEPTH].Renderbuffer;
const struct gl_renderbuffer *stencilRb =
@@ -500,6 +497,7 @@ st_validate_framebuffer(GLcontext *ctx, struct gl_framebuffer *fb)
static void
st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers)
{
+ struct st_context *st = st_context(ctx);
GLframebuffer *fb = ctx->DrawBuffer;
GLuint i;
@@ -509,7 +507,7 @@ st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers)
/* add the renderbuffers on demand */
for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
gl_buffer_index idx = fb->_ColorDrawBufferIndexes[i];
- st_manager_add_color_renderbuffer(ctx->st, fb, idx);
+ st_manager_add_color_renderbuffer(st, fb, idx);
}
}
@@ -520,12 +518,13 @@ st_DrawBuffers(GLcontext *ctx, GLsizei count, const GLenum *buffers)
static void
st_ReadBuffer(GLcontext *ctx, GLenum buffer)
{
+ struct st_context *st = st_context(ctx);
GLframebuffer *fb = ctx->ReadBuffer;
(void) buffer;
/* add the renderbuffer on demand */
- st_manager_add_color_renderbuffer(ctx->st, fb, fb->_ColorReadBufferIndex);
+ st_manager_add_color_renderbuffer(st, fb, fb->_ColorReadBufferIndex);
}
diff --git a/src/mesa/state_tracker/st_cb_feedback.c b/src/mesa/state_tracker/st_cb_feedback.c
index 37b1fb55f4..c85d3da84a 100644
--- a/src/mesa/state_tracker/st_cb_feedback.c
+++ b/src/mesa/state_tracker/st_cb_feedback.c
@@ -80,7 +80,7 @@ static void
feedback_vertex(GLcontext *ctx, const struct draw_context *draw,
const struct vertex_header *v)
{
- const struct st_context *st = ctx->st;
+ const struct st_context *st = st_context(ctx);
GLfloat win[4];
const GLfloat *color, *texcoord;
GLuint slot;
@@ -271,7 +271,7 @@ draw_glselect_stage(GLcontext *ctx, struct draw_context *draw)
static void
st_RenderMode(GLcontext *ctx, GLenum newMode )
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct draw_context *draw = st->draw;
if (newMode == GL_RENDER) {
diff --git a/src/mesa/state_tracker/st_cb_flush.c b/src/mesa/state_tracker/st_cb_flush.c
index 415e8f3d2a..8c9959f954 100644
--- a/src/mesa/state_tracker/st_cb_flush.c
+++ b/src/mesa/state_tracker/st_cb_flush.c
@@ -115,7 +115,7 @@ void st_finish( struct st_context *st )
*/
static void st_glFlush(GLcontext *ctx)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
/* Don't call st_finish() here. It is not the state tracker's
* responsibilty to inject sleeps in the hope of avoiding buffer
@@ -135,7 +135,7 @@ static void st_glFlush(GLcontext *ctx)
*/
static void st_glFinish(GLcontext *ctx)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
st_finish(st);
diff --git a/src/mesa/state_tracker/st_cb_queryobj.c b/src/mesa/state_tracker/st_cb_queryobj.c
index c66729b124..1896663932 100644
--- a/src/mesa/state_tracker/st_cb_queryobj.c
+++ b/src/mesa/state_tracker/st_cb_queryobj.c
@@ -61,7 +61,7 @@ st_NewQueryObject(GLcontext *ctx, GLuint id)
static void
st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_query_object *stq = st_query_object(q);
if (stq->pq) {
@@ -76,7 +76,7 @@ st_DeleteQuery(GLcontext *ctx, struct gl_query_object *q)
static void
st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_query_object *stq = st_query_object(q);
switch (q->Target) {
@@ -96,7 +96,7 @@ st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
static void
st_EndQuery(GLcontext *ctx, struct gl_query_object *q)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_query_object *stq = st_query_object(q);
pipe->end_query(pipe, stq->pq);
@@ -106,7 +106,7 @@ st_EndQuery(GLcontext *ctx, struct gl_query_object *q)
static void
st_WaitQuery(GLcontext *ctx, struct gl_query_object *q)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_query_object *stq = st_query_object(q);
/* this function should only be called if we don't have a ready result */
@@ -128,7 +128,7 @@ st_WaitQuery(GLcontext *ctx, struct gl_query_object *q)
static void
st_CheckQuery(GLcontext *ctx, struct gl_query_object *q)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_query_object *stq = st_query_object(q);
assert(!q->Ready); /* we should not get called if Ready is TRUE */
q->Ready = pipe->get_query_result(pipe, stq->pq, FALSE, &q->Result);
diff --git a/src/mesa/state_tracker/st_cb_rasterpos.c b/src/mesa/state_tracker/st_cb_rasterpos.c
index 752b411b5f..843f320027 100644
--- a/src/mesa/state_tracker/st_cb_rasterpos.c
+++ b/src/mesa/state_tracker/st_cb_rasterpos.c
@@ -133,7 +133,7 @@ rastpos_point(struct draw_stage *stage, struct prim_header *prim)
{
struct rastpos_stage *rs = rastpos_stage(stage);
GLcontext *ctx = rs->ctx;
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
const GLfloat height = (GLfloat) ctx->DrawBuffer->Height;
const GLuint *outputMapping = st->vertex_result_to_slot;
const GLfloat *pos;
@@ -221,7 +221,7 @@ new_draw_rastpos_stage(GLcontext *ctx, struct draw_context *draw)
static void
st_RasterPos(GLcontext *ctx, const GLfloat v[4])
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct draw_context *draw = st->draw;
struct rastpos_stage *rs;
@@ -239,7 +239,7 @@ st_RasterPos(GLcontext *ctx, const GLfloat v[4])
draw_set_rasterize_stage(st->draw, st->rastpos_stage);
/* make sure everything's up to date */
- st_validate_state(ctx->st);
+ st_validate_state(st);
/* This will get set only if rastpos_point(), above, gets called */
ctx->Current.RasterPosValid = GL_FALSE;
diff --git a/src/mesa/state_tracker/st_cb_readpixels.c b/src/mesa/state_tracker/st_cb_readpixels.c
index 67c3b9adbb..69950ac44b 100644
--- a/src/mesa/state_tracker/st_cb_readpixels.c
+++ b/src/mesa/state_tracker/st_cb_readpixels.c
@@ -63,7 +63,7 @@ st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
GLvoid *pixels)
{
struct gl_framebuffer *fb = ctx->ReadBuffer;
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_renderbuffer *strb = st_renderbuffer(fb->_StencilBuffer);
struct pipe_transfer *pt;
ubyte *stmap;
@@ -220,7 +220,7 @@ st_fast_readpixels(GLcontext *ctx, struct st_renderbuffer *strb,
/*printf("st_fast_readpixels combo %d\n", (GLint) combo);*/
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct pipe_transfer *trans;
const GLubyte *map;
GLubyte *dst;
@@ -322,7 +322,8 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
const struct gl_pixelstore_attrib *pack,
GLvoid *dest)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
GLfloat temp[MAX_WIDTH][4];
const GLbitfield transferOps = ctx->_ImageTransferState;
GLsizei i, j;
@@ -337,7 +338,7 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
/* XXX convolution not done yet */
assert((transferOps & IMAGE_CONVOLUTION_BIT) == 0);
- st_validate_state(ctx->st);
+ st_validate_state(st);
/* Do all needed clipping here, so that we can forget about it later */
if (!_mesa_clip_readpixels(ctx, &x, &y, &width, &height, &clippedPacking)) {
@@ -349,7 +350,7 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
if (!dest)
return;
- st_flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+ st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
if (format == GL_STENCIL_INDEX ||
format == GL_DEPTH_STENCIL) {
diff --git a/src/mesa/state_tracker/st_cb_texture.c b/src/mesa/state_tracker/st_cb_texture.c
index ed113b5dbc..7e2e533881 100644
--- a/src/mesa/state_tracker/st_cb_texture.c
+++ b/src/mesa/state_tracker/st_cb_texture.c
@@ -120,17 +120,18 @@ static void
st_DeleteTextureObject(GLcontext *ctx,
struct gl_texture_object *texObj)
{
+ struct st_context *st = st_context(ctx);
struct st_texture_object *stObj = st_texture_object(texObj);
if (stObj->pt)
pipe_resource_reference(&stObj->pt, NULL);
if (stObj->sampler_view) {
- if (stObj->sampler_view->context != ctx->st->pipe) {
+ if (stObj->sampler_view->context != st->pipe) {
/* Take "ownership" of this texture sampler view by setting
* its context pointer to this context. This avoids potential
* crashes when the texture object is shared among contexts
* and the original/owner context has already been destroyed.
*/
- stObj->sampler_view->context = ctx->st->pipe;
+ stObj->sampler_view->context = st->pipe;
}
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
}
@@ -208,84 +209,108 @@ do_memcpy(void *dest, const void *src, size_t n)
/**
- * Return default texture usage bitmask for the given texture format.
+ * Return default texture resource binding bitmask for the given format.
*/
static GLuint
-default_usage(enum pipe_format fmt)
+default_bindings(struct st_context *st, enum pipe_format format)
{
- GLuint usage = PIPE_BIND_SAMPLER_VIEW;
- if (util_format_is_depth_or_stencil(fmt))
- usage |= PIPE_BIND_DEPTH_STENCIL;
+ struct pipe_screen *screen = st->pipe->screen;
+ const unsigned target = PIPE_TEXTURE_2D;
+ const unsigned geom = 0x0;
+ unsigned bindings;
+
+ if (util_format_is_depth_or_stencil(format))
+ bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_DEPTH_STENCIL;
+ else
+ bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
+
+ if (screen->is_format_supported(screen, format, target, bindings, geom))
+ return bindings;
else
- usage |= PIPE_BIND_RENDER_TARGET;
- return usage;
+ return PIPE_BIND_SAMPLER_VIEW;
+}
+
+
+/** Return number of image dimensions (1, 2 or 3) for a texture target. */
+static GLuint
+get_texture_dims(GLenum target)
+{
+ switch (target) {
+ case GL_TEXTURE_1D:
+ case GL_TEXTURE_1D_ARRAY_EXT:
+ return 1;
+ case GL_TEXTURE_2D:
+ case GL_TEXTURE_CUBE_MAP_ARB:
+ case GL_TEXTURE_RECTANGLE_NV:
+ case GL_TEXTURE_2D_ARRAY_EXT:
+ return 2;
+ case GL_TEXTURE_3D:
+ return 3;
+ default:
+ assert(0 && "invalid texture target in get_texture_dims()");
+ return 1;
+ }
}
/**
- * Allocate a pipe_resource object for the given st_texture_object using
- * the given st_texture_image to guess the mipmap size/levels.
+ * Try to allocate a pipe_resource object for the given st_texture_object.
*
- * [comments...]
- * Otherwise, store it in memory if (Border != 0) or (any dimension ==
- * 1).
- *
- * Otherwise, if max_level >= level >= min_level, create texture with
- * space for images from min_level down to max_level.
+ * We use the given st_texture_image as a clue to determine the size of the
+ * mipmap image at level=0.
*
- * Otherwise, create texture with space for images from (level 0)..(1x1).
- * Consider pruning this texture at a validation if the saving is worth it.
*/
static void
guess_and_alloc_texture(struct st_context *st,
struct st_texture_object *stObj,
const struct st_texture_image *stImage)
{
- GLuint firstLevel;
- GLuint lastLevel;
- GLuint width = stImage->base.Width2; /* size w/out border */
- GLuint height = stImage->base.Height2;
- GLuint depth = stImage->base.Depth2;
- GLuint i, usage;
+ const GLuint dims = get_texture_dims(stObj->base.Target);
+ GLuint level, lastLevel, width, height, depth;
+ GLuint bindings;
enum pipe_format fmt;
DBG("%s\n", __FUNCTION__);
assert(!stObj->pt);
- if (stObj->pt &&
- (GLint) stImage->level > stObj->base.BaseLevel &&
- (stImage->base.Width == 1 ||
- (stObj->base.Target != GL_TEXTURE_1D &&
- stImage->base.Height == 1) ||
- (stObj->base.Target == GL_TEXTURE_3D &&
- stImage->base.Depth == 1)))
- return;
-
- /* If this image disrespects BaseLevel, allocate from level zero.
- * Usually BaseLevel == 0, so it's unlikely to happen.
- */
- if ((GLint) stImage->level < stObj->base.BaseLevel)
- firstLevel = 0;
- else
- firstLevel = stObj->base.BaseLevel;
+ level = stImage->level;
+ width = stImage->base.Width2; /* size w/out border */
+ height = stImage->base.Height2;
+ depth = stImage->base.Depth2;
+ assert(width > 0);
+ assert(height > 0);
+ assert(depth > 0);
- /* Figure out image dimensions at start level.
+ /* Depending on the image's size, we can't always make a guess here.
*/
- for (i = stImage->level; i > firstLevel; i--) {
+ if (level > 0) {
+ if ( (dims >= 1 && width == 1) ||
+ (dims >= 2 && height == 1) ||
+ (dims >= 3 && depth == 1) ) {
+ /* we can't determine the image size at level=0 */
+ stObj->width0 = stObj->height0 = stObj->depth0 = 0;
+ return;
+ }
+ }
+
+ /* grow the image size until we hit level = 0 */
+ while (level > 0) {
if (width != 1)
width <<= 1;
if (height != 1)
height <<= 1;
if (depth != 1)
depth <<= 1;
- }
+ level--;
+ }
- if (width == 0 || height == 0 || depth == 0) {
- /* no texture needed */
- return;
- }
+ assert(level == 0);
+
+ /* At this point, (width x height x depth) is the expected size of
+ * the level=0 mipmap image.
+ */
/* Guess a reasonable value for lastLevel. This is probably going
* to be wrong fairly often and might mean that we have to look at
@@ -297,21 +322,26 @@ guess_and_alloc_texture(struct st_context *st,
stImage->base._BaseFormat == GL_DEPTH_COMPONENT ||
stImage->base._BaseFormat == GL_DEPTH_STENCIL_EXT) &&
!stObj->base.GenerateMipmap &&
- stImage->level == firstLevel) {
+ stImage->level == 0) {
/* only alloc space for a single mipmap level */
- lastLevel = firstLevel;
+ lastLevel = 0;
}
else {
/* alloc space for a full mipmap */
GLuint l2width = util_logbase2(width);
GLuint l2height = util_logbase2(height);
GLuint l2depth = util_logbase2(depth);
- lastLevel = firstLevel + MAX2(MAX2(l2width, l2height), l2depth);
+ lastLevel = MAX2(MAX2(l2width, l2height), l2depth);
}
+ /* Save the level=0 dimensions */
+ stObj->width0 = width;
+ stObj->height0 = height;
+ stObj->depth0 = depth;
+
fmt = st_mesa_format_to_pipe_format(stImage->base.TexFormat);
- usage = default_usage(fmt);
+ bindings = default_bindings(st, fmt);
stObj->pt = st_texture_create(st,
gl_target_to_pipe(stObj->base.Target),
@@ -320,7 +350,7 @@ guess_and_alloc_texture(struct st_context *st,
width,
height,
depth,
- usage);
+ bindings);
DBG("%s - success\n", __FUNCTION__);
}
@@ -381,7 +411,8 @@ compress_with_blit(GLcontext * ctx,
{
const GLuint dstImageOffsets[1] = {0};
struct st_texture_image *stImage = st_texture_image(texImage);
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
struct pipe_screen *screen = pipe->screen;
gl_format mesa_format;
struct pipe_resource templ;
@@ -458,7 +489,7 @@ compress_with_blit(GLcontext * ctx,
/* copy / compress image */
- util_blit_pixels_tex(ctx->st->blit,
+ util_blit_pixels_tex(st->blit,
src_view, /* sampler view (src) */
0, 0, /* src x0, y0 */
width, height, /* src x1, y1 */
@@ -493,7 +524,8 @@ st_TexImage(GLcontext * ctx,
struct gl_texture_image *texImage,
GLsizei imageSize, GLboolean compressed_src)
{
- struct pipe_screen *screen = ctx->st->pipe->screen;
+ struct st_context *st = st_context(ctx);
+ struct pipe_screen *screen = st->pipe->screen;
struct st_texture_object *stObj = st_texture_object(texObj);
struct st_texture_image *stImage = st_texture_image(texImage);
GLint postConvWidth, postConvHeight;
@@ -570,15 +602,13 @@ st_TexImage(GLcontext * ctx,
* mipmap. If so, free the old mipmap.
*/
if (stObj->pt) {
- if (stObj->teximage_realloc ||
- level > (GLint) stObj->pt->last_level ||
+ if (level > (GLint) stObj->pt->last_level ||
!st_texture_match_image(stObj->pt, &stImage->base,
stImage->face, stImage->level)) {
DBG("release it\n");
pipe_resource_reference(&stObj->pt, NULL);
assert(!stObj->pt);
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
- stObj->teximage_realloc = FALSE;
}
}
@@ -588,13 +618,13 @@ st_TexImage(GLcontext * ctx,
}
if (!stObj->pt) {
- guess_and_alloc_texture(ctx->st, stObj, stImage);
+ guess_and_alloc_texture(st, stObj, stImage);
if (!stObj->pt) {
/* Probably out of memory.
* Try flushing any pending rendering, then retry.
*/
- st_finish(ctx->st);
- guess_and_alloc_texture(ctx->st, stObj, stImage);
+ st_finish(st);
+ guess_and_alloc_texture(st, stObj, stImage);
if (!stObj->pt) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
return;
@@ -659,7 +689,7 @@ st_TexImage(GLcontext * ctx,
else
transfer_usage = PIPE_TRANSFER_WRITE;
- texImage->Data = st_texture_image_map(ctx->st, stImage, 0,
+ texImage->Data = st_texture_image_map(st, stImage, 0,
transfer_usage, 0, 0,
stImage->base.Width,
stImage->base.Height);
@@ -740,9 +770,9 @@ st_TexImage(GLcontext * ctx,
if (stImage->pt && i + 1 < depth) {
/* unmap this slice */
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
/* map next slice of 3D texture */
- texImage->Data = st_texture_image_map(ctx->st, stImage, i + 1,
+ texImage->Data = st_texture_image_map(st, stImage, i + 1,
transfer_usage, 0, 0,
stImage->base.Width,
stImage->base.Height);
@@ -755,7 +785,7 @@ done:
_mesa_unmap_teximage_pbo(ctx, unpack);
if (stImage->pt && texImage->Data) {
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
texImage->Data = NULL;
}
}
@@ -832,7 +862,8 @@ decompress_with_blit(GLcontext * ctx, GLenum target, GLint level,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
struct pipe_screen *screen = pipe->screen;
struct st_texture_image *stImage = st_texture_image(texImage);
struct st_texture_object *stObj = st_texture_object(texObj);
@@ -856,7 +887,7 @@ decompress_with_blit(GLcontext * ctx, GLenum target, GLint level,
}
/* blit/render/decompress */
- util_blit_pixels_tex(ctx->st->blit,
+ util_blit_pixels_tex(st->blit,
src_view, /* pipe_resource (src) */
0, 0, /* src x0, y0 */
width, height, /* src x1, y1 */
@@ -928,6 +959,7 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage, GLboolean compressed_dst)
{
+ struct st_context *st = st_context(ctx);
struct st_texture_image *stImage = st_texture_image(texImage);
const GLuint dstImageStride =
_mesa_image_image_stride(&ctx->Pack, texImage->Width, texImage->Height,
@@ -954,14 +986,17 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
*/
unsigned face = _mesa_tex_target_to_face(target);
- st_teximage_flush_before_map(ctx->st, stImage->pt, face, level,
+ st_teximage_flush_before_map(st, stImage->pt, face, level,
PIPE_TRANSFER_READ);
- texImage->Data = st_texture_image_map(ctx->st, stImage, 0,
+ texImage->Data = st_texture_image_map(st, stImage, 0,
PIPE_TRANSFER_READ, 0, 0,
stImage->base.Width,
stImage->base.Height);
- texImage->RowStride = stImage->transfer->stride / util_format_get_blocksize(stImage->pt->format);
+ /* compute stride in texels from stride in bytes */
+ texImage->RowStride = stImage->transfer->stride
+ * util_format_get_blockwidth(stImage->pt->format)
+ / util_format_get_blocksize(stImage->pt->format);
}
else {
/* Otherwise, the image should actually be stored in
@@ -992,9 +1027,9 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
if (stImage->pt && i + 1 < depth) {
/* unmap this slice */
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
/* map next slice of 3D texture */
- texImage->Data = st_texture_image_map(ctx->st, stImage, i + 1,
+ texImage->Data = st_texture_image_map(st, stImage, i + 1,
PIPE_TRANSFER_READ, 0, 0,
stImage->base.Width,
stImage->base.Height);
@@ -1006,7 +1041,7 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
/* Unmap */
if (stImage->pt) {
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
texImage->Data = NULL;
}
}
@@ -1044,7 +1079,8 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
- struct pipe_screen *screen = ctx->st->pipe->screen;
+ struct st_context *st = st_context(ctx);
+ struct pipe_screen *screen = st->pipe->screen;
struct st_texture_image *stImage = st_texture_image(texImage);
GLuint dstRowStride;
const GLuint srcImageStride =
@@ -1092,9 +1128,9 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
else
transfer_usage = PIPE_TRANSFER_WRITE;
- st_teximage_flush_before_map(ctx->st, stImage->pt, face, level,
+ st_teximage_flush_before_map(st, stImage->pt, face, level,
transfer_usage);
- texImage->Data = st_texture_image_map(ctx->st, stImage, zoffset,
+ texImage->Data = st_texture_image_map(st, stImage, zoffset,
transfer_usage,
xoffset, yoffset,
width, height);
@@ -1122,9 +1158,9 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
if (stImage->pt && i + 1 < depth) {
/* unmap this slice */
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
/* map next slice of 3D texture */
- texImage->Data = st_texture_image_map(ctx->st, stImage,
+ texImage->Data = st_texture_image_map(st, stImage,
zoffset + i + 1,
transfer_usage,
xoffset, yoffset,
@@ -1137,7 +1173,7 @@ done:
_mesa_unmap_teximage_pbo(ctx, packing);
if (stImage->pt && texImage->Data) {
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
texImage->Data = NULL;
}
}
@@ -1208,6 +1244,7 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
struct gl_texture_object *texObj,
struct gl_texture_image *texImage)
{
+ struct st_context *st = st_context(ctx);
struct st_texture_image *stImage = st_texture_image(texImage);
int srcBlockStride;
int dstBlockStride;
@@ -1218,9 +1255,9 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
unsigned face = _mesa_tex_target_to_face(target);
pformat = stImage->pt->format;
- st_teximage_flush_before_map(ctx->st, stImage->pt, face, level,
+ st_teximage_flush_before_map(st, stImage->pt, face, level,
PIPE_TRANSFER_WRITE);
- texImage->Data = st_texture_image_map(ctx->st, stImage, 0,
+ texImage->Data = st_texture_image_map(st, stImage, 0,
PIPE_TRANSFER_WRITE,
xoffset, yoffset,
width, height);
@@ -1252,7 +1289,7 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
}
if (stImage->pt) {
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
texImage->Data = NULL;
}
}
@@ -1288,7 +1325,8 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
GLint srcX, GLint srcY,
GLsizei width, GLsizei height)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
struct pipe_transfer *src_trans;
GLvoid *texDest;
enum pipe_transfer_usage transfer_usage;
@@ -1316,10 +1354,10 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
else
transfer_usage = PIPE_TRANSFER_WRITE;
- st_teximage_flush_before_map(ctx->st, stImage->pt, 0, 0,
+ st_teximage_flush_before_map(st, stImage->pt, 0, 0,
transfer_usage);
- texDest = st_texture_image_map(ctx->st, stImage, 0, transfer_usage,
+ texDest = st_texture_image_map(st, stImage, 0, transfer_usage,
destX, destY, width, height);
if (baseFormat == GL_DEPTH_COMPONENT ||
@@ -1394,7 +1432,7 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
free(tempSrc);
}
- st_texture_image_unmap(ctx->st, stImage);
+ st_texture_image_unmap(st, stImage);
pipe->transfer_destroy(pipe, src_trans);
}
@@ -1490,7 +1528,8 @@ st_copy_texsubimage(GLcontext *ctx,
const GLenum texBaseFormat = texImage->_BaseFormat;
struct gl_framebuffer *fb = ctx->ReadBuffer;
struct st_renderbuffer *strb;
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
struct pipe_screen *screen = pipe->screen;
enum pipe_format dest_format, src_format;
GLboolean use_fallback = GL_TRUE;
@@ -1500,11 +1539,11 @@ st_copy_texsubimage(GLcontext *ctx,
GLboolean do_flip = (st_fb_orientation(ctx->ReadBuffer) == Y_0_TOP);
/* any rendering in progress must flushed before we grab the fb image */
- st_flush(ctx->st, PIPE_FLUSH_RENDER_CACHE, NULL);
+ st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
/* make sure finalize_textures has been called?
*/
- if (0) st_validate_state(ctx->st);
+ if (0) st_validate_state(st);
/* determine if copying depth or color data */
if (texBaseFormat == GL_DEPTH_COMPONENT ||
@@ -1621,7 +1660,7 @@ st_copy_texsubimage(GLcontext *ctx,
srcY0 = srcY;
srcY1 = srcY0 + height;
}
- util_blit_pixels_writemask(ctx->st->blit,
+ util_blit_pixels_writemask(st->blit,
strb->surface,
st_get_renderbuffer_sampler_view(strb, pipe),
srcX, srcY0,
@@ -1737,12 +1776,26 @@ st_CopyTexSubImage3D(GLcontext * ctx, GLenum target, GLint level,
}
+/**
+ * Copy image data from stImage into the texture object 'stObj' at level
+ * 'dstLevel'.
+ */
static void
copy_image_data_to_texture(struct st_context *st,
struct st_texture_object *stObj,
GLuint dstLevel,
struct st_texture_image *stImage)
{
+ /* debug checks */
+ {
+ const struct gl_texture_image *dstImage =
+ stObj->base.Image[stImage->face][stImage->level];
+ assert(dstImage);
+ assert(dstImage->Width == stImage->base.Width);
+ assert(dstImage->Height == stImage->base.Height);
+ assert(dstImage->Depth == stImage->base.Depth);
+ }
+
if (stImage->pt) {
/* Copy potentially with the blitter:
*/
@@ -1788,10 +1841,12 @@ st_finalize_texture(GLcontext *ctx,
struct gl_texture_object *tObj,
GLboolean *needFlush)
{
+ struct st_context *st = st_context(ctx);
struct st_texture_object *stObj = st_texture_object(tObj);
const GLuint nr_faces = (stObj->base.Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
- GLuint blockSize, face;
+ GLuint face;
struct st_texture_image *firstImage;
+ enum pipe_format firstImageFormat;
*needFlush = GL_FALSE;
@@ -1806,10 +1861,11 @@ st_finalize_texture(GLcontext *ctx,
stObj->base.MinFilter == GL_NEAREST)
stObj->lastLevel = stObj->base.BaseLevel;
else
- stObj->lastLevel = stObj->base._MaxLevel - stObj->base.BaseLevel;
+ stObj->lastLevel = stObj->base._MaxLevel;
}
firstImage = st_texture_image(stObj->base.Image[0][stObj->base.BaseLevel]);
+ assert(firstImage);
/* If both firstImage and stObj point to a texture which can contain
* all active images, favour firstImage. Note that because of the
@@ -1823,43 +1879,42 @@ st_finalize_texture(GLcontext *ctx,
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
}
- /* bytes per pixel block (blocks are usually 1x1) */
- blockSize = _mesa_get_format_bytes(firstImage->base.TexFormat);
+ /* Find gallium format for the Mesa texture */
+ firstImageFormat = st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
/* If we already have a gallium texture, check that it matches the texture
* object's format, target, size, num_levels, etc.
*/
if (stObj->pt) {
- const enum pipe_format fmt =
- st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
if (stObj->pt->target != gl_target_to_pipe(stObj->base.Target) ||
- stObj->pt->format != fmt ||
- stObj->pt->last_level < stObj->lastLevel ||
- stObj->pt->width0 != firstImage->base.Width2 ||
- stObj->pt->height0 != firstImage->base.Height2 ||
- stObj->pt->depth0 != firstImage->base.Depth2)
+ stObj->pt->format != firstImageFormat ||
+ stObj->pt->last_level != stObj->lastLevel ||
+ stObj->pt->width0 != stObj->width0 ||
+ stObj->pt->height0 != stObj->height0 ||
+ stObj->pt->depth0 != stObj->depth0)
{
+ /* The gallium texture does not match the Mesa texture so delete the
+ * gallium texture now. We'll make a new one below.
+ */
pipe_resource_reference(&stObj->pt, NULL);
pipe_sampler_view_reference(&stObj->sampler_view, NULL);
- ctx->st->dirty.st |= ST_NEW_FRAMEBUFFER;
+ st->dirty.st |= ST_NEW_FRAMEBUFFER;
}
}
/* May need to create a new gallium texture:
*/
if (!stObj->pt) {
- const enum pipe_format fmt =
- st_mesa_format_to_pipe_format(firstImage->base.TexFormat);
- GLuint usage = default_usage(fmt);
+ GLuint bindings = default_bindings(st, firstImageFormat);
- stObj->pt = st_texture_create(ctx->st,
+ stObj->pt = st_texture_create(st,
gl_target_to_pipe(stObj->base.Target),
- fmt,
+ firstImageFormat,
stObj->lastLevel,
- firstImage->base.Width2,
- firstImage->base.Height2,
- firstImage->base.Depth2,
- usage);
+ stObj->width0,
+ stObj->height0,
+ stObj->depth0,
+ bindings);
if (!stObj->pt) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
@@ -1873,12 +1928,12 @@ st_finalize_texture(GLcontext *ctx,
GLuint level;
for (level = 0; level <= stObj->lastLevel; level++) {
struct st_texture_image *stImage =
- st_texture_image(stObj->base.Image[face][stObj->base.BaseLevel + level]);
+ st_texture_image(stObj->base.Image[face][level]);
/* Need to import images in main memory or held in other textures.
*/
if (stImage && stObj->pt != stImage->pt) {
- copy_image_data_to_texture(ctx->st, stObj, level, stImage);
+ copy_image_data_to_texture(st, stObj, level, stImage);
*needFlush = GL_TRUE;
}
}
diff --git a/src/mesa/state_tracker/st_context.h b/src/mesa/state_tracker/st_context.h
index dfee490b54..3637f6e75f 100644
--- a/src/mesa/state_tracker/st_context.h
+++ b/src/mesa/state_tracker/st_context.h
@@ -201,7 +201,6 @@ struct st_framebuffer
{
GLframebuffer Base;
void *Private;
- GLuint InitWidth, InitHeight;
struct st_framebuffer_iface *iface;
enum st_attachment_type statts[ST_ATTACHMENT_COUNT];
diff --git a/src/mesa/state_tracker/st_debug.c b/src/mesa/state_tracker/st_debug.c
index 5dbabfa5c2..2da27fc4bd 100644
--- a/src/mesa/state_tracker/st_debug.c
+++ b/src/mesa/state_tracker/st_debug.c
@@ -47,6 +47,7 @@ int ST_DEBUG = 0;
static const struct debug_named_value st_debug_flags[] = {
{ "mesa", DEBUG_MESA },
{ "tgsi", DEBUG_TGSI },
+ { "constants",DEBUG_CONSTANTS },
{ "pipe", DEBUG_PIPE },
{ "tex", DEBUG_TEX },
{ "fallback", DEBUG_FALLBACK },
@@ -75,7 +76,7 @@ void
st_print_current(void)
{
GET_CURRENT_CONTEXT(ctx);
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
#if 0
int i;
diff --git a/src/mesa/state_tracker/st_draw.c b/src/mesa/state_tracker/st_draw.c
index a3620359db..4137596bd4 100644
--- a/src/mesa/state_tracker/st_draw.c
+++ b/src/mesa/state_tracker/st_draw.c
@@ -347,7 +347,8 @@ setup_interleaved_attribs(GLcontext *ctx,
struct pipe_vertex_buffer *vbuffer,
struct pipe_vertex_element velements[])
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
GLuint attr;
const GLubyte *offset0 = NULL;
@@ -412,7 +413,8 @@ setup_non_interleaved_attribs(GLcontext *ctx,
struct pipe_vertex_buffer vbuffer[],
struct pipe_vertex_element velements[])
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
GLuint attr;
for (attr = 0; attr < vpv->num_inputs; attr++) {
@@ -543,7 +545,8 @@ st_draw_vbo(GLcontext *ctx,
GLuint min_index,
GLuint max_index)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct st_context *st = st_context(ctx);
+ struct pipe_context *pipe = st->pipe;
const struct st_vertex_program *vp;
const struct st_vp_varient *vpv;
struct pipe_vertex_buffer vbuffer[PIPE_MAX_SHADER_INPUTS];
@@ -566,16 +569,16 @@ st_draw_vbo(GLcontext *ctx,
vertDataEdgeFlags = arrays[VERT_ATTRIB_EDGEFLAG]->BufferObj &&
arrays[VERT_ATTRIB_EDGEFLAG]->BufferObj->Name;
- if (vertDataEdgeFlags != ctx->st->vertdata_edgeflags) {
- ctx->st->vertdata_edgeflags = vertDataEdgeFlags;
- ctx->st->dirty.st |= ST_NEW_EDGEFLAGS_DATA;
+ if (vertDataEdgeFlags != st->vertdata_edgeflags) {
+ st->vertdata_edgeflags = vertDataEdgeFlags;
+ st->dirty.st |= ST_NEW_EDGEFLAGS_DATA;
}
- st_validate_state(ctx->st);
+ st_validate_state(st);
/* must get these after state validation! */
- vp = ctx->st->vp;
- vpv = ctx->st->vp_varient;
+ vp = st->vp;
+ vpv = st->vp_varient;
#if 0
if (MESA_VERBOSE & VERBOSE_GLSL) {
@@ -624,7 +627,7 @@ st_draw_vbo(GLcontext *ctx,
#endif
pipe->set_vertex_buffers(pipe, num_vbuffers, vbuffer);
- cso_set_vertex_elements(ctx->st->cso_context, num_velements, velements);
+ cso_set_vertex_elements(st->cso_context, num_velements, velements);
if (num_vbuffers == 0 || num_velements == 0)
return;
diff --git a/src/mesa/state_tracker/st_draw_feedback.c b/src/mesa/state_tracker/st_draw_feedback.c
index 0889f1a522..a1f70e8693 100644
--- a/src/mesa/state_tracker/st_draw_feedback.c
+++ b/src/mesa/state_tracker/st_draw_feedback.c
@@ -55,7 +55,7 @@ static void
set_feedback_vertex_format(GLcontext *ctx)
{
#if 0
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct vertex_info vinfo;
GLuint i;
@@ -99,7 +99,7 @@ st_feedback_draw_vbo(GLcontext *ctx,
GLuint min_index,
GLuint max_index)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct pipe_context *pipe = st->pipe;
struct draw_context *draw = st->draw;
const struct st_vertex_program *vp;
@@ -115,13 +115,13 @@ st_feedback_draw_vbo(GLcontext *ctx,
assert(draw);
- st_validate_state(ctx->st);
+ st_validate_state(st);
if (!index_bounds_valid)
vbo_get_minmax_index(ctx, prims, ib, &min_index, &max_index);
/* must get these after state validation! */
- vp = ctx->st->vp;
+ vp = st->vp;
vs = &st->vp_varient->tgsi;
if (!st->vp_varient->draw_shader) {
diff --git a/src/mesa/state_tracker/st_format.c b/src/mesa/state_tracker/st_format.c
index 8a366d834e..d7d2be6d45 100644
--- a/src/mesa/state_tracker/st_format.c
+++ b/src/mesa/state_tracker/st_format.c
@@ -36,6 +36,7 @@
#include "main/context.h"
#include "main/texstore.h"
#include "main/enums.h"
+#include "main/image.h"
#include "main/macros.h"
#include "pipe/p_context.h"
@@ -160,6 +161,10 @@ st_mesa_format_to_pipe_format(gl_format mesaFormat)
return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
case MESA_FORMAT_S8_Z24:
return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
+ case MESA_FORMAT_Z24_X8:
+ return PIPE_FORMAT_X8Z24_UNORM;
+ case MESA_FORMAT_X8_Z24:
+ return PIPE_FORMAT_Z24X8_UNORM;
case MESA_FORMAT_YCBCR:
return PIPE_FORMAT_UYVY;
#if FEATURE_texture_s3tc
@@ -299,6 +304,28 @@ st_pipe_format_to_mesa_format(enum pipe_format format)
/**
+ * Return first supported format from the given list.
+ */
+static enum pipe_format
+find_supported_format(struct pipe_screen *screen,
+ const enum pipe_format formats[],
+ uint num_formats,
+ enum pipe_texture_target target,
+ unsigned tex_usage,
+ unsigned geom_flags)
+{
+ uint i;
+ for (i = 0; i < num_formats; i++) {
+ if (screen->is_format_supported(screen, formats[i], target,
+ tex_usage, geom_flags)) {
+ return formats[i];
+ }
+ }
+ return PIPE_FORMAT_NONE;
+}
+
+
+/**
* Find an RGBA format supported by the context/winsys.
*/
static enum pipe_format
@@ -313,15 +340,11 @@ default_rgba_format(struct pipe_screen *screen,
PIPE_FORMAT_A8B8G8R8_UNORM,
PIPE_FORMAT_B5G6R5_UNORM
};
- uint i;
- for (i = 0; i < Elements(colorFormats); i++) {
- if (screen->is_format_supported( screen, colorFormats[i], target, tex_usage, geom_flags )) {
- return colorFormats[i];
- }
- }
- return PIPE_FORMAT_NONE;
+ return find_supported_format(screen, colorFormats, Elements(colorFormats),
+ target, tex_usage, geom_flags);
}
+
/**
* Find an RGB format supported by the context/winsys.
*/
@@ -340,13 +363,8 @@ default_rgb_format(struct pipe_screen *screen,
PIPE_FORMAT_A8B8G8R8_UNORM,
PIPE_FORMAT_B5G6R5_UNORM
};
- uint i;
- for (i = 0; i < Elements(colorFormats); i++) {
- if (screen->is_format_supported( screen, colorFormats[i], target, tex_usage, geom_flags )) {
- return colorFormats[i];
- }
- }
- return PIPE_FORMAT_NONE;
+ return find_supported_format(screen, colorFormats, Elements(colorFormats),
+ target, tex_usage, geom_flags);
}
/**
@@ -363,115 +381,72 @@ default_srgba_format(struct pipe_screen *screen,
PIPE_FORMAT_A8R8G8B8_SRGB,
PIPE_FORMAT_A8B8G8R8_SRGB,
};
- uint i;
- for (i = 0; i < Elements(colorFormats); i++) {
- if (screen->is_format_supported( screen, colorFormats[i], target, tex_usage, geom_flags )) {
- return colorFormats[i];
- }
- }
- return PIPE_FORMAT_NONE;
-}
-
-/**
- * Search list of formats for first RGBA format with >8 bits/channel.
- */
-static enum pipe_format
-default_deep_rgba_format(struct pipe_screen *screen,
- enum pipe_texture_target target,
- unsigned tex_usage,
- unsigned geom_flags)
-{
- if (screen->is_format_supported(screen, PIPE_FORMAT_R16G16B16A16_SNORM, target, tex_usage, geom_flags)) {
- return PIPE_FORMAT_R16G16B16A16_SNORM;
- }
- if (tex_usage & PIPE_BIND_RENDER_TARGET)
- return default_rgba_format(screen, target, tex_usage, geom_flags);
- else
- return PIPE_FORMAT_NONE;
-}
-
-
-/**
- * Find an Z format supported by the context/winsys.
- */
-static enum pipe_format
-default_depth_format(struct pipe_screen *screen,
- enum pipe_texture_target target,
- unsigned tex_usage,
- unsigned geom_flags)
-{
- static const enum pipe_format zFormats[] = {
- PIPE_FORMAT_Z16_UNORM,
- PIPE_FORMAT_Z32_UNORM,
- PIPE_FORMAT_Z24_UNORM_S8_USCALED,
- PIPE_FORMAT_S8_USCALED_Z24_UNORM
- };
- uint i;
- for (i = 0; i < Elements(zFormats); i++) {
- if (screen->is_format_supported( screen, zFormats[i], target, tex_usage, geom_flags )) {
- return zFormats[i];
- }
- }
- return PIPE_FORMAT_NONE;
+ return find_supported_format(screen, colorFormats, Elements(colorFormats),
+ target, tex_usage, geom_flags);
}
/**
* Given an OpenGL internalFormat value for a texture or surface, return
* the best matching PIPE_FORMAT_x, or PIPE_FORMAT_NONE if there's no match.
+ * This is called during glTexImage2D, for example.
+ *
+ * The bindings parameter typically has PIPE_BIND_SAMPLER_VIEW set, plus
+ * either PIPE_BINDING_RENDER_TARGET or PIPE_BINDING_DEPTH_STENCIL if
+ * we want render-to-texture ability.
+ *
+ * \param internalFormat the user value passed to glTexImage2D
* \param target one of PIPE_TEXTURE_x
- * \param tex_usage either PIPE_BIND_RENDER_TARGET
- * or PIPE_BIND_SAMPLER_VIEW
+ * \param bindings bitmask of PIPE_BIND_x flags.
*/
enum pipe_format
st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
- enum pipe_texture_target target, unsigned tex_usage)
+ enum pipe_texture_target target, unsigned bindings)
{
- unsigned geom_flags = 0;
+ unsigned geom_flags = 0; /* we don't care about POT vs. NPOT here, yet */
switch (internalFormat) {
case 4:
case GL_RGBA:
- case GL_COMPRESSED_RGBA:
case GL_RGBA8:
case GL_RGB10_A2:
case GL_RGBA12:
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case 3:
case GL_RGB:
- case GL_COMPRESSED_RGB:
- return default_rgb_format( screen, target, tex_usage, geom_flags );
+ return default_rgb_format( screen, target, bindings, geom_flags );
case GL_RGBA16:
- if (tex_usage & PIPE_BIND_RENDER_TARGET)
- return default_deep_rgba_format( screen, target, tex_usage, geom_flags );
- else
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case GL_RGBA4:
case GL_RGBA2:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B4G4R4A4_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_B4G4R4A4_UNORM,
+ target, bindings, geom_flags ))
return PIPE_FORMAT_B4G4R4A4_UNORM;
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case GL_RGB5_A1:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
+ target, bindings, geom_flags ))
return PIPE_FORMAT_B5G5R5A1_UNORM;
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case GL_RGB8:
case GL_RGB10:
case GL_RGB12:
case GL_RGB16:
- return default_rgb_format( screen, target, tex_usage, geom_flags );
+ return default_rgb_format( screen, target, bindings, geom_flags );
case GL_RGB5:
case GL_RGB4:
case GL_R3_G3_B2:
- if (screen->is_format_supported( screen, PIPE_FORMAT_B5G6R5_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_B5G6R5_UNORM,
+ target, bindings, geom_flags ))
return PIPE_FORMAT_B5G6R5_UNORM;
- if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_B5G5R5A1_UNORM,
+ target, bindings, geom_flags ))
return PIPE_FORMAT_B5G5R5A1_UNORM;
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case GL_ALPHA:
case GL_ALPHA4:
@@ -479,9 +454,10 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_ALPHA12:
case GL_ALPHA16:
case GL_COMPRESSED_ALPHA:
- if (screen->is_format_supported( screen, PIPE_FORMAT_A8_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_A8_UNORM, target,
+ bindings, geom_flags ))
return PIPE_FORMAT_A8_UNORM;
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case 1:
case GL_LUMINANCE:
@@ -490,9 +466,10 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE12:
case GL_LUMINANCE16:
case GL_COMPRESSED_LUMINANCE:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L8_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_L8_UNORM, target,
+ bindings, geom_flags ))
return PIPE_FORMAT_L8_UNORM;
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case 2:
case GL_LUMINANCE_ALPHA:
@@ -503,9 +480,10 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_LUMINANCE12_ALPHA12:
case GL_LUMINANCE16_ALPHA16:
case GL_COMPRESSED_LUMINANCE_ALPHA:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_UNORM, target,
+ bindings, geom_flags ))
return PIPE_FORMAT_L8A8_UNORM;
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case GL_INTENSITY:
case GL_INTENSITY4:
@@ -513,36 +491,73 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_INTENSITY12:
case GL_INTENSITY16:
case GL_COMPRESSED_INTENSITY:
- if (screen->is_format_supported( screen, PIPE_FORMAT_I8_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported( screen, PIPE_FORMAT_I8_UNORM, target,
+ bindings, geom_flags ))
return PIPE_FORMAT_I8_UNORM;
- return default_rgba_format( screen, target, tex_usage, geom_flags );
+ return default_rgba_format( screen, target, bindings, geom_flags );
case GL_YCBCR_MESA:
if (screen->is_format_supported(screen, PIPE_FORMAT_UYVY,
- target, tex_usage, geom_flags)) {
+ target, bindings, geom_flags)) {
return PIPE_FORMAT_UYVY;
}
if (screen->is_format_supported(screen, PIPE_FORMAT_YUYV,
- target, tex_usage, geom_flags)) {
+ target, bindings, geom_flags)) {
return PIPE_FORMAT_YUYV;
}
return PIPE_FORMAT_NONE;
+ case GL_COMPRESSED_RGB:
+ /* can only sample from compressed formats */
+ if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
+ return PIPE_FORMAT_NONE;
+ else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
+ target, bindings, geom_flags))
+ return PIPE_FORMAT_DXT1_RGB;
+ else
+ return default_rgb_format(screen, target, bindings, geom_flags);
+
+ case GL_COMPRESSED_RGBA:
+ /* can only sample from compressed formats */
+ if (bindings & ~PIPE_BIND_SAMPLER_VIEW)
+ return PIPE_FORMAT_NONE;
+ else if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
+ target, bindings, geom_flags))
+ return PIPE_FORMAT_DXT3_RGBA;
+ else
+ return default_rgba_format(screen, target, bindings, geom_flags);
+
case GL_RGB_S3TC:
case GL_RGB4_S3TC:
case GL_COMPRESSED_RGB_S3TC_DXT1_EXT:
- return PIPE_FORMAT_DXT1_RGB;
+ if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGB,
+ target, bindings, geom_flags))
+ return PIPE_FORMAT_DXT1_RGB;
+ else
+ return PIPE_FORMAT_NONE;
case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT:
- return PIPE_FORMAT_DXT1_RGBA;
+ if (screen->is_format_supported(screen, PIPE_FORMAT_DXT1_RGBA,
+ target, bindings, geom_flags))
+ return PIPE_FORMAT_DXT1_RGBA;
+ else
+ return PIPE_FORMAT_NONE;
case GL_RGBA_S3TC:
case GL_RGBA4_S3TC:
case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT:
- return PIPE_FORMAT_DXT3_RGBA;
+ if (screen->is_format_supported(screen, PIPE_FORMAT_DXT3_RGBA,
+ target, bindings, geom_flags))
+ return PIPE_FORMAT_DXT3_RGBA;
+ else
+ return PIPE_FORMAT_NONE;
case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT:
- return PIPE_FORMAT_DXT5_RGBA;
+ if (screen->is_format_supported(screen, PIPE_FORMAT_DXT5_RGBA,
+ target, bindings, geom_flags))
+ return PIPE_FORMAT_DXT5_RGBA;
+ else
+ return PIPE_FORMAT_NONE;
#if 0
case GL_COMPRESSED_RGB_FXT1_3DFX:
@@ -552,42 +567,60 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
#endif
case GL_DEPTH_COMPONENT16:
- if (screen->is_format_supported( screen, PIPE_FORMAT_Z16_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported(screen, PIPE_FORMAT_Z16_UNORM, target,
+ bindings, geom_flags))
return PIPE_FORMAT_Z16_UNORM;
/* fall-through */
case GL_DEPTH_COMPONENT24:
- if (screen->is_format_supported( screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported(screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+ target, bindings, geom_flags))
return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
- if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported(screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM,
+ target, bindings, geom_flags))
return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
/* fall-through */
case GL_DEPTH_COMPONENT32:
- if (screen->is_format_supported( screen, PIPE_FORMAT_Z32_UNORM, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported(screen, PIPE_FORMAT_Z32_UNORM,
+ target, bindings, geom_flags))
return PIPE_FORMAT_Z32_UNORM;
/* fall-through */
case GL_DEPTH_COMPONENT:
- return default_depth_format( screen, target, tex_usage, geom_flags );
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_Z16_UNORM,
+ PIPE_FORMAT_Z32_UNORM,
+ PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+ PIPE_FORMAT_S8_USCALED_Z24_UNORM
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, bindings, geom_flags);
+ }
case GL_STENCIL_INDEX:
case GL_STENCIL_INDEX1_EXT:
case GL_STENCIL_INDEX4_EXT:
case GL_STENCIL_INDEX8_EXT:
case GL_STENCIL_INDEX16_EXT:
- if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED, target, tex_usage, geom_flags ))
- return PIPE_FORMAT_S8_USCALED;
- if (screen->is_format_supported( screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, target, tex_usage, geom_flags ))
- return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
- if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, target, tex_usage, geom_flags ))
- return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
- return PIPE_FORMAT_NONE;
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_S8_USCALED,
+ PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+ PIPE_FORMAT_S8_USCALED_Z24_UNORM
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, bindings, geom_flags);
+ }
case GL_DEPTH_STENCIL_EXT:
case GL_DEPTH24_STENCIL8_EXT:
- if (screen->is_format_supported( screen, PIPE_FORMAT_Z24_UNORM_S8_USCALED, target, tex_usage, geom_flags ))
- return PIPE_FORMAT_Z24_UNORM_S8_USCALED;
- if (screen->is_format_supported( screen, PIPE_FORMAT_S8_USCALED_Z24_UNORM, target, tex_usage, geom_flags ))
- return PIPE_FORMAT_S8_USCALED_Z24_UNORM;
- return PIPE_FORMAT_NONE;
+ {
+ static const enum pipe_format formats[] = {
+ PIPE_FORMAT_Z24_UNORM_S8_USCALED,
+ PIPE_FORMAT_S8_USCALED_Z24_UNORM
+ };
+ return find_supported_format(screen, formats, Elements(formats),
+ target, bindings, geom_flags);
+ }
case GL_SRGB_EXT:
case GL_SRGB8_EXT:
@@ -595,7 +628,7 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_COMPRESSED_SRGB_ALPHA_EXT:
case GL_SRGB_ALPHA_EXT:
case GL_SRGB8_ALPHA8_EXT:
- return default_srgba_format( screen, target, tex_usage, geom_flags );
+ return default_srgba_format( screen, target, bindings, geom_flags );
case GL_COMPRESSED_SRGB_S3TC_DXT1_EXT:
return PIPE_FORMAT_DXT1_SRGB;
case GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT:
@@ -609,15 +642,17 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
case GL_SLUMINANCE8_ALPHA8_EXT:
case GL_COMPRESSED_SLUMINANCE_EXT:
case GL_COMPRESSED_SLUMINANCE_ALPHA_EXT:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L8A8_SRGB, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported(screen, PIPE_FORMAT_L8A8_SRGB,
+ target, bindings, geom_flags))
return PIPE_FORMAT_L8A8_SRGB;
- return default_srgba_format( screen, target, tex_usage, geom_flags );
+ return default_srgba_format( screen, target, bindings, geom_flags );
case GL_SLUMINANCE_EXT:
case GL_SLUMINANCE8_EXT:
- if (screen->is_format_supported( screen, PIPE_FORMAT_L8_SRGB, target, tex_usage, geom_flags ))
+ if (screen->is_format_supported(screen, PIPE_FORMAT_L8_SRGB,
+ target, bindings, geom_flags))
return PIPE_FORMAT_L8_SRGB;
- return default_srgba_format( screen, target, tex_usage, geom_flags );
+ return default_srgba_format( screen, target, bindings, geom_flags );
default:
return PIPE_FORMAT_NONE;
@@ -625,27 +660,6 @@ st_choose_format(struct pipe_screen *screen, GLenum internalFormat,
}
-static GLboolean
-is_depth_or_stencil_format(GLenum internalFormat)
-{
- switch (internalFormat) {
- case GL_DEPTH_COMPONENT:
- case GL_DEPTH_COMPONENT16:
- case GL_DEPTH_COMPONENT24:
- case GL_DEPTH_COMPONENT32:
- case GL_STENCIL_INDEX:
- case GL_STENCIL_INDEX1_EXT:
- case GL_STENCIL_INDEX4_EXT:
- case GL_STENCIL_INDEX8_EXT:
- case GL_STENCIL_INDEX16_EXT:
- case GL_DEPTH_STENCIL_EXT:
- case GL_DEPTH24_STENCIL8_EXT:
- return GL_TRUE;
- default:
- return GL_FALSE;
- }
-}
-
/**
* Called by FBO code to choose a PIPE_FORMAT_ for drawing surfaces.
*/
@@ -654,7 +668,7 @@ st_choose_renderbuffer_format(struct pipe_screen *screen,
GLenum internalFormat)
{
uint usage;
- if (is_depth_or_stencil_format(internalFormat))
+ if (_mesa_is_depth_or_stencil_format(internalFormat))
usage = PIPE_BIND_DEPTH_STENCIL;
else
usage = PIPE_BIND_RENDER_TARGET;
@@ -669,15 +683,35 @@ gl_format
st_ChooseTextureFormat(GLcontext *ctx, GLint internalFormat,
GLenum format, GLenum type)
{
+ struct pipe_screen *screen = st_context(ctx)->pipe->screen;
enum pipe_format pFormat;
+ uint bindings;
(void) format;
(void) type;
- pFormat = st_choose_format(ctx->st->pipe->screen, internalFormat,
- PIPE_TEXTURE_2D, PIPE_BIND_SAMPLER_VIEW);
- if (pFormat == PIPE_FORMAT_NONE)
+ /* GL textures may wind up being render targets, but we don't know
+ * that in advance. Specify potential render target flags now.
+ */
+ if (_mesa_is_depth_format(internalFormat) ||
+ _mesa_is_depthstencil_format(internalFormat))
+ bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_DEPTH_STENCIL;
+ else
+ bindings = PIPE_BIND_SAMPLER_VIEW | PIPE_BIND_RENDER_TARGET;
+
+ pFormat = st_choose_format(screen, internalFormat,
+ PIPE_TEXTURE_2D, bindings);
+
+ if (pFormat == PIPE_FORMAT_NONE) {
+ /* try choosing format again, this time without render target bindings */
+ pFormat = st_choose_format(screen, internalFormat,
+ PIPE_TEXTURE_2D, PIPE_BIND_SAMPLER_VIEW);
+ }
+
+ if (pFormat == PIPE_FORMAT_NONE) {
+ /* no luck at all */
return MESA_FORMAT_NONE;
+ }
return st_pipe_format_to_mesa_format(pFormat);
}
diff --git a/src/mesa/state_tracker/st_gen_mipmap.c b/src/mesa/state_tracker/st_gen_mipmap.c
index 5b7a962037..a015c4bb58 100644
--- a/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/src/mesa/state_tracker/st_gen_mipmap.c
@@ -27,27 +27,19 @@
#include "main/imports.h"
-#include "main/macros.h"
#include "main/mipmap.h"
#include "main/teximage.h"
#include "main/texformat.h"
-#include "shader/prog_instruction.h"
-
#include "pipe/p_context.h"
#include "pipe/p_defines.h"
#include "util/u_inlines.h"
#include "util/u_format.h"
#include "util/u_gen_mipmap.h"
-#include "util/u_math.h"
-
-#include "cso_cache/cso_cache.h"
-#include "cso_cache/cso_context.h"
#include "st_debug.h"
#include "st_context.h"
#include "st_gen_mipmap.h"
-#include "st_texture.h"
#include "st_cb_texture.h"
#include "st_inlines.h"
@@ -102,11 +94,48 @@ st_render_mipmap(struct st_context *st,
}
+/**
+ * Helper function to decompress an image. The result is a 32-bpp RGBA
+ * image with stride==width.
+ */
+static void
+decompress_image(enum pipe_format format,
+ const uint8_t *src, uint8_t *dst,
+ unsigned width, unsigned height)
+{
+ const struct util_format_description *desc = util_format_description(format);
+ const uint dst_stride = 4 * width;
+ const uint src_stride = util_format_get_stride(format, width);
+
+ desc->unpack_rgba_8unorm(dst, dst_stride, src, src_stride, width, height);
+}
+
+
+/**
+ * Helper function to compress an image. The source is a 32-bpp RGBA image
+ * with stride==width.
+ */
+static void
+compress_image(enum pipe_format format,
+ const uint8_t *src, uint8_t *dst,
+ unsigned width, unsigned height)
+{
+ const struct util_format_description *desc = util_format_description(format);
+ const uint dst_stride = util_format_get_stride(format, width);
+ const uint src_stride = 4 * width;
+
+ desc->pack_rgba_8unorm(dst, dst_stride, src, src_stride, width, height);
+}
+
+
+/**
+ * Software fallback for generate mipmap levels.
+ */
static void
fallback_generate_mipmap(GLcontext *ctx, GLenum target,
struct gl_texture_object *texObj)
{
- struct pipe_context *pipe = ctx->st->pipe;
+ struct pipe_context *pipe = st_context(ctx)->pipe;
struct pipe_resource *pt = st_get_texobj_resource(texObj);
const uint baseLevel = texObj->BaseLevel;
const uint lastLevel = pt->last_level;
@@ -114,17 +143,34 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
uint dstLevel;
GLenum datatype;
GLuint comps;
+ GLboolean compressed;
if (ST_DEBUG & DEBUG_FALLBACK)
debug_printf("%s: fallback processing\n", __FUNCTION__);
assert(target != GL_TEXTURE_3D); /* not done yet */
- _mesa_format_to_type_and_comps(texObj->Image[face][baseLevel]->TexFormat,
- &datatype, &comps);
+ compressed =
+ _mesa_is_format_compressed(texObj->Image[face][baseLevel]->TexFormat);
+
+ if (compressed) {
+ datatype = GL_UNSIGNED_BYTE;
+ comps = 4;
+ }
+ else {
+ _mesa_format_to_type_and_comps(texObj->Image[face][baseLevel]->TexFormat,
+ &datatype, &comps);
+ assert(comps > 0 && "bad texture format in fallback_generate_mipmap()");
+ }
for (dstLevel = baseLevel + 1; dstLevel <= lastLevel; dstLevel++) {
const uint srcLevel = dstLevel - 1;
+ const uint srcWidth = u_minify(pt->width0, srcLevel);
+ const uint srcHeight = u_minify(pt->height0, srcLevel);
+ const uint srcDepth = u_minify(pt->depth0, srcLevel);
+ const uint dstWidth = u_minify(pt->width0, dstLevel);
+ const uint dstHeight = u_minify(pt->height0, dstLevel);
+ const uint dstDepth = u_minify(pt->depth0, dstLevel);
struct pipe_transfer *srcTrans, *dstTrans;
const ubyte *srcData;
ubyte *dstData;
@@ -133,14 +179,13 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
srcTrans = st_cond_flush_get_tex_transfer(st_context(ctx), pt, face,
srcLevel, zslice,
PIPE_TRANSFER_READ, 0, 0,
- u_minify(pt->width0, srcLevel),
- u_minify(pt->height0, srcLevel));
+ srcWidth, srcHeight);
+
dstTrans = st_cond_flush_get_tex_transfer(st_context(ctx), pt, face,
dstLevel, zslice,
PIPE_TRANSFER_WRITE, 0, 0,
- u_minify(pt->width0, dstLevel),
- u_minify(pt->height0, dstLevel));
+ dstWidth, dstHeight);
srcData = (ubyte *) pipe_transfer_map(pipe, srcTrans);
dstData = (ubyte *) pipe_transfer_map(pipe, dstTrans);
@@ -148,18 +193,49 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
srcStride = srcTrans->stride / util_format_get_blocksize(srcTrans->resource->format);
dstStride = dstTrans->stride / util_format_get_blocksize(dstTrans->resource->format);
- _mesa_generate_mipmap_level(target, datatype, comps,
- 0 /*border*/,
- u_minify(pt->width0, srcLevel),
- u_minify(pt->height0, srcLevel),
- u_minify(pt->depth0, srcLevel),
- srcData,
- srcStride, /* stride in texels */
- u_minify(pt->width0, dstLevel),
- u_minify(pt->height0, dstLevel),
- u_minify(pt->depth0, dstLevel),
- dstData,
- dstStride); /* stride in texels */
+ if (compressed) {
+ const enum pipe_format format = pt->format;
+ const uint bw = util_format_get_blockwidth(format);
+ const uint bh = util_format_get_blockheight(format);
+ const uint srcWidth2 = align(srcWidth, bw);
+ const uint srcHeight2 = align(srcHeight, bh);
+ const uint dstWidth2 = align(dstWidth, bw);
+ const uint dstHeight2 = align(dstHeight, bh);
+ uint8_t *srcTemp, *dstTemp;
+
+ assert(comps == 4);
+
+ srcTemp = malloc(srcWidth2 * srcHeight2 * comps + 000);
+ dstTemp = malloc(dstWidth2 * dstHeight2 * comps + 000);
+
+ /* decompress the src image: srcData -> srcTemp */
+ decompress_image(format, srcData, srcTemp, srcWidth, srcHeight);
+
+ _mesa_generate_mipmap_level(target, datatype, comps,
+ 0 /*border*/,
+ srcWidth2, srcHeight2, srcDepth,
+ srcTemp,
+ srcWidth2, /* stride in texels */
+ dstWidth2, dstHeight2, dstDepth,
+ dstTemp,
+ dstWidth2); /* stride in texels */
+
+ /* compress the new image: dstTemp -> dstData */
+ compress_image(format, dstTemp, dstData, dstWidth2, dstHeight2);
+
+ free(srcTemp);
+ free(dstTemp);
+ }
+ else {
+ _mesa_generate_mipmap_level(target, datatype, comps,
+ 0 /*border*/,
+ srcWidth, srcHeight, srcDepth,
+ srcData,
+ srcStride, /* stride in texels */
+ dstWidth, dstHeight, dstDepth,
+ dstData,
+ dstStride); /* stride in texels */
+ }
pipe_transfer_unmap(pipe, srcTrans);
pipe_transfer_unmap(pipe, dstTrans);
@@ -174,7 +250,7 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
* Compute the expected number of mipmap levels in the texture given
* the width/height/depth of the base image and the GL_TEXTURE_BASE_LEVEL/
* GL_TEXTURE_MAX_LEVEL settings. This will tell us how many mipmap
- * level should be generated.
+ * levels should be generated.
*/
static GLuint
compute_num_levels(GLcontext *ctx,
@@ -207,11 +283,14 @@ compute_num_levels(GLcontext *ctx,
}
+/**
+ * Called via ctx->Driver.GenerateMipmap().
+ */
void
st_generate_mipmap(GLcontext *ctx, GLenum target,
struct gl_texture_object *texObj)
{
- struct st_context *st = ctx->st;
+ struct st_context *st = st_context(ctx);
struct st_texture_object *stObj = st_texture_object(texObj);
struct pipe_resource *pt = st_get_texobj_resource(texObj);
const uint baseLevel = texObj->BaseLevel;
@@ -263,10 +342,10 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
assert(lastLevel <= pt->last_level);
- /* Recall that the Mesa BaseLevel image is stored in the gallium
- * texture's level[0] position. So pass baseLevel=0 here.
+ /* Try to generate the mipmap by rendering/texturing. If that fails,
+ * use the software fallback.
*/
- if (!st_render_mipmap(st, target, stObj, 0, lastLevel)) {
+ if (!st_render_mipmap(st, target, stObj, baseLevel, lastLevel)) {
fallback_generate_mipmap(ctx, target, texObj);
}
@@ -298,7 +377,9 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
dstImage->TexFormat = srcImage->TexFormat;
- stImage = (struct st_texture_image *) dstImage;
+ stImage = st_texture_image(dstImage);
+ stImage->level = dstLevel;
+
pipe_resource_reference(&stImage->pt, pt);
}
}
diff --git a/src/mesa/state_tracker/st_gl_api.h b/src/mesa/state_tracker/st_gl_api.h
new file mode 100644
index 0000000000..52c3fa0b41
--- /dev/null
+++ b/src/mesa/state_tracker/st_gl_api.h
@@ -0,0 +1,9 @@
+
+#ifndef ST_GL_API_H
+#define ST_GL_API_H
+
+#include "state_tracker/st_api.h"
+
+struct st_api * st_gl_api_create(void);
+
+#endif
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
index 5cf17fe530..44d59d4476 100644
--- a/src/mesa/state_tracker/st_manager.c
+++ b/src/mesa/state_tracker/st_manager.c
@@ -26,7 +26,7 @@
* Chia-I Wu <olv@lunarg.com>
*/
-#include "state_tracker/st_api.h"
+#include "state_tracker/st_gl_api.h"
#include "pipe/p_context.h"
#include "pipe/p_screen.h"
@@ -692,7 +692,6 @@ st_api_get_proc_address(struct st_api *stapi, const char *procname)
static void
st_api_destroy(struct st_api *stapi)
{
- FREE(stapi);
}
/**
@@ -791,24 +790,22 @@ st_manager_add_color_renderbuffer(struct st_context *st, GLframebuffer *fb,
return TRUE;
}
+struct st_api st_gl_api = {
+ st_api_destroy,
+ st_api_get_proc_address,
+ st_api_is_visual_supported,
+ st_api_create_context,
+ st_api_make_current,
+ st_api_get_current,
+};
+
/**
- * Create an st_api to manage the state tracker.
+ * Return the st_api for this state tracker. This might either be GL, GLES1,
+ * GLES2 that mostly depends on the build and link options. But these
+ * functions remain the same either way.
*/
struct st_api *
-st_manager_create_api(void)
+st_gl_api_create(void)
{
- struct st_api *stapi;
-
- stapi = CALLOC_STRUCT(st_api);
- if (stapi) {
- stapi->destroy = st_api_destroy;
- stapi->get_proc_address = st_api_get_proc_address;
- stapi->is_visual_supported = st_api_is_visual_supported;
-
- stapi->create_context = st_api_create_context;
- stapi->make_current = st_api_make_current;
- stapi->get_current = st_api_get_current;
- }
-
- return stapi;
+ return &st_gl_api;
}
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index 6e8c446f78..772a2ee17c 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -217,6 +217,12 @@ st_translate_vertex_program(struct st_context *st,
num_outputs++;
}
+ if (ST_DEBUG & DEBUG_MESA) {
+ _mesa_print_program(&stvp->Base.Base);
+ _mesa_print_program_parameters(st->ctx, &stvp->Base.Base);
+ debug_printf("\n");
+ }
+
error =
st_translate_mesa_program(st->ctx,
TGSI_PROCESSOR_VERTEX,
@@ -246,11 +252,6 @@ st_translate_vertex_program(struct st_context *st,
vpv->driver_shader = pipe->create_vs_state(pipe, &vpv->tgsi);
- if ((ST_DEBUG & DEBUG_TGSI) && (ST_DEBUG & DEBUG_MESA)) {
- _mesa_print_program(&stvp->Base.Base);
- debug_printf("\n");
- }
-
if (ST_DEBUG & DEBUG_TGSI) {
tgsi_dump( vpv->tgsi.tokens, 0 );
debug_printf("\n");
@@ -423,6 +424,11 @@ st_translate_fragment_program(struct st_context *st,
if (ureg == NULL)
return;
+ if (ST_DEBUG & DEBUG_MESA) {
+ _mesa_print_program(&stfp->Base.Base);
+ _mesa_print_program_parameters(st->ctx, &stfp->Base.Base);
+ debug_printf("\n");
+ }
error =
st_translate_mesa_program(st->ctx,
@@ -445,11 +451,6 @@ st_translate_fragment_program(struct st_context *st,
ureg_destroy( ureg );
stfp->driver_shader = pipe->create_fs_state(pipe, &stfp->tgsi);
- if ((ST_DEBUG & DEBUG_TGSI) && (ST_DEBUG & DEBUG_MESA)) {
- _mesa_print_program(&stfp->Base.Base);
- debug_printf("\n");
- }
-
if (ST_DEBUG & DEBUG_TGSI) {
tgsi_dump( stfp->tgsi.tokens, 0/*TGSI_DUMP_VERBOSE*/ );
debug_printf("\n");
diff --git a/src/mesa/state_tracker/st_texture.c b/src/mesa/state_tracker/st_texture.c
index 70ba239d07..722f60e425 100644
--- a/src/mesa/state_tracker/st_texture.c
+++ b/src/mesa/state_tracker/st_texture.c
@@ -142,42 +142,6 @@ st_texture_match_image(const struct pipe_resource *pt,
}
-#if 000
-/* Although we use the image_offset[] array to store relative offsets
- * to cube faces, Mesa doesn't know anything about this and expects
- * each cube face to be treated as a separate image.
- *
- * These functions present that view to mesa:
- */
-const GLuint *
-st_texture_depth_offsets(struct pipe_resource *pt, GLuint level)
-{
- static const GLuint zero = 0;
-
- if (pt->target != PIPE_TEXTURE_3D || pt->level[level].nr_images == 1)
- return &zero;
- else
- return pt->level[level].image_offset;
-}
-
-
-/**
- * Return the offset to the given mipmap texture image within the
- * texture memory buffer, in bytes.
- */
-GLuint
-st_texture_image_offset(const struct pipe_resource * pt,
- GLuint face, GLuint level)
-{
- if (pt->target == PIPE_TEXTURE_CUBE)
- return (pt->level[level].level_offset +
- pt->level[level].image_offset[face] * pt->cpp);
- else
- return pt->level[level].level_offset;
-}
-#endif
-
-
/**
* Map a teximage in a mipmap texture.
* \param row_stride returns row stride in bytes
@@ -305,6 +269,9 @@ st_texture_image_copy(struct pipe_context *pipe,
struct pipe_surface *dst_surface;
GLuint i;
+ assert(src->width0 == dst->width0);
+ assert(src->height0 == dst->height0);
+
for (i = 0; i < depth; i++) {
GLuint srcLevel;
diff --git a/src/mesa/state_tracker/st_texture.h b/src/mesa/state_tracker/st_texture.h
index 416468478b..447f091db1 100644
--- a/src/mesa/state_tracker/st_texture.h
+++ b/src/mesa/state_tracker/st_texture.h
@@ -38,6 +38,9 @@
struct pipe_resource;
+/**
+ * Subclass of gl_texure_image.
+ */
struct st_texture_image
{
struct gl_texture_image base;
@@ -57,7 +60,9 @@ struct st_texture_image
};
-
+/**
+ * Subclass of gl_texure_object.
+ */
struct st_texture_object
{
struct gl_texture_object base; /* The "parent" object */
@@ -66,6 +71,9 @@ struct st_texture_object
*/
GLuint lastLevel;
+ /** The size of the level=0 mipmap image */
+ GLuint width0, height0, depth0;
+
/* On validation any active images held in main memory or in other
* textures will be copied to this texture and the old storage freed.
*/
@@ -76,8 +84,6 @@ struct st_texture_object
*/
struct pipe_sampler_view *sampler_view;
- GLboolean teximage_realloc;
-
/* True if there is/was a surface bound to this texture object. It helps
* track whether the texture object is surface based or not.
*/
@@ -185,18 +191,6 @@ extern const GLuint *
st_texture_depth_offsets(struct pipe_resource *pt, GLuint level);
-/* Return the linear offset of an image relative to the start of its region.
- */
-extern GLuint
-st_texture_image_offset(const struct pipe_resource *pt,
- GLuint face, GLuint level);
-
-extern GLuint
-st_texture_texel_offset(const struct pipe_resource * pt,
- GLuint face, GLuint level,
- GLuint col, GLuint row, GLuint img);
-
-
/* Upload an image into a texture
*/
extern void
diff --git a/src/mesa/x86-64/xform4.S b/src/mesa/x86-64/xform4.S
index 805969127d..e52a6118c3 100644
--- a/src/mesa/x86-64/xform4.S
+++ b/src/mesa/x86-64/xform4.S
@@ -30,6 +30,7 @@
.align 16
.globl _mesa_x86_64_cpuid
+.hidden _mesa_x86_64_cpuid
_mesa_x86_64_cpuid:
pushq %rbx
movl (%rdi), %eax
@@ -46,6 +47,7 @@ _mesa_x86_64_cpuid:
.align 16
.globl _mesa_x86_64_transform_points4_general
+.hidden _mesa_x86_64_transform_points4_general
_mesa_x86_64_transform_points4_general:
/*
* rdi = dest
@@ -121,6 +123,7 @@ p4_constants:
.text
.align 16
.globl _mesa_x86_64_transform_points4_3d
+.hidden _mesa_x86_64_transform_points4_3d
/*
* this is slower than _mesa_x86_64_transform_points4_general
* because it ensures that the last matrix row (or is it column?) is 0,0,0,1
@@ -192,6 +195,7 @@ p4_3d_done:
.align 16
.globl _mesa_x86_64_transform_points4_identity
+.hidden _mesa_x86_64_transform_points4_identity
_mesa_x86_64_transform_points4_identity:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -220,6 +224,7 @@ p4_identity_done:
.align 16
.globl _mesa_3dnow_transform_points4_3d_no_rot
+.hidden _mesa_3dnow_transform_points4_3d_no_rot
_mesa_3dnow_transform_points4_3d_no_rot:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -284,6 +289,7 @@ p4_3d_no_rot_done:
.align 16
.globl _mesa_3dnow_transform_points4_perspective
+.hidden _mesa_3dnow_transform_points4_perspective
_mesa_3dnow_transform_points4_perspective:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -350,6 +356,7 @@ p4_perspective_done:
.align 16
.globl _mesa_3dnow_transform_points4_2d_no_rot
+.hidden _mesa_3dnow_transform_points4_2d_no_rot
_mesa_3dnow_transform_points4_2d_no_rot:
movl V4F_COUNT(%rdx), %ecx /* count */
@@ -405,6 +412,7 @@ p4_2d_no_rot_done:
.align 16
.globl _mesa_3dnow_transform_points4_2d
+.hidden _mesa_3dnow_transform_points4_2d
_mesa_3dnow_transform_points4_2d:
movl V4F_COUNT(%rdx), %ecx /* count */