aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/xwininfo/config.rpath690
-rw-r--r--apps/xwininfo/configure.ac5
-rw-r--r--apps/xwininfo/xwininfo.c2
-rw-r--r--libX11/Makefile.am69
-rw-r--r--libX11/configure.ac17
-rw-r--r--libX11/docbook-gen-chunk.am102
-rw-r--r--libX11/docbook-gen.am96
-rw-r--r--libX11/nls/Makefile.am98
-rw-r--r--libX11/nls/compose-chart.pl389
-rw-r--r--libX11/nls/xmlrules.in59
-rw-r--r--libX11/specs/i18n/Makefile.am48
-rw-r--r--libX11/specs/libX11/AppA.xml4210
-rw-r--r--libX11/specs/libX11/AppC.xml68
-rw-r--r--libX11/specs/libX11/AppD.xml26
-rw-r--r--libX11/specs/libX11/CH03.xml85
-rw-r--r--libX11/specs/libX11/CH04.xml34
-rw-r--r--libX11/specs/libX11/CH05.xml14
-rw-r--r--libX11/specs/libX11/CH06.xml10
-rw-r--r--libX11/specs/libX11/CH07.xml93
-rw-r--r--libX11/specs/libX11/CH08.xml88
-rw-r--r--libX11/specs/libX11/CH09.xml52
-rw-r--r--libX11/specs/libX11/CH10.xml88
-rw-r--r--libX11/specs/libX11/CH11.xml132
-rw-r--r--libX11/specs/libX11/CH12.xml68
-rw-r--r--libX11/specs/libX11/CH13.xml332
-rw-r--r--libX11/specs/libX11/CH14.xml96
-rw-r--r--libX11/specs/libX11/CH15.xml51
-rw-r--r--libX11/specs/libX11/CH16.xml92
-rw-r--r--libX11/specs/libX11/credits.xml470
-rw-r--r--libXmu/doc/Xmu.xml16
-rw-r--r--libXmu/docbook.am4
-rw-r--r--libxcb/configure.ac2
-rw-r--r--libxcb/src/c_client.py12
-rw-r--r--libxcb/src/xcb_auth.c6
-rw-r--r--libxcb/src/xcb_util.c56
-rw-r--r--mesalib/.emacs-dirvars10
-rw-r--r--mesalib/Android.common.mk48
-rw-r--r--mesalib/Android.mk189
-rw-r--r--mesalib/Makefile1
-rw-r--r--mesalib/bin/mklib16
-rw-r--r--mesalib/common.py1
-rw-r--r--mesalib/configs/beos102
-rw-r--r--mesalib/configs/darwin1
-rw-r--r--mesalib/configs/default2
-rw-r--r--mesalib/configs/freebsd-dri5
-rw-r--r--mesalib/configs/linux-cell1
-rw-r--r--mesalib/configs/linux-dri3
-rw-r--r--mesalib/configs/linux-dri-debug2
-rw-r--r--mesalib/configs/linux-dri-ppc2
-rw-r--r--mesalib/configs/linux-dri-x86-646
-rw-r--r--mesalib/configs/linux-dri-xcb5
-rw-r--r--mesalib/configs/linux-fbdev16
-rw-r--r--mesalib/configs/linux-indirect2
-rw-r--r--mesalib/configure.ac99
-rw-r--r--mesalib/docs/GL3.txt2
-rw-r--r--mesalib/docs/README.BEOS136
-rw-r--r--mesalib/docs/autoconf.html7
-rw-r--r--mesalib/docs/contents.html211
-rw-r--r--mesalib/docs/devinfo.html33
-rw-r--r--mesalib/docs/dispatch.html4
-rw-r--r--mesalib/docs/download.html1
-rw-r--r--mesalib/docs/faq.html7
-rw-r--r--mesalib/docs/fbdev-dri.html343
-rw-r--r--mesalib/docs/glfbdev-driver.html111
-rw-r--r--mesalib/docs/install.html18
-rw-r--r--mesalib/docs/libGL.txt394
-rw-r--r--mesalib/docs/postprocess.html56
-rw-r--r--mesalib/docs/sourcetree.html2
-rw-r--r--mesalib/docs/subset.html2
-rw-r--r--mesalib/docs/systems.html8
-rw-r--r--mesalib/include/EGL/eglext.h14
-rw-r--r--mesalib/include/EGL/eglplatform.h9
-rw-r--r--mesalib/include/GL/internal/dri_interface.h3
-rw-r--r--mesalib/include/GL/osmesa.h8
-rw-r--r--mesalib/scons/crossmingw.py38
-rw-r--r--mesalib/scons/custom.py36
-rw-r--r--mesalib/scons/gallium.py12
-rw-r--r--mesalib/scons/llvm.py18
-rw-r--r--mesalib/scons/source_list.py123
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_blitter.c45
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_blitter.h679
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_math.h12
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.c46
-rw-r--r--mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.h17
-rw-r--r--mesalib/src/glsl/.dir-locals.el3
-rw-r--r--mesalib/src/glsl/Android.gen.mk98
-rw-r--r--mesalib/src/glsl/Android.mk171
-rw-r--r--mesalib/src/glsl/ast_function.cpp78
-rw-r--r--mesalib/src/glsl/ast_to_hir.cpp21
-rw-r--r--mesalib/src/glsl/glcpp/glcpp-parse.y4
-rw-r--r--mesalib/src/glsl/glsl_parser.yy4
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.cpp1
-rw-r--r--mesalib/src/glsl/glsl_parser_extras.h2
-rw-r--r--mesalib/src/glsl/ir.cpp20
-rw-r--r--mesalib/src/glsl/ir.h24
-rw-r--r--mesalib/src/glsl/ir_clone.cpp4
-rw-r--r--mesalib/src/glsl/ir_hv_accept.cpp9
-rw-r--r--mesalib/src/glsl/ir_print_visitor.cpp21
-rw-r--r--mesalib/src/glsl/ir_reader.cpp37
-rw-r--r--mesalib/src/glsl/ir_rvalue_visitor.cpp1
-rw-r--r--mesalib/src/glsl/ir_validate.cpp41
-rw-r--r--mesalib/src/glsl/linker.cpp2
-rw-r--r--mesalib/src/glsl/lower_if_to_cond_assign.cpp141
-rw-r--r--mesalib/src/glsl/lower_instructions.cpp4
-rw-r--r--mesalib/src/glsl/main.cpp1
-rw-r--r--mesalib/src/glsl/opt_tree_grafting.cpp1
-rw-r--r--mesalib/src/glsl/ralloc.c5
-rw-r--r--mesalib/src/glsl/standalone_scaffolding.cpp2
-rw-r--r--mesalib/src/mapi/glapi/SConscript5
-rw-r--r--mesalib/src/mapi/glapi/gen-es/Makefile91
-rw-r--r--mesalib/src/mapi/glapi/gen-es/base1_API.xml744
-rw-r--r--mesalib/src/mapi/glapi/gen-es/base2_API.xml533
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es1_API.xml1100
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es1_COMPAT.xml135
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es1_EXT.xml699
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es2_API.xml294
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es2_COMPAT.xml368
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es2_EXT.xml162
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es_COMPAT.xml2646
-rw-r--r--mesalib/src/mapi/glapi/gen-es/es_EXT.xml125
-rw-r--r--mesalib/src/mapi/glapi/gen-es/gl_compare.py354
-rw-r--r--mesalib/src/mapi/glapi/gen-es/gl_parse_header.py450
-rw-r--r--mesalib/src/mapi/glapi/gen/Makefile6
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_XML.py46
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_and_es_API.xml5
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_apitemp.py7
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_table.py20
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py2
-rw-r--r--mesalib/src/mapi/glapi/gen/gl_x86_asm.py538
-rw-r--r--mesalib/src/mapi/glapi/gen/glapi_gen.mk44
-rw-r--r--mesalib/src/mapi/glapi/gen/gles_api.py452
-rw-r--r--mesalib/src/mapi/glapi/gen/remap_helper.py18
-rw-r--r--mesalib/src/mapi/glapi/glapi_gentable.c7
-rw-r--r--mesalib/src/mapi/glapi/glapi_mapi_tmp.h11
-rw-r--r--mesalib/src/mapi/glapi/glapi_sparc.S1
-rw-r--r--mesalib/src/mapi/glapi/glapi_x86-64.S3
-rw-r--r--mesalib/src/mapi/glapi/glapi_x86.S3
-rw-r--r--mesalib/src/mapi/glapi/glapitemp.h1267
-rw-r--r--mesalib/src/mapi/mapi/mapi_abi.py435
-rw-r--r--mesalib/src/mapi/mapi/u_thread.c39
-rw-r--r--mesalib/src/mapi/mapi/u_thread.h58
-rw-r--r--mesalib/src/mesa/Android.gen.mk131
-rw-r--r--mesalib/src/mesa/Android.mk115
-rw-r--r--mesalib/src/mesa/Makefile20
-rw-r--r--mesalib/src/mesa/Makefile.mgw22
-rw-r--r--mesalib/src/mesa/SConscript25
-rw-r--r--mesalib/src/mesa/drivers/common/driverfuncs.c13
-rw-r--r--mesalib/src/mesa/drivers/common/meta.c263
-rw-r--r--mesalib/src/mesa/drivers/common/meta.h33
-rw-r--r--mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h150
-rw-r--r--mesalib/src/mesa/drivers/dri/common/mmx.h560
-rw-r--r--mesalib/src/mesa/drivers/dri/common/spantmp.h325
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlconfig.c2
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool.h2
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/options.h60
-rw-r--r--mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h30
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/ddlog.c192
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/ddlog.h109
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglcontext.c2212
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h281
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglglobals.c149
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglglobals.h198
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglmacros.h91
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglpf.c620
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglpf.h77
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglwgl.c2964
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dglwgl.h127
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dll_main.c817
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dllmain.h64
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c1204
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h327
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dxerr9.h77
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c344
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c77
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c1445
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c2104
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c263
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c443
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c1346
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gld_debug_clip.c39
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gld_debug_norm.c39
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gld_debug_xform.c41
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gld_dispatch.c73
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c279
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gld_driver.h90
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gldirect.rc43
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/gldlame8.c181
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/mesasw/colors.h520
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c1681
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/opengl32.def488
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/opengl32.ref495
-rw-r--r--mesalib/src/mesa/drivers/windows/gldirect/pixpack.h108
-rw-r--r--mesalib/src/mesa/drivers/windows/icd/icd.c347
-rw-r--r--mesalib/src/mesa/drivers/windows/icd/icdlist.h336
-rw-r--r--mesalib/src/mesa/drivers/windows/icd/mesa.def102
-rw-r--r--mesalib/src/mesa/main/api_arrayelt.c12
-rw-r--r--mesalib/src/mesa/main/api_validate.c6
-rw-r--r--mesalib/src/mesa/main/bufferobj.c84
-rw-r--r--mesalib/src/mesa/main/compiler.h3
-rw-r--r--mesalib/src/mesa/main/dd.h15
-rw-r--r--mesalib/src/mesa/main/debug.c1257
-rw-r--r--mesalib/src/mesa/main/dlist.c7
-rw-r--r--mesalib/src/mesa/main/drawtex.c270
-rw-r--r--mesalib/src/mesa/main/enums.c3549
-rw-r--r--mesalib/src/mesa/main/es_generator.py4
-rw-r--r--mesalib/src/mesa/main/extensions.c2009
-rw-r--r--mesalib/src/mesa/main/fbobject.c82
-rw-r--r--mesalib/src/mesa/main/imports.c3
-rw-r--r--mesalib/src/mesa/main/imports.h8
-rw-r--r--mesalib/src/mesa/main/mtypes.h9
-rw-r--r--mesalib/src/mesa/main/pbo.c33
-rw-r--r--mesalib/src/mesa/main/querymatrix.c424
-rw-r--r--mesalib/src/mesa/main/remap_helper.h3732
-rw-r--r--mesalib/src/mesa/main/shared.c2
-rw-r--r--mesalib/src/mesa/main/texgetimage.c14
-rw-r--r--mesalib/src/mesa/main/teximage.c2
-rw-r--r--mesalib/src/mesa/main/uniforms.c18
-rw-r--r--mesalib/src/mesa/program/ir_to_mesa.cpp179
-rw-r--r--mesalib/src/mesa/program/prog_execute.c10
-rw-r--r--mesalib/src/mesa/program/prog_opt_constant_fold.c451
-rw-r--r--mesalib/src/mesa/program/prog_optimize.c2
-rw-r--r--mesalib/src/mesa/program/prog_optimize.h97
-rw-r--r--mesalib/src/mesa/program/register_allocate.c21
-rw-r--r--mesalib/src/mesa/program/register_allocate.h2
-rw-r--r--mesalib/src/mesa/sources.mak1
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c51
-rw-r--r--mesalib/src/mesa/state_tracker/st_cb_texture.c30
-rw-r--r--mesalib/src/mesa/state_tracker/st_gen_mipmap.c1
-rw-r--r--mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp365
-rw-r--r--mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.h1
-rw-r--r--mesalib/src/mesa/state_tracker/st_texture.c4
-rw-r--r--mesalib/src/mesa/state_tracker/st_texture.h5
-rw-r--r--mesalib/src/mesa/swrast/s_aatritemp.h674
-rw-r--r--mesalib/src/mesa/swrast/s_context.c105
-rw-r--r--mesalib/src/mesa/swrast/s_stencil.c2491
-rw-r--r--mesalib/src/mesa/swrast/s_texcombine.c1506
-rw-r--r--mesalib/src/mesa/tnl/NOTES200
-rw-r--r--mesalib/src/mesa/tnl/t_draw.c39
-rw-r--r--mesalib/src/mesa/tnl/t_pipeline.c432
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_api.c38
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_array.c60
-rw-r--r--mesalib/src/mesa/vbo/vbo_exec_draw.c843
-rw-r--r--mesalib/src/mesa/vbo/vbo_rebase.c10
-rw-r--r--mesalib/src/mesa/vbo/vbo_save_api.c11
-rw-r--r--mesalib/src/mesa/vbo/vbo_save_draw.c14
-rw-r--r--mesalib/src/mesa/vbo/vbo_split.c337
-rw-r--r--mesalib/src/mesa/vbo/vbo_split_copy.c1254
-rw-r--r--pixman/pixman/Makefile.am258
-rw-r--r--pixman/pixman/pixman-arm-common.h2
-rw-r--r--pixman/pixman/pixman-arm-simd.c864
-rw-r--r--pixman/pixman/pixman-bits-image.c3044
-rw-r--r--pixman/pixman/pixman-fast-path.c2
-rw-r--r--pixman/pixman/pixman-inlines.h (renamed from pixman/pixman/pixman-fast-path.h)91
-rw-r--r--pixman/pixman/pixman-noop.c2
-rw-r--r--pixman/pixman/pixman-private.h7
-rw-r--r--pixman/pixman/pixman-region.c64
-rw-r--r--pixman/pixman/pixman-sse2.c2
-rw-r--r--pixman/pixman/pixman-utils.c12
-rw-r--r--pixman/test/Makefile.am2
-rw-r--r--pixman/test/Makefile.win325
-rw-r--r--pixman/test/lowlevel-blt-bench.c7
-rw-r--r--pixman/test/region-contains-test.c169
-rw-r--r--pixman/test/scaling-helpers-test.c2
-rw-r--r--pixman/test/utils.c11
-rw-r--r--pixman/test/utils.h16
-rw-r--r--xorg-server/configure.ac4
-rw-r--r--xorg-server/exa/exa_mixed.c23
-rw-r--r--xorg-server/fb/fbblt.c9
-rw-r--r--xorg-server/hw/xquartz/darwin.c4
-rw-r--r--xorg-server/xkeyboard-config/symbols/de1
270 files changed, 21775 insertions, 47696 deletions
diff --git a/apps/xwininfo/config.rpath b/apps/xwininfo/config.rpath
new file mode 100644
index 000000000..8bd7f5d72
--- /dev/null
+++ b/apps/xwininfo/config.rpath
@@ -0,0 +1,690 @@
+#! /bin/sh
+# Output a system dependent set of variables, describing how to set the
+# run time search path of shared libraries in an executable.
+#
+# Copyright 1996-2011 Free Software Foundation, Inc.
+# Taken from GNU libtool, 2001
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+#
+# This file is free software; the Free Software Foundation gives
+# unlimited permission to copy and/or distribute it, with or without
+# modifications, as long as this notice is preserved.
+#
+# The first argument passed to this file is the canonical host specification,
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld
+# should be set by the caller.
+#
+# The set of defined variables is at the end of this script.
+
+# Known limitations:
+# - On IRIX 6.5 with CC="cc", the run time search patch must not be longer
+# than 256 bytes, otherwise the compiler driver will dump core. The only
+# known workaround is to choose shorter directory names for the build
+# directory and/or the installation directory.
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+shrext=.so
+
+host="$1"
+host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
+host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
+host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
+
+# Code taken from libtool.m4's _LT_CC_BASENAME.
+
+for cc_temp in $CC""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'`
+
+# Code taken from libtool.m4's _LT_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ mingw* | cygwin* | pw32* | os2* | cegcc*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ case $cc_basename in
+ ecc*)
+ wl='-Wl,'
+ ;;
+ icc* | ifort*)
+ wl='-Wl,'
+ ;;
+ lf95*)
+ wl='-Wl,'
+ ;;
+ nagfor*)
+ wl='-Wl,-Wl,,'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ xl* | bgxl* | bgf* | mpixl*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ F* | *Sun*Fortran*)
+ wl=
+ ;;
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ newsos6)
+ ;;
+ *nto* | *qnx*)
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*)
+ wl='-Qoption ld '
+ ;;
+ *)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ wl='-Wl,'
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's _LT_LINKER_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32* | cegcc*)
+ # FIXME: the MSVC++ port hasn't been tested in a loooong time
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ if test "$GCC" != yes; then
+ with_gnu_ld=no
+ fi
+ ;;
+ interix*)
+ # we just hope/assume this is gcc and not c89 (= MSVC++)
+ with_gnu_ld=yes
+ ;;
+ openbsd*)
+ with_gnu_ld=no
+ ;;
+esac
+
+ld_shlibs=yes
+if test "$with_gnu_ld" = yes; then
+ # Set some defaults for GNU ld with shared library support. These
+ # are reset later if shared libraries are not supported. Putting them
+ # here allows them to be overridden if necessary.
+ # Unlike libtool, we use -rpath here, not --rpath, since the documented
+ # option of GNU ld is called -rpath, not --rpath.
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ case "$host_os" in
+ aix[3-9]*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ haiku*)
+ ;;
+ interix[3-9]*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ netbsd*)
+ ;;
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs=no
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ ;;
+ sunos4*)
+ hardcode_direct=yes
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ esac
+ if test "$ld_shlibs" = no; then
+ hardcode_libdir_flag_spec=
+ fi
+else
+ case "$host_os" in
+ aix3*)
+ # Note: this linker hardcodes the directories in LIBPATH if there
+ # are no directories specified by -L.
+ hardcode_minus_L=yes
+ if test "$GCC" = yes; then
+ # Neither direct hardcoding nor static linking is supported with a
+ # broken collect2.
+ hardcode_direct=unsupported
+ fi
+ ;;
+ aix[4-9]*)
+ if test "$host_cpu" = ia64; then
+ # On IA64, the linker does run time linking by default, so we don't
+ # have to do anything special.
+ aix_use_runtimelinking=no
+ else
+ aix_use_runtimelinking=no
+ # Test if we are trying to use run time linking or normal
+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we
+ # need to do runtime linking.
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
+ for ld_flag in $LDFLAGS; do
+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+ aix_use_runtimelinking=yes
+ break
+ fi
+ done
+ ;;
+ esac
+ fi
+ hardcode_direct=yes
+ hardcode_libdir_separator=':'
+ if test "$GCC" = yes; then
+ case $host_os in aix4.[012]|aix4.[012].*)
+ collect2name=`${CC} -print-prog-name=collect2`
+ if test -f "$collect2name" && \
+ strings "$collect2name" | grep resolve_lib_name >/dev/null
+ then
+ # We have reworked collect2
+ :
+ else
+ # We have old collect2
+ hardcode_direct=unsupported
+ hardcode_minus_L=yes
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_libdir_separator=
+ fi
+ ;;
+ esac
+ fi
+ # Begin _LT_AC_SYS_LIBPATH_AIX.
+ echo 'int main () { return 0; }' > conftest.c
+ ${CC} ${LDFLAGS} conftest.c -o conftest
+ aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+ fi
+ if test -z "$aix_libpath"; then
+ aix_libpath="/usr/lib:/lib"
+ fi
+ rm -f conftest.c conftest
+ # End _LT_AC_SYS_LIBPATH_AIX.
+ if test "$aix_use_runtimelinking" = yes; then
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ else
+ if test "$host_cpu" = ia64; then
+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
+ else
+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
+ fi
+ fi
+ ;;
+ amigaos*)
+ case "$host_cpu" in
+ powerpc)
+ ;;
+ m68k)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ esac
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ # When not using gcc, we currently assume that we are using
+ # Microsoft Visual C++.
+ # hardcode_libdir_flag_spec is actually meaningless, as there is
+ # no search path for DLLs.
+ hardcode_libdir_flag_spec=' '
+ libext=lib
+ ;;
+ darwin* | rhapsody*)
+ hardcode_direct=no
+ if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | dragonfly*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ hpux10*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ fi
+ ;;
+ hpux11*)
+ if test "$with_gnu_ld" = no; then
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct=no
+ ;;
+ *)
+ hardcode_direct=yes
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L=yes
+ ;;
+ esac
+ fi
+ ;;
+ irix5* | irix6* | nonstopux*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ netbsd*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ newsos6)
+ hardcode_direct=yes
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ *nto* | *qnx*)
+ ;;
+ openbsd*)
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ else
+ case "$host_os" in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ os2*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ ;;
+ osf3*)
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ ;;
+ osf4* | osf5*)
+ if test "$GCC" = yes; then
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ else
+ # Both cc and cxx compiler support -rpath directly
+ hardcode_libdir_flag_spec='-rpath $libdir'
+ fi
+ hardcode_libdir_separator=:
+ ;;
+ solaris*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ sunos4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ sysv4)
+ case $host_vendor in
+ sni)
+ hardcode_direct=yes # is this really true???
+ ;;
+ siemens)
+ hardcode_direct=no
+ ;;
+ motorola)
+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ ;;
+ sysv4.3*)
+ ;;
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ ld_shlibs=yes
+ fi
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ ;;
+ sysv5* | sco3.2v5* | sco5v6*)
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator=':'
+ ;;
+ uts4*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+fi
+
+# Check dynamic linker characteristics
+# Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER.
+# Unlike libtool.m4, here we don't care about _all_ names of the library, but
+# only about the one the linker finds when passed -lNAME. This is the last
+# element of library_names_spec in libtool.m4, or possibly two of them if the
+# linker has special search rules.
+library_names_spec= # the last element of library_names_spec in libtool.m4
+libname_spec='lib$name'
+case "$host_os" in
+ aix3*)
+ library_names_spec='$libname.a'
+ ;;
+ aix[4-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ amigaos*)
+ case "$host_cpu" in
+ powerpc*)
+ library_names_spec='$libname$shrext' ;;
+ m68k)
+ library_names_spec='$libname.a' ;;
+ esac
+ ;;
+ beos*)
+ library_names_spec='$libname$shrext'
+ ;;
+ bsdi[45]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ cygwin* | mingw* | pw32* | cegcc*)
+ shrext=.dll
+ library_names_spec='$libname.dll.a $libname.lib'
+ ;;
+ darwin* | rhapsody*)
+ shrext=.dylib
+ library_names_spec='$libname$shrext'
+ ;;
+ dgux*)
+ library_names_spec='$libname$shrext'
+ ;;
+ freebsd* | dragonfly*)
+ case "$host_os" in
+ freebsd[123]*)
+ library_names_spec='$libname$shrext$versuffix' ;;
+ *)
+ library_names_spec='$libname$shrext' ;;
+ esac
+ ;;
+ gnu*)
+ library_names_spec='$libname$shrext'
+ ;;
+ haiku*)
+ library_names_spec='$libname$shrext'
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ library_names_spec='$libname$shrext'
+ ;;
+ interix[3-9]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ library_names_spec='$libname$shrext'
+ case "$host_os" in
+ irix5* | nonstopux*)
+ libsuff= shlibsuff=
+ ;;
+ *)
+ case $LD in
+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;;
+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;;
+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;;
+ *) libsuff= shlibsuff= ;;
+ esac
+ ;;
+ esac
+ ;;
+ linux*oldld* | linux*aout* | linux*coff*)
+ ;;
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ knetbsd*-gnu)
+ library_names_spec='$libname$shrext'
+ ;;
+ netbsd*)
+ library_names_spec='$libname$shrext'
+ ;;
+ newsos6)
+ library_names_spec='$libname$shrext'
+ ;;
+ *nto* | *qnx*)
+ library_names_spec='$libname$shrext'
+ ;;
+ openbsd*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ os2*)
+ libname_spec='$name'
+ shrext=.dll
+ library_names_spec='$libname.a'
+ ;;
+ osf3* | osf4* | osf5*)
+ library_names_spec='$libname$shrext'
+ ;;
+ rdos*)
+ ;;
+ solaris*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sunos4*)
+ library_names_spec='$libname$shrext$versuffix'
+ ;;
+ sysv4 | sysv4.3*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv4*MP*)
+ library_names_spec='$libname$shrext'
+ ;;
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ library_names_spec='$libname$shrext'
+ ;;
+ tpf*)
+ library_names_spec='$libname$shrext'
+ ;;
+ uts4*)
+ library_names_spec='$libname$shrext'
+ ;;
+esac
+
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"`
+shlibext=`echo "$shrext" | sed -e 's,^\.,,'`
+escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"`
+
+LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF
+
+# How to pass a linker flag through the compiler.
+wl="$escaped_wl"
+
+# Static library suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally "so").
+shlibext="$shlibext"
+
+# Format of library name prefix.
+libname_spec="$escaped_libname_spec"
+
+# Library names that the linker finds when passed -lNAME.
+library_names_spec="$escaped_library_names_spec"
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec"
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator="$hardcode_libdir_separator"
+
+# Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct="$hardcode_direct"
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L="$hardcode_minus_L"
+
+EOF
diff --git a/apps/xwininfo/configure.ac b/apps/xwininfo/configure.ac
index f9ffd1dd7..53bccfecc 100644
--- a/apps/xwininfo/configure.ac
+++ b/apps/xwininfo/configure.ac
@@ -45,9 +45,7 @@ if test "x$ac_cv_func_strnlen_working" = xyes; then
AC_DEFINE(HAVE_STRNLEN, 1, [Define to 1 if you have a working strnlen function.])
fi
-# Check for iconv in libc, then libiconv
-AC_SEARCH_LIBS([iconv], [iconv], [AC_DEFINE([HAVE_ICONV], 1,
- [Define to 1 if you have the iconv() function])])
+AM_ICONV
# Allow using xcb-icccm, but don't make it the default while the API is
# still being changed.
@@ -70,6 +68,7 @@ PKG_CHECK_MODULES(XWININFO, [xcb >= 1.6] xcb-shape ${xcb_icccm_pc})
# and libX11 headers for cursorfont.h
PKG_CHECK_MODULES(XLIB, x11 [xproto >= 7.0.17])
XWININFO_CFLAGS="${XWININFO_CFLAGS} ${XLIB_CFLAGS}"
+XWININFO_LIBS="${XWININFO_LIBS} ${LIBICONV}"
AC_CONFIG_FILES([
Makefile
diff --git a/apps/xwininfo/xwininfo.c b/apps/xwininfo/xwininfo.c
index bb9469956..b1dfb0dc7 100644
--- a/apps/xwininfo/xwininfo.c
+++ b/apps/xwininfo/xwininfo.c
@@ -1911,7 +1911,7 @@ print_utf8 (const char *prefix, char *u8str, size_t length, const char *suffix)
if (iconv_from_utf8 != (iconv_t) -1) {
Bool done = True;
- char *inp = u8str;
+ ICONV_CONST char *inp = u8str;
char convbuf[BUFSIZ];
int convres;
diff --git a/libX11/Makefile.am b/libX11/Makefile.am
index 7a0c871f0..39e4bd947 100644
--- a/libX11/Makefile.am
+++ b/libX11/Makefile.am
@@ -1,34 +1,35 @@
-if XLIB_LOADABLE_I18N
-ORDER=src modules
-else
-ORDER=modules src
-endif
-SUBDIRS=include $(ORDER) nls man specs
-
-ACLOCAL_AMFLAGS = -I m4
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = x11.pc x11-xcb.pc
-
-MAINTAINERCLEANFILES = ChangeLog INSTALL
-
-.PHONY: ChangeLog INSTALL
-
-INSTALL:
- $(INSTALL_CMD)
-
-ChangeLog:
- $(CHANGELOG_CMD)
-
-dist-hook: ChangeLog INSTALL
-
-if LINT
-# Check source code with tools like lint & sparse
-LINT_SUBDIRS=src # modules
-
-lint:
- @for subdir in $(LINT_SUBDIRS) ; do \
- echo "Making $@ in $$subdir"; \
- (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) lint) ; \
- done
-endif LINT
+if XLIB_LOADABLE_I18N
+ORDER=src modules
+else
+ORDER=modules src
+endif
+# Order: nls before specs
+SUBDIRS=include $(ORDER) nls man specs
+
+ACLOCAL_AMFLAGS = -I m4
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = x11.pc x11-xcb.pc
+
+MAINTAINERCLEANFILES = ChangeLog INSTALL
+
+.PHONY: ChangeLog INSTALL
+
+INSTALL:
+ $(INSTALL_CMD)
+
+ChangeLog:
+ $(CHANGELOG_CMD)
+
+dist-hook: ChangeLog INSTALL
+
+if LINT
+# Check source code with tools like lint & sparse
+LINT_SUBDIRS=src # modules
+
+lint:
+ @for subdir in $(LINT_SUBDIRS) ; do \
+ echo "Making $@ in $$subdir"; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) lint) ; \
+ done
+endif LINT
diff --git a/libX11/configure.ac b/libX11/configure.ac
index e842bf3ec..a0af80baa 100644
--- a/libX11/configure.ac
+++ b/libX11/configure.ac
@@ -29,7 +29,7 @@ XORG_ENABLE_SPECS
XORG_WITH_XMLTO(0.0.22)
XORG_WITH_FOP([],[no])
XORG_WITH_XSLTPROC
-XORG_CHECK_SGML_DOCTOOLS(1.8)
+XORG_CHECK_SGML_DOCTOOLS(1.9)
XORG_PROG_RAWCPP
XORG_WITH_PERL
@@ -421,6 +421,20 @@ X11_LOCALEDIR="${X11_LOCALEDATADIR}"
AX_DEFINE_DIR(XLOCALEDIR, X11_LOCALEDIR, [Location of libX11 locale data])
AC_SUBST(X11_LOCALEDIR)
+locales="\
+ am_ET.UTF-8 armscii-8 C el_GR.UTF-8 en_US.UTF-8 fi_FI.UTF-8 \
+ georgian-academy georgian-ps ibm-cp1133 iscii-dev isiri-3342 \
+ iso8859-1 iso8859-10 iso8859-11 iso8859-13 iso8859-14 iso8859-15 \
+ iso8859-2 iso8859-3 iso8859-4 iso8859-5 iso8859-6 iso8859-7 \
+ iso8859-8 iso8859-9 iso8859-9e ja ja.JIS ja_JP.UTF-8\
+ ja.S90 ja.SJIS ja.U90 ko koi8-c koi8-r \
+ koi8-u ko_KR.UTF-8 microsoft-cp1251 microsoft-cp1255 \
+ microsoft-cp1256 mulelao-1 nokhchi-1 pt_BR.UTF-8 ru_RU.UTF-8 \
+ tatar-cyr th_TH th_TH.UTF-8 tscii-0 vi_VN.tcvn vi_VN.viscii \
+ zh_CN zh_CN.gb18030 zh_CN.gbk zh_CN.UTF-8 zh_HK.big5 \
+ zh_HK.big5hkscs zh_HK.UTF-8 zh_TW zh_TW.big5 zh_TW.UTF-8"
+AC_SUBST(locales)
+
XKEYSYMDB="${X11_DATADIR}/XKeysymDB"
AX_DEFINE_DIR(XKEYSYMDB, XKEYSYMDB, [Location of keysym database])
@@ -451,6 +465,7 @@ AC_CONFIG_FILES([Makefile
nls/Makefile
specs/Makefile
specs/i18n/Makefile
+ specs/i18n/compose/Makefile
specs/i18n/framework/Makefile
specs/i18n/localedb/Makefile
specs/i18n/trans/Makefile
diff --git a/libX11/docbook-gen-chunk.am b/libX11/docbook-gen-chunk.am
new file mode 100644
index 000000000..46d485ff4
--- /dev/null
+++ b/libX11/docbook-gen-chunk.am
@@ -0,0 +1,102 @@
+#
+# Generate output formats for a single DocBook/XML with/without chapters
+# This version of docbook.am handles cases where XML source is generated
+# and the html to be produced must be in chunks, one per chapter.
+# The generated source must be cleaned, installed but not distributed
+#
+# Variables set by the calling Makefile:
+# shelfdir: the location where the docs/specs are installed. Typically $(docdir)
+# docbook: the main DocBook/XML file, no chapters, appendix or image files
+# chapters: all files pulled in by an XInclude statement and images.
+#
+
+#
+# This makefile is intended for Users Documentation and Functional Specifications.
+# Do not use for Developer Documentation which is not installed and does not require olink.
+# Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393
+# for an explanation on documents classification.
+#
+
+# DocBook/XML generated output formats to be installed
+shelf_DATA = $(chapters) $(docbook)
+
+if HAVE_XMLTO
+#
+# Generate DocBook/XML output formats with or without stylesheets
+#
+
+# Stylesheets are available if the package xorg-sgml-doctools is installed
+if HAVE_STYLESHEETS
+
+# The location where all cross reference databases are installed
+sgmldbsdir = $(XORG_SGML_PATH)/X11/dbs
+masterdb = "$(sgmldbsdir)/masterdb$(suffix $@).xml"
+XMLTO_FLAGS = \
+ --searchpath "$(XORG_SGML_PATH)/X11" \
+ --stringparam target.database.document=$(masterdb) \
+ --stringparam current.docid="$(<:.xml=)" \
+ --stringparam collect.xref.targets="no"
+
+XMLTO_XHTML_FLAGS = \
+ -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl \
+ --stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css
+
+XMLTO_CHUNK_FLAGS = \
+ -x $(STYLESHEET_SRCDIR)/xorg-chunk.xsl \
+ --stringparam root.filename="$(<:.xml=)" \
+ --stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css
+
+XMLTO_FO_FLAGS = \
+ -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl
+endif HAVE_STYLESHEETS
+
+shelf_DATA += $(docbook:.xml=.html) $(chapters:.xml=.html)
+%.html: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_CHUNK_FLAGS) xhtml $<
+
+if HAVE_FOP
+shelf_DATA += $(docbook:.xml=.pdf) $(docbook:.xml=.ps)
+%.pdf: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop pdf $<
+%.ps: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop ps $<
+endif HAVE_FOP
+
+if HAVE_XMLTO_TEXT
+shelf_DATA += $(docbook:.xml=.txt)
+%.txt: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_XHTML_FLAGS) txt $<
+endif HAVE_XMLTO_TEXT
+
+#
+# Generate documents cross-reference target databases
+#
+
+# This is only possible if the xorg-sgml-doctools package is installed
+if HAVE_STYLESHEETS
+if HAVE_XSLTPROC
+
+# DocBook/XML generated document cross-reference database
+shelf_DATA += $(docbook:.xml=.html.db) $(docbook:.xml=.fo.db)
+
+# Generate DocBook/XML document cross-reference database
+# Flags for the XSL Transformation processor generating xref target databases
+XSLTPROC_FLAGS = \
+ --path "$(XORG_SGML_PATH)/X11" \
+ --stringparam targets.filename "$@" \
+ --stringparam collect.xref.targets "only" \
+ --nonet --xinclude
+
+%.html.db: %.xml $(chapters)
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \
+ http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl $<
+
+%.fo.db: %.xml $(chapters)
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \
+ http://docbook.sourceforge.net/release/xsl/current/xhtml/chunk.xsl $<
+
+endif HAVE_XSLTPROC
+endif HAVE_STYLESHEETS
+endif HAVE_XMLTO
+
+CLEANFILES = $(shelf_DATA)
diff --git a/libX11/docbook-gen.am b/libX11/docbook-gen.am
new file mode 100644
index 000000000..292627ea4
--- /dev/null
+++ b/libX11/docbook-gen.am
@@ -0,0 +1,96 @@
+#
+# Generate output formats for a single DocBook/XML with/without chapters
+# This version of docbook.am handles cases where XML source is generated
+# The generated source must be cleaned, installed but not distributed
+#
+# Variables set by the calling Makefile:
+# shelfdir: the location where the docs/specs are installed. Typically $(docdir)
+# docbook: the main DocBook/XML file, no chapters, appendix or image files
+# chapters: all files pulled in by an XInclude statement and images.
+#
+
+#
+# This makefile is intended for Users Documentation and Functional Specifications.
+# Do not use for Developer Documentation which is not installed and does not require olink.
+# Refer to http://www.x.org/releases/X11R7.6/doc/xorg-docs/ReleaseNotes.html#id2584393
+# for an explanation on documents classification.
+#
+
+# DocBook/XML generated output formats to be installed
+shelf_DATA = $(chapters) $(docbook)
+
+if HAVE_XMLTO
+#
+# Generate DocBook/XML output formats with or without stylesheets
+#
+
+# Stylesheets are available if the package xorg-sgml-doctools is installed
+if HAVE_STYLESHEETS
+
+# The location where all cross reference databases are installed
+sgmldbsdir = $(XORG_SGML_PATH)/X11/dbs
+masterdb = "$(sgmldbsdir)/masterdb$(suffix $@).xml"
+XMLTO_FLAGS = \
+ --searchpath "$(XORG_SGML_PATH)/X11" \
+ --stringparam target.database.document=$(masterdb) \
+ --stringparam current.docid="$(<:.xml=)" \
+ --stringparam collect.xref.targets="no"
+
+XMLTO_XHTML_FLAGS = \
+ -x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl \
+ --stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css
+
+XMLTO_FO_FLAGS = \
+ -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl
+endif HAVE_STYLESHEETS
+
+shelf_DATA += $(docbook:.xml=.html)
+%.html: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_XHTML_FLAGS) xhtml-nochunks $<
+
+if HAVE_FOP
+shelf_DATA += $(docbook:.xml=.pdf) $(docbook:.xml=.ps)
+%.pdf: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop pdf $<
+%.ps: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_FO_FLAGS) --with-fop ps $<
+endif HAVE_FOP
+
+if HAVE_XMLTO_TEXT
+shelf_DATA += $(docbook:.xml=.txt)
+%.txt: %.xml $(chapters)
+ $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) $(XMLTO_XHTML_FLAGS) txt $<
+endif HAVE_XMLTO_TEXT
+
+#
+# Generate documents cross-reference target databases
+#
+
+# This is only possible if the xorg-sgml-doctools package is installed
+if HAVE_STYLESHEETS
+if HAVE_XSLTPROC
+
+# DocBook/XML generated document cross-reference database
+shelf_DATA += $(docbook:.xml=.html.db) $(docbook:.xml=.fo.db)
+
+# Generate DocBook/XML document cross-reference database
+# Flags for the XSL Transformation processor generating xref target databases
+XSLTPROC_FLAGS = \
+ --path "$(XORG_SGML_PATH)/X11" \
+ --stringparam targets.filename "$@" \
+ --stringparam collect.xref.targets "only" \
+ --nonet --xinclude
+
+%.html.db: %.xml $(chapters)
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \
+ http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl $<
+
+%.fo.db: %.xml $(chapters)
+ $(AM_V_GEN)$(XSLTPROC) $(XSLTPROC_FLAGS) \
+ http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl $<
+
+endif HAVE_XSLTPROC
+endif HAVE_STYLESHEETS
+endif HAVE_XMLTO
+
+CLEANFILES = $(shelf_DATA)
diff --git a/libX11/nls/Makefile.am b/libX11/nls/Makefile.am
index cabaf40e1..7dc43088c 100644
--- a/libX11/nls/Makefile.am
+++ b/libX11/nls/Makefile.am
@@ -1,14 +1,10 @@
x11localedir = $(X11_LOCALEDATADIR)
-specdir = $(docdir)/Compose
CLEANFILES =
-XMLTO_FLAGS =
SUFFIXES =
-include $(top_srcdir)/nls/xmlrules.in
-
EXTRA_DIST = locale.alias.pre compose.dir.pre locale.dir.pre \
- compose-check.pl compose-chart.pl
+ compose-check.pl
x11locale_DATA = locale.alias locale.dir compose.dir
@@ -18,68 +14,6 @@ CLEANFILES += \
locale.dir locale.dir.l1 locale.dir.l2 \
XLC_LOCALE
-locales = \
- am_ET.UTF-8 \
- armscii-8 \
- C \
- el_GR.UTF-8 \
- en_US.UTF-8 \
- fi_FI.UTF-8 \
- georgian-academy \
- georgian-ps \
- ibm-cp1133 \
- iscii-dev \
- isiri-3342 \
- iso8859-1 \
- iso8859-10 \
- iso8859-11 \
- iso8859-13 \
- iso8859-14 \
- iso8859-15 \
- iso8859-2 \
- iso8859-3 \
- iso8859-4 \
- iso8859-5 \
- iso8859-6 \
- iso8859-7 \
- iso8859-8 \
- iso8859-9 \
- iso8859-9e \
- ja \
- ja.JIS \
- ja_JP.UTF-8 \
- ja.S90 \
- ja.SJIS \
- ja.U90 \
- ko \
- koi8-c \
- koi8-r \
- koi8-u \
- ko_KR.UTF-8 \
- microsoft-cp1251 \
- microsoft-cp1255 \
- microsoft-cp1256 \
- mulelao-1 \
- nokhchi-1 \
- pt_BR.UTF-8 \
- ru_RU.UTF-8 \
- tatar-cyr \
- th_TH \
- th_TH.UTF-8 \
- tscii-0 \
- vi_VN.tcvn \
- vi_VN.viscii \
- zh_CN \
- zh_CN.gb18030 \
- zh_CN.gbk \
- zh_CN.UTF-8 \
- zh_HK.big5 \
- zh_HK.big5hkscs \
- zh_HK.UTF-8 \
- zh_TW \
- zh_TW.big5 \
- zh_TW.UTF-8
-
include $(top_srcdir)/cpprules.in
# Global data files
@@ -103,16 +37,8 @@ locale.dir: locale.dir.pre
cat locale.dir.l2 locale.dir.l1 > locale.dir
if HAVE_PERL
-doc_sources = Compose/index.xml
-
-Compose/index.xml:
- @$(MKDIR_P) $(@D)
- $(AM_V_GEN)$(PERL) $(srcdir)/compose-chart.pl \
- --index --output="$@" $(locales)
-
-clean-local: clean-Compose-dir
-clean-Compose-dir:
- -rm -rf Compose
+TESTS_ENVIRONMENT = $(PERL)
+TESTS = $(srcdir)/compose-check.pl
endif HAVE_PERL
@@ -124,21 +50,3 @@ nobase_x11locale_DATA = $(locales:%=%/XLC_LOCALE) $(locales:%=%/Compose)
EXTRA_DIST += $(nobase_x11locale_DATA:%=%.pre)
CLEANFILES += $(nobase_x11locale_DATA)
-if HAVE_PERL
-TESTS_ENVIRONMENT = $(PERL)
-TESTS = $(srcdir)/compose-check.pl
-
-COMPOSE_CHARTS = $(locales:%=%/Compose.xml)
-doc_sources += $(locales:%=Compose/%.xml)
-CLEANFILES += $(COMPOSE_CHARTS) $(doc_sources)
-
-XMLTO_FLAGS += -o $(@D)
-
-%/Compose.xml: %/Compose
- $(AM_V_GEN)$(PERL) $(srcdir)/compose-chart.pl \
- --locale="$(@D)" --output="$@" $<
-
-Compose/%.xml: %/Compose.xml
- $(AM_V_GEN)cp $< $@
-
-endif HAVE_PERL
diff --git a/libX11/nls/compose-chart.pl b/libX11/nls/compose-chart.pl
deleted file mode 100644
index c38ae8320..000000000
--- a/libX11/nls/compose-chart.pl
+++ /dev/null
@@ -1,389 +0,0 @@
-#! /usr/bin/perl
-#
-# Copyright 2009, 2010, Oracle and/or its affiliates. All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE 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.
-#
-
-#
-# Make a DocBook chart showing compose combinations for a locale
-#
-# See perldoc at end (or run with --help or --man options) for details
-# of command-line options.
-#
-
-# Compose file grammar is defined in modules/im/ximcp/imLcPrs.c
-
-use strict;
-use warnings;
-use Getopt::Long;
-use Pod::Usage;
-
-my $error_count = 0;
-
-my $charset;
-my $locale_name;
-my $output_filename = '-';
-my $man = 0;
-my $help = 0;
-my $make_index = 0;
-
-GetOptions ('charset:s' => \$charset,
- 'locale=s' => \$locale_name,
- 'output=s' => \$output_filename,
- 'index' => \$make_index,
- 'help|?' => \$help,
- 'man' => \$man)
- or pod2usage(2);
-pod2usage(1) if $help;
-pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-
-if (!defined($charset) || ($charset eq "")) {
- if (defined($locale_name)) {
- my $guessed_charset = $locale_name;
- $guessed_charset =~ s{^.*\.}{};
- if ($guessed_charset =~ m{^(utf-8|gbk|gb18030)$}i) {
- $charset = $1;
- } elsif ($guessed_charset =~ m{iso8859-(\d+)}i) {
- $charset = "iso-8859-$1";
- } elsif ($guessed_charset =~ m{^microsoft-cp(125\d)$}) {
- $charset = "windows-$1";
- }
- }
- if (!defined($charset) || ($charset eq "")) {
- $charset = "utf-8";
- }
-}
-
-if ($make_index) {
- # Print Docbook output
- open my $OUTPUT, '>', $output_filename
- or die "Could not create $output_filename: $!";
-
- print $OUTPUT
- join ("\n",
- qq(<?xml version="1.0" encoding="$charset" ?>),
- q(<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"),
- q( "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">),
- q(<article id="compose-index">),
- q(<simplesect>),
- q(<title>Xlib Compose Key Charts</title>),
- q(<simplelist type='horiz' columns='3'>),
- ( map { qq(<member><ulink url="$_.html">$_</ulink></member>) }
- @ARGV ),
- q(</simplelist>),
- q(</simplesect>),
- q(</article>),
- "\n"
- );
-
- close $OUTPUT or die "Couldn't write $output_filename: $!";
-
- exit(0);
-}
-
-foreach my $a (@ARGV) {
- $error_count += make_compose_chart($a);
-}
-
-exit($error_count);
-
-sub make_compose_chart {
- my ($filename) = @_;
- my $errors = 0;
-
- my @compose_table = ();
- my @included_files = ();
-
- my $line = 0;
- my $pre_file = ($filename =~ m{\.pre$}) ? 1 : 0;
- my $in_c_comment = 0;
- my $in_comment = 0;
- my $keyseq_count = 0;
-
- open my $COMPOSE, '<', $filename or die "Could not open $filename: $!";
-
- COMPOSE_LINE:
- while (my $cl = <$COMPOSE>) {
- $line++;
- chomp($cl);
- my $original_line = $cl;
-
- # Special handling for changes cpp makes to .pre files
- if ($pre_file == 1) {
- if ($in_c_comment) { # Look for end of multi-line C comment
- if ($cl =~ m{\*/(.*)$}) {
- $cl = $1;
- $in_c_comment = 0;
- } else {
- next;
- }
- }
- $cl =~ s{/\*.\**/}{}; # Remove single line C comments
- if ($cl =~ m{^(.*)/\*}) { # Start of a multi-line C comment
- $cl = $1;
- $in_c_comment = 1;
- }
- $cl =~ s{^\s*XCOMM}{#}; # Translate pre-processing comments
- }
-
- chomp($cl);
-
- if ($cl =~ m{^\s*#\s*(.*)$}) { # Comment only lines
- # Combine commment blocks
- my $comment = $1;
-
- if ($in_comment) {
- my $prev_comment = pop @compose_table;
- $comment = join(' ', $prev_comment->{-comment}, $comment);
- } else {
- $in_comment = 1;
- }
-
- push @compose_table, { -type => 'comment', -comment => $comment };
- next COMPOSE_LINE;
- }
-
- $in_comment = 0;
-
- if ($cl =~ m{^\s*$}) { # Skip blank lines
- next COMPOSE_LINE;
- }
- elsif ($cl =~ m{^(STATE\s+|END_STATE)}) {
- # Sun extension to compose file syntax
- next COMPOSE_LINE;
- }
- elsif ($cl =~ m{^([^:]+)\s*:\s*(.+)$}) {
- my ($seq, $action) = ($1, $2);
- $seq =~ s{\s+$}{};
-
- my @keys = grep { $_ !~ m/^\s*$/ } split /[\s\<\>]+/, $seq;
-
- push @compose_table, {
- -type => 'keyseq',
- -keys => [ @keys ],
- -action => $action
- };
- $keyseq_count++;
- next COMPOSE_LINE;
- } elsif ($cl =~ m{^(STATE_TYPE:|\@StartDeadKeyMap|\@EndDeadKeyMap)}) {
- # ignore
- next COMPOSE_LINE;
- } elsif ($cl =~ m{^include "(.*)"}) {
- my $incpath = $1;
- $incpath =~ s{^X11_LOCALEDATADIR/(.*)/Compose}{the $1 compose table};
-
- push @included_files, $incpath;
- next COMPOSE_LINE;
- } else {
- print STDERR ('Unrecognized pattern in ', $filename,
- ' on line #', $line, ":\n ", $cl, "\n");
- }
- }
- close $COMPOSE;
-
- if ($errors > 0) {
- return $errors;
- }
-
- # Print Docbook output
- open my $OUTPUT, '>', $output_filename
- or die "Could not create $output_filename: $!";
-
- print $OUTPUT
- join ("\n",
- qq(<?xml version="1.0" encoding="$charset" ?>),
- q(<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"),
- q( "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">),
- qq(<article id="$locale_name">),
- q(<simplesect>),
- qq(<title>Xlib Compose Keys for $locale_name</title>),
- q(<para>Applications using Xlib input handling should recognize),
- q( these compose key sequences in locales using the),
- qq( $locale_name compose table.</para>),
- "\n"
- );
-
- if (@included_files) {
- print $OUTPUT
- q(<para>This compose table includes the non-conflicting),
- q( entries from: ),
- join(',', @included_files),
- q(. Those entries are not shown here - see those charts for the),
- q( included key sequences.</para>),
- "\n";
- }
-
- my @pretable_comments = ();
-
- if ($keyseq_count == 0) {
- @pretable_comments = @compose_table;
- } elsif ($compose_table[0]->{-type} eq 'comment') {
- push @pretable_comments, shift @compose_table;
- }
-
- foreach my $comment_ref (@pretable_comments) {
- print $OUTPUT
- qq(<para>), xml_escape($comment_ref->{-comment}), qq(</para>\n);
- }
-
- if ($keyseq_count > 0) {
- start_table($OUTPUT);
- my $row_count = 0;
-
- foreach my $cr (@compose_table) {
-
- if ($row_count++ > 750) {
- # Break tables every 750 rows to avoid overflowing
- # xmlto/xsltproc limits on the largest tables
- end_table($OUTPUT);
- start_table($OUTPUT);
- $row_count = 0;
- }
-
- if ($cr->{-type} eq 'comment') {
- print $OUTPUT
- qq(<row><entry namest='seq' nameend='action'>),
- xml_escape($cr->{-comment}), qq(</entry></row>\n);
- } elsif ($cr->{-type} eq 'keyseq') {
- my $action = join(" ", xml_escape($cr->{-action}));
- if ($action =~ m{^\s*"\\([0-7]+)"}) {
- my $char = oct($1);
- if ($char >= 32) {
- $action =~ s{^\s*"\\[0-7]+"}{"&#$char;"};
- }
- }
- $action =~ s{^\s*"(.+)"}{"$1"};
-
- print $OUTPUT
- qq(<row><entry>),
- qq(<keycombo action='seq'>),
- (map { qq(<keysym>$_</keysym>) } xml_escape(@{$cr->{-keys}})),
- qq(</keycombo>),
- qq(</entry><entry>),
- $action,
- qq(</entry></row>\n);
- }
- }
-
- end_table($OUTPUT);
- } else {
- print $OUTPUT
- qq(<para><emphasis>),
- qq(This compose table defines no sequences of its own.),
- qq(</emphasis></para>\n);
- }
- print $OUTPUT "</simplesect>\n</article>\n";
-
- close $OUTPUT or die "Couldn't write $output_filename: $!";
-
- return $errors;
-}
-
-sub xml_escape {
- my @output;
-
- foreach my $l (@_) {
- $l =~ s{\&}{&amp;}g;
- $l =~ s{\<}{&lt;}g;
- $l =~ s{\>}{&gt;}g;
- push @output, $l;
- }
- return @output;
-}
-
-sub start_table {
- my ($OUTPUT) = @_;
-
- print $OUTPUT
- join("\n",
- qq(<table><title>Compose Key Sequences for $locale_name</title>),
- qq(<tgroup cols='2'>),
- qq( <colspec colname='seq' /><colspec colname='action' />),
- qq( <thead><row>),
- qq( <entry>Key Sequence</entry><entry>Action</entry>),
- qq( </row></thead>),
- qq( <tbody>\n),
- );
-}
-
-sub end_table {
- my ($OUTPUT) = @_;
-
- print $OUTPUT "</tbody>\n</tgroup>\n</table>\n";
-}
-
-__END__
-
-=head1 NAME
-
-compose-chart - Make DocBook/XML charts of compose table entries
-
-=head1 SYNOPSIS
-
-compose-chart [options] [file ...]
-
- Options:
- --charset[=<cset>] character set to specify in XML doctype
- --locale=<locale> name of locale to display in chart
- --output=<file> filename to output chart to
- --index make index of charts instead of individual chart
- --help brief help message
- --man full documentation
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<--charset>[=I<cset>]
-
-Specify a character set to list in the doctype declaration in the XML output.
-If not specified, attempts to guess from the locale name, else default to
-"utf-8".
-
-=item B<--locale>=I<locale>
-
-Specify the locale name to use in the chart titles and introductory text.
-
-=item B<--output>=I<file>
-
-Specify the output file to write the DocBook output to.
-
-=item B<--index>
-
-Generate an index of the listed locale charts instead of a chart for a
-specific locale.
-
-=item B<--help>
-
-Print a brief help message and exit.
-
-=item B<--man>
-
-Print the manual page and exit.
-
-=back
-
-=head1 DESCRIPTION
-
-This program will read the given compose table file(s) and generate
-DocBook/XML charts listing the available characters for end-user reference.
-
-=cut
diff --git a/libX11/nls/xmlrules.in b/libX11/nls/xmlrules.in
deleted file mode 100644
index 5a6be24f5..000000000
--- a/libX11/nls/xmlrules.in
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE 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.
-#
-
-if HAVE_XMLTO
-spec_DATA = $(doc_sources:.xml=.html)
-
-if HAVE_FOP
-spec_DATA += $(doc_sources:.xml=.ps) $(doc_sources:.xml=.pdf)
-endif
-
-if HAVE_XMLTO_TEXT
-spec_DATA += $(doc_sources:.xml=.txt)
-endif
-
-if HAVE_STYLESHEETS
-XMLTO_FLAGS += \
- -m $(XSL_STYLESHEET) \
- --stringparam img.src.path=$(abs_builddir)/ \
- --stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css
-endif
-
-CLEANFILES += $(spec_DATA)
-
-%.txt: %.xml $(dist_spec_DATA)
- $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) txt $<
-
-%.html: %.xml $(dist_spec_DATA)
- $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) xhtml-nochunks $<
-
-%.pdf: %.xml $(dist_spec_DATA)
- $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) --with-fop pdf $<
-
-%.ps: %.xml $(dist_spec_DATA)
- $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) --with-fop ps $<
-
-chunked-html: $(doc_sources)
- $(AM_V_GEN)$(XMLTO) $(XMLTO_FLAGS) -o html xhtml $(doc_sources)
-
-endif HAVE_XMLTO
diff --git a/libX11/specs/i18n/Makefile.am b/libX11/specs/i18n/Makefile.am
index 1fd341f21..a69a51e9f 100644
--- a/libX11/specs/i18n/Makefile.am
+++ b/libX11/specs/i18n/Makefile.am
@@ -1,24 +1,24 @@
-#
-# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-# THE 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.
-#
-
-SUBDIRS=framework localedb trans
+#
+# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+# THE 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.
+#
+
+SUBDIRS=compose framework localedb trans
diff --git a/libX11/specs/libX11/AppA.xml b/libX11/specs/libX11/AppA.xml
index fca0003c0..0bd585cdd 100644
--- a/libX11/specs/libX11/AppA.xml
+++ b/libX11/specs/libX11/AppA.xml
@@ -1,2105 +1,2105 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<appendix id="xlib_functions_and_protocol_requests">
-<title>Xlib Functions and Protocol Requests</title>
-<para>
-This appendix provides two tables that relate to Xlib functions
-and the X protocol.
-The following table lists each Xlib function (in alphabetical order)
-and the corresponding protocol request that it generates.
-</para>
-<table>
- <title>Protocol requests made by each Xlib function</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Xlib Function</entry>
- <entry>Protocol Request</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><function>XActivateScreenSaver</function></entry>
- <entry><systemitem>ForceScreenSaver</systemitem></entry></row>
- <row>
- <entry><function>XAddHost</function></entry>
- <entry><systemitem>ChangeHosts</systemitem></entry>
- </row>
- <row>
- <entry><function>XAddHosts</function></entry>
- <entry><systemitem>ChangeHosts</systemitem></entry>
- </row>
- <row>
- <entry><function>XAddToSaveSet</function></entry>
- <entry><systemitem>ChangeSaveSet</systemitem></entry>
- </row>
- <row>
- <entry><function>XAllocColor</function></entry>
- <entry><systemitem>AllocColor</systemitem></entry>
- </row>
- <row>
- <entry><function>XAllocColorCells</function></entry>
- <entry><systemitem>AllocColorCells</systemitem></entry>
- </row>
- <row>
- <entry><function>XAllocColorPlanes</function></entry>
- <entry><systemitem>AllocColorPlanes</systemitem></entry>
- </row>
- <row>
- <entry><function>XAllocNamedColor</function></entry>
- <entry><systemitem>AllocNamedColor</systemitem></entry>
- </row>
- <row>
- <entry><function>XAllowEvents</function></entry>
- <entry><systemitem>AllowEvents</systemitem></entry>
- </row>
- <row>
- <entry><function>XAutoRepeatOff</function></entry>
- <entry><systemitem>ChangeKeyboardControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XAutoRepeatOn</function></entry>
- <entry><systemitem>ChangeKeyboardControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XBell</function></entry>
- <entry><systemitem>Bell</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangeActivePointerGrab</function></entry>
- <entry><systemitem>ChangeActivePointerGrab</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangeGC</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangeKeyboardControl</function></entry>
- <entry><systemitem>ChangeKeyboardControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangeKeyboardMapping</function></entry>
- <entry><systemitem>ChangeKeyboardMapping</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangePointerControl</function></entry>
- <entry><systemitem>ChangePointerControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangeProperty</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangeSaveSet</function></entry>
- <entry><systemitem>ChangeSaveSet</systemitem></entry>
- </row>
- <row>
- <entry><function>XChangeWindowAttributes</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XCirculateSubwindows</function></entry>
- <entry><systemitem>CirculateWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XCirculateSubwindowsDown</function></entry>
- <entry><systemitem>CirculateWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XCirculateSubwindowsUp</function></entry>
- <entry><systemitem>CirculateWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XClearArea</function></entry>
- <entry><systemitem>ClearArea</systemitem></entry>
- </row>
- <row>
- <entry><function>XClearWindow</function></entry>
- <entry><systemitem>ClearArea</systemitem></entry>
- </row>
- <row>
- <entry><function>XConfigureWindow</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XConvertSelection</function></entry>
- <entry><systemitem>ConvertSelection</systemitem></entry>
- </row>
- <row>
- <entry><function>XCopyArea</function></entry>
- <entry><systemitem>CopyArea</systemitem></entry>
- </row>
- <row>
- <entry><function>XCopyColormapAndFree</function></entry>
- <entry><systemitem>CopyColormapAndFree</systemitem></entry>
- </row>
- <row>
- <entry><function>XCopyGC</function></entry>
- <entry><systemitem>CopyGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XCopyPlane</function></entry>
- <entry><systemitem>CopyPlane</systemitem></entry>
- </row>
- <row>
- <entry morerows="3"><function>XCreateBitmapFromData</function></entry>
- <entry><systemitem>CreateGC</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>CreatePixmap</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>FreeGC</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>PutImage</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreateColormap</function></entry>
- <entry><systemitem>CreateColormap</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreateFontCursor</function></entry>
- <entry><systemitem>CreateGlyphCursor</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreateGC</function></entry>
- <entry><systemitem>CreateGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreateGlyphCursor</function></entry>
- <entry><systemitem>CreateGlyphCursor</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreatePixmap</function></entry>
- <entry><systemitem>CreatePixmap</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreatePixmapCursor</function></entry>
- <entry><systemitem>CreateCursor</systemitem></entry>
- </row>
- <row>
- <entry morerows="3"><function>XCreatePixmapFromData</function></entry>
- <entry><systemitem>CreateGC</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>CreatePixmap</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>FreeGC</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>PutImage</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreateSimpleWindow</function></entry>
- <entry><systemitem>CreateWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XCreateWindow</function></entry>
- <entry><systemitem>CreateWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XDefineCursor</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XDeleteProperty</function></entry>
- <entry><systemitem>DeleteProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XDestroySubwindows</function></entry>
- <entry><systemitem>DestroySubwindows</systemitem></entry>
- </row>
- <row>
- <entry><function>XDestroyWindow</function></entry>
- <entry><systemitem>DestroyWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XDisableAccessControl</function></entry>
- <entry><systemitem>SetAccessControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawArc</function></entry>
- <entry><systemitem>PolyArc</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawArcs</function></entry>
- <entry><systemitem>PolyArc</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawImageString</function></entry>
- <entry><systemitem>ImageText8</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawImageString16</function></entry>
- <entry><systemitem>ImageText16</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawLine</function></entry>
- <entry><systemitem>PolySegment</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawLines</function></entry>
- <entry><systemitem>PolyLine</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawPoint</function></entry>
- <entry><systemitem>PolyPoint</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawPoints</function></entry>
- <entry><systemitem>PolyPoint</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawRectangle</function></entry>
- <entry><systemitem>PolyRectangle</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawRectangles</function></entry>
- <entry><systemitem>PolyRectangle</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawSegments</function></entry>
- <entry><systemitem>PolySegment</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawString</function></entry>
- <entry><systemitem>PolyText8</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawString16</function></entry>
- <entry><systemitem>PolyText16</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawText</function></entry>
- <entry><systemitem>PolyText8</systemitem></entry>
- </row>
- <row>
- <entry><function>XDrawText16</function></entry>
- <entry><systemitem>PolyText16</systemitem></entry>
- </row>
- <row>
- <entry><function>XEnableAccessControl</function></entry>
- <entry><systemitem>SetAccessControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XFetchBytes</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XFetchName</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XFillArc</function></entry>
- <entry><systemitem>PolyFillArc</systemitem></entry>
- </row>
- <row>
- <entry><function>XFillArcs</function></entry>
- <entry><systemitem>PolyFillArc</systemitem></entry>
- </row>
- <row>
- <entry><function>XFillPolygon</function></entry>
- <entry><systemitem>FillPoly</systemitem></entry>
- </row>
- <row>
- <entry><function>XFillRectangle</function></entry>
- <entry><systemitem>PolyFillRectangle</systemitem></entry>
- </row>
- <row>
- <entry><function>XFillRectangles</function></entry>
- <entry><systemitem>PolyFillRectangle</systemitem></entry>
- </row>
- <row>
- <entry><function>XForceScreenSaver</function></entry>
- <entry><systemitem>ForceScreenSaver</systemitem></entry>
- </row>
- <row>
- <entry><function>XFreeColormap</function></entry>
- <entry><systemitem>FreeColormap</systemitem></entry>
- </row>
- <row>
- <entry><function>XFreeColors</function></entry>
- <entry><systemitem>FreeColors</systemitem></entry>
- </row>
- <row>
- <entry><function>XFreeCursor</function></entry>
- <entry><systemitem>FreeCursor</systemitem></entry>
- </row>
- <row>
- <entry><function>XFreeFont</function></entry>
- <entry><systemitem>CloseFont</systemitem></entry>
- </row>
- <row>
- <entry><function>XFreeGC</function></entry>
- <entry><systemitem>FreeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XFreePixmap</function></entry>
- <entry><systemitem>FreePixmap</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetAtomName</function></entry>
- <entry><systemitem>GetAtomName</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetClassHint</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetFontPath</function></entry>
- <entry><systemitem>GetFontPath</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetGeometry</function></entry>
- <entry><systemitem>GetGeometry</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetIconName</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetIconSizes</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetImage</function></entry>
- <entry><systemitem>GetImage</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetInputFocus</function></entry>
- <entry><systemitem>GetInputFocus</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetKeyboardControl</function></entry>
- <entry><systemitem>GetKeyboardControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetKeyboardMapping</function></entry>
- <entry><systemitem>GetKeyboardMapping</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetModifierMapping</function></entry>
- <entry><systemitem>GetModifierMapping</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetMotionEvents</function></entry>
- <entry><systemitem>GetMotionEvents</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetNormalHints</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetPointerControl</function></entry>
- <entry><systemitem>GetPointerControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetPointerMapping</function></entry>
- <entry><systemitem>GetPointerMapping</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetRGBColormaps</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetScreenSaver</function></entry>
- <entry><systemitem>GetScreenSaver</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetSelectionOwner</function></entry>
- <entry><systemitem>GetSelectionOwner</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetSizeHints</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetTextProperty</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetTransientForHint</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetWMClientMachine</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XGetWMColormapWindows</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>InternAtom</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetWMHints</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetWMIconName</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetWMName</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetWMNormalHints</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XGetWMProtocols</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>InternAtom</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetWMSizeHints</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XGetWindowAttributes</function></entry>
- <entry><systemitem>GetWindowAttributes</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>GetGeometry</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetWindowProperty</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGetZoomHints</function></entry>
- <entry><systemitem>GetProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XGrabButton</function></entry>
- <entry><systemitem>GrabButton</systemitem></entry>
- </row>
- <row>
- <entry><function>XGrabKey</function></entry>
- <entry><systemitem>GrabKey</systemitem></entry>
- </row>
- <row>
- <entry><function>XGrabKeyboard</function></entry>
- <entry><systemitem>GrabKeyboard</systemitem></entry>
- </row>
- <row>
- <entry><function>XGrabPointer</function></entry>
- <entry><systemitem>GrabPointer</systemitem></entry>
- </row>
- <row>
- <entry><function>XGrabServer</function></entry>
- <entry><systemitem>GrabServer</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XIconifyWindow</function></entry>
- <entry><systemitem>InternAtom</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>SendEvent</systemitem></entry>
- </row>
- <row>
- <entry><function>XInitExtension</function></entry>
- <entry><systemitem>QueryExtension</systemitem></entry>
- </row>
- <row>
- <entry><function>XInstallColormap</function></entry>
- <entry><systemitem>InstallColormap</systemitem></entry>
- </row>
- <row>
- <entry><function>XInternAtom</function></entry>
- <entry><systemitem>InternAtom</systemitem></entry>
- </row>
- <row>
- <entry><function>XKillClient</function></entry>
- <entry><systemitem>KillClient</systemitem></entry>
- </row>
- <row>
- <entry><function>XListExtensions</function></entry>
- <entry><systemitem>ListExtensions</systemitem></entry>
- </row>
- <row>
- <entry><function>XListFonts</function></entry>
- <entry><systemitem>ListFonts</systemitem></entry>
- </row>
- <row>
- <entry><function>XListFontsWithInfo</function></entry>
- <entry><systemitem>ListFontsWithInfo</systemitem></entry>
- </row>
- <row>
- <entry><function>XListHosts</function></entry>
- <entry><systemitem>ListHosts</systemitem></entry>
- </row>
- <row>
- <entry><function>XListInstalledColormaps</function></entry>
- <entry><systemitem>ListInstalledColormaps</systemitem></entry>
- </row>
- <row>
- <entry><function>XListProperties</function></entry>
- <entry><systemitem>ListProperties</systemitem></entry>
- </row>
- <row>
- <entry><function>XLoadFont</function></entry>
- <entry><systemitem>OpenFont</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XLoadQueryFont</function></entry>
- <entry><systemitem>OpenFont</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>QueryFont</systemitem></entry>
- </row>
- <row>
- <entry><function>XLookupColor</function></entry>
- <entry><systemitem>LookupColor</systemitem></entry>
- </row>
- <row>
- <entry><function>XLowerWindow</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XMapRaised</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>MapWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XMapSubwindows</function></entry>
- <entry><systemitem>MapSubwindows</systemitem></entry>
- </row>
- <row>
- <entry><function>XMapWindow</function></entry>
- <entry><systemitem>MapWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XMoveResizeWindow</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XMoveWindow</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XNoOp</function></entry>
- <entry><systemitem>NoOperation</systemitem></entry>
- </row>
- <row>
- <entry><function>XOpenDisplay</function></entry>
- <entry><systemitem>CreateGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XParseColor</function></entry>
- <entry><systemitem>LookupColor</systemitem></entry>
- </row>
- <row>
- <entry><function>XPutImage</function></entry>
- <entry><systemitem>PutImage</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryBestCursor</function></entry>
- <entry><systemitem>QueryBestSize</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryBestSize</function></entry>
- <entry><systemitem>QueryBestSize</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryBestStipple</function></entry>
- <entry><systemitem>QueryBestSize</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryBestTile</function></entry>
- <entry><systemitem>QueryBestSize</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryColor</function></entry>
- <entry><systemitem>QueryColors</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryColors</function></entry>
- <entry><systemitem>QueryColors</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryExtension</function></entry>
- <entry><systemitem>QueryExtension</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryFont</function></entry>
- <entry><systemitem>QueryFont</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryKeymap</function></entry>
- <entry><systemitem>QueryKeymap</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryPointer</function></entry>
- <entry><systemitem>QueryPointer</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryTextExtents</function></entry>
- <entry><systemitem>QueryTextExtents</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryTextExtents16</function></entry>
- <entry><systemitem>QueryTextExtents</systemitem></entry>
- </row>
- <row>
- <entry><function>XQueryTree</function></entry>
- <entry><systemitem>QueryTree</systemitem></entry>
- </row>
- <row>
- <entry><function>XRaiseWindow</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry morerows="3"><function>XReadBitmapFile</function></entry>
- <entry><systemitem>CreateGC</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>CreatePixmap</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>FreeGC</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>PutImage</systemitem></entry>
- </row>
- <row>
- <entry><function>XRecolorCursor</function></entry>
- <entry><systemitem>RecolorCursor</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XReconfigureWMWindow</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>SendEvent</systemitem></entry>
- </row>
- <row>
- <entry><function>XRemoveFromSaveSet</function></entry>
- <entry><systemitem>ChangeSaveSet</systemitem></entry>
- </row>
- <row>
- <entry><function>XRemoveHost</function></entry>
- <entry><systemitem>ChangeHosts</systemitem></entry>
- </row>
- <row>
- <entry><function>XRemoveHosts</function></entry>
- <entry><systemitem>ChangeHosts</systemitem></entry>
- </row>
- <row>
- <entry><function>XReparentWindow</function></entry>
- <entry><systemitem>ReparentWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XResetScreenSaver</function></entry>
- <entry><systemitem>ForceScreenSaver</systemitem></entry>
- </row>
- <row>
- <entry><function>XResizeWindow</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XRestackWindows</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XRotateBuffers</function></entry>
- <entry><systemitem>RotateProperties</systemitem></entry>
- </row>
- <row>
- <entry><function>XRotateWindowProperties</function></entry>
- <entry><systemitem>RotateProperties</systemitem></entry>
- </row>
- <row>
- <entry><function>XSelectInput</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XSendEvent</function></entry>
- <entry><systemitem>SendEvent</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetAccessControl</function></entry>
- <entry><systemitem>SetAccessControl</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetArcMode</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetBackground</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetClassHint</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetClipMask</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetClipOrigin</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetClipRectangles</function></entry>
- <entry><systemitem>SetClipRectangles</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetCloseDownMode</function></entry>
- <entry><systemitem>SetCloseDownMode</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetCommand</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetDashes</function></entry>
- <entry><systemitem>SetDashes</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetFillRule</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetFillStyle</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetFont</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetFontPath</function></entry>
- <entry><systemitem>SetFontPath</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetForeground</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetFunction</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetGraphicsExposures</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetIconName</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetIconSizes</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetInputFocus</function></entry>
- <entry><systemitem>SetInputFocus</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetLineAttributes</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetModifierMapping</function></entry>
- <entry><systemitem>SetModifierMapping</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetNormalHints</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetPlaneMask</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetPointerMapping</function></entry>
- <entry><systemitem>SetPointerMapping</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetRGBColormaps</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetScreenSaver</function></entry>
- <entry><systemitem>SetScreenSaver</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetSelectionOwner</function></entry>
- <entry><systemitem>SetSelectionOwner</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetSizeHints</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetStandardProperties</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetState</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetStipple</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetSubwindowMode</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetTextProperty</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetTile</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetTransientForHint</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetTSOrigin</function></entry>
- <entry><systemitem>ChangeGC</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWMClientMachine</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XSetWMColormapWindows</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>InternAtom</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWMHints</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWMIconName</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWMName</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWMNormalHints</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWMProperties</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XSetWMProtocols</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>InternAtom</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWMSizeHints</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWindowBackground</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWindowBackgroundPixmap</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWindowBorder</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWindowBorderPixmap</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWindowBorderWidth</function></entry>
- <entry><systemitem>ConfigureWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetWindowColormap</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XSetZoomHints</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XStoreBuffer</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XStoreBytes</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XStoreColor</function></entry>
- <entry><systemitem>StoreColors</systemitem></entry>
- </row>
- <row>
- <entry><function>XStoreColors</function></entry>
- <entry><systemitem>StoreColors</systemitem></entry>
- </row>
- <row>
- <entry><function>XStoreName</function></entry>
- <entry><systemitem>ChangeProperty</systemitem></entry>
- </row>
- <row>
- <entry><function>XStoreNamedColor</function></entry>
- <entry><systemitem>StoreNamedColor</systemitem></entry>
- </row>
- <row>
- <entry><function>XSync</function></entry>
- <entry><systemitem>GetInputFocus</systemitem></entry>
- </row>
- <row>
- <entry><function>XSynchronize</function></entry>
- <entry><systemitem>GetInputFocus</systemitem></entry>
- </row>
- <row>
- <entry><function>XTranslateCoordinates</function></entry>
- <entry><systemitem>TranslateCoordinates</systemitem></entry>
- </row>
- <row>
- <entry><function>XUndefineCursor</function></entry>
- <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
- </row>
- <row>
- <entry><function>XUngrabButton</function></entry>
- <entry><systemitem>UngrabButton</systemitem></entry>
- </row>
- <row>
- <entry><function>XUngrabKey</function></entry>
- <entry><systemitem>UngrabKey</systemitem></entry>
- </row>
- <row>
- <entry><function>XUngrabKeyboard</function></entry>
- <entry><systemitem>UngrabKeyboard</systemitem></entry>
- </row>
- <row>
- <entry><function>XUngrabPointer</function></entry>
- <entry><systemitem>UngrabPointer</systemitem></entry>
- </row>
- <row>
- <entry><function>XUngrabServer</function></entry>
- <entry><systemitem>UngrabServer</systemitem></entry>
- </row>
- <row>
- <entry><function>XUninstallColormap</function></entry>
- <entry><systemitem>UninstallColormap</systemitem></entry>
- </row>
- <row>
- <entry><function>XUnloadFont</function></entry>
- <entry><systemitem>CloseFont</systemitem></entry>
- </row>
- <row>
- <entry><function>XUnmapSubwindows</function></entry>
- <entry><systemitem>UnmapSubwindows</systemitem></entry>
- </row>
- <row>
- <entry><function>XUnmapWindow</function></entry>
- <entry><systemitem>UnmapWindow</systemitem></entry>
- </row>
- <row>
- <entry><function>XWarpPointer</function></entry>
- <entry><systemitem>WarpPointer</systemitem></entry>
- </row>
- <row>
- <entry morerows="1"><function>XWithdrawWindow</function></entry>
- <entry><systemitem>SendEvent</systemitem></entry>
- </row>
- <row>
-
- <entry><systemitem>UnmapWindow</systemitem></entry>
- </row>
- </tbody>
- </tgroup>
-</table>
-<para>
-The following table lists each X protocol request (in alphabetical
-order) and the Xlib functions that reference it.
-</para>
-<table>
- <title>Xlib functions which use each Protocol Request</title>
- <tgroup cols="2">
- <thead>
- <row>
- <entry>Protocol Request</entry>
- <entry>Xlib Function</entry>
- </row>
- </thead>
- <tbody>
- <row>
- <entry><systemitem>AllocColor</systemitem></entry>
- <entry><function>XAllocColor</function></entry>
- </row>
- <row>
- <entry><systemitem>AllocColorCells</systemitem></entry>
- <entry><function>XAllocColorCells</function></entry>
- </row>
- <row>
- <entry><systemitem>AllocColorPlanes</systemitem></entry>
- <entry><function>XAllocColorPlanes</function></entry>
- </row>
- <row>
- <entry><systemitem>AllocNamedColor</systemitem></entry>
- <entry><function>XAllocNamedColor</function></entry>
- </row>
- <row>
- <entry><systemitem>AllowEvents</systemitem></entry>
- <entry><function>XAllowEvents</function></entry>
- </row>
- <row>
- <entry><systemitem>Bell</systemitem></entry>
- <entry><function>XBell</function></entry>
- </row>
- <row>
- <entry><systemitem>ChangeActivePointerGrab</systemitem></entry>
- <entry><function>XChangeActivePointerGrab</function></entry>
- </row>
- <row>
- <entry morerows="17"><systemitem>ChangeGC</systemitem></entry>
- <entry><function>XChangeGC</function></entry>
- </row>
- <row>
-
- <entry><function>XSetArcMode</function></entry>
- </row>
- <row>
-
- <entry><function>XSetBackground</function></entry>
- </row>
- <row>
-
- <entry><function>XSetClipMask</function></entry>
- </row>
- <row>
-
- <entry><function>XSetClipOrigin</function></entry>
- </row>
- <row>
-
- <entry><function>XSetFillRule</function></entry>
- </row>
- <row>
-
- <entry><function>XSetFillStyle</function></entry>
- </row>
- <row>
-
- <entry><function>XSetFont</function></entry>
- </row>
- <row>
-
- <entry><function>XSetForeground</function></entry>
- </row>
- <row>
-
- <entry><function>XSetFunction</function></entry>
- </row>
- <row>
-
- <entry><function>XSetGraphicsExposures</function></entry>
- </row>
- <row>
-
- <entry><function>XSetLineAttributes</function></entry>
- </row>
- <row>
-
- <entry><function>XSetPlaneMask</function></entry>
- </row>
- <row>
-
- <entry><function>XSetState</function></entry>
- </row>
- <row>
-
- <entry><function>XSetStipple</function></entry>
- </row>
- <row>
-
- <entry><function>XSetSubwindowMode</function></entry>
- </row>
- <row>
-
- <entry><function>XSetTile</function></entry>
- </row>
- <row>
-
- <entry><function>XSetTSOrigin</function></entry>
- </row>
- <row>
- <entry morerows="3"><systemitem>ChangeHosts</systemitem></entry>
- <entry><function>XAddHost</function></entry>
- </row>
- <row>
-
- <entry><function>XAddHosts</function></entry>
- </row>
- <row>
-
- <entry><function>XRemoveHost</function></entry>
- </row>
- <row>
-
- <entry><function>XRemoveHosts</function></entry>
- </row>
- <row>
- <entry morerows="2"><systemitem>ChangeKeyboardControl</systemitem></entry>
- <entry><function>XAutoRepeatOff</function></entry>
- </row>
- <row>
-
- <entry><function>XAutoRepeatOn</function></entry>
- </row>
- <row>
-
- <entry><function>XChangeKeyboardControl</function></entry>
- </row>
- <row>
- <entry><systemitem>ChangeKeyboardMapping</systemitem></entry>
- <entry><function>XChangeKeyboardMapping</function></entry>
- </row>
- <row>
- <entry><systemitem>ChangePointerControl</systemitem></entry>
- <entry><function>XChangePointerControl</function></entry>
- </row>
- <row>
- <entry morerows="23"><systemitem>ChangeProperty</systemitem></entry>
- <entry><function>XChangeProperty</function></entry>
- </row>
- <row>
-
- <entry><function>XSetClassHint</function></entry>
- </row>
- <row>
-
- <entry><function>XSetCommand</function></entry>
- </row>
- <row>
-
- <entry><function>XSetIconName</function></entry>
- </row>
- <row>
-
- <entry><function>XSetIconSizes</function></entry>
- </row>
- <row>
-
- <entry><function>XSetNormalHints</function></entry>
- </row>
- <row>
-
- <entry><function>XSetRGBColormaps</function></entry>
- </row>
- <row>
-
- <entry><function>XSetSizeHints</function></entry>
- </row>
- <row>
-
- <entry><function>XSetStandardProperties</function></entry>
- </row>
- <row>
-
- <entry><function>XSetTextProperty</function></entry>
- </row>
- <row>
-
- <entry><function>XSetTransientForHint</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMClientMachine</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMColormapWindows</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMHints</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMIconName</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMName</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMNormalHints</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMProperties</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMProtocols</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMSizeHints</function></entry>
- </row>
- <row>
-
- <entry><function>XSetZoomHints</function></entry>
- </row>
- <row>
-
- <entry><function>XStoreBuffer</function></entry>
- </row>
- <row>
-
- <entry><function>XStoreBytes</function></entry>
- </row>
- <row>
-
- <entry><function>XStoreName</function></entry>
- </row>
- <row>
- <entry morerows="2"><systemitem>ChangeSaveSet</systemitem></entry>
- <entry><function>XAddToSaveSet</function></entry>
- </row>
- <row>
-
- <entry><function>XChangeSaveSet</function></entry>
- </row>
- <row>
-
- <entry><function>XRemoveFromSaveSet</function></entry>
- </row>
- <row>
- <entry morerows="8"><systemitem>ChangeWindowAttributes</systemitem></entry>
- <entry><function>XChangeWindowAttributes</function></entry>
- </row>
- <row>
-
- <entry><function>XDefineCursor</function></entry>
- </row>
- <row>
-
- <entry><function>XSelectInput</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWindowBackground</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWindowBackgroundPixmap</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWindowBorder</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWindowBorderPixmap</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWindowColormap</function></entry>
- </row>
- <row>
-
- <entry><function>XUndefineCursor</function></entry>
- </row>
- <row>
- <entry morerows="2"><systemitem>CirculateWindow</systemitem></entry>
- <entry><function>XCirculateSubwindowsDown</function></entry>
- </row>
- <row>
-
- <entry><function>XCirculateSubwindowsUp</function></entry>
- </row>
- <row>
-
- <entry><function>XCirculateSubwindows</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>ClearArea</systemitem></entry>
- <entry><function>XClearArea</function></entry>
- </row>
- <row>
-
- <entry><function>XClearWindow</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>CloseFont</systemitem></entry>
- <entry><function>XFreeFont</function></entry>
- </row>
- <row>
-
- <entry><function>XUnloadFont</function></entry>
- </row>
- <row>
- <entry morerows="9"><systemitem>ConfigureWindow</systemitem></entry>
- <entry><function>XConfigureWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XLowerWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XMapRaised</function></entry>
- </row>
- <row>
-
- <entry><function>XMoveResizeWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XMoveWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XRaiseWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XReconfigureWMWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XResizeWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XRestackWindows</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWindowBorderWidth</function></entry>
- </row>
- <row>
- <entry><systemitem>ConvertSelection</systemitem></entry>
- <entry><function>XConvertSelection</function></entry>
- </row>
- <row>
- <entry><systemitem>CopyArea</systemitem></entry>
- <entry><function>XCopyArea</function></entry>
- </row>
- <row>
- <entry><systemitem>CopyColormapAndFree</systemitem></entry>
- <entry><function>XCopyColormapAndFree</function></entry>
- </row>
- <row>
- <entry><systemitem>CopyGC</systemitem></entry>
- <entry><function>XCopyGC</function></entry>
- </row>
- <row>
- <entry><systemitem>CopyPlane</systemitem></entry>
- <entry><function>XCopyPlane</function></entry>
- </row>
- <row>
- <entry><systemitem>CreateColormap</systemitem></entry>
- <entry><function>XCreateColormap</function></entry>
- </row>
- <row>
- <entry><systemitem>CreateCursor</systemitem></entry>
- <entry><function>XCreatePixmapCursor</function></entry>
- </row>
- <row>
- <entry morerows="4"><systemitem>CreateGC</systemitem></entry>
- <entry><function>XCreateGC</function></entry>
- </row>
- <row>
-
- <entry><function>XCreateBitmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XCreatePixmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XOpenDisplay</function></entry>
- </row>
- <row>
-
- <entry><function>XReadBitmapFile</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>CreateGlyphCursor</systemitem></entry>
- <entry><function>XCreateFontCursor</function></entry>
- </row>
- <row>
-
- <entry><function>XCreateGlyphCursor</function></entry>
- </row>
- <row>
- <entry morerows="3"><systemitem>CreatePixmap</systemitem></entry>
- <entry><function>XCreatePixmap</function></entry>
- </row>
- <row>
-
- <entry><function>XCreateBitmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XCreatePixmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XReadBitmapFile</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>CreateWindow</systemitem></entry>
- <entry><function>XCreateSimpleWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XCreateWindow</function></entry>
- </row>
- <row>
- <entry><systemitem>DeleteProperty</systemitem></entry>
- <entry><function>XDeleteProperty</function></entry>
- </row>
- <row>
- <entry><systemitem>DestroySubwindows</systemitem></entry>
- <entry><function>XDestroySubwindows</function></entry>
- </row>
- <row>
- <entry><systemitem>DestroyWindow</systemitem></entry>
- <entry><function>XDestroyWindow</function></entry>
- </row>
- <row>
- <entry><systemitem>FillPoly</systemitem></entry>
- <entry><function>XFillPolygon</function></entry>
- </row>
- <row>
- <entry morerows="2"><systemitem>ForceScreenSaver</systemitem></entry>
- <entry><function>XActivateScreenSaver</function></entry>
- </row>
- <row>
-
- <entry><function>XForceScreenSaver</function></entry>
- </row>
- <row>
-
- <entry><function>XResetScreenSaver</function></entry>
- </row>
- <row>
- <entry><systemitem>FreeColormap</systemitem></entry>
- <entry><function>XFreeColormap</function></entry>
- </row>
- <row>
- <entry><systemitem>FreeColors</systemitem></entry>
- <entry><function>XFreeColors</function></entry>
- </row>
- <row>
- <entry><systemitem>FreeCursor</systemitem></entry>
- <entry><function>XFreeCursor</function></entry>
- </row>
- <row>
- <entry morerows="3"><systemitem>FreeGC</systemitem></entry>
- <entry><function>XFreeGC</function></entry>
- </row>
- <row>
-
- <entry><function>XCreateBitmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XCreatePixmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XReadBitmapFile</function></entry>
- </row>
- <row>
- <entry><systemitem>FreePixmap</systemitem></entry>
- <entry><function>XFreePixmap</function></entry>
- </row>
- <row>
- <entry><systemitem>GetAtomName</systemitem></entry>
- <entry><function>XGetAtomName</function></entry>
- </row>
- <row>
- <entry><systemitem>GetFontPath</systemitem></entry>
- <entry><function>XGetFontPath</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>GetGeometry</systemitem></entry>
- <entry><function>XGetGeometry</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWindowAttributes</function></entry>
- </row>
- <row>
- <entry><systemitem>GetImage</systemitem></entry>
- <entry><function>XGetImage</function></entry>
- </row>
- <row>
- <entry morerows="2"><systemitem>GetInputFocus</systemitem></entry>
- <entry><function>XGetInputFocus</function></entry>
- </row>
- <row>
-
- <entry><function>XSync</function></entry>
- </row>
- <row>
-
- <entry><function>XSynchronize</function></entry>
- </row>
- <row>
- <entry><systemitem>GetKeyboardControl</systemitem></entry>
- <entry><function>XGetKeyboardControl</function></entry>
- </row>
- <row>
- <entry><systemitem>GetKeyboardMapping</systemitem></entry>
- <entry><function>XGetKeyboardMapping</function></entry>
- </row>
- <row>
- <entry><systemitem>GetModifierMapping</systemitem></entry>
- <entry><function>XGetModifierMapping</function></entry>
- </row>
- <row>
- <entry><systemitem>GetMotionEvents</systemitem></entry>
- <entry><function>XGetMotionEvents</function></entry>
- </row>
- <row>
- <entry><systemitem>GetPointerControl</systemitem></entry>
- <entry><function>XGetPointerControl</function></entry>
- </row>
- <row>
- <entry><systemitem>GetPointerMapping</systemitem></entry>
- <entry><function>XGetPointerMapping</function></entry>
- </row>
- <row>
- <entry morerows="19"><systemitem>GetProperty</systemitem></entry>
- <entry><function>XFetchBytes</function></entry>
- </row>
- <row>
-
- <entry><function>XFetchName</function></entry>
- </row>
- <row>
-
- <entry><function>XGetClassHint</function></entry>
- </row>
- <row>
-
- <entry><function>XGetIconName</function></entry>
- </row>
- <row>
-
- <entry><function>XGetIconSizes</function></entry>
- </row>
- <row>
-
- <entry><function>XGetNormalHints</function></entry>
- </row>
- <row>
-
- <entry><function>XGetRGBColormaps</function></entry>
- </row>
- <row>
-
- <entry><function>XGetSizeHints</function></entry>
- </row>
- <row>
-
- <entry><function>XGetTextProperty</function></entry>
- </row>
- <row>
-
- <entry><function>XGetTransientForHint</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMClientMachine</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMColormapWindows</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMHints</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMIconName</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMName</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMNormalHints</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMProtocols</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMSizeHints</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWindowProperty</function></entry>
- </row>
- <row>
-
- <entry><function>XGetZoomHints</function></entry>
- </row>
- <row>
- <entry><systemitem>GetSelectionOwner</systemitem></entry>
- <entry><function>XGetSelectionOwner</function></entry>
- </row>
- <row>
- <entry><systemitem>GetWindowAttributes</systemitem></entry>
- <entry><function>XGetWindowAttributes</function></entry>
- </row>
- <row>
- <entry><systemitem>GrabButton</systemitem></entry>
- <entry><function>XGrabButton</function></entry>
- </row>
- <row>
- <entry><systemitem>GrabKey</systemitem></entry>
- <entry><function>XGrabKey</function></entry>
- </row>
- <row>
- <entry><systemitem>GrabKeyboard</systemitem></entry>
- <entry><function>XGrabKeyboard</function></entry>
- </row>
- <row>
- <entry><systemitem>GrabPointer</systemitem></entry>
- <entry><function>XGrabPointer</function></entry>
- </row>
- <row>
- <entry><systemitem>GrabServer</systemitem></entry>
- <entry><function>XGrabServer</function></entry>
- </row>
- <row>
- <entry><systemitem>ImageText8</systemitem></entry>
- <entry><function>XDrawImageString</function></entry>
- </row>
- <row>
- <entry><systemitem>ImageText16</systemitem></entry>
- <entry><function>XDrawImageString16</function></entry>
- </row>
- <row>
- <entry><systemitem>InstallColormap</systemitem></entry>
- <entry><function>XInstallColormap</function></entry>
- </row>
- <row>
- <entry morerows="5"><systemitem>InternAtom</systemitem></entry>
- <entry><function>XGetWMColormapWindows</function></entry>
- </row>
- <row>
-
- <entry><function>XGetWMProtocols</function></entry>
- </row>
- <row>
-
- <entry><function>XIconifyWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XInternAtom</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMColormapWindows</function></entry>
- </row>
- <row>
-
- <entry><function>XSetWMProtocols</function></entry>
- </row>
- <row>
- <entry><systemitem>KillClient</systemitem></entry>
- <entry><function>XKillClient</function></entry>
- </row>
- <row>
- <entry><systemitem>ListExtensions</systemitem></entry>
- <entry><function>XListExtensions</function></entry>
- </row>
- <row>
- <entry><systemitem>ListFonts</systemitem></entry>
- <entry><function>XListFonts</function></entry>
- </row>
- <row>
- <entry><systemitem>ListFontsWithInfo</systemitem></entry>
- <entry><function>XListFontsWithInfo</function></entry>
- </row>
- <row>
- <entry><systemitem>ListHosts</systemitem></entry>
- <entry><function>XListHosts</function></entry>
- </row>
- <row>
- <entry><systemitem>ListInstalledColormaps</systemitem></entry>
- <entry><function>XListInstalledColormaps</function></entry>
- </row>
- <row>
- <entry><systemitem>ListProperties</systemitem></entry>
- <entry><function>XListProperties</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>LookupColor</systemitem></entry>
- <entry><function>XLookupColor</function></entry>
- </row>
- <row>
-
- <entry><function>XParseColor</function></entry>
- </row>
- <row>
- <entry><systemitem>MapSubwindows</systemitem></entry>
- <entry><function>XMapSubwindows</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>MapWindow</systemitem></entry>
- <entry><function>XMapRaised</function></entry>
- </row>
- <row>
-
- <entry><function>XMapWindow</function></entry>
- </row>
- <row>
- <entry><systemitem>NoOperation</systemitem></entry>
- <entry><function>XNoOp</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>OpenFont</systemitem></entry>
- <entry><function>XLoadFont</function></entry>
- </row>
- <row>
-
- <entry><function>XLoadQueryFont</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolyArc</systemitem></entry>
- <entry><function>XDrawArc</function></entry>
- </row>
- <row>
-
- <entry><function>XDrawArcs</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolyFillArc</systemitem></entry>
- <entry><function>XFillArc</function></entry>
- </row>
- <row>
-
- <entry><function>XFillArcs</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolyFillRectangle</systemitem></entry>
- <entry><function>XFillRectangle</function></entry>
- </row>
- <row>
-
- <entry><function>XFillRectangles</function></entry>
- </row>
- <row>
- <entry><systemitem>PolyLine</systemitem></entry>
- <entry><function>XDrawLines</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolyPoint</systemitem></entry>
- <entry><function>XDrawPoint</function></entry>
- </row>
- <row>
-
- <entry><function>XDrawPoints</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolyRectangle</systemitem></entry>
- <entry><function>XDrawRectangle</function></entry>
- </row>
- <row>
-
- <entry><function>XDrawRectangles</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolySegment</systemitem></entry>
- <entry><function>XDrawLine</function></entry>
- </row>
- <row>
-
- <entry><function>XDrawSegments</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolyText8</systemitem></entry>
- <entry><function>XDrawString</function></entry>
- </row>
- <row>
-
- <entry><function>XDrawText</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>PolyText16</systemitem></entry>
- <entry><function>XDrawString16</function></entry>
- </row>
- <row>
-
- <entry><function>XDrawText16</function></entry>
- </row>
- <row>
- <entry morerows="3"><systemitem>PutImage</systemitem></entry>
- <entry><function>XPutImage</function></entry>
- </row>
- <row>
-
- <entry><function>XCreateBitmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XCreatePixmapFromData</function></entry>
- </row>
- <row>
-
- <entry><function>XReadBitmapFile</function></entry>
- </row>
- <row>
- <entry morerows="3"><systemitem>QueryBestSize</systemitem></entry>
- <entry><function>XQueryBestCursor</function></entry>
- </row>
- <row>
-
- <entry><function>XQueryBestSize</function></entry>
- </row>
- <row>
-
- <entry><function>XQueryBestStipple</function></entry>
- </row>
- <row>
-
- <entry><function>XQueryBestTile</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>QueryColors</systemitem></entry>
- <entry><function>XQueryColor</function></entry>
- </row>
- <row>
-
- <entry><function>XQueryColors</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>QueryExtension</systemitem></entry>
- <entry><function>XInitExtension</function></entry>
- </row>
- <row>
-
- <entry><function>XQueryExtension</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>QueryFont</systemitem></entry>
- <entry><function>XLoadQueryFont</function></entry>
- </row>
- <row>
-
- <entry><function>XQueryFont</function></entry>
- </row>
- <row>
- <entry><systemitem>QueryKeymap</systemitem></entry>
- <entry><function>XQueryKeymap</function></entry>
- </row>
- <row>
- <entry><systemitem>QueryPointer</systemitem></entry>
- <entry><function>XQueryPointer</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>QueryTextExtents</systemitem></entry>
- <entry><function>XQueryTextExtents</function></entry>
- </row>
- <row>
-
- <entry><function>XQueryTextExtents16</function></entry>
- </row>
- <row>
- <entry><systemitem>QueryTree</systemitem></entry>
- <entry><function>XQueryTree</function></entry>
- </row>
- <row>
- <entry><systemitem>RecolorCursor</systemitem></entry>
- <entry><function>XRecolorCursor</function></entry>
- </row>
- <row>
- <entry><systemitem>ReparentWindow</systemitem></entry>
- <entry><function>XReparentWindow</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>RotateProperties</systemitem></entry>
- <entry><function>XRotateBuffers</function></entry>
- </row>
- <row>
-
- <entry><function>XRotateWindowProperties</function></entry>
- </row>
- <row>
- <entry morerows="3"><systemitem>SendEvent</systemitem></entry>
- <entry><function>XIconifyWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XReconfigureWMWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XSendEvent</function></entry>
- </row>
- <row>
-
- <entry><function>XWithdrawWindow</function></entry>
- </row>
- <row>
- <entry morerows="2"><systemitem>SetAccessControl</systemitem></entry>
- <entry><function>XDisableAccessControl</function></entry>
- </row>
- <row>
-
- <entry><function>XEnableAccessControl</function></entry>
- </row>
- <row>
-
- <entry><function>XSetAccessControl</function></entry>
- </row>
- <row>
- <entry><systemitem>SetClipRectangles</systemitem></entry>
- <entry><function>XSetClipRectangles</function></entry>
- </row>
- <row>
- <entry><systemitem>SetCloseDownMode</systemitem></entry>
- <entry><function>XSetCloseDownMode</function></entry>
- </row>
- <row>
- <entry><systemitem>SetDashes</systemitem></entry>
- <entry><function>XSetDashes</function></entry>
- </row>
- <row>
- <entry><systemitem>SetFontPath</systemitem></entry>
- <entry><function>XSetFontPath</function></entry>
- </row>
- <row>
- <entry><systemitem>SetInputFocus</systemitem></entry>
- <entry><function>XSetInputFocus</function></entry>
- </row>
- <row>
- <entry><systemitem>SetModifierMapping</systemitem></entry>
- <entry><function>XSetModifierMapping</function></entry>
- </row>
- <row>
- <entry><systemitem>SetPointerMapping</systemitem></entry>
- <entry><function>XSetPointerMapping</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>SetScreenSaver</systemitem></entry>
- <entry><function>XGetScreenSaver</function></entry>
- </row>
- <row>
-
- <entry><function>XSetScreenSaver</function></entry>
- </row>
- <row>
- <entry><systemitem>SetSelectionOwner</systemitem></entry>
- <entry><function>XSetSelectionOwner</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>StoreColors</systemitem></entry>
- <entry><function>XStoreColor</function></entry>
- </row>
- <row>
-
- <entry><function>XStoreColors</function></entry>
- </row>
- <row>
- <entry><systemitem>StoreNamedColor</systemitem></entry>
- <entry><function>XStoreNamedColor</function></entry>
- </row>
- <row>
- <entry><systemitem>TranslateCoordinates</systemitem></entry>
- <entry><function>XTranslateCoordinates</function></entry>
- </row>
- <row>
- <entry><systemitem>UngrabButton</systemitem></entry>
- <entry><function>XUngrabButton</function></entry>
- </row>
- <row>
- <entry><systemitem>UngrabKey</systemitem></entry>
- <entry><function>XUngrabKey</function></entry>
- </row>
- <row>
- <entry><systemitem>UngrabKeyboard</systemitem></entry>
- <entry><function>XUngrabKeyboard</function></entry>
- </row>
- <row>
- <entry><systemitem>UngrabPointer</systemitem></entry>
- <entry><function>XUngrabPointer</function></entry>
- </row>
- <row>
- <entry><systemitem>UngrabServer</systemitem></entry>
- <entry><function>XUngrabServer</function></entry>
- </row>
- <row>
- <entry><systemitem>UninstallColormap</systemitem></entry>
- <entry><function>XUninstallColormap</function></entry>
- </row>
- <row>
- <entry><systemitem>UnmapSubwindows</systemitem></entry>
- <entry><function>XUnmapSubWindows</function></entry>
- </row>
- <row>
- <entry morerows="1"><systemitem>UnmapWindow</systemitem></entry>
- <entry><function>XUnmapWindow</function></entry>
- </row>
- <row>
-
- <entry><function>XWithdrawWindow</function></entry>
- </row>
- <row>
- <entry><systemitem>WarpPointer</systemitem></entry>
- <entry><function>XWarpPointer</function></entry>
- </row>
- </tbody>
- </tgroup>
-</table>
-</appendix>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<appendix id="xlib_functions_and_protocol_requests">
+<title>Xlib Functions and Protocol Requests</title>
+<para>
+This appendix provides two tables that relate to Xlib functions
+and the X protocol.
+The following table lists each Xlib function (in alphabetical order)
+and the corresponding protocol request that it generates.
+</para>
+<table>
+ <title>Protocol requests made by each Xlib function</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry align='left'>Xlib Function</entry>
+ <entry align='left'>Protocol Request</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><function>XActivateScreenSaver</function></entry>
+ <entry><systemitem>ForceScreenSaver</systemitem></entry></row>
+ <row>
+ <entry><function>XAddHost</function></entry>
+ <entry><systemitem>ChangeHosts</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAddHosts</function></entry>
+ <entry><systemitem>ChangeHosts</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAddToSaveSet</function></entry>
+ <entry><systemitem>ChangeSaveSet</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAllocColor</function></entry>
+ <entry><systemitem>AllocColor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAllocColorCells</function></entry>
+ <entry><systemitem>AllocColorCells</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAllocColorPlanes</function></entry>
+ <entry><systemitem>AllocColorPlanes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAllocNamedColor</function></entry>
+ <entry><systemitem>AllocNamedColor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAllowEvents</function></entry>
+ <entry><systemitem>AllowEvents</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAutoRepeatOff</function></entry>
+ <entry><systemitem>ChangeKeyboardControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XAutoRepeatOn</function></entry>
+ <entry><systemitem>ChangeKeyboardControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XBell</function></entry>
+ <entry><systemitem>Bell</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangeActivePointerGrab</function></entry>
+ <entry><systemitem>ChangeActivePointerGrab</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangeGC</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangeKeyboardControl</function></entry>
+ <entry><systemitem>ChangeKeyboardControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangeKeyboardMapping</function></entry>
+ <entry><systemitem>ChangeKeyboardMapping</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangePointerControl</function></entry>
+ <entry><systemitem>ChangePointerControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangeProperty</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangeSaveSet</function></entry>
+ <entry><systemitem>ChangeSaveSet</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XChangeWindowAttributes</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCirculateSubwindows</function></entry>
+ <entry><systemitem>CirculateWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCirculateSubwindowsDown</function></entry>
+ <entry><systemitem>CirculateWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCirculateSubwindowsUp</function></entry>
+ <entry><systemitem>CirculateWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XClearArea</function></entry>
+ <entry><systemitem>ClearArea</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XClearWindow</function></entry>
+ <entry><systemitem>ClearArea</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XConfigureWindow</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XConvertSelection</function></entry>
+ <entry><systemitem>ConvertSelection</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCopyArea</function></entry>
+ <entry><systemitem>CopyArea</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCopyColormapAndFree</function></entry>
+ <entry><systemitem>CopyColormapAndFree</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCopyGC</function></entry>
+ <entry><systemitem>CopyGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCopyPlane</function></entry>
+ <entry><systemitem>CopyPlane</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="3"><function>XCreateBitmapFromData</function></entry>
+ <entry><systemitem>CreateGC</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>CreatePixmap</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>FreeGC</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>PutImage</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreateColormap</function></entry>
+ <entry><systemitem>CreateColormap</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreateFontCursor</function></entry>
+ <entry><systemitem>CreateGlyphCursor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreateGC</function></entry>
+ <entry><systemitem>CreateGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreateGlyphCursor</function></entry>
+ <entry><systemitem>CreateGlyphCursor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreatePixmap</function></entry>
+ <entry><systemitem>CreatePixmap</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreatePixmapCursor</function></entry>
+ <entry><systemitem>CreateCursor</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="3"><function>XCreatePixmapFromData</function></entry>
+ <entry><systemitem>CreateGC</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>CreatePixmap</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>FreeGC</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>PutImage</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreateSimpleWindow</function></entry>
+ <entry><systemitem>CreateWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XCreateWindow</function></entry>
+ <entry><systemitem>CreateWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDefineCursor</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDeleteProperty</function></entry>
+ <entry><systemitem>DeleteProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDestroySubwindows</function></entry>
+ <entry><systemitem>DestroySubwindows</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDestroyWindow</function></entry>
+ <entry><systemitem>DestroyWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDisableAccessControl</function></entry>
+ <entry><systemitem>SetAccessControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawArc</function></entry>
+ <entry><systemitem>PolyArc</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawArcs</function></entry>
+ <entry><systemitem>PolyArc</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawImageString</function></entry>
+ <entry><systemitem>ImageText8</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawImageString16</function></entry>
+ <entry><systemitem>ImageText16</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawLine</function></entry>
+ <entry><systemitem>PolySegment</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawLines</function></entry>
+ <entry><systemitem>PolyLine</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawPoint</function></entry>
+ <entry><systemitem>PolyPoint</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawPoints</function></entry>
+ <entry><systemitem>PolyPoint</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawRectangle</function></entry>
+ <entry><systemitem>PolyRectangle</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawRectangles</function></entry>
+ <entry><systemitem>PolyRectangle</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawSegments</function></entry>
+ <entry><systemitem>PolySegment</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawString</function></entry>
+ <entry><systemitem>PolyText8</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawString16</function></entry>
+ <entry><systemitem>PolyText16</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawText</function></entry>
+ <entry><systemitem>PolyText8</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XDrawText16</function></entry>
+ <entry><systemitem>PolyText16</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XEnableAccessControl</function></entry>
+ <entry><systemitem>SetAccessControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFetchBytes</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFetchName</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFillArc</function></entry>
+ <entry><systemitem>PolyFillArc</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFillArcs</function></entry>
+ <entry><systemitem>PolyFillArc</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFillPolygon</function></entry>
+ <entry><systemitem>FillPoly</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFillRectangle</function></entry>
+ <entry><systemitem>PolyFillRectangle</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFillRectangles</function></entry>
+ <entry><systemitem>PolyFillRectangle</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XForceScreenSaver</function></entry>
+ <entry><systemitem>ForceScreenSaver</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFreeColormap</function></entry>
+ <entry><systemitem>FreeColormap</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFreeColors</function></entry>
+ <entry><systemitem>FreeColors</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFreeCursor</function></entry>
+ <entry><systemitem>FreeCursor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFreeFont</function></entry>
+ <entry><systemitem>CloseFont</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFreeGC</function></entry>
+ <entry><systemitem>FreeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XFreePixmap</function></entry>
+ <entry><systemitem>FreePixmap</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetAtomName</function></entry>
+ <entry><systemitem>GetAtomName</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetClassHint</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetFontPath</function></entry>
+ <entry><systemitem>GetFontPath</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetGeometry</function></entry>
+ <entry><systemitem>GetGeometry</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetIconName</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetIconSizes</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetImage</function></entry>
+ <entry><systemitem>GetImage</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetInputFocus</function></entry>
+ <entry><systemitem>GetInputFocus</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetKeyboardControl</function></entry>
+ <entry><systemitem>GetKeyboardControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetKeyboardMapping</function></entry>
+ <entry><systemitem>GetKeyboardMapping</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetModifierMapping</function></entry>
+ <entry><systemitem>GetModifierMapping</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetMotionEvents</function></entry>
+ <entry><systemitem>GetMotionEvents</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetNormalHints</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetPointerControl</function></entry>
+ <entry><systemitem>GetPointerControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetPointerMapping</function></entry>
+ <entry><systemitem>GetPointerMapping</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetRGBColormaps</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetScreenSaver</function></entry>
+ <entry><systemitem>GetScreenSaver</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetSelectionOwner</function></entry>
+ <entry><systemitem>GetSelectionOwner</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetSizeHints</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetTextProperty</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetTransientForHint</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetWMClientMachine</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XGetWMColormapWindows</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>InternAtom</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetWMHints</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetWMIconName</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetWMName</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetWMNormalHints</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XGetWMProtocols</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>InternAtom</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetWMSizeHints</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XGetWindowAttributes</function></entry>
+ <entry><systemitem>GetWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>GetGeometry</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetWindowProperty</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGetZoomHints</function></entry>
+ <entry><systemitem>GetProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGrabButton</function></entry>
+ <entry><systemitem>GrabButton</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGrabKey</function></entry>
+ <entry><systemitem>GrabKey</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGrabKeyboard</function></entry>
+ <entry><systemitem>GrabKeyboard</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGrabPointer</function></entry>
+ <entry><systemitem>GrabPointer</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XGrabServer</function></entry>
+ <entry><systemitem>GrabServer</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XIconifyWindow</function></entry>
+ <entry><systemitem>InternAtom</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>SendEvent</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XInitExtension</function></entry>
+ <entry><systemitem>QueryExtension</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XInstallColormap</function></entry>
+ <entry><systemitem>InstallColormap</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XInternAtom</function></entry>
+ <entry><systemitem>InternAtom</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XKillClient</function></entry>
+ <entry><systemitem>KillClient</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XListExtensions</function></entry>
+ <entry><systemitem>ListExtensions</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XListFonts</function></entry>
+ <entry><systemitem>ListFonts</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XListFontsWithInfo</function></entry>
+ <entry><systemitem>ListFontsWithInfo</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XListHosts</function></entry>
+ <entry><systemitem>ListHosts</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XListInstalledColormaps</function></entry>
+ <entry><systemitem>ListInstalledColormaps</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XListProperties</function></entry>
+ <entry><systemitem>ListProperties</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XLoadFont</function></entry>
+ <entry><systemitem>OpenFont</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XLoadQueryFont</function></entry>
+ <entry><systemitem>OpenFont</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>QueryFont</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XLookupColor</function></entry>
+ <entry><systemitem>LookupColor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XLowerWindow</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XMapRaised</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>MapWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XMapSubwindows</function></entry>
+ <entry><systemitem>MapSubwindows</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XMapWindow</function></entry>
+ <entry><systemitem>MapWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XMoveResizeWindow</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XMoveWindow</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XNoOp</function></entry>
+ <entry><systemitem>NoOperation</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XOpenDisplay</function></entry>
+ <entry><systemitem>CreateGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XParseColor</function></entry>
+ <entry><systemitem>LookupColor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XPutImage</function></entry>
+ <entry><systemitem>PutImage</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryBestCursor</function></entry>
+ <entry><systemitem>QueryBestSize</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryBestSize</function></entry>
+ <entry><systemitem>QueryBestSize</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryBestStipple</function></entry>
+ <entry><systemitem>QueryBestSize</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryBestTile</function></entry>
+ <entry><systemitem>QueryBestSize</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryColor</function></entry>
+ <entry><systemitem>QueryColors</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryColors</function></entry>
+ <entry><systemitem>QueryColors</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryExtension</function></entry>
+ <entry><systemitem>QueryExtension</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryFont</function></entry>
+ <entry><systemitem>QueryFont</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryKeymap</function></entry>
+ <entry><systemitem>QueryKeymap</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryPointer</function></entry>
+ <entry><systemitem>QueryPointer</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryTextExtents</function></entry>
+ <entry><systemitem>QueryTextExtents</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryTextExtents16</function></entry>
+ <entry><systemitem>QueryTextExtents</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XQueryTree</function></entry>
+ <entry><systemitem>QueryTree</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRaiseWindow</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="3"><function>XReadBitmapFile</function></entry>
+ <entry><systemitem>CreateGC</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>CreatePixmap</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>FreeGC</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>PutImage</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRecolorCursor</function></entry>
+ <entry><systemitem>RecolorCursor</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XReconfigureWMWindow</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>SendEvent</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRemoveFromSaveSet</function></entry>
+ <entry><systemitem>ChangeSaveSet</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRemoveHost</function></entry>
+ <entry><systemitem>ChangeHosts</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRemoveHosts</function></entry>
+ <entry><systemitem>ChangeHosts</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XReparentWindow</function></entry>
+ <entry><systemitem>ReparentWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XResetScreenSaver</function></entry>
+ <entry><systemitem>ForceScreenSaver</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XResizeWindow</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRestackWindows</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRotateBuffers</function></entry>
+ <entry><systemitem>RotateProperties</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XRotateWindowProperties</function></entry>
+ <entry><systemitem>RotateProperties</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSelectInput</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSendEvent</function></entry>
+ <entry><systemitem>SendEvent</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetAccessControl</function></entry>
+ <entry><systemitem>SetAccessControl</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetArcMode</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetBackground</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetClassHint</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetClipMask</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetClipOrigin</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetClipRectangles</function></entry>
+ <entry><systemitem>SetClipRectangles</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetCloseDownMode</function></entry>
+ <entry><systemitem>SetCloseDownMode</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetCommand</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetDashes</function></entry>
+ <entry><systemitem>SetDashes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetFillRule</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetFillStyle</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetFont</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetFontPath</function></entry>
+ <entry><systemitem>SetFontPath</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetForeground</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetFunction</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetGraphicsExposures</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetIconName</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetIconSizes</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetInputFocus</function></entry>
+ <entry><systemitem>SetInputFocus</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetLineAttributes</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetModifierMapping</function></entry>
+ <entry><systemitem>SetModifierMapping</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetNormalHints</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetPlaneMask</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetPointerMapping</function></entry>
+ <entry><systemitem>SetPointerMapping</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetRGBColormaps</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetScreenSaver</function></entry>
+ <entry><systemitem>SetScreenSaver</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetSelectionOwner</function></entry>
+ <entry><systemitem>SetSelectionOwner</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetSizeHints</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetStandardProperties</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetState</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetStipple</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetSubwindowMode</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetTextProperty</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetTile</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetTransientForHint</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetTSOrigin</function></entry>
+ <entry><systemitem>ChangeGC</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWMClientMachine</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XSetWMColormapWindows</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>InternAtom</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWMHints</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWMIconName</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWMName</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWMNormalHints</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWMProperties</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XSetWMProtocols</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>InternAtom</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWMSizeHints</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWindowBackground</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWindowBackgroundPixmap</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWindowBorder</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWindowBorderPixmap</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWindowBorderWidth</function></entry>
+ <entry><systemitem>ConfigureWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetWindowColormap</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSetZoomHints</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XStoreBuffer</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XStoreBytes</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XStoreColor</function></entry>
+ <entry><systemitem>StoreColors</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XStoreColors</function></entry>
+ <entry><systemitem>StoreColors</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XStoreName</function></entry>
+ <entry><systemitem>ChangeProperty</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XStoreNamedColor</function></entry>
+ <entry><systemitem>StoreNamedColor</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSync</function></entry>
+ <entry><systemitem>GetInputFocus</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XSynchronize</function></entry>
+ <entry><systemitem>GetInputFocus</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XTranslateCoordinates</function></entry>
+ <entry><systemitem>TranslateCoordinates</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUndefineCursor</function></entry>
+ <entry><systemitem>ChangeWindowAttributes</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUngrabButton</function></entry>
+ <entry><systemitem>UngrabButton</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUngrabKey</function></entry>
+ <entry><systemitem>UngrabKey</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUngrabKeyboard</function></entry>
+ <entry><systemitem>UngrabKeyboard</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUngrabPointer</function></entry>
+ <entry><systemitem>UngrabPointer</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUngrabServer</function></entry>
+ <entry><systemitem>UngrabServer</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUninstallColormap</function></entry>
+ <entry><systemitem>UninstallColormap</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUnloadFont</function></entry>
+ <entry><systemitem>CloseFont</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUnmapSubwindows</function></entry>
+ <entry><systemitem>UnmapSubwindows</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XUnmapWindow</function></entry>
+ <entry><systemitem>UnmapWindow</systemitem></entry>
+ </row>
+ <row>
+ <entry><function>XWarpPointer</function></entry>
+ <entry><systemitem>WarpPointer</systemitem></entry>
+ </row>
+ <row>
+ <entry morerows="1"><function>XWithdrawWindow</function></entry>
+ <entry><systemitem>SendEvent</systemitem></entry>
+ </row>
+ <row>
+
+ <entry><systemitem>UnmapWindow</systemitem></entry>
+ </row>
+ </tbody>
+ </tgroup>
+</table>
+<para>
+The following table lists each X protocol request (in alphabetical
+order) and the Xlib functions that reference it.
+</para>
+<table>
+ <title>Xlib functions which use each Protocol Request</title>
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry align='left'>Protocol Request</entry>
+ <entry align='left'>Xlib Function</entry>
+ </row>
+ </thead>
+ <tbody>
+ <row>
+ <entry><systemitem>AllocColor</systemitem></entry>
+ <entry><function>XAllocColor</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>AllocColorCells</systemitem></entry>
+ <entry><function>XAllocColorCells</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>AllocColorPlanes</systemitem></entry>
+ <entry><function>XAllocColorPlanes</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>AllocNamedColor</systemitem></entry>
+ <entry><function>XAllocNamedColor</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>AllowEvents</systemitem></entry>
+ <entry><function>XAllowEvents</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>Bell</systemitem></entry>
+ <entry><function>XBell</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ChangeActivePointerGrab</systemitem></entry>
+ <entry><function>XChangeActivePointerGrab</function></entry>
+ </row>
+ <row>
+ <entry morerows="17"><systemitem>ChangeGC</systemitem></entry>
+ <entry><function>XChangeGC</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetArcMode</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetBackground</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetClipMask</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetClipOrigin</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetFillRule</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetFillStyle</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetFont</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetForeground</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetFunction</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetGraphicsExposures</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetLineAttributes</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetPlaneMask</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetState</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetStipple</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetSubwindowMode</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetTile</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetTSOrigin</function></entry>
+ </row>
+ <row>
+ <entry morerows="3"><systemitem>ChangeHosts</systemitem></entry>
+ <entry><function>XAddHost</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XAddHosts</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XRemoveHost</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XRemoveHosts</function></entry>
+ </row>
+ <row>
+ <entry morerows="2"><systemitem>ChangeKeyboardControl</systemitem></entry>
+ <entry><function>XAutoRepeatOff</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XAutoRepeatOn</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XChangeKeyboardControl</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ChangeKeyboardMapping</systemitem></entry>
+ <entry><function>XChangeKeyboardMapping</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ChangePointerControl</systemitem></entry>
+ <entry><function>XChangePointerControl</function></entry>
+ </row>
+ <row>
+ <entry morerows="23"><systemitem>ChangeProperty</systemitem></entry>
+ <entry><function>XChangeProperty</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetClassHint</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetCommand</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetIconName</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetIconSizes</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetNormalHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetRGBColormaps</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetSizeHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetStandardProperties</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetTextProperty</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetTransientForHint</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMClientMachine</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMColormapWindows</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMIconName</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMName</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMNormalHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMProperties</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMProtocols</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMSizeHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetZoomHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XStoreBuffer</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XStoreBytes</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XStoreName</function></entry>
+ </row>
+ <row>
+ <entry morerows="2"><systemitem>ChangeSaveSet</systemitem></entry>
+ <entry><function>XAddToSaveSet</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XChangeSaveSet</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XRemoveFromSaveSet</function></entry>
+ </row>
+ <row>
+ <entry morerows="8"><systemitem>ChangeWindowAttributes</systemitem></entry>
+ <entry><function>XChangeWindowAttributes</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XDefineCursor</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSelectInput</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWindowBackground</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWindowBackgroundPixmap</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWindowBorder</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWindowBorderPixmap</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWindowColormap</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XUndefineCursor</function></entry>
+ </row>
+ <row>
+ <entry morerows="2"><systemitem>CirculateWindow</systemitem></entry>
+ <entry><function>XCirculateSubwindowsDown</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCirculateSubwindowsUp</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCirculateSubwindows</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>ClearArea</systemitem></entry>
+ <entry><function>XClearArea</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XClearWindow</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>CloseFont</systemitem></entry>
+ <entry><function>XFreeFont</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XUnloadFont</function></entry>
+ </row>
+ <row>
+ <entry morerows="9"><systemitem>ConfigureWindow</systemitem></entry>
+ <entry><function>XConfigureWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XLowerWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XMapRaised</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XMoveResizeWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XMoveWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XRaiseWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XReconfigureWMWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XResizeWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XRestackWindows</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWindowBorderWidth</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ConvertSelection</systemitem></entry>
+ <entry><function>XConvertSelection</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>CopyArea</systemitem></entry>
+ <entry><function>XCopyArea</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>CopyColormapAndFree</systemitem></entry>
+ <entry><function>XCopyColormapAndFree</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>CopyGC</systemitem></entry>
+ <entry><function>XCopyGC</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>CopyPlane</systemitem></entry>
+ <entry><function>XCopyPlane</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>CreateColormap</systemitem></entry>
+ <entry><function>XCreateColormap</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>CreateCursor</systemitem></entry>
+ <entry><function>XCreatePixmapCursor</function></entry>
+ </row>
+ <row>
+ <entry morerows="4"><systemitem>CreateGC</systemitem></entry>
+ <entry><function>XCreateGC</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreateBitmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreatePixmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XOpenDisplay</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XReadBitmapFile</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>CreateGlyphCursor</systemitem></entry>
+ <entry><function>XCreateFontCursor</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreateGlyphCursor</function></entry>
+ </row>
+ <row>
+ <entry morerows="3"><systemitem>CreatePixmap</systemitem></entry>
+ <entry><function>XCreatePixmap</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreateBitmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreatePixmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XReadBitmapFile</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>CreateWindow</systemitem></entry>
+ <entry><function>XCreateSimpleWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreateWindow</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>DeleteProperty</systemitem></entry>
+ <entry><function>XDeleteProperty</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>DestroySubwindows</systemitem></entry>
+ <entry><function>XDestroySubwindows</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>DestroyWindow</systemitem></entry>
+ <entry><function>XDestroyWindow</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>FillPoly</systemitem></entry>
+ <entry><function>XFillPolygon</function></entry>
+ </row>
+ <row>
+ <entry morerows="2"><systemitem>ForceScreenSaver</systemitem></entry>
+ <entry><function>XActivateScreenSaver</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XForceScreenSaver</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XResetScreenSaver</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>FreeColormap</systemitem></entry>
+ <entry><function>XFreeColormap</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>FreeColors</systemitem></entry>
+ <entry><function>XFreeColors</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>FreeCursor</systemitem></entry>
+ <entry><function>XFreeCursor</function></entry>
+ </row>
+ <row>
+ <entry morerows="3"><systemitem>FreeGC</systemitem></entry>
+ <entry><function>XFreeGC</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreateBitmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreatePixmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XReadBitmapFile</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>FreePixmap</systemitem></entry>
+ <entry><function>XFreePixmap</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetAtomName</systemitem></entry>
+ <entry><function>XGetAtomName</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetFontPath</systemitem></entry>
+ <entry><function>XGetFontPath</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>GetGeometry</systemitem></entry>
+ <entry><function>XGetGeometry</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWindowAttributes</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetImage</systemitem></entry>
+ <entry><function>XGetImage</function></entry>
+ </row>
+ <row>
+ <entry morerows="2"><systemitem>GetInputFocus</systemitem></entry>
+ <entry><function>XGetInputFocus</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSync</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSynchronize</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetKeyboardControl</systemitem></entry>
+ <entry><function>XGetKeyboardControl</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetKeyboardMapping</systemitem></entry>
+ <entry><function>XGetKeyboardMapping</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetModifierMapping</systemitem></entry>
+ <entry><function>XGetModifierMapping</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetMotionEvents</systemitem></entry>
+ <entry><function>XGetMotionEvents</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetPointerControl</systemitem></entry>
+ <entry><function>XGetPointerControl</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetPointerMapping</systemitem></entry>
+ <entry><function>XGetPointerMapping</function></entry>
+ </row>
+ <row>
+ <entry morerows="19"><systemitem>GetProperty</systemitem></entry>
+ <entry><function>XFetchBytes</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XFetchName</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetClassHint</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetIconName</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetIconSizes</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetNormalHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetRGBColormaps</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetSizeHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetTextProperty</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetTransientForHint</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMClientMachine</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMColormapWindows</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMIconName</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMName</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMNormalHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMProtocols</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMSizeHints</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWindowProperty</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetZoomHints</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetSelectionOwner</systemitem></entry>
+ <entry><function>XGetSelectionOwner</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GetWindowAttributes</systemitem></entry>
+ <entry><function>XGetWindowAttributes</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GrabButton</systemitem></entry>
+ <entry><function>XGrabButton</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GrabKey</systemitem></entry>
+ <entry><function>XGrabKey</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GrabKeyboard</systemitem></entry>
+ <entry><function>XGrabKeyboard</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GrabPointer</systemitem></entry>
+ <entry><function>XGrabPointer</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>GrabServer</systemitem></entry>
+ <entry><function>XGrabServer</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ImageText8</systemitem></entry>
+ <entry><function>XDrawImageString</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ImageText16</systemitem></entry>
+ <entry><function>XDrawImageString16</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>InstallColormap</systemitem></entry>
+ <entry><function>XInstallColormap</function></entry>
+ </row>
+ <row>
+ <entry morerows="5"><systemitem>InternAtom</systemitem></entry>
+ <entry><function>XGetWMColormapWindows</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XGetWMProtocols</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XIconifyWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XInternAtom</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMColormapWindows</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetWMProtocols</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>KillClient</systemitem></entry>
+ <entry><function>XKillClient</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ListExtensions</systemitem></entry>
+ <entry><function>XListExtensions</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ListFonts</systemitem></entry>
+ <entry><function>XListFonts</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ListFontsWithInfo</systemitem></entry>
+ <entry><function>XListFontsWithInfo</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ListHosts</systemitem></entry>
+ <entry><function>XListHosts</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ListInstalledColormaps</systemitem></entry>
+ <entry><function>XListInstalledColormaps</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ListProperties</systemitem></entry>
+ <entry><function>XListProperties</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>LookupColor</systemitem></entry>
+ <entry><function>XLookupColor</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XParseColor</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>MapSubwindows</systemitem></entry>
+ <entry><function>XMapSubwindows</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>MapWindow</systemitem></entry>
+ <entry><function>XMapRaised</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XMapWindow</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>NoOperation</systemitem></entry>
+ <entry><function>XNoOp</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>OpenFont</systemitem></entry>
+ <entry><function>XLoadFont</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XLoadQueryFont</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolyArc</systemitem></entry>
+ <entry><function>XDrawArc</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XDrawArcs</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolyFillArc</systemitem></entry>
+ <entry><function>XFillArc</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XFillArcs</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolyFillRectangle</systemitem></entry>
+ <entry><function>XFillRectangle</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XFillRectangles</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>PolyLine</systemitem></entry>
+ <entry><function>XDrawLines</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolyPoint</systemitem></entry>
+ <entry><function>XDrawPoint</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XDrawPoints</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolyRectangle</systemitem></entry>
+ <entry><function>XDrawRectangle</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XDrawRectangles</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolySegment</systemitem></entry>
+ <entry><function>XDrawLine</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XDrawSegments</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolyText8</systemitem></entry>
+ <entry><function>XDrawString</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XDrawText</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>PolyText16</systemitem></entry>
+ <entry><function>XDrawString16</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XDrawText16</function></entry>
+ </row>
+ <row>
+ <entry morerows="3"><systemitem>PutImage</systemitem></entry>
+ <entry><function>XPutImage</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreateBitmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XCreatePixmapFromData</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XReadBitmapFile</function></entry>
+ </row>
+ <row>
+ <entry morerows="3"><systemitem>QueryBestSize</systemitem></entry>
+ <entry><function>XQueryBestCursor</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XQueryBestSize</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XQueryBestStipple</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XQueryBestTile</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>QueryColors</systemitem></entry>
+ <entry><function>XQueryColor</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XQueryColors</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>QueryExtension</systemitem></entry>
+ <entry><function>XInitExtension</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XQueryExtension</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>QueryFont</systemitem></entry>
+ <entry><function>XLoadQueryFont</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XQueryFont</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>QueryKeymap</systemitem></entry>
+ <entry><function>XQueryKeymap</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>QueryPointer</systemitem></entry>
+ <entry><function>XQueryPointer</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>QueryTextExtents</systemitem></entry>
+ <entry><function>XQueryTextExtents</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XQueryTextExtents16</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>QueryTree</systemitem></entry>
+ <entry><function>XQueryTree</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>RecolorCursor</systemitem></entry>
+ <entry><function>XRecolorCursor</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>ReparentWindow</systemitem></entry>
+ <entry><function>XReparentWindow</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>RotateProperties</systemitem></entry>
+ <entry><function>XRotateBuffers</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XRotateWindowProperties</function></entry>
+ </row>
+ <row>
+ <entry morerows="3"><systemitem>SendEvent</systemitem></entry>
+ <entry><function>XIconifyWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XReconfigureWMWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSendEvent</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XWithdrawWindow</function></entry>
+ </row>
+ <row>
+ <entry morerows="2"><systemitem>SetAccessControl</systemitem></entry>
+ <entry><function>XDisableAccessControl</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XEnableAccessControl</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetAccessControl</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetClipRectangles</systemitem></entry>
+ <entry><function>XSetClipRectangles</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetCloseDownMode</systemitem></entry>
+ <entry><function>XSetCloseDownMode</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetDashes</systemitem></entry>
+ <entry><function>XSetDashes</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetFontPath</systemitem></entry>
+ <entry><function>XSetFontPath</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetInputFocus</systemitem></entry>
+ <entry><function>XSetInputFocus</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetModifierMapping</systemitem></entry>
+ <entry><function>XSetModifierMapping</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetPointerMapping</systemitem></entry>
+ <entry><function>XSetPointerMapping</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>SetScreenSaver</systemitem></entry>
+ <entry><function>XGetScreenSaver</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XSetScreenSaver</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>SetSelectionOwner</systemitem></entry>
+ <entry><function>XSetSelectionOwner</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>StoreColors</systemitem></entry>
+ <entry><function>XStoreColor</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XStoreColors</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>StoreNamedColor</systemitem></entry>
+ <entry><function>XStoreNamedColor</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>TranslateCoordinates</systemitem></entry>
+ <entry><function>XTranslateCoordinates</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>UngrabButton</systemitem></entry>
+ <entry><function>XUngrabButton</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>UngrabKey</systemitem></entry>
+ <entry><function>XUngrabKey</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>UngrabKeyboard</systemitem></entry>
+ <entry><function>XUngrabKeyboard</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>UngrabPointer</systemitem></entry>
+ <entry><function>XUngrabPointer</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>UngrabServer</systemitem></entry>
+ <entry><function>XUngrabServer</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>UninstallColormap</systemitem></entry>
+ <entry><function>XUninstallColormap</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>UnmapSubwindows</systemitem></entry>
+ <entry><function>XUnmapSubWindows</function></entry>
+ </row>
+ <row>
+ <entry morerows="1"><systemitem>UnmapWindow</systemitem></entry>
+ <entry><function>XUnmapWindow</function></entry>
+ </row>
+ <row>
+
+ <entry><function>XWithdrawWindow</function></entry>
+ </row>
+ <row>
+ <entry><systemitem>WarpPointer</systemitem></entry>
+ <entry><function>XWarpPointer</function></entry>
+ </row>
+ </tbody>
+ </tgroup>
+</table>
+</appendix>
diff --git a/libX11/specs/libX11/AppC.xml b/libX11/specs/libX11/AppC.xml
index 28f5b5395..cb2db3440 100644
--- a/libX11/specs/libX11/AppC.xml
+++ b/libX11/specs/libX11/AppC.xml
@@ -131,6 +131,7 @@ the result is implementation-dependent.
Uppercase and lowercase matter;
the strings ``thing'', ``Thing'', and ``thinG''
are all considered different names.
+</para>
<indexterm significance="preferred"><primary>XListExtensions</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlistextensions'>
@@ -163,7 +164,6 @@ Returns the number of extensions listed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -173,6 +173,7 @@ function returns a list of all extensions supported by the server.
If the data returned by the server is in the Latin Portable Character Encoding,
then the returned strings are in the Host Portable Character Encoding.
Otherwise, the result is implementation-dependent.
+</para>
<indexterm significance="preferred"><primary>XFreeExtensionList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreeextensionlist'>
@@ -194,7 +195,6 @@ Specifies the list of extension names.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -253,7 +253,6 @@ typedef struct _XExtCodes { /* public to extension, cannot be changed */
} XExtCodes;
</synopsis>
</para>
-<para>
<!-- .LP -->
<!-- .eM -->
<indexterm significance="preferred"><primary>XInitExtension</primary></indexterm>
@@ -288,7 +287,6 @@ Specifies the extension name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -320,7 +318,6 @@ structure is
needed in the other calls that follow.
This extension number is unique only to a single connection.
</para>
-<para>
<!-- .LP -->
<indexterm significance="preferred"><primary>XAddExtension</primary></indexterm>
<!-- .sM -->
@@ -343,7 +340,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -370,6 +366,7 @@ format, and the handling of errors.
<!-- .LP -->
All of these functions return the previous procedure defined for this
extension.
+</para>
<indexterm significance="preferred"><primary>XESetCloseDisplay</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xesetclosedisplay'>
@@ -413,7 +410,6 @@ Specifies the procedure to call when the display is closed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -439,7 +435,6 @@ with these arguments:
</funcprototype>
</funcsynopsis>
</para>
-<para>
<indexterm significance="preferred"><primary>XESetCreateGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xesetcreategc'>
@@ -483,7 +478,6 @@ Specifies the procedure to call when a GC is closed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -640,7 +634,6 @@ your procedure is called with these arguments:
</funcprototype>
</funcsynopsis>
</para>
-<para>
<!-- .LP -->
<!-- .eM -->
<indexterm significance="preferred"><primary>XESetCreateFont</primary></indexterm>
@@ -686,7 +679,6 @@ Specifies the procedure to call when a font is created.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -721,7 +713,6 @@ your procedure is called with these arguments:
</funcprototype>
</funcsynopsis>
</para>
-<para>
<!-- .LP -->
<!-- .eM -->
<indexterm significance="preferred"><primary>XESetFreeFont</primary></indexterm>
@@ -767,7 +758,6 @@ Specifies the procedure to call when a font is freed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -835,6 +825,7 @@ structure size cannot be bigger than the size of the
union of structures.
There also is no way to guarantee that more than 24 elements or 96 characters
in the structure will be fully portable between machines.
+</para>
<!-- .NE -->
<indexterm significance="preferred"><primary>XESetWireToEvent</primary></indexterm>
<!-- .sM -->
@@ -879,7 +870,6 @@ Specifies the procedure to call when converting an event.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -944,7 +934,6 @@ To initialize the serial number component of the event, call
<function>_XSetLastRequestRead</function>
with the event and use the return value.
</para>
-<para>
<!-- .LP -->
<indexterm significance="preferred"><primary>_XSetLastRequestRead</primary></indexterm>
<!-- .sM -->
@@ -978,7 +967,6 @@ Specifies the wire event structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -988,7 +976,6 @@ function computes and returns a complete serial number from the partial
serial number in the event.
<!-- .sp -->
</para>
-<para>
<!-- .LP -->
<indexterm significance="preferred"><primary>XESetEventToWire</primary></indexterm>
<!-- .sM -->
@@ -1033,7 +1020,6 @@ Specifies the procedure to call when converting an event.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1082,6 +1068,7 @@ structure.
All other members then should be copied from the host format to the
<structname>xEvent</structname>
structure.
+</para>
<indexterm significance="preferred"><primary>XESetWireToError</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xesetwiretoerror'>
@@ -1125,7 +1112,6 @@ Specifies the procedure to call when an error is received.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1177,6 +1163,7 @@ then the function should return
<symbol>False</symbol>;
otherwise, it should return
<symbol>True</symbol>.
+</para>
<indexterm significance="preferred"><primary>XESetError</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xeseterror'>
@@ -1220,7 +1207,6 @@ Specifies the procedure to call when an error is received.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1268,6 +1254,7 @@ If your procedure returns nonzero,
the error is suppressed, and
<function>_XReply</function>
returns the value of ret_code.
+</para>
<indexterm significance="preferred"><primary>XESetErrorString</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xeseterrorstring'>
@@ -1311,7 +1298,6 @@ Specifies the procedure to call to obtain an error string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1344,6 +1330,7 @@ The following is an example.
Your procedure is called with the error code for every error detected.
You should copy nbytes of a null-terminated string containing the
error message into buffer.
+</para>
<indexterm significance="preferred"><primary>XESetPrintErrorValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xesetprinterrorvalues'>
@@ -1387,7 +1374,6 @@ Specifies the procedure to call when an error is printed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1426,6 +1412,7 @@ to obtain additional values set by using
<function>XESetWireToError</function>.
The underlying type of the fp argument is system dependent;
on a <acronym>POSIX</acronym>-compliant system, fp should be cast to type FILE*.
+</para>
<indexterm significance="preferred"><primary>XESetFlushGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xesetflushgc'>
@@ -1469,7 +1456,6 @@ Specifies the procedure to call when a GC is flushed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1478,6 +1464,7 @@ The procedure set by the
function has the same interface as the procedure set by the
<function>XESetCopyGC</function>
function, but is called when a GC cache needs to be updated in the server.
+</para>
<indexterm significance="preferred"><primary>XESetBeforeFlush</primary></indexterm>
<!-- .sM -->
<funcsynopsis>
@@ -1521,7 +1508,6 @@ Specifies the procedure to call when a buffer is flushed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1613,7 +1599,6 @@ union { Display *display;
XFontStruct *font } XEDataObject;
</synopsis>
</para>
-<para>
<!-- .LP -->
<!-- .eM -->
<indexterm significance="preferred"><primary>XEHeadOfExtensionList</primary></indexterm>
@@ -1637,7 +1622,6 @@ Specifies the object.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1652,7 +1636,6 @@ allows an extension to attach arbitrary data to any of the structures
of types contained in
<structname>XEDataObject</structname>.
</para>
-<para>
<!-- .LP -->
<indexterm significance="preferred"><primary>XAddToExtensionList</primary></indexterm>
<!-- .sM -->
@@ -1686,7 +1669,6 @@ Specifies the extension data structure to add.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1694,6 +1676,7 @@ The structure argument is a pointer to one of the data structures
enumerated above.
You must initialize ext_data-&gt;number with the extension number
before calling this function.
+</para>
<indexterm significance="preferred"><primary>XFindOnExtensionList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfindonextensionlist'>
@@ -1727,7 +1710,6 @@ Specifies the extension number from
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1745,6 +1727,7 @@ The
<function>XAllocID</function>
macro, which allocates and returns a resource ID, is defined in
<filename class="headerfile">&lt;X11/Xlib.h&gt;</filename>.
+</para>
<indexterm significance="preferred"><primary>XAllocID</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xallocid'>
@@ -1766,7 +1749,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1780,6 +1762,7 @@ It returns a resource ID that you can use when creating new resources.
The
<function>XAllocIDs</function>
macro allocates and returns an array of resource ID.
+</para>
<indexterm significance="preferred"><primary>XAllocIDs</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xallocids'>
@@ -1823,7 +1806,6 @@ Specifies the number of resource IDs requested.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1857,6 +1839,7 @@ if any elements have changed.
The
<function>FlushGC</function>
macro is defined as follows:
+</para>
<indexterm significance="preferred"><primary>FlushGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='flushgc'>
@@ -1889,7 +1872,6 @@ Specifies the GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1907,6 +1889,7 @@ The
<function>_XFlushGCCache</function>
procedure
is defined as follows:
+</para>
<indexterm significance="preferred"><primary>_XFlushGCCache</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='_xflushgccache'>
@@ -1939,7 +1922,6 @@ Specifies the GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2340,7 +2322,6 @@ Two calls, which are generally implemented as macros, have been provided.
</funcsynopsis>
<!-- .FN -->
</para>
-<para>
<!-- .LP -->
<indexterm significance="preferred"><primary>UnlockDisplay</primary></indexterm>
<funcsynopsis id='unlockdisplay'>
@@ -2362,7 +2343,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2581,6 +2561,7 @@ packet to arrive.
If any events arrive in the meantime,
<function>_XReply</function>
places them in the queue for later use.
+</para>
<indexterm significance="preferred"><primary>_XReply</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='_xreply'>
@@ -2636,7 +2617,6 @@ should be discarded.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2748,7 +2728,6 @@ and use the appropriate
<function>_XRead</function>
function to read the variable-length data.
</para>
-<para>
<!-- .LP -->
<!-- .sM -->
<funcsynopsis id='_xread'>
@@ -2792,7 +2771,6 @@ Specifies the number of bytes required.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2800,7 +2778,6 @@ The
<function>_XRead</function>
function reads the specified number of bytes into data_return.
</para>
-<para>
<!-- .LP -->
<!-- .sM -->
<funcsynopsis id='_xread16'>
@@ -2844,7 +2821,6 @@ Specifies the number of bytes required.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2854,7 +2830,6 @@ function reads the specified number of bytes,
unpacking them as 16-bit quantities,
into the specified array as shorts.
</para>
-<para>
<!-- .LP -->
<!-- .sM -->
<funcsynopsis id='_xread32'>
@@ -2898,7 +2873,6 @@ Specifies the number of bytes required.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2908,7 +2882,6 @@ function reads the specified number of bytes,
unpacking them as 32-bit quantities,
into the specified array as longs.
</para>
-<para>
<!-- .LP -->
<!-- .sM -->
<funcsynopsis id='_xread16pad'>
@@ -2952,7 +2925,6 @@ Specifies the number of bytes required.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2965,7 +2937,6 @@ If the number of bytes is not a multiple of four,
<function>_XRead16Pad</function>
reads and discards up to two additional pad bytes.
</para>
-<para>
<!-- .LP -->
<!-- .sM -->
<funcsynopsis id='_xreadpad'>
@@ -3009,7 +2980,6 @@ Specifies the number of bytes required.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3066,6 +3036,7 @@ the general memory allocators may be too expensive to use
(particularly in output functions, which are performance critical).
The following function returns a scratch buffer for use within a
critical section:
+</para>
<indexterm significance="preferred"><primary>_XAllocScratch</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='_xallocscratch'>
@@ -3098,7 +3069,6 @@ Specifies the number of bytes required.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3123,6 +3093,7 @@ families of functions.
<!-- .sp -->
The following function returns a scratch buffer for use across
critical sections:
+</para>
<indexterm significance="preferred"><primary>_XAllocTemp</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='_xalloctemp'>
@@ -3155,13 +3126,13 @@ Specifies the number of bytes required.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
This storage can be used across calls that might permit another thread to
execute inside Xlib. The storage must be explicitly returned to Xlib.
The following function returns the storage:
+</para>
<indexterm significance="preferred"><primary>_XFreeTemp</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='_xfreetemp'>
@@ -3205,7 +3176,6 @@ Specifies the size of the buffer.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/AppD.xml b/libX11/specs/libX11/AppD.xml
index ec77ef6a8..4cde16240 100644
--- a/libX11/specs/libX11/AppD.xml
+++ b/libX11/specs/libX11/AppD.xml
@@ -53,6 +53,7 @@ This function has been superseded by
and sets all or portions of the
<property>WM_NAME</property>, <property>WM_ICON_NAME</property>, <property>WM_HINTS</property>, <property>WM_COMMAND</property>,
and <property>WM_NORMAL_HINTS</property> properties.
+</para>
<indexterm significance="preferred"><primary>XSetStandardProperties</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetstandardproperties'>
@@ -154,7 +155,6 @@ Specifies a pointer to the size hints for the window in its normal state.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -202,6 +202,7 @@ To set the size hints for a given window in its normal state, use
<function>XSetNormalHints</function>.
This function has been superseded by
<function>XSetWMNormalHints</function>.
+</para>
<indexterm significance="preferred"><primary>XSetNormalHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetnormalhints'>
@@ -245,7 +246,6 @@ Specifies a pointer to the size hints for the window in its normal state.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -291,6 +291,7 @@ To return the size hints for a window in its normal state, use
<function>XGetNormalHints</function>.
This function has been superseded by
<function>XGetWMNormalHints</function>.
+</para>
<indexterm significance="preferred"><primary>XGetNormalHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetnormalhints'>
@@ -334,7 +335,6 @@ Returns the size hints for the window in its normal state.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -362,6 +362,7 @@ To set the zoom hints for a window, use
<function>XSetZoomHints</function>.
This function is no longer supported by the
<emphasis remap='I'>Inter-Client Communication Conventions Manual</emphasis>.
+</para>
<indexterm significance="preferred"><primary>XSetZoomHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetzoomhints'>
@@ -405,7 +406,6 @@ Specifies a pointer to the zoom hints.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -432,6 +432,7 @@ To read the zoom hints for a window, use
<function>XGetZoomHints</function>.
This function is no longer supported by the
<emphasis remap='I'>Inter-Client Communication Conventions Manual</emphasis>.
+</para>
<indexterm significance="preferred"><primary>XGetZoomHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetzoomhints'>
@@ -475,7 +476,6 @@ Returns the zoom hints.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -499,6 +499,7 @@ To set the value of any property of type <property>WM_SIZE_HINTS</property>, use
<function>XSetSizeHints</function>.
This function has been superseded by
<function>XSetWMSizeHints</function>.
+</para>
<indexterm significance="preferred"><primary>XSetSizeHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetsizehints'>
@@ -553,7 +554,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -586,6 +586,7 @@ To read the value of any property of type <property>WM_SIZE_HINTS</property>, us
<function>XGetSizeHints</function>.
This function has been superseded by
<function>XGetWMSizeHints</function>.
+</para>
<indexterm significance="preferred"><primary>XGetSizeHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetsizehints'>
@@ -640,7 +641,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -679,6 +679,7 @@ structure associated with one of the described atoms, use
<function>XGetStandardColormap</function>.
This function has been superseded by
<function>XGetRGBColormaps</function>.
+</para>
<indexterm significance="preferred"><primary>XGetStandardColormap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetstandardcolormap'>
@@ -733,7 +734,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -772,6 +772,7 @@ To set a standard colormap, use
<function>XSetStandardColormap</function>.
This function has been superseded by
<function>XSetRGBColormaps</function>.
+</para>
<indexterm significance="preferred"><primary>XSetStandardColormap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetstandardcolormap'>
@@ -826,7 +827,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -854,6 +854,7 @@ and a default position, use
<function>XGeometry</function>.
This function has been superseded by
<function>XWMGeometry</function>.
+</para>
<indexterm><primary>Window</primary><secondary>determining location</secondary></indexterm>
<indexterm significance="preferred"><primary>XGeometry</primary></indexterm>
<!-- .sM -->
@@ -1008,7 +1009,6 @@ Return the width and height determined.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1054,7 +1054,6 @@ function provides a primitive interface to the resource manager facilities
discussed in <link linkend="resource_manager_functions">chapter 15</link>.
It is only useful in very simple applications.
</para>
-<para>
<!-- .LP -->
<!-- .sp -->
<indexterm significance="preferred"><primary>XGetDefault</primary></indexterm>
@@ -1101,7 +1100,6 @@ Specifies the option name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1735,6 +1733,7 @@ To obtain data from a given
<function>XAssocTable</function>,
use
<function>XLookUpAssoc</function>.
+</para>
<indexterm significance="preferred"><primary>XLookUpAssoc</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlookupassoc'>
@@ -1778,7 +1777,6 @@ Specifies the X resource ID.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1800,6 +1798,7 @@ To delete an entry from a given
<function>XAssocTable</function>,
use
<function>XDeleteAssoc</function>.
+</para>
<indexterm significance="preferred"><primary>XDeleteAssoc</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdeleteassoc'>
@@ -1843,7 +1842,6 @@ Specifies the X resource ID.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH03.xml b/libX11/specs/libX11/CH03.xml
index 2699e00d4..dbdcd86be 100644
--- a/libX11/specs/libX11/CH03.xml
+++ b/libX11/specs/libX11/CH03.xml
@@ -178,6 +178,7 @@ To obtain the visual ID from a
use
<function>XVisualIDFromVisual</function>.
<indexterm significance="preferred"><primary>XVisualIDFromVisual</primary></indexterm>
+</para>
<!-- .sM -->
<funcsynopsis id='xvisualidfromvisual'>
<funcprototype>
@@ -198,7 +199,6 @@ Specifies the visual type.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -426,17 +426,17 @@ and
windows:
</para>
<informaltable>
- <tgroup cols='4' align='center'>
- <colspec colname='c1'/>
- <colspec colname='c2'/>
- <colspec colname='c3'/>
- <colspec colname='c4'/>
+ <tgroup cols='4'>
+ <colspec colname='c1' align='left'/>
+ <colspec colname='c2' align='left'/>
+ <colspec colname='c3' align='center'/>
+ <colspec colname='c4' align='center'/>
<thead>
<row>
<entry>Attribute</entry>
<entry>Default</entry>
<entry>InputOutput</entry>
- <entry>nputOnly</entry>
+ <entry>InputOnly</entry>
</row>
</thead>
<tbody>
@@ -758,9 +758,9 @@ change of width and height, the (x, y) pairs are defined:
<para>
<!-- .LP -->
<informaltable>
- <tgroup cols='2' align='center'>
- <colspec colname='c1'/>
- <colspec colname='c2'/>
+ <tgroup cols='2'>
+ <colspec colname='c1' align='left'/>
+ <colspec colname='c2' align='left'/>
<thead>
<row>
<entry>Gravity Direction</entry>
@@ -1246,6 +1246,7 @@ Extension packages can define other classes of windows.
<!-- .LP -->
To create an unmapped window and set its window attributes, use
<function>XCreateWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreatewindow'>
@@ -1419,7 +1420,6 @@ set to indicate which attributes have been set in the structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1511,6 +1511,7 @@ To create an unmapped
<symbol>InputOutput</symbol>
subwindow of a given parent window, use
<function>XCreateSimpleWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateSimpleWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreatesimplewindow'>
@@ -1629,7 +1630,6 @@ Specifies the background pixel value of the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1681,6 +1681,7 @@ subwindows of a window.
<!-- .sp -->
To destroy a window and all of its subwindows, use
<function>XDestroyWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XDestroyWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdestroywindow'>
@@ -1713,7 +1714,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1751,6 +1751,7 @@ error.
<!-- .sp -->
To destroy all subwindows of a specified window, use
<function>XDestroySubwindows</function>.
+</para>
<indexterm significance="preferred"><primary>XDestroySubwindows</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdestroysubwindows'>
@@ -1783,7 +1784,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1895,6 +1895,7 @@ event.
<!-- .sp -->
To map a given window, use
<function>XMapWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XMapWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmapwindow'>
@@ -1927,7 +1928,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2021,6 +2021,7 @@ error.
<!-- .sp -->
To map and raise a window, use
<function>XMapRaised</function>.
+</para>
<indexterm significance="preferred"><primary>XMapRaised</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmapraised'>
@@ -2053,7 +2054,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2081,6 +2081,7 @@ errors.
<!-- .sp -->
To map all subwindows for a specified window, use
<function>XMapSubwindows</function>.
+</para>
<indexterm significance="preferred"><primary>XMapSubwindows</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmapsubwindows'>
@@ -2113,7 +2114,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2151,6 +2151,7 @@ Xlib provides functions that you can use to unmap a window or all subwindows.
<!-- .sp -->
To unmap a window, use
<function>XUnmapWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XUnmapWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xunmapwindow'>
@@ -2183,7 +2184,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2218,6 +2218,7 @@ error.
<!-- .sp -->
To unmap all subwindows for a specified window, use
<function>XUnmapSubwindows</function>.
+</para>
<indexterm significance="preferred"><primary>XUnmapSubwindows</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xunmapsubwindows'>
@@ -2250,7 +2251,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2437,8 +2437,8 @@ error results.
If a sibling and a stack_mode are specified,
the window is restacked as follows:
</para>
-<informaltable>
- <tgroup cols='2' align='center'>
+<informaltable frame="none">
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -2476,8 +2476,8 @@ If a stack_mode is specified but no sibling is specified,
the window is restacked as follows:
</para>
-<informaltable>
- <tgroup cols='2' align='center'>
+<informaltable frame="none">
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -2497,6 +2497,7 @@ the top of the stack.
</entry>
</row>
<row>
+ <entry><symbol>BottomIf</symbol></entry>
<entry>
If the window occludes any sibling, the window is placed at
the bottom of the stack.
@@ -2524,6 +2525,7 @@ Attempts to configure a root window have no effect.
<!-- .sp -->
To configure a window's size, location, stacking, or border, use
<function>XConfigureWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XConfigureWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xconfigurewindow'>
@@ -2583,7 +2585,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2630,6 +2631,7 @@ errors.
<!-- .sp -->
To move a window without changing its size, use
<function>XMoveWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XMoveWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmovewindow'>
@@ -2687,7 +2689,6 @@ Specify the x and y coordinates(Xy.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2732,6 +2733,7 @@ error.
<!-- .sp -->
To change a window's size without changing the upper-left coordinate, use
<function>XResizeWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XResizeWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xresizewindow'>
@@ -2788,7 +2790,6 @@ Specify the width and height(Wh.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2835,6 +2836,7 @@ errors.
<!-- .sp -->
To change the size and location of a window, use
<function>XMoveResizeWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XMoveResizeWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmoveresizewindow'>
@@ -2914,7 +2916,6 @@ Specify the width and height(Wh.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2956,6 +2957,7 @@ errors.
<!-- .sp -->
To change the border width of a given window, use
<function>XSetWindowBorderWidth</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWindowBorderWidth</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwindowborderwidth'>
@@ -2999,7 +3001,6 @@ Specifies the width of the window border.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3033,6 +3034,7 @@ or restack windows.
<!-- .sp -->
To raise a window so that no sibling window obscures it, use
<function>XRaiseWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XRaiseWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xraisewindow'>
@@ -3065,7 +3067,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3106,6 +3107,7 @@ error.
<!-- .sp -->
To lower a window so that it does not obscure any sibling windows, use
<function>XLowerWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XLowerWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlowerwindow'>
@@ -3138,7 +3140,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3180,6 +3181,7 @@ error.
<!-- .sp -->
To circulate a subwindow up or down, use
<function>XCirculateSubwindows</function>.
+</para>
<indexterm significance="preferred"><primary>XCirculateSubwindows</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcirculatesubwindows'>
@@ -3228,7 +3230,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3272,6 +3273,7 @@ errors.
To raise the lowest mapped child of a window that is partially or completely
occluded by another child, use
<function>XCirculateSubwindowsUp</function>.
+</para>
<indexterm significance="preferred"><primary>XCirculateSubwindowsUp</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcirculatesubwindowsup'>
@@ -3304,7 +3306,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3334,6 +3335,7 @@ error.
To lower the highest mapped child of a window that partially or
completely occludes another child, use
<function>XCirculateSubwindowsDown</function>.
+</para>
<indexterm significance="preferred"><primary>XCirculateSubwindowsDown</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcirculatesubwindowsdown'>
@@ -3366,7 +3368,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3393,6 +3394,7 @@ error.
<!-- .sp -->
To restack a set of windows from top to bottom, use
<function>XRestackWindows</function>.
+</para>
<indexterm significance="preferred"><primary>XRestackWindows</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrestackwindows'>
@@ -3436,7 +3438,6 @@ Specifies the number of windows to be restacked.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3498,6 +3499,7 @@ window attribute, such as a window's background.
<!-- .sp -->
To change one or more attributes for a given window, use
<function>XChangeWindowAttributes</function>.
+</para>
<indexterm significance="preferred"><primary>XChangeWindowAttributes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchangewindowattributes'>
@@ -3572,7 +3574,6 @@ set to indicate which attributes have been set in the structure
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3656,6 +3657,7 @@ errors.
<!-- .sp -->
To set the background of a window to a given pixel, use
<function>XSetWindowBackground</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWindowBackground</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwindowbackground'>
@@ -3699,7 +3701,6 @@ Specifies the pixel that is to be used for the background.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3732,6 +3733,7 @@ errors.
<!-- .LP -->
To set the background of a window to a given pixmap, use
<function>XSetWindowBackgroundPixmap</function>.
+</para>
<indexterm><primary>Window</primary><secondary>background</secondary></indexterm>
<indexterm significance="preferred"><primary>XSetWindowBackgroundPixmap</primary></indexterm>
<!-- .sM -->
@@ -3779,7 +3781,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3825,6 +3826,7 @@ do not change the current contents of the window.
<!-- .sp -->
To change and repaint a window's border to a given pixel, use
<function>XSetWindowBorder</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWindowBorder</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwindowborder'>
@@ -3868,7 +3870,6 @@ Specifies the entry in the colormap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3895,6 +3896,7 @@ errors.
<!-- .sp -->
To change and repaint the border tile of a given window, use
<function>XSetWindowBorderPixmap</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWindowBorderPixmap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwindowborderpixmap'>
@@ -3939,7 +3941,6 @@ Specifies the border pixmap or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3974,6 +3975,7 @@ errors.
<!-- .sp -->
To set the colormap of a given window, use
<function>XSetWindowColormap</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWindowColormap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwindowcolormap'>
@@ -4017,7 +4019,6 @@ Specifies the colormap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4044,6 +4045,7 @@ errors.
<!-- .sp -->
To define which cursor will be used in a window, use
<function>XDefineCursor</function>.
+</para>
<indexterm><primary>Window</primary><secondary>defining the cursor</secondary></indexterm>
<indexterm significance="preferred"><primary>XDefineCursor</primary></indexterm>
<!-- .sM -->
@@ -4089,7 +4091,6 @@ Specifies the cursor that is to be displayed or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4113,6 +4114,7 @@ errors.
<!-- .sp -->
To undefine the cursor in a given window, use
<function>XUndefineCursor</function>.
+</para>
<indexterm><primary>Window</primary><secondary>undefining the cursor</secondary></indexterm>
<indexterm significance="preferred"><primary>XUndefineCursor</primary></indexterm>
<!-- .sM -->
@@ -4146,7 +4148,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH04.xml b/libX11/specs/libX11/CH04.xml
index 18f352593..3bd5d04aa 100644
--- a/libX11/specs/libX11/CH04.xml
+++ b/libX11/specs/libX11/CH04.xml
@@ -36,6 +36,7 @@ exists.
To obtain the parent, a list of children, and number of children for
a given window, use
<function>XQueryTree</function>.
+</para>
<indexterm><primary>Child Window</primary></indexterm>
<indexterm><primary>Parent Window</primary></indexterm>
<indexterm significance="preferred"><primary>XQueryTree</primary></indexterm>
@@ -116,7 +117,6 @@ Returns the number of children.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -145,6 +145,7 @@ error.
<!-- .sp -->
To obtain the current attributes of a given window, use
<function>XGetWindowAttributes</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWindowAttributes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwindowattributes'>
@@ -191,7 +192,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -370,6 +370,7 @@ errors.
<!-- .sp -->
To obtain the current geometry of a given drawable, use
<function>XGetGeometry</function>.
+</para>
<indexterm significance="preferred"><primary>XGetGeometry</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetgeometry'>
@@ -487,7 +488,6 @@ Returns the depth of the drawable (bits per pixel for the object).
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -531,6 +531,7 @@ asking the X server to perform these operations.
To translate a coordinate in one window to the coordinate
space of another window, use
<function>XTranslateCoordinates</function>.
+</para>
<indexterm significance="preferred"><primary>XTranslateCoordinates</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xtranslatecoordinates'>
@@ -629,7 +630,6 @@ destination window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -665,6 +665,7 @@ error.
To obtain the screen coordinates of the pointer
or to determine the pointer coordinates relative to a specified window, use
<function>XQueryPointer</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryPointer</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerypointer'>
@@ -774,7 +775,6 @@ Returns the current state of the modifier keys and pointer buttons.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1047,6 +1047,7 @@ see <link linkend="Font_Metrics">section 8.5</link>.
<!-- .sp -->
To return an atom for a given name, use
<function>XInternAtom</function>.
+</para>
<indexterm><primary>Atom</primary><secondary>interning</secondary></indexterm>
<indexterm significance="preferred"><primary>XInternAtom</primary></indexterm>
<!-- .sM -->
@@ -1091,7 +1092,6 @@ Specifies a Boolean value that indicates whether the atom must be created.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1129,6 +1129,7 @@ errors.
<!-- .sp -->
To return atoms for an array of names, use
<function>XInternAtoms</function>.
+</para>
<indexterm><primary>Atom</primary><secondary>interning</secondary></indexterm>
<indexterm significance="preferred"><primary>XInternAtoms</primary></indexterm>
<!-- .sM -->
@@ -1196,7 +1197,6 @@ Returns the atoms.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1230,6 +1230,7 @@ errors.
<!-- .sp -->
To return a name for a given atom identifier, use
<function>XGetAtomName</function>.
+</para>
<indexterm><primary>Atom</primary><secondary>getting name</secondary></indexterm>
<indexterm significance="preferred"><primary>XGetAtomName</primary></indexterm>
<!-- .sM -->
@@ -1263,7 +1264,6 @@ Specifies the atom for the property name you want returned.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1289,6 +1289,7 @@ error.
<!-- .sp -->
To return the names for an array of atom identifiers, use
<function>XGetAtomNames</function>.
+</para>
<indexterm><primary>Atom</primary><secondary>getting name</secondary></indexterm>
<indexterm significance="preferred"><primary>XGetAtomNames</primary></indexterm>
<!-- .sM -->
@@ -1345,7 +1346,6 @@ Returns the atom names.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1407,7 +1407,6 @@ To obtain the type, format, and value of a property of a given window, use
<function>XGetWindowProperty</function>.
<indexterm><primary>Property</primary><secondary>getting</secondary></indexterm>
</para>
-<para>
<!-- .LP -->
<indexterm significance="preferred"><primary>XGetWindowProperty</primary></indexterm>
<!-- .sM -->
@@ -1556,7 +1555,6 @@ Returns the data in the specified format.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1688,6 +1686,7 @@ errors.
<!-- .sp -->
To obtain a given window's property list, use
<function>XListProperties</function>.
+</para>
<indexterm><primary>Property</primary><secondary>listing</secondary></indexterm>
<indexterm significance="preferred"><primary>XListProperties</primary></indexterm>
<!-- .sM -->
@@ -1733,7 +1732,6 @@ Returns the length of the properties array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1756,6 +1754,7 @@ error.
<!-- .sp -->
To change a property of a given window, use
<function>XChangeProperty</function>.
+</para>
<indexterm><primary>Property</primary><secondary>changing</secondary></indexterm>
<indexterm><primary>Property</primary><secondary>appending</secondary></indexterm>
<indexterm><primary>Property</primary><secondary>prepending</secondary></indexterm>
@@ -1877,7 +1876,6 @@ Specifies the number of elements of the specified data format.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1961,7 +1959,6 @@ errors.
To rotate a window's property list, use
<function>XRotateWindowProperties</function>.
</para>
-<para>
<!-- .LP -->
<indexterm significance="preferred"><primary>XRotateWindowProperties</primary></indexterm>
<!-- .sM -->
@@ -2028,7 +2025,6 @@ Specifies the rotation amount.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2076,6 +2072,7 @@ errors.
<!-- .sp -->
To delete a property on a given window, use
<function>XDeleteProperty</function>.
+</para>
<indexterm><primary>Property</primary><secondary>deleting</secondary></indexterm>
<indexterm significance="preferred"><primary>XDeleteProperty</primary></indexterm>
<!-- .sM -->
@@ -2121,7 +2118,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2199,6 +2195,7 @@ The protocol does not constrain the semantics.
<!-- .sp -->
To set the selection owner, use
<function>XSetSelectionOwner</function>.
+</para>
<indexterm><primary>Selection</primary><secondary>setting the owner</secondary></indexterm>
<indexterm significance="preferred"><primary>XSetSelectionOwner</primary></indexterm>
<!-- .sM -->
@@ -2258,7 +2255,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2322,6 +2318,7 @@ errors.
<!-- .sp -->
To return the selection owner, use
<function>XGetSelectionOwner</function>.
+</para>
<indexterm><primary>Selection</primary><secondary>getting the owner</secondary></indexterm>
<indexterm significance="preferred"><primary>XGetSelectionOwner</primary></indexterm>
<!-- .sM -->
@@ -2356,7 +2353,6 @@ Specifies the selection atom (Se.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2384,6 +2380,7 @@ error.
<!-- .sp -->
To request conversion of a selection, use
<function>XConvertSelection</function>.
+</para>
<indexterm><primary>Selection</primary><secondary>converting</secondary></indexterm>
<indexterm significance="preferred"><primary>XConvertSelection</primary></indexterm>
<!-- .sM -->
@@ -2464,7 +2461,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH05.xml b/libX11/specs/libX11/CH05.xml
index a9e06d32e..1dd8e675a 100644
--- a/libX11/specs/libX11/CH05.xml
+++ b/libX11/specs/libX11/CH05.xml
@@ -22,6 +22,7 @@ A bitmap is a single bit-plane pixmap.
<!-- .sp -->
To create a pixmap of a given size, use
<function>XCreatePixmap</function>.
+</para>
<indexterm significance="preferred"><primary>XCreatePixmap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreatepixmap'>
@@ -88,7 +89,6 @@ Specifies the depth of the pixmap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -134,6 +134,7 @@ errors.
<!-- .sp -->
To free all storage associated with a specified pixmap, use
<function>XFreePixmap</function>.
+</para>
<indexterm significance="preferred"><primary>XFreePixmap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreepixmap'>
@@ -166,7 +167,6 @@ Specifies the pixmap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -293,6 +293,7 @@ errors.
<!-- .sp -->
To create a cursor from font glyphs, use
<function>XCreateGlyphCursor</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateGlyphCursor</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreateglyphcursor'>
@@ -379,7 +380,6 @@ Specifies the <acronym>RGB</acronym> values for the background of the source.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -432,6 +432,7 @@ errors.
To create a cursor from two bitmaps,
use
<function>XCreatePixmapCursor</function>.
+</para>
<indexterm significance="preferred"><primary>XCreatePixmapCursor</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreatepixmapcursor'>
@@ -522,7 +523,6 @@ Specify the x and y coordinates(Xy.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -579,6 +579,7 @@ errors.
<!-- .sp -->
To determine useful cursor sizes, use
<function>XQueryBestCursor</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryBestCursor</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerybestcursor'>
@@ -658,7 +659,6 @@ and height.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -684,6 +684,7 @@ error.
<!-- .sp -->
To change the color of a given cursor, use
<function>XRecolorCursor</function>.
+</para>
<indexterm significance="preferred"><primary>XRecolorCursor</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrecolorcursor'>
@@ -737,7 +738,6 @@ Specifies the <acronym>RGB</acronym> values for the background of the source.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -762,6 +762,7 @@ error.
<!-- .sp -->
To free (destroy) a given cursor, use
<function>XFreeCursor</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeCursor</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreecursor'>
@@ -794,7 +795,6 @@ Specifies the cursor.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH06.xml b/libX11/specs/libX11/CH06.xml
index 59f38ec4e..87379fff7 100644
--- a/libX11/specs/libX11/CH06.xml
+++ b/libX11/specs/libX11/CH06.xml
@@ -961,6 +961,7 @@ errors.
To create a new colormap when the allocation out of a previously
shared colormap has failed because of resource exhaustion, use
<function>XCopyColormapAndFree</function>.
+</para>
<indexterm significance="preferred"><primary>XCopyColormapAndFree</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcopycolormapandfree'>
@@ -993,7 +994,6 @@ Specifies the colormap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6996,15 +6996,15 @@ spaces.
The conversion functions provided by Xlib are:
</para>
<informaltable>
- <tgroup cols='3' align='center'>
+ <tgroup cols='3'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<thead>
<row>
- <entry>Function</entry>
- <entry>Converts from</entry>
- <entry>Converts to</entry>
+ <entry align='center'>Function</entry>
+ <entry align='center'>Converts from</entry>
+ <entry align='center'>Converts to</entry>
</row>
</thead>
<tbody>
diff --git a/libX11/specs/libX11/CH07.xml b/libX11/specs/libX11/CH07.xml
index d9f73887e..38baccc39 100644
--- a/libX11/specs/libX11/CH07.xml
+++ b/libX11/specs/libX11/CH07.xml
@@ -137,14 +137,13 @@ typedef struct {
The default GC values are:
</para>
<informaltable>
- <tgroup cols='3' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
- <colspec colname='c3'/>
<thead>
<row>
- <entry>Component</entry>
- <entry>Default</entry>
+ <entry align='center'>Component</entry>
+ <entry align='center'>Default</entry>
</row>
</thead>
<tbody>
@@ -194,15 +193,11 @@ The default GC values are:
</row>
<row>
<entry>tile</entry>
- <entry>Pixmap of unspecified size filled with foreground pixel</entry>
- </row>
- <row>
- <entry></entry>
- <entry>(that is, client specified pixel if any, else 0)</entry>
- </row>
- <row>
- <entry></entry>
- <entry>(subsequent changes to foreground do not affect this pixmap)</entry>
+ <entry>
+ <para>Pixmap of unspecified size filled with foreground pixel</para>
+ <para>(that is, client specified pixel if any, else 0)</para>
+ <para>(subsequent changes to foreground do not affect this pixmap)</para>
+ </entry>
</row>
<row>
<entry>stipple</entry>
@@ -284,15 +279,15 @@ are:
<!-- .\".CP T 1 -->
<!-- .\"Display Functions -->
<informaltable>
- <tgroup cols='3' align='center'>
+ <tgroup cols='3'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<thead>
<row>
- <entry>Function Name</entry>
- <entry>Value</entry>
- <entry>Operation</entry>
+ <entry align='center'>Function Name</entry>
+ <entry align='center'>Value</entry>
+ <entry align='center'>Operation</entry>
</row>
</thead>
<tbody>
@@ -632,7 +627,7 @@ the semantics depends on the line-width and the cap-style:
</para>
<informaltable>
- <tgroup cols='3' align='center'>
+ <tgroup cols='3'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
@@ -747,7 +742,7 @@ the following apply:
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -781,7 +776,7 @@ the odd dashes are controlled by the fill-style in the following manner:
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -962,6 +957,7 @@ requests (and any similar requests defined by extensions).
To create a new GC that is usable on a given screen with a
depth of drawable, use
<function>XCreateGC</function>.
+</para>
<indexterm><primary>Graphics context</primary><secondary>initializing</secondary></indexterm>
<indexterm significance="preferred"><primary>XCreateGC</primary></indexterm>
<!-- .sM -->
@@ -1020,7 +1016,6 @@ Specifies any values as specified by the valuemask.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1051,6 +1046,7 @@ errors.
<!-- .sp -->
To copy components from a source GC to a destination GC, use
<function>XCopyGC</function>.
+</para>
<indexterm significance="preferred"><primary>XCopyGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcopygc'>
@@ -1107,7 +1103,6 @@ Specifies the destination GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1137,6 +1132,7 @@ errors.
<!-- .sp -->
To change the components in a given GC, use
<function>XChangeGC</function>.
+</para>
<indexterm significance="preferred"><primary>XChangeGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchangegc'>
@@ -1194,7 +1190,6 @@ Specifies any values as specified by the valuemask.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1233,6 +1228,7 @@ errors.
<!-- .sp -->
To obtain components of a given GC, use
<function>XGetGCValues</function>.
+</para>
<indexterm significance="preferred"><primary>XGetGCValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetgcvalues'>
@@ -1292,7 +1288,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1345,6 +1340,7 @@ if the component has never been explicitly set by the client.
<!-- .sp -->
To free a given GC, use
<function>XFreeGC</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreegc'>
@@ -1377,7 +1373,6 @@ Specifies the GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1399,6 +1394,7 @@ To obtain the
<type>GContext</type>
resource ID for a given GC, use
<function>XGContextFromGC</function>.
+</para>
<indexterm significance="preferred"><primary>XGContextFromGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgcontextfromgc'>
@@ -1421,7 +1417,6 @@ Specifies the GC (Gc.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1435,6 +1430,7 @@ An example might be when a protocol extension uses the GC indirectly,
in such a way that the extension interface cannot know what GC will be used.
To force sending GC component changes, use
<function>XFlushGC</function>.
+</para>
<indexterm significance="preferred"><primary>XFlushGC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xflushgc'>
@@ -1467,7 +1463,6 @@ Specifies the GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1529,6 +1524,7 @@ Arc mode, subwindow mode, and graphics exposure components
To set the foreground, background, plane mask, and function components
for a given GC, use
<function>XSetState</function>.
+</para>
<indexterm significance="preferred"><primary>XSetState</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetstate'>
@@ -1605,7 +1601,6 @@ Specifies the plane mask.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1622,6 +1617,7 @@ errors.
<!-- .sp -->
To set the foreground of a given GC, use
<function>XSetForeground</function>.
+</para>
<indexterm significance="preferred"><primary>XSetForeground</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetforeground'>
@@ -1665,7 +1661,6 @@ Specifies the foreground you want to set for the specified GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1681,6 +1676,7 @@ errors.
<!-- .sp -->
To set the background of a given GC, use
<function>XSetBackground</function>.
+</para>
<indexterm significance="preferred"><primary>XSetBackground</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetbackground'>
@@ -1724,7 +1720,6 @@ Specifies the background you want to set for the specified GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1740,6 +1735,7 @@ errors.
<!-- .sp -->
To set the display function in a given GC, use
<function>XSetFunction</function>.
+</para>
<indexterm significance="preferred"><primary>XSetFunction</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetfunction'>
@@ -1783,7 +1779,6 @@ Specifies the function you want to set for the specified GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1800,6 +1795,7 @@ errors.
<!-- .sp -->
To set the plane mask of a given GC, use
<function>XSetPlaneMask</function>.
+</para>
<indexterm significance="preferred"><primary>XSetPlaneMask</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetplanemask'>
@@ -1844,7 +1840,6 @@ Specifies the plane mask.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1865,6 +1860,7 @@ errors.
<!-- .LP -->
To set the line drawing components of a given GC, use
<function>XSetLineAttributes</function>.
+</para>
<indexterm significance="preferred"><primary>XSetLineAttributes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetlineattributes'>
@@ -1957,7 +1953,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1974,6 +1969,7 @@ errors.
<!-- .sp -->
To set the dash-offset and dash-list for dashed line styles of a given GC, use
<function>XSetDashes</function>.
+</para>
<indexterm significance="preferred"><primary>XSetDashes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetdashes'>
@@ -2041,7 +2037,6 @@ Specifies the number of elements in dash_list.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2103,6 +2098,7 @@ errors.
<!-- .LP -->
To set the fill-style of a given GC, use
<function>XSetFillStyle</function>.
+</para>
<indexterm significance="preferred"><primary>XSetFillStyle</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetfillstyle'>
@@ -2152,7 +2148,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2169,6 +2164,7 @@ errors.
<!-- .sp -->
To set the fill-rule of a given GC, use
<function>XSetFillRule</function>.
+</para>
<indexterm significance="preferred"><primary>XSetFillRule</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetfillrule'>
@@ -2216,7 +2212,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2249,6 +2244,7 @@ as well as to set the tile or stipple shape and the tile or stipple origin.
<!-- .sp -->
To obtain the best size of a tile, stipple, or cursor, use
<function>XQueryBestSize</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryBestSize</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerybestsize'>
@@ -2342,7 +2338,6 @@ by the display hardware.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2392,6 +2387,7 @@ errors.
<!-- .sp -->
To obtain the best fill tile shape, use
<function>XQueryBestTile</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryBestTile</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerybesttile'>
@@ -2469,7 +2465,6 @@ by the display hardware.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2498,6 +2493,7 @@ errors.
<!-- .sp -->
To obtain the best stipple shape, use
<function>XQueryBestStipple</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryBestStipple</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerybeststipple'>
@@ -2575,7 +2571,6 @@ by the display hardware.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2604,6 +2599,7 @@ errors.
<!-- .sp -->
To set the fill tile of a given GC, use
<function>XSetTile</function>.
+</para>
<indexterm significance="preferred"><primary>XSetTile</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsettile'>
@@ -2647,7 +2643,6 @@ Specifies the fill tile you want to set for the specified GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2672,6 +2667,7 @@ errors.
<!-- .sp -->
To set the stipple of a given GC, use
<function>XSetStipple</function>.
+</para>
<indexterm significance="preferred"><primary>XSetStipple</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetstipple'>
@@ -2715,7 +2711,6 @@ Specifies the stipple you want to set for the specified GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2740,6 +2735,7 @@ errors.
<!-- .sp -->
To set the tile or stipple origin of a given GC, use
<function>XSetTSOrigin</function>.
+</para>
<indexterm significance="preferred"><primary>XSetTSOrigin</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsettsorigin'>
@@ -2794,7 +2790,6 @@ Specify the x and y coordinates of the tile and stipple origin.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2821,6 +2816,7 @@ errors.
<!-- .LP -->
To set the current font of a given GC, use
<function>XSetFont</function>.
+</para>
<indexterm significance="preferred"><primary>XSetFont</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetfont'>
@@ -2864,7 +2860,6 @@ Specifies the font.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2892,6 +2887,7 @@ and the clip-mask or set the clip-mask to a list of rectangles.
<!-- .sp -->
To set the clip-origin of a given GC, use
<function>XSetClipOrigin</function>.
+</para>
<indexterm significance="preferred"><primary>XSetClipOrigin</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetcliporigin'>
@@ -2946,7 +2942,6 @@ Specify the x and y coordinates of the clip-mask origin.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2967,6 +2962,7 @@ errors.
<!-- .sp -->
To set the clip-mask of a given GC to the specified pixmap, use
<function>XSetClipMask</function>.
+</para>
<indexterm significance="preferred"><primary>XSetClipMask</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetclipmask'>
@@ -3011,7 +3007,6 @@ Specifies the pixmap or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3035,6 +3030,7 @@ errors.
<!-- .sp -->
To set the clip-mask of a given GC to the specified list of rectangles, use
<function>XSetClipRectangles</function>.
+</para>
<indexterm significance="preferred"><primary>XSetClipRectangles</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetcliprectangles'>
@@ -3128,7 +3124,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3209,6 +3204,7 @@ see <link linkend="Manipulating_Regions">section 16.5</link>.
<!-- .LP -->
To set the arc mode of a given GC, use
<function>XSetArcMode</function>.
+</para>
<indexterm significance="preferred"><primary>XSetArcMode</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetarcmode'>
@@ -3256,7 +3252,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3273,6 +3268,7 @@ errors.
<!-- .sp -->
To set the subwindow mode of a given GC, use
<function>XSetSubwindowMode</function>.
+</para>
<indexterm significance="preferred"><primary>XSetSubwindowMode</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetsubwindowmode'>
@@ -3320,7 +3316,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3337,6 +3332,7 @@ errors.
<!-- .sp -->
To set the graphics-exposures flag of a given GC, use
<function>XSetGraphicsExposures</function>.
+</para>
<indexterm significance="preferred"><primary>XSetGraphicsExposures</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetgraphicsexposures'>
@@ -3388,7 +3384,6 @@ with this GC.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH08.xml b/libX11/specs/libX11/CH08.xml
index c0511a5cc..948040982 100644
--- a/libX11/specs/libX11/CH08.xml
+++ b/libX11/specs/libX11/CH08.xml
@@ -39,6 +39,7 @@ which sets the pixmap to a known value.
<!-- .sp -->
To clear a rectangular area of a given window, use
<function>XClearArea</function>.
+</para>
<indexterm><primary>Areas</primary><secondary>clearing</secondary></indexterm>
<indexterm><primary>Clearing</primary><secondary>areas</secondary></indexterm>
<indexterm significance="preferred"><primary>XClearArea</primary></indexterm>
@@ -133,7 +134,6 @@ events are to be generated.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -181,6 +181,7 @@ errors.
<!-- .sp -->
To clear the entire area in a given window, use
<function>XClearWindow</function>.
+</para>
<indexterm><primary>Window</primary><secondary>clearing</secondary></indexterm>
<indexterm><primary>Clearing</primary><secondary>windows</secondary></indexterm>
<indexterm significance="preferred"><primary>XClearWindow</primary></indexterm>
@@ -215,7 +216,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -265,6 +265,7 @@ Xlib provides functions that you can use to copy an area or a bit plane.
To copy an area between drawables of the same
root and depth, use
<function>XCopyArea</function>.
+</para>
<indexterm><primary>Areas</primary><secondary>copying</secondary></indexterm>
<indexterm><primary>Copying</primary><secondary>areas</secondary></indexterm>
<indexterm significance="preferred"><primary>XCopyArea</primary></indexterm>
@@ -393,7 +394,6 @@ Specify the x and y coordinates(Dx.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -460,6 +460,7 @@ errors.
<!-- .LP -->
To copy a single bit plane of a given drawable, use
<function>XCopyPlane</function>.
+</para>
<indexterm><primary>Plane</primary><secondary>copying</secondary></indexterm>
<indexterm><primary>Copying</primary><secondary>planes</secondary></indexterm>
<indexterm significance="preferred"><primary>XCopyPlane</primary></indexterm>
@@ -599,7 +600,6 @@ You must set exactly one bit to 1.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -766,6 +766,7 @@ for these values.
<!-- .LP -->
To draw a single point in a given drawable, use
<function>XDrawPoint</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawPoint</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawpoint'>
@@ -831,13 +832,13 @@ Specify the x and y coordinates where you want the point drawn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To draw multiple points in a given drawable, use
<function>XDrawPoints</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawPoints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawpoints'>
@@ -918,7 +919,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -979,6 +979,7 @@ errors.
<!-- .LP -->
To draw a single line between two points in a given drawable, use
<function>XDrawLine</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawLine</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawline'>
@@ -1066,13 +1067,13 @@ Specify the points (x1, y1) and (x2, y2) to be connected.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To draw multiple lines in a given drawable, use
<function>XDrawLines</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawLines</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawlines'>
@@ -1153,7 +1154,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1161,6 +1161,7 @@ or
To draw multiple, unconnected lines in a given drawable,
use
<function>XDrawSegments</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawSegments</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawsegments'>
@@ -1226,7 +1227,6 @@ Specifies the number of segments in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1331,6 +1331,7 @@ errors.
<!-- .LP -->
To draw the outline of a single rectangle in a given drawable, use
<function>XDrawRectangle</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawRectangle</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawrectangle'>
@@ -1420,7 +1421,6 @@ Specify the width and height(Wh.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1428,6 +1428,7 @@ Specify the width and height(Wh.
To draw the outline of multiple rectangles
in a given drawable, use
<function>XDrawRectangles</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawRectangles</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawrectangles'>
@@ -1493,7 +1494,6 @@ Specifies the number of rectangles in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1562,6 +1562,7 @@ errors.
<!-- .sp -->
To draw a single arc in a given drawable, use
<function>XDrawArc</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawArc</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawarc'>
@@ -1675,13 +1676,13 @@ arc, in units of degrees * 64.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To draw multiple arcs in a given drawable, use
<function>XDrawArcs</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawArcs</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawarcs'>
@@ -1747,7 +1748,6 @@ Specifies the number of arcs in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1920,6 +1920,7 @@ A single arc or multiple arcs
<!-- .sp -->
To fill a single rectangular area in a given drawable, use
<function>XFillRectangle</function>.
+</para>
<indexterm significance="preferred"><primary>XFillRectangle</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfillrectangle'>
@@ -2010,13 +2011,13 @@ Specify the width and height(Wh.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To fill multiple rectangular areas in a given drawable, use
<function>XFillRectangles</function>.
+</para>
<indexterm significance="preferred"><primary>XFillRectangles</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfillrectangles'>
@@ -2082,7 +2083,6 @@ Specifies the number of rectangles in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2152,6 +2152,7 @@ To fill a polygon area in a given drawable, use
<function>XFillPolygon</function>.
<indexterm><primary>Polygons</primary><secondary>filling</secondary></indexterm>
<indexterm><primary>Filling</primary><secondary>polygon</secondary></indexterm>
+</para>
<indexterm significance="preferred"><primary>XFillPolygon</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfillpolygon'>
@@ -2248,7 +2249,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2351,6 +2351,7 @@ errors.
<indexterm><primary>Filling</primary><secondary>arcs</secondary></indexterm>
To fill a single arc in a given drawable, use
<function>XFillArc</function>.
+</para>
<indexterm significance="preferred"><primary>XFillArc</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfillarc'>
@@ -2464,13 +2465,13 @@ arc, in units of degrees * 64.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To fill multiple arcs in a given drawable, use
<function>XFillArcs</function>.
+</para>
<indexterm significance="preferred"><primary>XFillArcs</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfillarcs'>
@@ -2536,7 +2537,6 @@ Specifies the number of arcs in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3018,6 +3018,7 @@ resource ID or a font ID interchangeably.
<!-- .sp -->
To load a given font, use
<function>XLoadFont</function>.
+</para>
<indexterm significance="preferred"><primary>XLoadFont</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xloadfont'>
@@ -3051,7 +3052,6 @@ which is a null-terminated string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3094,6 +3094,7 @@ errors.
<!-- .sp -->
To return information about an available font, use
<function>XQueryFont</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryFont</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xqueryfont'>
@@ -3128,7 +3129,6 @@ ID.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3160,6 +3160,7 @@ and
<function>XQueryFont</function>
in a single operation, use
<function>XLoadQueryFont</function>.
+</para>
<indexterm significance="preferred"><primary>XLoadQueryFont</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xloadqueryfont'>
@@ -3193,7 +3194,6 @@ which is a null-terminated string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3228,6 +3228,7 @@ or
<function>XLoadQueryFont</function>,
use
<function>XFreeFont</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeFont</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreefont'>
@@ -3260,7 +3261,6 @@ Specifies the storage associated with the font.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3285,6 +3285,7 @@ error.
<!-- .sp -->
To return a given font property, use
<function>XGetFontProperty</function>.
+</para>
<indexterm significance="preferred"><primary>XGetFontProperty</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetfontproperty'>
@@ -3328,7 +3329,6 @@ Returns the value of the font property.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3360,6 +3360,7 @@ To unload a font that was loaded by
<function>XLoadFont</function>,
use
<function>XUnloadFont</function>.
+</para>
<indexterm significance="preferred"><primary>XUnloadFont</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xunloadfont'>
@@ -3392,7 +3393,6 @@ Specifies the font.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3425,6 +3425,7 @@ when querying a font type for a list of available sizes and so on.
<!-- .sp -->
To return a list of the available font names, use
<function>XListFonts</function>.
+</para>
<indexterm significance="preferred"><primary>XListFonts</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlistfonts'>
@@ -3480,7 +3481,6 @@ Returns the actual number of font names.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3512,6 +3512,7 @@ when finished with the result to free the memory.
<!-- .sp -->
To free a font name array, use
<function>XFreeFontNames</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeFontNames</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreefontnames'>
@@ -3533,7 +3534,6 @@ Specifies the array of strings you want to free.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3549,6 +3549,7 @@ or
<!-- .sp -->
To obtain the names and information about available fonts, use
<function>XListFontsWithInfo</function>.
+</para>
<indexterm significance="preferred"><primary>XListFontsWithInfo</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlistfontswithinfo'>
@@ -3615,7 +3616,6 @@ Returns the font information.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3656,6 +3656,7 @@ the client should call
<!-- .sp -->
To free font structures and font names, use
<function>XFreeFontInfo</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeFontInfo</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreefontinfo'>
@@ -3702,7 +3703,6 @@ Specifies the actual number of font names.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3740,6 +3740,7 @@ These functions return the sum of the character metrics in pixels.
<!-- .sp -->
To determine the width of an 8-bit character string, use
<function>XTextWidth</function>.
+</para>
<indexterm significance="preferred"><primary>XTextWidth</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xtextwidth'>
@@ -3783,13 +3784,13 @@ Specifies the character count in the specified string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To determine the width of a 2-byte character string, use
<function>XTextWidth16</function>.
+</para>
<indexterm significance="preferred"><primary>XTextWidth16</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xtextwidth16'>
@@ -3833,7 +3834,6 @@ Specifies the character count in the specified string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3848,6 +3848,7 @@ Specifies the character count in the specified string.
<!-- .LP -->
To compute the bounding box of an 8-bit character string in a given font, use
<function>XTextExtents</function>.
+</para>
<indexterm significance="preferred"><primary>XTextExtents</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xtextextents'>
@@ -3941,13 +3942,13 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To compute the bounding box of a 2-byte character string in a given font, use
<function>XTextExtents16</function>.
+</para>
<indexterm significance="preferred"><primary>XTextExtents16</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xtextextents16'>
@@ -4041,7 +4042,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4095,6 +4095,7 @@ undefined characters in the string are taken to have all zero metrics.
To query the server for the bounding box of an 8-bit character string in a
given font, use
<function>XQueryTextExtents</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryTextExtents</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerytextextents'>
@@ -4199,7 +4200,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4207,6 +4207,7 @@ structure.
To query the server for the bounding box of a 2-byte character string
in a given font, use
<function>XQueryTextExtents16</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryTextExtents16</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerytextextents16'>
@@ -4311,7 +4312,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4480,6 +4480,7 @@ structure.
<!-- .LP -->
To draw 8-bit characters in a given drawable, use
<function>XDrawText</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawText</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawtext'>
@@ -4569,13 +4570,13 @@ Specifies the number of text items in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To draw 2-byte characters in a given drawable, use
<function>XDrawText16</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawText16</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawtext16'>
@@ -4665,7 +4666,6 @@ Specifies the number of text items in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4736,6 +4736,7 @@ errors.
<indexterm><primary>Drawing</primary><secondary>strings</secondary></indexterm>
To draw 8-bit characters in a given drawable, use
<function>XDrawString</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawString</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawstring'>
@@ -4826,13 +4827,13 @@ Specifies the number of characters in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To draw 2-byte characters in a given drawable, use
<function>XDrawString16</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawString16</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawstring16'>
@@ -4922,7 +4923,6 @@ Specifies the number of characters in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4977,6 +4977,7 @@ This prevents annoying flicker on many displays.
<!-- .sp -->
To draw 8-bit image text characters in a given drawable, use
<function>XDrawImageString</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawImageString</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawimagestring'>
@@ -5066,13 +5067,13 @@ Specifies the number of characters in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To draw 2-byte image text characters in a given drawable, use
<function>XDrawImageString16</function>.
+</para>
<indexterm significance="preferred"><primary>XDrawImageString16</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdrawimagestring16'>
@@ -5162,7 +5163,6 @@ Specifies the number of characters in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5318,6 +5318,7 @@ typedef struct _XImage {
<!-- .sp -->
To initialize the image manipulation routines of an image structure, use
<function>XInitImage</function>.
+</para>
<indexterm significance="preferred"><primary>XInitImage</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xinitimage'>
@@ -5339,7 +5340,6 @@ Specifies the image.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5376,6 +5376,7 @@ or inconsistency in the structure, in which case the image is not changed.
To combine an image with a rectangle of a drawable on the display,
use
<function>XPutImage</function>.
+</para>
<indexterm significance="preferred"><primary>XPutImage</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xputimage'>
@@ -5504,7 +5505,6 @@ Specify the width and height(Wh.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5565,6 +5565,7 @@ To return the contents of a rectangle in a given drawable on the display,
use
<function>XGetImage</function>.
This function specifically supports rudimentary screen dumps.
+</para>
<indexterm significance="preferred"><primary>XGetImage</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetimage'>
@@ -5671,7 +5672,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5752,6 +5752,7 @@ errors.
To copy the contents of a rectangle on the display
to a location within a preexisting image structure, use
<function>XGetSubImage</function>.
+</para>
<indexterm significance="preferred"><primary>XGetSubImage</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetsubimage'>
@@ -5894,7 +5895,6 @@ Specify the x and y coordinates(Dx.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH09.xml b/libX11/specs/libX11/CH09.xml
index 294159294..50e29e070 100644
--- a/libX11/specs/libX11/CH09.xml
+++ b/libX11/specs/libX11/CH09.xml
@@ -33,6 +33,7 @@ management functions to:
To change a window's parent to another window on the same screen, use
<function>XReparentWindow</function>.
There is no way to move a window between screens.
+</para>
<indexterm significance="preferred"><primary>XReparentWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xreparentwindow'>
@@ -99,7 +100,6 @@ Specify the x and y coordinates(Xy.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -217,6 +217,7 @@ when they are destroyed.
<!-- .sp -->
To add or remove a window from the client's save-set, use
<function>XChangeSaveSet</function>.
+</para>
<indexterm significance="preferred"><primary>XChangeSaveSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchangesaveset'>
@@ -265,7 +266,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -292,6 +292,7 @@ errors.
<!-- .sp -->
To add a window to the client's save-set, use
<function>XAddToSaveSet</function>.
+</para>
<indexterm significance="preferred"><primary>XAddToSaveSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xaddtosaveset'>
@@ -325,7 +326,6 @@ Specifies the window (Wi.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -351,6 +351,7 @@ errors.
<!-- .sp -->
To remove a window from the client's save-set, use
<function>XRemoveFromSaveSet</function>.
+</para>
<indexterm significance="preferred"><primary>XRemoveFromSaveSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xremovefromsaveset'>
@@ -384,7 +385,6 @@ Specifies the window (Wi.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -448,6 +448,7 @@ required list.
<!-- .sp -->
To install a colormap, use
<function>XInstallColormap</function>.
+</para>
<indexterm significance="preferred"><primary>XInstallColormap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xinstallcolormap'>
@@ -480,7 +481,6 @@ Specifies the colormap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -521,6 +521,7 @@ error.
<!-- .sp -->
To uninstall a colormap, use
<function>XUninstallColormap</function>.
+</para>
<indexterm significance="preferred"><primary>XUninstallColormap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xuninstallcolormap'>
@@ -553,7 +554,6 @@ Specifies the colormap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -592,6 +592,7 @@ error.
<!-- .sp -->
To obtain a list of the currently installed colormaps for a given screen, use
<function>XListInstalledColormaps</function>.
+</para>
<indexterm significance="preferred"><primary>XListInstalledColormaps</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlistinstalledcolormaps'>
@@ -636,7 +637,6 @@ Returns the number of currently installed colormaps.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -674,6 +674,7 @@ search path for a server.
<!-- .sp -->
To set the font search path, use
<function>XSetFontPath</function>.
+</para>
<indexterm significance="preferred"><primary>XSetFontPath</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetfontpath'>
@@ -719,7 +720,6 @@ Specifies the number of directories in the path.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -752,6 +752,7 @@ error.
<!-- .sp -->
To get the current font search path, use
<function>XGetFontPath</function>.
+</para>
<indexterm significance="preferred"><primary>XGetFontPath</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetfontpath'>
@@ -784,7 +785,6 @@ Returns the number of strings in the font path array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -804,6 +804,7 @@ To free data returned by
<function>XGetFontPath</function>,
use
<function>XFreeFontPath</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeFontPath</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreefontpath'>
@@ -825,7 +826,6 @@ Specifies the array of strings you want to free.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -858,6 +858,7 @@ Although grabbing the server is highly discouraged, it is sometimes necessary.
<!-- .sp -->
To grab the server, use
<function>XGrabServer</function>.
+</para>
<indexterm><primary>Server</primary><secondary>grabbing</secondary></indexterm>
<indexterm><primary>Grabbing</primary><secondary>server</secondary></indexterm>
<indexterm significance="preferred"><primary>XGrabServer</primary></indexterm>
@@ -881,7 +882,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -896,6 +896,7 @@ You should not grab the X server any more than is absolutely necessary.
<!-- .sp -->
To ungrab the server, use
<function>XUngrabServer</function>.
+</para>
<indexterm significance="preferred"><primary>XUngrabServer</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xungrabserver'>
@@ -917,7 +918,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -938,6 +938,7 @@ Xlib provides a function to cause the connection to
a client to be closed and its resources to be destroyed.
To destroy a client, use
<function>XKillClient</function>.
+</para>
<indexterm significance="preferred"><primary>XKillClient</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xkillclient'>
@@ -971,7 +972,6 @@ Specifies any resource associated with the client that you want to destroy or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1025,6 +1025,7 @@ or to obtain the current screen saver values.
<!-- .sp -->
To set the screen saver mode, use
<function>XSetScreenSaver</function>.
+</para>
<indexterm significance="preferred"><primary>XSetScreenSaver</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetscreensaver'>
@@ -1099,7 +1100,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1160,6 +1160,7 @@ error.
<!-- .sp -->
To force the screen saver on or off, use
<function>XForceScreenSaver</function>.
+</para>
<indexterm significance="preferred"><primary>XForceScreenSaver</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xforcescreensaver'>
@@ -1196,7 +1197,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1226,6 +1226,7 @@ error.
<!-- .sp -->
To activate the screen saver, use
<function>XActivateScreenSaver</function>.
+</para>
<indexterm significance="preferred"><primary>XActivateScreenSaver</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xactivatescreensaver'>
@@ -1247,13 +1248,13 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To reset the screen saver, use
<function>XResetScreenSaver</function>.
+</para>
<indexterm significance="preferred"><primary>XResetScreenSaver</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xresetscreensaver'>
@@ -1275,13 +1276,13 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To get the current screen saver values, use
<function>XGetScreenSaver</function>.
+</para>
<indexterm significance="preferred"><primary>XGetScreenSaver</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetscreensaver'>
@@ -1354,7 +1355,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1529,6 +1529,7 @@ specify the length in byte of the type and value strings.
<!-- .sp -->
To add a single host, use
<function>XAddHost</function>.
+</para>
<indexterm significance="preferred"><primary>XAddHost</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xaddhost'>
@@ -1562,7 +1563,6 @@ Specifies the host that is to be (Ho.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1587,6 +1587,7 @@ errors.
<!-- .sp -->
To add multiple hosts at one time, use
<function>XAddHosts</function>.
+</para>
<indexterm significance="preferred"><primary>XAddHosts</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xaddhosts'>
@@ -1631,7 +1632,6 @@ Specifies the number of hosts.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1656,6 +1656,7 @@ errors.
<!-- .sp -->
To obtain a host list, use
<function>XListHosts</function>.
+</para>
<indexterm significance="preferred"><primary>XListHosts</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlisthosts'>
@@ -1699,7 +1700,6 @@ Returns the state of the access control.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1720,6 +1720,7 @@ this memory should be freed by calling
<!-- .sp -->
To remove a single host, use
<function>XRemoveHost</function>.
+</para>
<indexterm significance="preferred"><primary>XRemoveHost</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xremovehost'>
@@ -1753,7 +1754,6 @@ Specifies the host that is to be (Ho.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1782,6 +1782,7 @@ errors.
<!-- .sp -->
To remove multiple hosts at one time, use
<function>XRemoveHosts</function>.
+</para>
<indexterm significance="preferred"><primary>XRemoveHosts</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xremovehosts'>
@@ -1826,7 +1827,6 @@ Specifies the number of hosts.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1873,6 +1873,7 @@ at connection setup.
<!-- .sp -->
To change access control, use
<function>XSetAccessControl</function>.
+</para>
<indexterm significance="preferred"><primary>XSetAccessControl</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetaccesscontrol'>
@@ -1909,7 +1910,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1932,6 +1932,7 @@ errors.
<!-- .sp -->
To enable access control, use
<function>XEnableAccessControl</function>.
+</para>
<indexterm significance="preferred"><primary>XEnableAccessControl</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xenableaccesscontrol'>
@@ -1953,7 +1954,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1973,6 +1973,7 @@ error.
<!-- .sp -->
To disable access control, use
<function>XDisableAccessControl</function>.
+</para>
<indexterm significance="preferred"><primary>XDisableAccessControl</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdisableaccesscontrol'>
@@ -1994,7 +1995,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH10.xml b/libX11/specs/libX11/CH10.xml
index 8a06a706f..d3ddd3407 100644
--- a/libX11/specs/libX11/CH10.xml
+++ b/libX11/specs/libX11/CH10.xml
@@ -80,13 +80,13 @@ The processing associated with these events is discussed in section 10.5.
<para>
<!-- .LP -->
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Event Category</entry>
- <entry>Event Type</entry>
+ <entry align='left'>Event Category</entry>
+ <entry align='left'>Event Type</entry>
</row>
</thead>
<tbody>
@@ -370,13 +370,13 @@ event mask:
<!-- .\" .CP T 2 -->
<!-- .\"Event Mask Definitions -->
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Event Mask</entry>
- <entry>Circumstances</entry>
+ <entry align='left'>Event Mask</entry>
+ <entry align='left'>Circumstances</entry>
</row>
</thead>
<tbody>
@@ -558,42 +558,34 @@ Note that N.A. appears in columns for which the information is not applicable.
<!-- .ps 9 -->
<!-- .nr PS 9 -->
<informaltable>
- <tgroup cols='4' align='center'>
+ <tgroup cols='4'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row>
- <entry>Event Mask</entry>
- <entry>Event Type</entry>
- <entry>Structure</entry>
- <entry>Generic Structure</entry>
+ <entry align='left'>Event Mask</entry>
+ <entry align='left'>Event Type</entry>
+ <entry align='left'>Structure</entry>
+ <entry align='left'>Generic Structure</entry>
</row>
</thead>
<tbody>
<row>
- <entry>ButtonMotionMask</entry>
+ <entry>
+ <para>ButtonMotionMask</para>
+ <para>Button1MotionMask</para>
+ <para>Button2MotionMask</para>
+ <para>Button3MotionMask</para>
+ <para>Button4MotionMask</para>
+ <para>Button5MotionMask</para>
+ </entry>
<entry>MotionNotify</entry>
<entry>XPointerMovedEvent</entry>
<entry>XMotionEvent</entry>
</row>
<row>
- <entry>Button1MotionMask</entry>
- </row>
- <row>
- <entry>Button2MotionMask</entry>
- </row>
- <row>
- <entry>Button3MotionMask</entry>
- </row>
- <row>
- <entry>Button4MotionMask</entry>
- </row>
- <row>
- <entry>Button5MotionMask</entry>
- </row>
- <row>
<entry>ButtonPressMask</entry>
<entry>ButtonPress</entry>
<entry>XButtonPressedEvent</entry>
@@ -628,23 +620,21 @@ Note that N.A. appears in columns for which the information is not applicable.
<entry>XExposeEvent </entry>
</row>
<row>
- <entry>GCGraphicsExposures in GC</entry>
+ <entry morerows='1'>GCGraphicsExposures in GC</entry>
<entry>GraphicsExpose</entry>
<entry>XGraphicsExposeEvent</entry>
</row>
<row>
- <entry></entry>
<entry>NoExpose</entry>
<entry>XNoExposeEvent</entry>
</row>
<row>
- <entry>FocusChangeMask</entry>
+ <entry morerows='1'>FocusChangeMask</entry>
<entry>FocusIn</entry>
<entry>XFocusInEvent</entry>
<entry>XFocusChangeEvent</entry>
</row>
<row>
- <entry></entry>
<entry>FocusOut</entry>
<entry>XFocusOutEvent</entry>
<entry>XFocusChangeEvent</entry>
@@ -693,92 +683,77 @@ Note that N.A. appears in columns for which the information is not applicable.
<entry>XResizeRequestEvent</entry>
</row>
<row>
- <entry>StructureNotifyMask</entry>
+ <entry morerows='6'>StructureNotifyMask</entry>
<entry>CirculateNotify</entry>
<entry>XCirculateEvent</entry>
</row>
<row>
- <entry></entry>
<entry>ConfigureNotify</entry>
<entry>XConfigureEvent</entry>
</row>
<row>
- <entry></entry>
<entry>DestroyNotify</entry>
<entry>XDestroyWindowEvent</entry>
</row>
<row>
- <entry></entry>
<entry>GravityNotify</entry>
<entry>XGravityEvent</entry>
</row>
<row>
- <entry></entry>
<entry>MapNotify</entry>
<entry>XMapEvent</entry>
</row>
<row>
- <entry></entry>
<entry>ReparentNotify</entry>
<entry>XReparentEvent</entry>
</row>
<row>
- <entry></entry>
<entry>UnmapNotify</entry>
<entry>XUnmapEvent</entry>
</row>
<row>
- <entry>SubstructureNotifyMask</entry>
+ <entry morerows='7'>SubstructureNotifyMask</entry>
<entry>CirculateNotify</entry>
<entry>XCirculateEvent</entry>
</row>
<row>
- <entry></entry>
<entry>ConfigureNotify</entry>
<entry>XConfigureEvent</entry>
</row>
<row>
- <entry></entry>
<entry>CreateNotify</entry>
<entry>XCreateWindowEvent</entry>
</row>
<row>
- <entry></entry>
<entry>DestroyNotify</entry>
<entry>XDestroyWindowEvent</entry>
</row>
<row>
- <entry></entry>
<entry>GravityNotify</entry>
<entry>XGravityEvent</entry>
</row>
<row>
- <entry></entry>
<entry>MapNotify</entry>
<entry>XMapEvent</entry>
</row>
<row>
- <entry></entry>
<entry>ReparentNotify</entry>
<entry>XReparentEvent</entry>
</row>
<row>
- <entry></entry>
<entry>UnmapNotify</entry>
<entry>XUnmapEvent</entry>
</row>
<row>
- <entry>SubstructureRedirectMask</entry>
+ <entry morerows='2'>SubstructureRedirectMask</entry>
<entry>CirculateRequest</entry>
<entry>XCirculateRequestEvent</entry>
</row>
<row>
- <entry></entry>
<entry>ConfigureRequest</entry>
<entry>XConfigureRequestEvent</entry>
</row>
<row>
- <entry></entry>
<entry>MapRequest</entry>
<entry>XMapRequestEvent</entry>
</row>
@@ -812,9 +787,6 @@ Note that N.A. appears in columns for which the information is not applicable.
<entry>VisibilityNotify</entry>
<entry>XVisibilityEvent</entry>
</row>
- <row>
- <entry>_</entry>
- </row>
</tbody>
</tgroup>
</informaltable>
@@ -919,13 +891,13 @@ The effect is essentially equivalent to an
with these client passed arguments:
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Argument</entry>
- <entry>Value</entry>
+ <entry align='left'>Argument</entry>
+ <entry align='left'>Value</entry>
</row>
</thead>
<tbody>
@@ -1316,13 +1288,13 @@ Some of the symbols mentioned in this section have fixed values, as
follows:
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Symbol</entry>
- <entry>Value</entry>
+ <entry align='left'>Symbol</entry>
+ <entry align='left'>Value</entry>
</row>
</thead>
<tbody>
diff --git a/libX11/specs/libX11/CH11.xml b/libX11/specs/libX11/CH11.xml
index 99f56ff31..39140bbf6 100644
--- a/libX11/specs/libX11/CH11.xml
+++ b/libX11/specs/libX11/CH11.xml
@@ -43,6 +43,7 @@ and
<function>XChangeWindowAttributes</function>.
Another way is to use
<function>XSelectInput</function>.
+</para>
<indexterm significance="preferred"><primary>XSelectInput</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xselectinput'>
@@ -87,7 +88,6 @@ Specifies the event mask.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -181,6 +181,7 @@ These functions differ in the additional tasks they might perform.
<!-- .sp -->
To flush the output buffer, use
<function>XFlush</function>.
+</para>
<indexterm significance="preferred"><primary>XFlush</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xflush'>
@@ -202,7 +203,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -227,6 +227,7 @@ Events generated by the server may be enqueued into the library's event queue.
To flush the output buffer and then wait until all requests have been processed,
use
<function>XSync</function>.
+</para>
<indexterm significance="preferred"><primary>XSync</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsync'>
@@ -261,7 +262,6 @@ discards all events on the event queue.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -311,6 +311,7 @@ in its network connection that is not yet read into the event queue.
<!-- .sp -->
To check the number of events in the event queue, use
<function>XEventsQueued</function>.
+</para>
<indexterm significance="preferred"><primary>XEventsQueued</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xeventsqueued'>
@@ -348,7 +349,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -397,6 +397,7 @@ function.
<!-- .sp -->
To return the number of events that are pending, use
<function>XPending</function>.
+</para>
<indexterm significance="preferred"><primary>XPending</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xpending'>
@@ -418,7 +419,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -471,6 +471,7 @@ predicate procedures that you provide
<!-- .LP -->
To get the next event and remove it from the queue, use
<function>XNextEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XNextEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xnextevent'>
@@ -503,7 +504,6 @@ Returns the next event in the queue.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -521,6 +521,7 @@ flushes the output buffer and blocks until an event is received.
<!-- .sp -->
To peek at the event queue, use
<function>XPeekEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XPeekEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xpeekevent'>
@@ -553,7 +554,6 @@ Returns a copy of the matched event's associated structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -592,6 +592,7 @@ has first called
<para>
<!-- .LP -->
The predicate procedure and its associated arguments are:
+</para>
<!-- .sM -->
<funcsynopsis>
<funcprototype>
@@ -641,7 +642,6 @@ function.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -658,6 +658,7 @@ If it did not find a match, it must return
To check the event queue for a matching event
and, if found, remove the event from the queue, use
<function>XIfEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XIfEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xifevent'>
@@ -713,7 +714,6 @@ Specifies the user-supplied argument that will be passed to the predicate proced
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -737,6 +737,7 @@ structure.
<!-- .sp -->
To check the event queue for a matching event without blocking, use
<function>XCheckIfEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XCheckIfEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcheckifevent'>
@@ -792,7 +793,6 @@ Specifies the user-supplied argument that will be passed to the predicate proced
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -816,6 +816,7 @@ All earlier events stored in the queue are not discarded.
To check the event queue for a matching event
without removing the event from the queue, use
<function>XPeekIfEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XPeekIfEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xpeekifevent'>
@@ -871,7 +872,6 @@ Specifies the user-supplied argument that will be passed to the predicate proced
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -905,6 +905,7 @@ or event types, allowing you to process events out of order.
<!-- .sp -->
To remove the next event that matches both a window and an event mask, use
<function>XWindowEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XWindowEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xwindowevent'>
@@ -960,7 +961,6 @@ Returns the matched event's associated structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -990,6 +990,7 @@ This function is similar to
except that it never blocks and it returns a
<type>Bool</type>
indicating if the event was returned.
+</para>
<indexterm significance="preferred"><primary>XCheckWindowEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcheckwindowevent'>
@@ -1045,7 +1046,6 @@ Returns the matched event's associated structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1072,6 +1072,7 @@ and the output buffer will have been flushed.
<!-- .sp -->
To remove the next event that matches an event mask, use
<function>XMaskEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XMaskEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmaskevent'>
@@ -1115,7 +1116,6 @@ Returns the matched event's associated structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1143,6 +1143,7 @@ This function is similar to
except that it never blocks and it returns a
<type>Bool</type>
indicating if the event was returned.
+</para>
<indexterm significance="preferred"><primary>XCheckMaskEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcheckmaskevent'>
@@ -1186,7 +1187,6 @@ Returns the matched event's associated structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1212,6 +1212,7 @@ and the output buffer will have been flushed.
<!-- .sp -->
To return and remove the next event in the queue that matches an event type, use
<function>XCheckTypedEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XCheckTypedEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchecktypedevent'>
@@ -1256,7 +1257,6 @@ Returns the matched event's associated structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1283,6 +1283,7 @@ and the output buffer will have been flushed.
To return and remove the next event in the queue that matches an event type
and a window, use
<function>XCheckTypedWindowEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XCheckTypedWindowEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchecktypedwindowevent'>
@@ -1338,7 +1339,6 @@ Returns the matched event's associated structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1371,6 +1371,7 @@ and the output buffer will have been flushed.
<!-- .LP -->
To push an event back into the event queue, use
<function>XPutBackEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XPutBackEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xputbackevent'>
@@ -1403,7 +1404,6 @@ Specifies the event.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1434,6 +1434,7 @@ to send a
<symbol>SelectionNotify</symbol>
event to a requestor when a selection has been converted
and stored as a property.
+</para>
<indexterm significance="preferred"><primary>XSendEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsendevent'>
@@ -1502,7 +1503,6 @@ Specifies the event that is to be sent.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1632,6 +1632,7 @@ However, this historical information is highly excessive for most applications.
To determine the approximate maximum number of elements in the motion buffer,
use
<function>XDisplayMotionBufferSize</function>.
+</para>
<indexterm significance="preferred"><primary>XDisplayMotionBufferSize</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdisplaymotionbuffersize'>
@@ -1653,7 +1654,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1670,6 +1670,7 @@ function makes this history available.
<!-- .sp -->
To get the motion history for a specified window and time, use
<function>XGetMotionEvents</function>.
+</para>
<indexterm significance="preferred"><primary>XGetMotionEvents</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetmotionevents'>
@@ -1738,7 +1739,6 @@ Returns the number of events from the motion history buffer.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1826,6 +1826,7 @@ all Xlib functions that generate protocol requests call what is known as
an after function.
<function>XSetAfterFunction</function>
sets which function is to be called.
+</para>
<indexterm significance="preferred"><primary>XSetAfterFunction</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetafterfunction'>
@@ -1858,7 +1859,6 @@ Specifies the procedure to be called.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1870,6 +1870,7 @@ returns the previous after function.
<!-- .LP -->
To enable or disable synchronization, use
<function>XSynchronize</function>.
+</para>
<indexterm><primary>Debugging</primary><secondary>synchronous mode</secondary></indexterm>
<indexterm significance="preferred"><primary>XSynchronize</primary></indexterm>
<!-- .sM -->
@@ -1904,7 +1905,6 @@ or disable synchronization.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1947,6 +1947,7 @@ message and exit.
<!-- .sp -->
To set the error handler, use
<function>XSetErrorHandler</function>.
+</para>
<indexterm significance="preferred"><primary>XSetErrorHandler</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xseterrorhandler'>
@@ -1968,7 +1969,6 @@ Specifies the program's supplied error handler.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2049,40 +2049,30 @@ chapter:
<indexterm significance="preferred"><primary>BadFont</primary></indexterm>
<indexterm significance="preferred"><primary>BadGC</primary></indexterm>
<indexterm significance="preferred"><primary>BadIDChoice</primary></indexterm>
-<informaltable>
- <tgroup cols='2' align='center'>
+<informaltable frame='none'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Error Code</entry>
- <entry>Description</entry>
+ <entry align='left'>Error Code</entry>
+ <entry align='left'>Description</entry>
</row>
</thead>
<tbody>
<row>
<entry><errorname id='BadAccess'>BadAccess</errorname></entry>
- <entry>A client attempts to grab a key/button combination already grabbed
- by another client.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>A client attempts to free a colormap entry that it had not already allocated
- or to free an entry in a colormap that was created with all entries writable.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>A client attempts to store into a read-only or unallocated colormap entry.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>A client attempts to modify the access control list from other than the local
- (or otherwise authorized) host.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>A client attempts to select an event type that another client
- has already selected.</entry>
+ <entry>
+ <para>A client attempts to grab a key/button combination already grabbed
+ by another client.</para>
+ <para>A client attempts to free a colormap entry that it had not already allocated
+ or to free an entry in a colormap that was created with all entries writable.</para>
+ <para>A client attempts to store into a read-only or unallocated colormap entry.</para>
+ <para>A client attempts to modify the access control list from other than the local
+ (or otherwise authorized) host.</para>
+ <para>A client attempts to select an event type that another client
+ has already selected.</para>
+ </entry>
</row>
<row>
<entry><errorname id='BadAlloc'>BadAlloc</errorname></entry>
@@ -2144,34 +2134,22 @@ chapter:
</row>
<row>
<entry><errorname id='BadLength'>BadLength</errorname></entry>
- <entry>The length of a request is shorter or longer than that required to
+ <entry><para>The length of a request is shorter or longer than that required to
contain the arguments.
- This is an internal Xlib or server error.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>
- The length of a request exceeds the maximum length accepted by the server.</entry>
+ This is an internal Xlib or server error.</para>
+ <para>The length of a request exceeds the maximum length accepted by the server.</para>
+ </entry>
</row>
<row>
<entry><errorname id='BadMatch'>BadMatch</errorname></entry>
- <entry>In a graphics request,
- the root and depth of the graphics context do not match those of the drawable.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>An <symbol>InputOnly</symbol> window is used as a drawable.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>
- Some argument or pair of arguments has the correct type and range,
- but it fails to match in some other way required by the request.</entry>
- </row>
- <row>
- <entry></entry>
- <entry>An <symbol>InputOnly</symbol>
- window lacks this attribute.</entry>
+ <entry><para>In a graphics request,
+ the root and depth of the graphics context do not match those of the drawable.</para>
+ <para>An <symbol>InputOnly</symbol> window is used as a drawable.</para>
+ <para>Some argument or pair of arguments has the correct type and range,
+ but it fails to match in some other way required by the request.</para>
+ <para>An <symbol>InputOnly</symbol>
+ window lacks this attribute.</para>
+ </entry>
</row>
<row>
<entry><errorname id='BadName'>BadName</errorname></entry>
@@ -2236,6 +2214,7 @@ fixed alternatives.
<!-- .LP -->
To obtain textual descriptions of the specified error code, use
<function>XGetErrorText</function>.
+</para>
<indexterm significance="preferred"><primary>XGetErrorText</primary></indexterm>
<indexterm><primary>Debugging</primary><secondary>error message strings</secondary></indexterm>
<!-- .sM -->
@@ -2291,7 +2270,6 @@ Specifies the size of the buffer.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2309,6 +2287,7 @@ and error strings.
<!-- .sp -->
To obtain error messages from the error database, use
<function>XGetErrorDatabaseText</function>.
+</para>
<indexterm significance="preferred"><primary>XGetErrorDatabaseText</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgeterrordatabasetext'>
@@ -2384,7 +2363,6 @@ Specifies the size of the buffer.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2454,6 +2432,7 @@ the default_string is returned to the buffer argument.
<!-- .sp -->
To report an error to the user when the requested display does not exist, use
<function>XDisplayName</function>.
+</para>
<indexterm significance="preferred"><primary>XDisplayName</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdisplayname'>
@@ -2475,7 +2454,6 @@ Specifies the character string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2497,6 +2475,7 @@ program attempted to open when the initial connection attempt failed.
<!-- .sp -->
To handle fatal I/O errors, use
<function>XSetIOErrorHandler</function>.
+</para>
<indexterm significance="preferred"><primary>XSetIOErrorHandler</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetioerrorhandler'>
@@ -2518,7 +2497,6 @@ Specifies the program's supplied error handler.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH12.xml b/libX11/specs/libX11/CH12.xml
index 01549f659..687f575cb 100644
--- a/libX11/specs/libX11/CH12.xml
+++ b/libX11/specs/libX11/CH12.xml
@@ -155,6 +155,7 @@ and
<!-- .sp -->
To grab the pointer, use
<function>XGrabPointer</function>.
+</para>
<indexterm><primary>Grabbing</primary><secondary>pointer</secondary></indexterm>
<indexterm><primary>Pointer</primary><secondary>grabbing</secondary></indexterm>
<indexterm significance="preferred"><primary>XGrabPointer</primary></indexterm>
@@ -280,7 +281,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -421,6 +421,7 @@ errors.
<!-- .sp -->
To ungrab the pointer, use
<function>XUngrabPointer</function>.
+</para>
<indexterm><primary>Ungrabbing</primary><secondary>pointer</secondary></indexterm>
<indexterm><primary>Pointer</primary><secondary>ungrabbing</secondary></indexterm>
<indexterm significance="preferred"><primary>XUngrabPointer</primary></indexterm>
@@ -457,7 +458,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -489,6 +489,7 @@ outside the boundaries of the root window.
<!-- .sp -->
To change an active pointer grab, use
<function>XChangeActivePointerGrab</function>.
+</para>
<indexterm><primary>Pointer</primary><secondary>grabbing</secondary></indexterm>
<indexterm ><primary>Changing</primary><secondary>pointer grab</secondary></indexterm>
<indexterm significance="preferred"><primary>XChangeActivePointerGrab</primary></indexterm>
@@ -549,7 +550,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -577,6 +577,7 @@ errors.
<!-- .sp -->
To grab a pointer button, use
<function>XGrabButton</function>.
+</para>
<indexterm><primary>Grabbing</primary><secondary>buttons</secondary></indexterm>
<indexterm><primary>Button</primary><secondary>grabbing</secondary></indexterm>
<indexterm significance="preferred"><primary>XGrabButton</primary></indexterm>
@@ -715,7 +716,6 @@ Specifies the cursor that is to be displayed or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -821,6 +821,7 @@ errors.
<!-- .sp -->
To ungrab a pointer button, use
<function>XUngrabButton</function>.
+</para>
<indexterm><primary>Ungrabbing</primary><secondary>buttons</secondary></indexterm>
<indexterm><primary>Button</primary><secondary>ungrabbing</secondary></indexterm>
<indexterm significance="preferred"><primary>XUngrabButton</primary></indexterm>
@@ -881,7 +882,6 @@ Specifies the grab window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -942,6 +942,7 @@ and
<!-- .sp -->
To grab the keyboard, use
<function>XGrabKeyboard</function>.
+</para>
<indexterm><primary>Keyboard</primary><secondary>grabbing</secondary></indexterm>
<indexterm><primary>Grabbing</primary><secondary>keyboard</secondary></indexterm>
<indexterm significance="preferred"><primary>XGrabKeyboard</primary></indexterm>
@@ -1030,7 +1031,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1130,6 +1130,7 @@ errors.
<!-- .sp -->
To ungrab the keyboard, use
<function>XUngrabKeyboard</function>.
+</para>
<indexterm><primary>Keyboard</primary><secondary>ungrabbing</secondary></indexterm>
<indexterm><primary>Ungrabbing</primary><secondary>keyboard</secondary></indexterm>
<indexterm significance="preferred"><primary>XUngrabKeyboard</primary></indexterm>
@@ -1166,7 +1167,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1197,6 +1197,7 @@ active keyboard grab becomes not viewable.
<!-- .sp -->
To passively grab a single key of the keyboard, use
<function>XGrabKey</function>.
+</para>
<indexterm><primary>Key</primary><secondary>grabbing</secondary></indexterm>
<indexterm><primary>Grabbing</primary><secondary>keys</secondary></indexterm>
<indexterm significance="preferred"><primary>XGrabKey</primary></indexterm>
@@ -1297,7 +1298,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1401,6 +1401,7 @@ errors.
<!-- .sp -->
To ungrab a key, use
<function>XUngrabKey</function>.
+</para>
<indexterm><primary>Key</primary><secondary>ungrabbing</secondary></indexterm>
<indexterm><primary>Ungrabbing</primary><secondary>keys</secondary></indexterm>
<indexterm significance="preferred"><primary>XUngrabKey</primary></indexterm>
@@ -1460,7 +1461,6 @@ Specifies the grab window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1504,6 +1504,7 @@ describes the mechanism for resuming event processing.
<!-- .sp -->
To allow further events to be processed when the device has been frozen, use
<function>XAllowEvents</function>.
+</para>
<indexterm significance="preferred"><primary>XAllowEvents</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xallowevents'>
@@ -1559,7 +1560,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1572,8 +1572,8 @@ time of the most recent active grab for the client or if the specified time
is later than the current X server time.
Depending on the event_mode argument, the following occurs:
</para>
-<informaltable>
- <tgroup cols='2' align='center'>
+<informaltable frame='none'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -1759,6 +1759,7 @@ pointer to a new position under program control.
<!-- .sp -->
To move the pointer to an arbitrary point in a window, use
<function>XWarpPointer</function>.
+</para>
<indexterm significance="preferred"><primary>XWarpPointer</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xwarppointer'>
@@ -1870,7 +1871,6 @@ Specify the x and y coordinates within the destination window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1933,6 +1933,7 @@ for input focus policy.
<!-- .sp -->
To set the input focus, use
<function>XSetInputFocus</function>.
+</para>
<indexterm significance="preferred"><primary>XSetInputFocus</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetinputfocus'>
@@ -1998,7 +1999,6 @@ You can pass either a timestamp or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2107,6 +2107,7 @@ errors.
<!-- .sp -->
To obtain the current input focus, use
<function>XGetInputFocus</function>.
+</para>
<indexterm significance="preferred"><primary>XGetInputFocus</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetinputfocus'>
@@ -2157,7 +2158,6 @@ or
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2322,6 +2322,7 @@ If an error is generated, a subset of the controls may have been altered.
<para>
<!-- .LP -->
<!-- .sp -->
+</para>
<indexterm significance="preferred"><primary>XChangeKeyboardControl</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchangekeyboardcontrol'>
@@ -2366,7 +2367,6 @@ Specifies one value for each bit set to 1 in the mask.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2391,6 +2391,7 @@ errors.
<!-- .sp -->
To obtain the current control values for the keyboard, use
<function>XGetKeyboardControl</function>.
+</para>
<indexterm significance="preferred"><primary>XGetKeyboardControl</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetkeyboardcontrol'>
@@ -2425,7 +2426,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2475,6 +2475,7 @@ with the least significant bit in the byte representing key 8N.
<!-- .sp -->
To turn on keyboard auto-repeat, use
<function>XAutoRepeatOn</function>.
+</para>
<indexterm significance="preferred"><primary>XAutoRepeatOn</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xautorepeaton'>
@@ -2496,7 +2497,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2509,6 +2509,7 @@ function turns on auto-repeat for the keyboard on the specified display.
<!-- .sp -->
To turn off keyboard auto-repeat, use
<function>XAutoRepeatOff</function>.
+</para>
<indexterm significance="preferred"><primary>XAutoRepeatOff</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xautorepeatoff'>
@@ -2530,7 +2531,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2543,6 +2543,7 @@ function turns off auto-repeat for the keyboard on the specified display.
<!-- .sp -->
To ring the bell, use
<function>XBell</function>.
+</para>
<indexterm significance="preferred"><primary>XBell</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xbell'>
@@ -2576,7 +2577,6 @@ which can range from -100 to 100 inclusive.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2627,6 +2627,7 @@ error.
<!-- .sp -->
To obtain a bit vector that describes the state of the keyboard, use
<function>XQueryKeymap</function>.
+</para>
<indexterm significance="preferred"><primary>XQueryKeymap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xquerykeymap'>
@@ -2660,7 +2661,6 @@ Each bit represents one key of the keyboard.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2683,6 +2683,7 @@ may lag the physical state if device event processing is frozen.
<!-- .sp -->
To set the mapping of the pointer buttons, use
<function>XSetPointerMapping</function>.
+</para>
<indexterm significance="preferred"><primary>XSetPointerMapping</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetpointermapping'>
@@ -2726,7 +2727,6 @@ Specifies the number of items in the mapping list.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2771,6 +2771,7 @@ error.
<!-- .sp -->
To get the pointer mapping, use
<function>XGetPointerMapping</function>.
+</para>
<indexterm significance="preferred"><primary>XGetPointerMapping</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetpointermapping'>
@@ -2814,7 +2815,6 @@ Specifies the number of items in the mapping list.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2834,6 +2834,7 @@ in map_return.
<!-- .sp -->
To control the pointer's interactive feel, use
<function>XChangePointerControl</function>.
+</para>
<indexterm significance="preferred"><primary>XChangePointerControl</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchangepointercontrol'>
@@ -2910,7 +2911,6 @@ Specifies the acceleration threshold.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2947,6 +2947,7 @@ error.
<!-- .sp -->
To get the current pointer parameters, use
<function>XGetPointerControl</function>.
+</para>
<indexterm significance="preferred"><primary>XGetPointerControl</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetpointercontrol'>
@@ -3000,7 +3001,6 @@ Returns the acceleration threshold.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3222,6 +3222,7 @@ Rather, it merely stores it for reading and writing by clients.
<!-- .LP -->
To obtain the legal KeyCodes for a display, use
<function>XDisplayKeycodes</function>.
+</para>
<indexterm significance="preferred"><primary>XDisplayKeycodes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdisplaykeycodes'>
@@ -3264,7 +3265,6 @@ Returns the maximum number of KeyCodes.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3281,6 +3281,7 @@ Not all KeyCodes in this range are required to have corresponding keys.
<!-- .LP -->
To obtain the symbols for the specified KeyCodes, use
<function>XGetKeyboardMapping</function>.
+</para>
<indexterm significance="preferred"><primary>XGetKeyboardMapping</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetkeyboardmapping'>
@@ -3336,7 +3337,6 @@ Returns the number of KeySyms per KeyCode.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3406,6 +3406,7 @@ error.
<!-- .sp -->
To change the keyboard mapping, use
<function>XChangeKeyboardMapping</function>.
+</para>
<indexterm significance="preferred"><primary>XChangeKeyboardMapping</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xchangekeyboardmapping'>
@@ -3472,7 +3473,6 @@ Specifies the number of KeyCodes that are to be changed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3578,6 +3578,7 @@ To create an
<structname>XModifierKeymap</structname>
structure, use
<function>XNewModifiermap</function>.
+</para>
<indexterm significance="preferred"><primary>XNewModifiermap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xnewmodifiermap'>
@@ -3600,7 +3601,6 @@ in the map.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3617,6 +3617,7 @@ To add a new entry to an
<structname>XModifierKeymap</structname>
structure, use
<function>XInsertModifiermapEntry</function>.
+</para>
<indexterm significance="preferred"><primary>XInsertModifiermapEntry</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xinsertmodifiermapentry'>
@@ -3662,7 +3663,6 @@ Specifies the modifier.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3680,6 +3680,7 @@ To delete an entry from an
<structname>XModifierKeymap</structname>
structure, use
<function>XDeleteModifiermapEntry</function>.
+</para>
<indexterm significance="preferred"><primary>XDeleteModifiermapEntry</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdeletemodifiermapentry'>
@@ -3725,7 +3726,6 @@ Specifies the modifier.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3743,6 +3743,7 @@ To destroy an
<structname>XModifierKeymap</structname>
structure, use
<function>XFreeModifiermap</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeModifiermap</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreemodifiermap'>
@@ -3766,7 +3767,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3781,6 +3781,7 @@ structure.
<!-- .sp -->
To set the KeyCodes to be used as modifiers, use
<function>XSetModifierMapping</function>.
+</para>
<indexterm significance="preferred"><primary>XSetModifierMapping</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetmodifiermapping'>
@@ -3815,7 +3816,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3895,6 +3895,7 @@ errors.
<!-- .sp -->
To obtain the KeyCodes used as modifiers, use
<function>XGetModifierMapping</function>.
+</para>
<indexterm significance="preferred"><primary>XGetModifierMapping</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetmodifiermapping'>
@@ -3916,7 +3917,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH13.xml b/libX11/specs/libX11/CH13.xml
index 49f359640..4ebe19c57 100644
--- a/libX11/specs/libX11/CH13.xml
+++ b/libX11/specs/libX11/CH13.xml
@@ -143,6 +143,7 @@ is selecting one of several styles of keyboard input method.
<!-- .sp -->
To configure Xlib locale modifiers for the current locale, use
<function>XSetLocaleModifiers</function>.
+</para>
<indexterm significance="preferred"><primary>XSetLocaleModifiers</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetlocalemodifiers'>
@@ -164,7 +165,6 @@ Specifies the modifiers.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -287,63 +287,54 @@ the following table describes the locale (and modifiers) dependency:
</para>
<informaltable>
- <tgroup cols='3' align='center'>
+ <tgroup cols='3'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<thead>
<row>
- <entry>Locale from</entry>
- <entry>Affects the Function</entry>
- <entry>In</entry>
+ <entry align='center'>Locale from</entry>
+ <entry align='center'>Affects the Function</entry>
+ <entry align='center'>In</entry>
</row>
</thead>
<tbody>
<row>
- <entry></entry>
- <entry>Locale Query/Configuration:</entry>
+ <entry nameend='c3' namest='c1'>
+ <emphasis role='bold'>Locale Query/Configuration:</emphasis></entry>
</row>
<row>
- <entry><function>setlocale</function></entry>
+ <entry morerows='1'><function>setlocale</function></entry>
<entry><function>XSupportsLocale</function></entry>
<entry>Locale queried</entry>
</row>
<row>
- <entry></entry>
<entry><function>XSetLocaleModifiers</function></entry>
<entry>Locale modified</entry>
</row>
<row>
- <entry></entry>
- </row>
- <row>
- <entry></entry>
- <entry>Resources:</entry>
+ <entry nameend='c3' namest='c1'>
+ <emphasis role='bold'>Resources:</emphasis></entry>
</row>
<row>
<entry><function>setlocale</function></entry>
- <entry><function>XrmGetFileDatabase</function></entry>
+ <entry>
+ <para><function>XrmGetFileDatabase</function></para>
+ <para><function>XrmGetStringDatabase</function></para>
+ </entry>
<entry>Locale of <type>XrmDatabase</type></entry>
</row>
<row>
- <entry></entry>
- <entry><function>XrmGetStringDatabase</function></entry>
- </row>
- <row>
<entry><type>XrmDatabase</type></entry>
- <entry><function>XrmPutFileDatabase</function></entry>
+ <entry>
+ <para><function>XrmPutFileDatabase</function></para>
+ <para><function>XrmLocaleOfDatabase</function></para>
+ </entry>
<entry>Locale of <type>XrmDatabase</type></entry>
</row>
<row>
- <entry></entry>
- <entry><function>XrmLocaleOfDatabase</function></entry>
- </row>
- <row>
- <entry></entry>
- </row>
- <row>
- <entry></entry>
- <entry>Setting Standard Properties:</entry>
+ <entry nameend='c3' namest='c1'>
+ <emphasis role='bold'>Setting Standard Properties:</emphasis></entry>
</row>
<row>
<entry><function>setlocale</function></entry>
@@ -354,129 +345,100 @@ the following table describes the locale (and modifiers) dependency:
</row>
<row>
<entry><function>setlocale</function></entry>
- <entry><function>XmbTextPropertyToTextList</function></entry>
+ <entry>
+ <para><function>XmbTextPropertyToTextList</function></para>
+ <para><function>XwcTextPropertyToTextList</function></para>
+ <para><function>XmbTextListToTextProperty</function></para>
+ <para><function>XwcTextListToTextProperty</function></para>
+ </entry>
<entry>Encoding of supplied/returned text</entry>
</row>
<row>
- <entry></entry>
- <entry><function>XwcTextPropertyToTextList</function></entry>
- </row>
- <row>
- <entry></entry>
- <entry><function>XmbTextListToTextProperty</function></entry>
- </row>
- <row>
- <entry></entry>
- <entry><function>XwcTextListToTextProperty</function></entry>
- </row>
- <row>
- <entry></entry>
- </row>
- <row>
- <entry></entry>
- <entry>Text Input:</entry>
+ <entry nameend='c3' namest='c1'>
+ <emphasis role='bold'>Text Input:</emphasis></entry>
</row>
<row>
- <entry><function>setlocale</function></entry>
+ <entry morerows='2'><function>setlocale</function></entry>
<entry><function>XOpenIM</function></entry>
<entry><acronym>XIM</acronym> input method selection</entry>
</row>
<row>
- <entry></entry>
<entry><function>XRegisterIMInstantiateCallback</function></entry>
<entry><acronym>XIM</acronym> selection</entry>
</row>
<row>
- <entry></entry>
<entry><function>XUnregisterIMInstantiateCallback</function></entry>
<entry><acronym>XIM</acronym> selection</entry>
</row>
<row>
- <entry><type>XIM</type></entry>
+ <entry morerows='1'><type>XIM</type></entry>
<entry><function>XCreateIC</function></entry>
<entry><acronym>XIC</acronym> input method configuration</entry>
</row>
<row>
- <entry></entry>
<entry><function>XLocaleOfIM</function>, and so on</entry>
<entry>Queried locale</entry>
</row>
<row>
- <entry><type>XIC</type></entry>
+ <entry morerows='1'><type>XIC</type></entry>
<entry><function>XmbLookupString</function></entry>
<entry>Keyboard layout</entry>
</row>
<row>
- <entry></entry>
<entry><function>XwcLookupString</function></entry>
<entry>Encoding of returned text</entry>
</row>
<row>
- <entry></entry>
- </row>
- <row>
- <entry></entry>
- <entry>Text Drawing:</entry>
+ <entry nameend='c3' namest='c1'>
+ <emphasis role='bold'>Text Drawing:</emphasis></entry>
</row>
<row>
- <entry><function>setlocale</function></entry>
+ <entry morerows='1'><function>setlocale</function></entry>
<entry><function>XOpenOM</function></entry>
<entry><acronym>XOM</acronym> output method selection</entry>
</row>
<row>
- <entry></entry>
<entry><function>XCreateFontSet</function></entry>
<entry>Charsets of fonts in XFontSet</entry>
</row>
<row>
- <entry><type>XOM</type></entry>
+ <entry morerows='1'><type>XOM</type></entry>
<entry><function>XCreateOC</function></entry>
<entry><acronym>XOC</acronym> output method configuration</entry>
</row>
<row>
- <entry></entry>
<entry><function>XLocaleOfOM</function>, and so on</entry>
<entry>Queried locale</entry>
</row>
<row>
- <entry><type>XFontSet</type></entry>
+ <entry morerows='2'><type>XFontSet</type></entry>
<entry><function>XmbDrawText</function>,</entry>
<entry>Locale of supplied text</entry>
</row>
<row>
- <entry></entry>
<entry><function>XwcDrawText</function>, and so on</entry>
<entry>Locale of supplied text</entry>
</row>
<row>
- <entry></entry>
- <entry><function>XExtentsOfFontSet</function>, and so on</entry>
+ <entry>
+ <para><function>XExtentsOfFontSet</function>, and so on</para>
+ <para><function>XmbTextExtents</function>,</para>
+ <para><function>XwcTextExtents</function>, and so on</para>
+ </entry>
<entry>Locale-dependent metrics</entry>
</row>
<row>
- <entry></entry>
- <entry><function>XmbTextExtents</function>,</entry>
- </row>
- <row>
- <entry></entry>
- <entry><function>XwcTextExtents</function>, and so on</entry>
- </row>
- <row>
- <entry></entry>
- </row>
- <row>
- <entry></entry>
- <entry>Xlib Errors:</entry>
+ <entry nameend='c3' namest='c1'>
+ <emphasis role='bold'>Xlib Errors:</emphasis></entry>
</row>
<row>
<entry><function>setlocale</function></entry>
- <entry><function>XGetErrorDatabaseText</function></entry>
+ <entry>
+ <para><function>XGetErrorDatabaseText</function>,</para>
+ <para><function>XGetErrorText</function>, and so on</para>
+ </entry>
<entry>Locale of error message</entry>
</row>
- <row>
- <entry></entry>
- <entry><function>XGetErrorText</function></entry>
- </row>
</tbody>
</tgroup>
</informaltable>
@@ -542,6 +504,7 @@ A NULL identifies the end of a nested list.
<!-- .sp -->
To allocate a nested variable argument list dynamically, use
<function>XVaCreateNestedList</function>.
+</para>
<indexterm significance="preferred"><primary>XVaCreateNestedList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xvacreatenestedlist'>
@@ -574,7 +537,6 @@ Specifies the variable length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -729,6 +691,7 @@ a broader, more generalized abstraction.
<!-- .LP -->
To open an output method, use
<function>XOpenOM</function>.
+</para>
<indexterm significance="preferred"><primary>XOpenOM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xopenom'>
@@ -783,7 +746,6 @@ Specifies the full class name of the application.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -847,6 +809,7 @@ returns NULL if no output method could be opened.
<!-- .sp -->
To close an output method, use
<function>XCloseOM</function>.
+</para>
<indexterm significance="preferred"><primary>XCloseOM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcloseom'>
@@ -868,7 +831,6 @@ Specifies the output method.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -881,6 +843,7 @@ function closes the specified output method.
<!-- .sp -->
To set output method attributes, use
<function>XSetOMValues</function>.
+</para>
<indexterm significance="preferred"><primary>XSetOMValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetomvalues'>
@@ -913,7 +876,6 @@ Specifies the variable-length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -934,6 +896,7 @@ No standard arguments are currently defined by Xlib.
<!-- .sp -->
To query an output method, use
<function>XGetOMValues</function>.
+</para>
<indexterm significance="preferred"><primary>XGetOMValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetomvalues'>
@@ -966,7 +929,6 @@ Specifies the variable-length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -982,6 +944,7 @@ it returns the name of the first argument that could not be obtained.
<!-- .LP -->
To obtain the display associated with an output method, use
<function>XDisplayOfOM</function>.
+</para>
<indexterm significance="preferred"><primary>XDisplayOfOM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdisplayofom'>
@@ -1003,7 +966,6 @@ Specifies the output method.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1016,6 +978,7 @@ function returns the display associated with the specified output method.
<!-- .sp -->
To get the locale associated with an output method, use
<function>XLocaleOfOM</function>.
+</para>
<indexterm significance="preferred"><primary>XLocaleOfOM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlocaleofom'>
@@ -1037,7 +1000,6 @@ Specifies the output method.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1067,13 +1029,13 @@ The following key applies to this table.
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Key</entry>
- <entry>Explanation</entry>
+ <entry align='left'>Key</entry>
+ <entry align='left'>Explanation</entry>
</row>
</thead>
<tbody>
@@ -1085,14 +1047,16 @@ The following key applies to this table.
</tgroup>
</informaltable>
+<para></para>
+
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry><acronym>XOM</acronym> Value</entry>
- <entry>Key</entry>
+ <entry align='left'><acronym>XOM</acronym> Value</entry>
+ <entry align='left'>Key</entry>
</row>
</thead>
<tbody>
@@ -1352,6 +1316,7 @@ is defined as an upward compatible type of
<!-- .sp -->
To create an output context, use
<function>XCreateOC</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateOC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreateoc'>
@@ -1384,7 +1349,6 @@ Specifies the variable-length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1438,6 +1402,7 @@ error.
<!-- .sp -->
To destroy an output context, use
<function>XDestroyOC</function>.
+</para>
<indexterm significance="preferred"><primary>XDestroyOC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdestroyoc'>
@@ -1459,7 +1424,6 @@ Specifies the output context.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1472,6 +1436,7 @@ function destroys the specified output context.
<!-- .sp -->
To get the output method associated with an output context, use
<function>XOMOfOC</function>.
+</para>
<indexterm significance="preferred"><primary>XOMOfOC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xomofoc'>
@@ -1493,7 +1458,6 @@ Specifies the output context.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1519,6 +1483,7 @@ with a character string using the X Portable Character Set.
<!-- .sp -->
To set <acronym>XOC</acronym> values, use
<function>XSetOCValues</function>.
+</para>
<indexterm significance="preferred"><primary>XSetOCValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetocvalues'>
@@ -1551,7 +1516,6 @@ Specifies the variable-length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1596,6 +1560,7 @@ error.
<!-- .sp -->
To obtain <acronym>XOC</acronym> values, use
<function>XGetOCValues</function>.
+</para>
<indexterm significance="preferred"><primary>XGetOCValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetocvalues'>
@@ -1628,7 +1593,6 @@ Specifies the variable-length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1676,13 +1640,13 @@ The third column indicates how each of the <acronym>XOC</acronym> values is trea
The following keys apply to this table.
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Key</entry>
- <entry>Explanation</entry>
+ <entry align='left'>Key</entry>
+ <entry align='left'>Explanation</entry>
</row>
</thead>
<tbody>
@@ -1707,17 +1671,18 @@ The following keys apply to this table.
</tgroup>
</informaltable>
-<!-- .LP -->
+<para></para>
+
<informaltable>
- <tgroup cols='3' align='center'>
+ <tgroup cols='3'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<thead>
<row>
- <entry><acronym>XOC</acronym> Value</entry>
- <entry>Alternative Interface</entry>
- <entry>Key</entry>
+ <entry align='left'><acronym>XOC</acronym> Value</entry>
+ <entry align='left'>Alternative Interface</entry>
+ <entry align='left'>Key</entry>
</row>
</thead>
<tbody>
@@ -2144,6 +2109,7 @@ so that the output context self indicates whether it was created by
<function>XCreateOC</function>
or
<function>XCreateFontSet</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateFontSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreatefontset'>
@@ -2209,7 +2175,6 @@ Returns the string drawn for missing charsets.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2474,6 +2439,7 @@ structures and full font names given an
<type>XFontSet</type>,
use
<function>XFontsOfFontSet</function>.
+</para>
<indexterm significance="preferred"><primary>XFontsOfFontSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfontsoffontset'>
@@ -2517,7 +2483,6 @@ Returns the list of font names.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2583,6 +2548,7 @@ To obtain the base font name list and the selected font name list given an
<type>XFontSet</type>,
use
<function>XBaseFontNameListOfFontSet</function>.
+</para>
<indexterm significance="preferred"><primary>XBaseFontNameListOfFontSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xbasefontnamelistoffontset'>
@@ -2604,7 +2570,6 @@ Specifies the font set.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2645,6 +2610,7 @@ To obtain the locale name given an
<type>XFontSet</type>,
use
<function>XLocaleOfFontSet</function>.
+</para>
<indexterm significance="preferred"><primary>XLocaleOfFontSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlocaleoffontset'>
@@ -2666,7 +2632,6 @@ Specifies the font set.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2698,6 +2663,7 @@ also frees its associated
<type>XOM</type>
if the output context was created by
<function>XCreateFontSet</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeFontSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreefontset'>
@@ -2730,7 +2696,6 @@ Specifies the font set.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2802,6 +2767,7 @@ to obtain proper rendering.
<!-- .sp -->
To find out about direction-dependent rendering, use
<function>XDirectionalDependentDrawing</function>.
+</para>
<indexterm significance="preferred"><primary>XDirectionalDependentDrawing</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdirectionaldependentdrawing'>
@@ -2823,7 +2789,6 @@ Specifies the font set.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2840,6 +2805,7 @@ otherwise, it returns
<!-- .sp -->
To find out about context-dependent rendering, use
<function>XContextualDrawing</function>.
+</para>
<indexterm significance="preferred"><primary>XContextualDrawing</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcontextualdrawing'>
@@ -2861,7 +2827,6 @@ Specifies the font set.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2878,6 +2843,7 @@ otherwise, it returns
<!-- .sp -->
To find out about context-dependent or direction-dependent rendering, use
<function>XContextDependentDrawing</function>.
+</para>
<indexterm significance="preferred"><primary>XContextDependentDrawing</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcontextdependentdrawing'>
@@ -2899,7 +2865,6 @@ Specifies the font set.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2992,6 +2957,7 @@ To obtain the maximum extents structure given an
<type>XFontSet</type>,
use
<function>XExtentsOfFontSet</function>.
+</para>
<indexterm significance="preferred"><primary>XExtentsOfFontSet</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xextentsoffontset'>
@@ -3013,7 +2979,6 @@ Specifies the font set.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3044,6 +3009,7 @@ use
<function>XmbTextEscapement</function>
or
<function>XwcTextEscapement</function>.
+</para>
<indexterm significance="preferred"><primary>XmbTextEscapement</primary></indexterm>
<indexterm significance="preferred"><primary>XwcTextEscapement</primary></indexterm>
<!-- .sM -->
@@ -3107,7 +3073,6 @@ Specifies the number of characters in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3136,6 +3101,7 @@ use
<function>XmbTextExtents</function>
or
<function>XwcTextExtents</function>.
+</para>
<indexterm significance="preferred"><primary>XmbTextExtents</primary></indexterm>
<indexterm significance="preferred"><primary>XwcTextExtents</primary></indexterm>
<!-- .sM -->
@@ -3224,7 +3190,6 @@ Returns the overall logical dimensions.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3296,6 +3261,7 @@ use
<function>XmbTextPerCharExtents</function>
or
<function>XwcTextPerCharExtents</function>.
+</para>
<indexterm significance="preferred"><primary>XmbTextPerCharExtents</primary></indexterm>
<indexterm significance="preferred"><primary>XwcTextPerCharExtents</primary></indexterm>
<!-- .sM -->
@@ -3433,7 +3399,6 @@ Returns the overall logical dimensions.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3579,6 +3544,7 @@ To draw text using multiple font sets in a given drawable, use
<function>XmbDrawText</function>
or
<function>XwcDrawText</function>.
+</para>
<indexterm significance="preferred"><primary>XmbDrawText</primary></indexterm>
<indexterm significance="preferred"><primary>XwcDrawText</primary></indexterm>
<!-- .sM -->
@@ -3680,7 +3646,6 @@ Specifies the number of text items in the array.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3730,6 +3695,7 @@ To draw text using a single font set in a given drawable, use
<function>XmbDrawString</function>
or
<function>XwcDrawString</function>.
+</para>
<indexterm significance="preferred"><primary>XmbDrawString</primary></indexterm>
<indexterm significance="preferred"><primary>XwcDrawString</primary></indexterm>
<!-- .sM -->
@@ -3853,7 +3819,6 @@ Specifies the number of characters in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3876,6 +3841,7 @@ To draw image text using a single font set in a given drawable, use
<function>XmbDrawImageString</function>
or
<function>XwcDrawImageString</function>.
+</para>
<indexterm significance="preferred"><primary>XmbDrawImageString</primary></indexterm>
<indexterm significance="preferred"><primary>XwcDrawImageString</primary></indexterm>
<!-- .sM -->
@@ -3999,7 +3965,6 @@ Specifies the number of characters in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5037,7 +5002,7 @@ To support management of input methods in these cases, the following
functions are provided:
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -5184,6 +5149,7 @@ IM value.
<!-- .LP -->
To open a connection, use
<function>XOpenIM</function>.
+</para>
<indexterm significance="preferred"><primary>XOpenIM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xopenim'>
@@ -5238,7 +5204,6 @@ Specifies the full class name of the application.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5305,6 +5270,7 @@ returns NULL if no input method could be opened.
<!-- .sp -->
To close a connection, use
<function>XCloseIM</function>.
+</para>
<indexterm significance="preferred"><primary>XCloseIM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcloseim'>
@@ -5326,7 +5292,6 @@ Specifies the input method.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5339,6 +5304,7 @@ function closes the specified input method.
<!-- .sp -->
To set input method attributes, use
<function>XSetIMValues</function>.
+</para>
<indexterm significance="preferred"><primary>XSetIMValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetimvalues'>
@@ -5371,7 +5337,6 @@ Specifies the variable-length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5392,6 +5357,7 @@ correctly.
<!-- .sp -->
To query an input method, use
<function>XGetIMValues</function>.
+</para>
<indexterm significance="preferred"><primary>XGetIMValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetimvalues'>
@@ -5424,7 +5390,6 @@ Specifies the variable length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5455,6 +5420,7 @@ with the returned pointer.
<!-- .sp -->
To obtain the display associated with an input method, use
<function>XDisplayOfIM</function>.
+</para>
<indexterm significance="preferred"><primary>XDisplayOfIM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdisplayofim'>
@@ -5476,7 +5442,6 @@ Specifies the input method.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5489,6 +5454,7 @@ function returns the display associated with the specified input method.
<!-- .sp -->
To get the locale associated with an input method, use
<function>XLocaleOfIM</function>.
+</para>
<indexterm significance="preferred"><primary>XLocaleOfIM</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlocaleofim'>
@@ -5510,7 +5476,6 @@ Specifies the input method.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5523,6 +5488,7 @@ function returns the locale associated with the specified input method.
<!-- .sp -->
To register an input method instantiate callback, use
<function>XRegisterIMInstantiateCallback</function>.
+</para>
<indexterm significance="preferred"><primary>XRegisterIMInstantiateCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xregisteriminstantiatecallback'>
@@ -5599,7 +5565,6 @@ Specifies the additional client data.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5619,6 +5584,7 @@ The function returns
<para>
<!-- .LP -->
The generic prototype is as follows:
+</para>
<indexterm significance="preferred"><primary>IMInstantiateCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='iminstantiatecallback'>
@@ -5662,12 +5628,12 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
To unregister an input method instantiation callback, use
<function>XUnregisterIMInstantiateCallback</function>.
+</para>
<indexterm significance="preferred"><primary>XUnregisterIMInstantiateCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xunregisteriminstantiatecallback'>
@@ -5744,7 +5710,6 @@ Specifies the additional client data.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5779,13 +5744,13 @@ are treated by that input style.
The following keys apply to this table.
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Key</entry>
- <entry>Explanation</entry>
+ <entry align='left'>Key</entry>
+ <entry align='left'>Explanation</entry>
</row>
</thead>
<tbody>
@@ -5808,15 +5773,16 @@ The following keys apply to this table.
</tgroup>
</informaltable>
-<!-- .LP -->
+<para></para>
+
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry><acronym>XIM</acronym> Value</entry>
- <entry>Key</entry>
+ <entry align='left'><acronym>XIM</acronym> Value</entry>
+ <entry align='left'>Key</entry>
</row>
</thead>
<tbody>
@@ -5965,7 +5931,7 @@ by the input method for preedit information.
<indexterm significance="preferred"><primary>XIMPreeditNothing</primary></indexterm>
<indexterm significance="preferred"><primary>XIMPreeditNone</primary></indexterm>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -6023,7 +5989,7 @@ by the input method for status information.
<indexterm significance="preferred"><primary>XIMStatusNothing</primary></indexterm>
<indexterm significance="preferred"><primary>XIMStatusNone</primary></indexterm>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -6109,6 +6075,7 @@ or
<para>
<!-- .LP -->
The generic prototype of this callback function is as follows:
+</para>
<indexterm significance="preferred"><primary>DestroyCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='destroycallback'>
@@ -6152,7 +6119,6 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6345,6 +6311,7 @@ they should be registered with the X Consortium.
<!-- .sp -->
To create an input context, use
<function>XCreateIC</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateIC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreateic'>
@@ -6377,7 +6344,6 @@ Specifies the variable length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6438,6 +6404,7 @@ errors.
<!-- .sp -->
To destroy an input context, use
<function>XDestroyIC</function>.
+</para>
<indexterm significance="preferred"><primary>XDestroyIC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdestroyic'>
@@ -6459,7 +6426,6 @@ Specifies the input context.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6475,6 +6441,7 @@ use
<function>XSetICFocus</function>
and
<function>XUnsetICFocus</function>.
+</para>
<indexterm significance="preferred"><primary>XSetICFocus</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xseticfocus'>
@@ -6496,7 +6463,6 @@ Specifies the input context.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6513,9 +6479,6 @@ Calling
<function>XSetICFocus</function>
does not affect the focus window value.
</para>
-<para>
-<!-- .LP -->
-<!-- .sp -->
<indexterm significance="preferred"><primary>XUnsetICFocus</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xunseticfocus'>
@@ -6537,7 +6500,6 @@ Specifies the input context.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6564,6 +6526,7 @@ To reset the state of an input context to its initial state, use
<function>XmbResetIC</function>
or
<function>XwcResetIC</function>.
+</para>
<indexterm significance="preferred"><primary>XmbResetIC</primary></indexterm>
<indexterm significance="preferred"><primary>XwcResetIC</primary></indexterm>
<!-- .sM -->
@@ -6593,7 +6556,6 @@ Specifies the input context.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6640,6 +6602,7 @@ The client should free the returned string by calling
<!-- .sp -->
To get the input method associated with an input context, use
<function>XIMOfIC</function>.
+</para>
<indexterm significance="preferred"><primary>XIMOfIC</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='ximofic'>
@@ -6661,7 +6624,6 @@ Specifies the input context.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6685,6 +6647,7 @@ with a character string using the X Portable Character Set.
<!-- .sp -->
To set <acronym>XIC</acronym> values, use
<function>XSetICValues</function>.
+</para>
<indexterm significance="preferred"><primary>XSetICValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xseticvalues'>
@@ -6717,7 +6680,6 @@ Specifies the variable length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6768,6 +6730,7 @@ errors.
<!-- .sp -->
To obtain <acronym>XIC</acronym> values, use
<function>XGetICValues</function>.
+</para>
<indexterm significance="preferred"><primary>XGetICValues</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgeticvalues'>
@@ -6800,7 +6763,6 @@ Specifies the variable length argument list(Al.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -6870,13 +6832,13 @@ are treated by that input style.
The following keys apply to these tables.
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<thead>
<row>
- <entry>Key</entry>
- <entry>Explanation</entry>
+ <entry align='left'>Key</entry>
+ <entry align='left'>Explanation</entry>
</row>
</thead>
<tbody>
@@ -6930,9 +6892,11 @@ The following keys apply to these tables.
</tgroup>
</informaltable>
+<para></para>
+
<!-- .LP -->
<informaltable>
- <tgroup cols='7' align='center'>
+ <tgroup cols='7'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
@@ -6940,7 +6904,7 @@ The following keys apply to these tables.
<colspec colname='c5'/>
<colspec colname='c6'/>
<colspec colname='c7'/>
- <tbody>
+ <thead>
<row>
<entry><acronym>XIC</acronym> Value</entry>
<entry>Geometry Mangement</entry>
@@ -6950,6 +6914,8 @@ The following keys apply to these tables.
<entry>Preedit Nothing</entry>
<entry>Preedit None</entry>
</row>
+ </thead>
+ <tbody>
<row>
<entry>Input Style</entry>
<entry></entry>
@@ -7191,9 +7157,11 @@ The following keys apply to these tables.
</tgroup>
</informaltable>
+<para></para>
+
<!-- .LP -->
<informaltable>
- <tgroup cols='6' align='center'>
+ <tgroup cols='6'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
@@ -7848,7 +7816,7 @@ is ignored when evaluating whether the key is hot or not.
</para>
<informaltable>
- <tgroup cols='3' align='center'>
+ <tgroup cols='3'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
@@ -8322,6 +8290,7 @@ The value of the
argument is a pointer to a structure of type
<structname>XIMCallback</structname>.
The generic prototype is as follows:
+</para>
<indexterm significance="preferred"><primary>PreeditStateNotifyCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='preeditstatenotifycallback'>
@@ -8365,7 +8334,6 @@ Specifies the current preedit state.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -8415,7 +8383,7 @@ The set of preedit callbacks is as follows:
<indexterm significance="preferred"><primary>XNPreeditDrawCallback</primary></indexterm>
<indexterm significance="preferred"><primary>XNPreeditCaretCallback</primary></indexterm>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -8451,7 +8419,7 @@ The set of status callbacks is as follows:
<indexterm significance="preferred"><primary>XNStatusDoneCallback</primary></indexterm>
<indexterm significance="preferred"><primary>XNStatusDrawCallback</primary></indexterm>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -8540,6 +8508,7 @@ terminate preedit, or update the status area.
<para>
<!-- .LP -->
All callback procedures follow the generic prototype:
+</para>
<indexterm significance="preferred"><primary>CallbackPrototype</primary></indexterm>
<!-- .sM -->
<funcsynopsis>
@@ -8583,7 +8552,6 @@ Specifies data specific to the callback.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -8612,6 +8580,7 @@ and specific data structure associated with the different reasons.
The geometry callback is triggered by the input method
to indicate that it wants the client to negotiate geometry.
The generic prototype is as follows:
+</para>
<indexterm significance="preferred"><primary>GeometryCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis>
@@ -8655,7 +8624,6 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -8673,6 +8641,7 @@ The destroy callback is triggered by the input method
when it stops service for any reason.
After the callback is invoked, the input context will be freed by Xlib.
The generic prototype is as follows:
+</para>
<indexterm significance="preferred"><primary>DestroyCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='destroycallback_xic'>
@@ -8716,7 +8685,6 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -8735,6 +8703,7 @@ to request the client to return the string to be converted. The
returned string may be either a multibyte or wide character string,
with an encoding matching the locale bound to the input context.
The callback prototype is as follows:
+</para>
<indexterm significance="preferred"><primary>StringConversionCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='stringconversioncallback'>
@@ -8778,7 +8747,6 @@ Specifies the amount of the string to be converted.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -8897,6 +8865,7 @@ or
<function><replaceable>PreeditDoneCallback</replaceable></function>
callback is triggered to let the toolkit do the setup
or the cleanup for the preedit region.
+</para>
<indexterm significance="preferred"><primary>PreeditStartCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='preeditstartcallback'>
@@ -8940,7 +8909,6 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -8951,6 +8919,7 @@ will return the maximum size of the preedit string.
A positive number indicates the maximum number of bytes allowed
in the preedit string,
and a value of -1 indicates there is no limit.
+</para>
<indexterm significance="preferred"><primary>PreeditDoneCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='preeditdonecallback'>
@@ -8994,7 +8963,6 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -9032,6 +9000,7 @@ That string is either a multibyte or wide character string,
whose encoding matches the locale bound to the input context.
The callback prototype
is as follows:
+</para>
<indexterm significance="preferred"><primary>PreeditDrawCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='preeditdrawcallback'>
@@ -9075,7 +9044,6 @@ Specifies the preedit drawing information.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -9419,6 +9387,7 @@ to move the text insertion point in the preedit area
Consequently, input method needs to indicate to the client that it
should move the text insertion point.
It then calls the PreeditCaretCallback.
+</para>
<indexterm significance="preferred"><primary>PreeditCaretCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='preeditcaretcallback'>
@@ -9462,7 +9431,6 @@ Specifies the preedit caret information.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -9553,7 +9521,7 @@ These values are defined as follows:
<indexterm significance="preferred"><primary>XIMCaretUp</primary></indexterm>
<indexterm significance="preferred"><primary>XIMCaretDown</primary></indexterm>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
@@ -9635,6 +9603,7 @@ callbacks: StatusStartCallback, StatusDoneCallback, and StatusDrawCallback.
<!-- .sp -->
When the input context is created or gains focus,
the input method calls the StatusStartCallback callback.
+</para>
<indexterm significance="preferred"><primary>StatusStartCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='statusstartcallback'>
@@ -9678,7 +9647,6 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -9692,6 +9660,7 @@ it will not be called again before StatusDoneCallback has been called.
<!-- .sp -->
When an input context
is destroyed or when it loses focus, the input method calls StatusDoneCallback.
+</para>
<indexterm significance="preferred"><primary>StatusDoneCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='statusdonecallback'>
@@ -9735,7 +9704,6 @@ Not used for this callback and always passed as NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -9747,6 +9715,7 @@ The callback may release any data allocated on
<!-- .sp -->
When an input context status has to be updated, the input method calls
StatusDrawCallback.
+</para>
<indexterm significance="preferred"><primary>StatusDrawCallback</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='statusdrawcallback'>
@@ -9790,7 +9759,6 @@ Specifies the status drawing information.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -9885,6 +9853,7 @@ Clients should discard filtered events.
<!-- .LP -->
To filter an event, use
<function>XFilterEvent</function>.
+</para>
<indexterm significance="preferred"><primary>XFilterEvent</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfilterevent'>
@@ -9919,7 +9888,6 @@ Specifies the window (Wi.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -9968,6 +9936,7 @@ use
<function>XmbLookupString</function>
or
<function>XwcLookupString</function>.
+</para>
<indexterm significance="preferred"><primary>XmbLookupString</primary></indexterm>
<indexterm significance="preferred"><primary>XwcLookupString</primary></indexterm>
<!-- .sM -->
@@ -10070,7 +10039,6 @@ Returns a value indicating what kind of data is returned.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -10137,7 +10105,7 @@ The possible values returned are:
</para>
<informaltable>
- <tgroup cols='2' align='center'>
+ <tgroup cols='2'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<tbody>
diff --git a/libX11/specs/libX11/CH14.xml b/libX11/specs/libX11/CH14.xml
index cd96413ea..8d6dd2e09 100644
--- a/libX11/specs/libX11/CH14.xml
+++ b/libX11/specs/libX11/CH14.xml
@@ -31,17 +31,17 @@ managers are:
</para>
<informaltable>
- <tgroup cols='4' align='center'>
+ <tgroup cols='4'>
<colspec colname='c1'/>
<colspec colname='c2'/>
<colspec colname='c3'/>
<colspec colname='c4'/>
<thead>
<row>
- <entry>Name</entry>
- <entry>Type</entry>
- <entry>Format</entry>
- <entry>Description</entry>
+ <entry align='center'>Name</entry>
+ <entry align='center'>Type</entry>
+ <entry align='center'>Format</entry>
+ <entry align='center'>Description</entry>
</row>
</thead>
<tbody>
@@ -259,6 +259,7 @@ to manipulate your application's subwindows.
<!-- .LP -->
To request that a top-level window be iconified, use
<function>XIconifyWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XIconifyWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xiconifywindow'>
@@ -302,7 +303,6 @@ Specifies the appropriate screen number on the host server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -333,6 +333,7 @@ otherwise, it returns a zero status.
<!-- .LP -->
To request that a top-level window be withdrawn, use
<function>XWithdrawWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XWithdrawWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xwithdrawwindow'>
@@ -376,7 +377,6 @@ Specifies the appropriate screen number on the host server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -407,6 +407,7 @@ error.
<!-- .LP -->
To request that a top-level window be reconfigured, use
<function>XReconfigureWMWindow</function>.
+</para>
<indexterm significance="preferred"><primary>XReconfigureWMWindow</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xreconfigurewmwindow'>
@@ -476,7 +477,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -580,6 +580,7 @@ structure, use
<function>XmbTextListToTextProperty</function>
or
<function>XwcTextListToTextProperty</function>.
+</para>
<indexterm significance="preferred"><primary>XmbTextListToTextProperty</primary></indexterm>
<indexterm significance="preferred"><primary>XwcTextListToTextProperty</primary></indexterm>
<!-- .sM -->
@@ -659,7 +660,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -742,6 +742,7 @@ structure, use
<function>XmbTextPropertyToTextList</function>
or
<function>XwcTextPropertyToTextList</function>.
+</para>
<indexterm significance="preferred"><primary>XmbTextPropertyToTextList</primary></indexterm>
<indexterm significance="preferred"><primary>XwcTextPropertyToTextList</primary></indexterm>
<!-- .sM -->
@@ -810,7 +811,6 @@ Returns the number of (Cn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -901,6 +901,7 @@ use
To free the in-memory data associated with the specified
wide character string list, use
<function>XwcFreeStringList</function>.
+</para>
<indexterm significance="preferred"><primary>XwcFreeStringList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xwcfreestringlist'>
@@ -922,7 +923,6 @@ Specifies the list of strings to be freed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -985,6 +985,7 @@ To set the specified list of strings in the STRING encoding to a
<structname>XTextProperty</structname>
structure, use
<function>XStringListToTextProperty</function>.
+</para>
<indexterm significance="preferred"><primary>XStringListToTextProperty</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xstringlisttotextproperty'>
@@ -1031,7 +1032,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1060,6 +1060,7 @@ To obtain a list of strings from a specified
<structname>XTextProperty</structname>
structure in the STRING encoding, use
<function>XTextPropertyToStringList</function>.
+</para>
<indexterm significance="preferred"><primary>XTextPropertyToStringList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xtextpropertytostringlist'>
@@ -1106,7 +1107,6 @@ Returns the number of (Cn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1133,6 +1133,7 @@ To free the storage for the list and its contents, use
<!-- .LP -->
To free the in-memory data associated with the specified string list, use
<function>XFreeStringList</function>.
+</para>
<indexterm significance="preferred"><primary>XFreeStringList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfreestringlist'>
@@ -1154,7 +1155,6 @@ Specifies the list of strings to be freed.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1195,6 +1195,7 @@ respectively.
<!-- .LP -->
To set one of a window's text properties, use
<function>XSetTextProperty</function>.
+</para>
<indexterm significance="preferred"><primary>XSetTextProperty</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsettextproperty'>
@@ -1251,7 +1252,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1283,6 +1283,7 @@ errors.
<!-- .LP -->
To read one of a window's text properties, use
<function>XGetTextProperty</function>.
+</para>
<indexterm significance="preferred"><primary>XGetTextProperty</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgettextproperty'>
@@ -1339,7 +1340,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1399,6 +1399,7 @@ the <property>WM_NAME</property> property for a given window.
<!-- .LP -->
To set a window's <property>WM_NAME</property> property with the supplied convenience function, use
<function>XSetWMName</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMName</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmname'>
@@ -1444,7 +1445,6 @@ structure to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1459,6 +1459,7 @@ to set the <property>WM_NAME</property> property.
<!-- .LP -->
To read a window's <property>WM_NAME</property> property with the supplied convenience function, use
<function>XGetWMName</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMName</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmname'>
@@ -1504,7 +1505,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1531,6 +1531,7 @@ for window names that are encoded as STRING properties.
<!-- .LP -->
To assign a name to a window, use
<function>XStoreName</function>.
+</para>
<indexterm><primary>Window</primary><secondary>name</secondary></indexterm>
<indexterm significance="preferred"><primary>XStoreName</primary></indexterm>
<!-- .sM -->
@@ -1576,7 +1577,6 @@ which should be a null-terminated string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1605,6 +1605,7 @@ errors.
<!-- .sp -->
To get the name of a window, use
<function>XFetchName</function>.
+</para>
<indexterm significance="preferred"><primary>XFetchName</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfetchname'>
@@ -1648,7 +1649,6 @@ Returns the window name, which is a null-terminated string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1693,6 +1693,7 @@ the <property>WM_ICON_NAME</property> property for a given window.
To set a window's <property>WM_ICON_NAME</property> property,
use
<function>XSetWMIconName</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMIconName</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmiconname'>
@@ -1738,7 +1739,6 @@ structure to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1754,6 +1754,7 @@ to set the <property>WM_ICON_NAME</property> property.
To read a window's <property>WM_ICON_NAME</property> property,
use
<function>XGetWMIconName</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMIconName</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmiconname'>
@@ -1799,7 +1800,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1827,6 +1827,7 @@ for window names that are encoded as STRING properties.
<!-- .sp -->
To set the name to be displayed in a window's icon, use
<function>XSetIconName</function>.
+</para>
<indexterm><primary>Window</primary><secondary>icon name</secondary></indexterm>
<indexterm significance="preferred"><primary>XSetIconName</primary></indexterm>
<!-- .sM -->
@@ -1872,7 +1873,6 @@ which should be a null-terminated string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1890,6 +1890,7 @@ errors.
<!-- .sp -->
To get the name a window wants displayed in its icon, use
<function>XGetIconName</function>.
+</para>
<indexterm significance="preferred"><primary>XGetIconName</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgeticonname'>
@@ -1934,7 +1935,6 @@ which is a null-terminated string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2128,6 +2128,7 @@ or the window to be withdrawn.
<!-- .sp -->
To set a window's <property>WM_HINTS</property> property, use
<function>XSetWMHints</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmhints'>
@@ -2173,7 +2174,6 @@ structure to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2197,6 +2197,7 @@ errors.
<!-- .sp -->
To read a window's <property>WM_HINTS</property> property, use
<function>XGetWMHints</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmhints'>
@@ -2229,7 +2230,6 @@ Specifies the window.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2394,6 +2394,7 @@ macro is highly discouraged.
<!-- .LP -->
To set a window's <property>WM_NORMAL_HINTS</property> property, use
<function>XSetWMNormalHints</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMNormalHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmnormalhints'>
@@ -2437,7 +2438,6 @@ Specifies the size hints for the window in its normal state.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2464,6 +2464,7 @@ errors.
<!-- .LP -->
To read a window's <property>WM_NORMAL_HINTS</property> property, use
<function>XGetWMNormalHints</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMNormalHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmnormalhints'>
@@ -2518,7 +2519,6 @@ Returns the hints that were supplied by the user.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2575,6 +2575,7 @@ error.
<!-- .LP -->
To set a window's <property>WM_SIZE_HINTS</property> property, use
<function>XSetWMSizeHints</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMSizeHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmsizehints'>
@@ -2631,7 +2632,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2664,6 +2664,7 @@ errors.
<!-- .LP -->
To read a window's <property>WM_SIZE_HINTS</property> property, use
<function>XGetWMSizeHints</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMSizeHints</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmsizehints'>
@@ -2731,7 +2732,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2880,6 +2880,7 @@ resource database.
<!-- .sp -->
To set a window's <property>WM_CLASS</property> property, use
<function>XSetClassHint</function>.
+</para>
<indexterm significance="preferred"><primary>XSetClassHint</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetclasshint'>
@@ -2925,7 +2926,6 @@ structure that is to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2949,6 +2949,7 @@ errors.
<!-- .sp -->
To read a window's <property>WM_CLASS</property> property, use
<function>XGetClassHint</function>.
+</para>
<indexterm significance="preferred"><primary>XGetClassHint</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetclasshint'>
@@ -2994,7 +2995,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3035,6 +3035,7 @@ the <property>WM_TRANSIENT_FOR</property> property for a given window.
<!-- .sp -->
To set a window's <property>WM_TRANSIENT_FOR</property> property, use
<function>XSetTransientForHint</function>.
+</para>
<indexterm significance="preferred"><primary>XSetTransientForHint</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsettransientforhint'>
@@ -3078,7 +3079,6 @@ Specifies the window that the <property>WM_TRANSIENT_FOR</property> property is
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3101,6 +3101,7 @@ errors.
<!-- .sp -->
To read a window's <property>WM_TRANSIENT_FOR</property> property, use
<function>XGetTransientForHint</function>.
+</para>
<indexterm significance="preferred"><primary>XGetTransientForHint</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgettransientforhint'>
@@ -3144,7 +3145,6 @@ Returns the <property>WM_TRANSIENT_FOR</property> property of the specified wind
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3177,6 +3177,7 @@ the <property>WM_PROTOCOLS</property> property for a given window.
<!-- .sp -->
To set a window's <property>WM_PROTOCOLS</property> property, use
<function>XSetWMProtocols</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMProtocols</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmprotocols'>
@@ -3232,7 +3233,6 @@ Specifies the number of (Cn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3264,6 +3264,7 @@ errors.
<!-- .LP -->
To read a window's <property>WM_PROTOCOLS</property> property, use
<function>XGetWMProtocols</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMProtocols</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmprotocols'>
@@ -3319,7 +3320,6 @@ Returns the number of (Cn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3363,6 +3363,7 @@ the <property>WM_COLORMAP_WINDOWS</property> property for a given window.
<!-- .LP -->
To set a window's <property>WM_COLORMAP_WINDOWS</property> property, use
<function>XSetWMColormapWindows</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMColormapWindows</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmcolormapwindows'>
@@ -3418,7 +3419,6 @@ Specifies the number of (Cn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3450,6 +3450,7 @@ errors.
<!-- .LP -->
To read a window's <property>WM_COLORMAP_WINDOWS</property> property, use
<function>XGetWMColormapWindows</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMColormapWindows</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmcolormapwindows'>
@@ -3505,7 +3506,6 @@ Returns the number of (Cn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3615,6 +3615,7 @@ sizes (minimum to maximum) that represent the supported icon sizes.
<!-- .sp -->
To set a window's <property>WM_ICON_SIZE</property> property, use
<function>XSetIconSizes</function>.
+</para>
<indexterm significance="preferred"><primary>XSetIconSizes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xseticonsizes'>
@@ -3669,7 +3670,6 @@ Specifies the number of items in the size list.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3691,6 +3691,7 @@ errors.
<!-- .sp -->
To read a window's <property>WM_ICON_SIZE</property> property, use
<function>XGetIconSizes</function>.
+</para>
<indexterm significance="preferred"><primary>XGetIconSizes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgeticonsizes'>
@@ -3745,7 +3746,6 @@ Returns the number of items in the size list.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3788,6 +3788,7 @@ for internationalized text communication.
The standard window manager properties for a given window are
<property>WM_NAME</property>, <property>WM_ICON_NAME</property>, <property>WM_HINTS</property>, <property>WM_NORMAL_HINTS</property>, <property>WM_CLASS</property>,
<property>WM_COMMAND</property>, <property>WM_CLIENT_MACHINE</property>, and <property>WM_LOCALE_NAME</property>.
+</para>
<indexterm significance="preferred"><primary>XmbSetWMProperties</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmbsetwmproperties'>
@@ -3903,7 +3904,6 @@ structure to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4008,6 +4008,7 @@ with strings in client-specified encodings, use
The standard window manager properties for a given window are
<property>WM_NAME</property>, <property>WM_ICON_NAME</property>, <property>WM_HINTS</property>, <property>WM_NORMAL_HINTS</property>, <property>WM_CLASS</property>,
<property>WM_COMMAND</property>, and <property>WM_CLIENT_MACHINE</property>.
+</para>
<indexterm significance="preferred"><primary>XSetWMProperties</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmproperties'>
@@ -4123,7 +4124,6 @@ structure to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4240,6 +4240,7 @@ the <property>WM_COMMAND</property> property for a given window.
<!-- .LP -->
To set a window's <property>WM_COMMAND</property> property, use
<function>XSetCommand</function>.
+</para>
<indexterm significance="preferred"><primary>XSetCommand</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetcommand'>
@@ -4294,7 +4295,6 @@ Specifies the number of arguments.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4320,6 +4320,7 @@ errors.
<!-- .LP -->
To read a window's <property>WM_COMMAND</property> property, use
<function>XGetCommand</function>.
+</para>
<indexterm significance="preferred"><primary>XGetCommand</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetcommand'>
@@ -4374,7 +4375,6 @@ Returns the number of arguments returned.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4411,6 +4411,7 @@ the <property>WM_CLIENT_MACHINE</property> property for a given window.
<!-- .LP -->
To set a window's <property>WM_CLIENT_MACHINE</property> property, use
<function>XSetWMClientMachine</function>.
+</para>
<indexterm significance="preferred"><primary>XSetWMClientMachine</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetwmclientmachine'>
@@ -4456,7 +4457,6 @@ structure to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4471,6 +4471,7 @@ to set the <property>WM_CLIENT_MACHINE</property> property.
<!-- .LP -->
To read a window's <property>WM_CLIENT_MACHINE</property> property, use
<function>XGetWMClientMachine</function>.
+</para>
<indexterm significance="preferred"><primary>XGetWMClientMachine</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetwmclientmachine'>
@@ -4516,7 +4517,6 @@ structure.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4933,6 +4933,7 @@ To set an
<structname>XStandardColormap</structname>
structure, use
<function>XSetRGBColormaps</function>.
+</para>
<indexterm significance="preferred"><primary>XSetRGBColormaps</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetrgbcolormaps'>
@@ -5001,7 +5002,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -5113,6 +5113,7 @@ To obtain the
<structname>XStandardColormap</structname>
structure associated with the specified property, use
<function>XGetRGBColormaps</function>.
+</para>
<indexterm significance="preferred"><primary>XGetRGBColormaps</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetrgbcolormaps'>
@@ -5181,7 +5182,6 @@ Specifies the property name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH15.xml b/libX11/specs/libX11/CH15.xml
index 29bd331f0..c012ea7d0 100644
--- a/libX11/specs/libX11/CH15.xml
+++ b/libX11/specs/libX11/CH15.xml
@@ -596,6 +596,7 @@ indicates that an asterisk separates the components.
To convert a string with one or more components to a binding list
and a quark list, use
<function>XrmStringToBindingQuarkList</function>.
+</para>
<indexterm significance="preferred"><primary>XrmStringToBindingQuarkList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmstringtobindingquarklist'>
@@ -644,7 +645,6 @@ The caller must allocate sufficient space for the quarks list before calling
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -722,6 +722,7 @@ To initialize the resource manager, use
<!-- .eM -->
To retrieve a database from disk, use
<function>XrmGetFileDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmGetFileDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmgetfiledatabase'>
@@ -743,7 +744,6 @@ Specifies the resource database file name.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -767,6 +767,7 @@ returns NULL.
<!-- .sp -->
To store a copy of a database to disk, use
<function>XrmPutFileDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmPutFileDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmputfiledatabase'>
@@ -799,7 +800,6 @@ Specifies the file name for the stored database.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -821,6 +821,7 @@ Entries with representation types other than ``String'' are ignored.
<!-- .sp -->
To obtain a pointer to the screen-independent resources of a display, use
<function>XResourceManagerString</function>.
+</para>
<indexterm significance="preferred"><primary>XResourceManagerString</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xresourcemanagerstring'>
@@ -842,7 +843,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -865,6 +865,7 @@ If no property exists, NULL is returned.
<!-- .sp -->
To obtain a pointer to the screen-specific resources of a screen, use
<function>XScreenResourceString</function>.
+</para>
<indexterm significance="preferred"><primary>XScreenResourceString</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xscreenresourcestring'>
@@ -886,7 +887,6 @@ Specifies the screen.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -909,6 +909,7 @@ The caller is responsible for freeing the returned string by using
<!-- .sp -->
To create a database from a string, use
<function>XrmGetStringDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmGetStringDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmgetstringdatabase'>
@@ -930,7 +931,6 @@ Specifies the database contents using a string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -955,6 +955,7 @@ and the database is created in the current locale.
<!-- .sp -->
To obtain the locale name of a database, use
<function>XrmLocaleOfDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmLocaleOfDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmlocaleofdatabase'>
@@ -976,7 +977,6 @@ Specifies the resource database.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -995,6 +995,7 @@ it will not be modified by Xlib.
<!-- .sp -->
To destroy a resource database and free its allocated memory, use
<function>XrmDestroyDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmDestroyDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmdestroydatabase'>
@@ -1016,7 +1017,6 @@ Specifies the resource database.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1029,6 +1029,7 @@ returns immediately.
<!-- .sp -->
To associate a resource database with a display, use
<function>XrmSetDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmSetDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmsetdatabase'>
@@ -1061,7 +1062,6 @@ Specifies the resource database.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1078,6 +1078,7 @@ once it is constructed.
<!-- .sp -->
To get the resource database associated with a display, use
<function>XrmGetDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmGetDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmgetdatabase'>
@@ -1099,7 +1100,6 @@ Specifies the connection to the X server.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1118,6 +1118,7 @@ It returns NULL if a database has not yet been set.
<!-- .LP -->
To merge the contents of a resource file into a database, use
<function>XrmCombineFileDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmCombineFileDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmcombinefiledatabase'>
@@ -1162,7 +1163,6 @@ Specifies whether source entries override target ones.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1192,6 +1192,7 @@ The locale of the target database is not modified.
<!-- .sp -->
To merge the contents of one database into another database, use
<function>XrmCombineDatabase</function>.
+</para>
<indexterm significance="preferred"><primary>XrmCombineDatabase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmcombinedatabase'>
@@ -1235,7 +1236,6 @@ Specifies whether source entries override target ones.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1262,6 +1262,7 @@ The locale of the target database is not modified.
To merge the contents of one database into another database with override
semantics, use
<function>XrmMergeDatabases</function>.
+</para>
<indexterm significance="preferred"><primary>XrmMergeDatabases</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmmergedatabases'>
@@ -1294,7 +1295,6 @@ database is to be merged.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1319,9 +1319,6 @@ To retrieve a resource from a resource database, use
or
<function>XrmQGetSearchResource</function>.
</para>
-<para>
-<!-- .LP -->
-<!-- .sp -->
<indexterm significance="preferred"><primary>XrmGetResource</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmgetresource'>
@@ -1387,11 +1384,6 @@ Returns the value in the database.
</listitem>
</varlistentry>
</variablelist>
-</para>
-<para>
-<!-- .LP -->
-<!-- .eM -->
-<!-- .sp -->
<indexterm significance="preferred"><primary>XrmQGetResource</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmqgetresource'>
@@ -1457,7 +1449,6 @@ Returns the value in the database.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1512,6 +1503,7 @@ of database levels that might match the first part of a name/class list.
<!-- .sp -->
To obtain a list of database levels, use
<function>XrmQGetSearchList</function>.
+</para>
<indexterm significance="preferred"><primary>XrmQGetSearchList</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmqgetsearchlist'>
@@ -1579,7 +1571,6 @@ Specifies the number of entries (not the byte size) allocated for list_return.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1621,6 +1612,7 @@ only the common prefix should be specified in the name and class list to
<!-- .sp -->
To search resource database levels for a given resource, use
<function>XrmQGetSearchResource</function>.
+</para>
<indexterm significance="preferred"><primary>XrmQGetSearchResource</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmqgetsearchresource'>
@@ -1687,7 +1679,6 @@ Returns the value in the database.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1732,7 +1723,6 @@ Both functions take a partial resource specification, a
representation type, and a value.
This value is copied into the specified database.
</para>
-<para>
<!-- .LP -->
<!-- .sp -->
<indexterm significance="preferred"><primary>XrmPutResource</primary></indexterm>
@@ -1789,7 +1779,6 @@ Specifies the value of the resource, which is specified as a string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1810,7 +1799,6 @@ If the specifier and type are not in the Host Portable Character Encoding,
the result is implementation-dependent.
The value is stored in the database without modification.
</para>
-<para>
<!-- .LP -->
<!-- .sp -->
<indexterm significance="preferred"><primary>XrmQPutResource</primary></indexterm>
@@ -1878,7 +1866,6 @@ Specifies the value of the resource, which is specified as a string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1895,6 +1882,7 @@ The value is stored in the database without modification.
<!-- .sp -->
To add a resource that is specified as a string, use
<function>XrmPutStringResource</function>.
+</para>
<indexterm significance="preferred"><primary>XrmPutStringResource</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmputstringresource'>
@@ -1938,7 +1926,6 @@ Specifies the value of the resource, which is specified as a string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1962,6 +1949,7 @@ The value is stored in the database without modification.
<!-- .sp -->
To add a string resource using quarks as a specification, use
<function>XrmQPutStringResource</function>.
+</para>
<indexterm significance="preferred"><primary>XrmQPutStringResource</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmqputstringresource'>
@@ -2016,7 +2004,6 @@ Specifies the value of the resource, which is specified as a string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2040,6 +2027,7 @@ The value is stored in the database without modification.
To add a single resource entry that is specified as a string that contains
both a name and a value, use
<function>XrmPutLineResource</function>.
+</para>
<indexterm significance="preferred"><primary>XrmPutLineResource</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmputlineresource'>
@@ -2072,7 +2060,6 @@ Specifies the resource name and value pair as a single string.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2314,6 +2301,7 @@ typedef struct {
<!-- .sp -->
To load a resource database from a C command line, use
<function>XrmParseCommand</function>.
+</para>
<indexterm significance="preferred"><primary>XrmParseCommand</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrmparsecommand'>
@@ -2391,7 +2379,6 @@ and returns the remaining arguments.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/CH16.xml b/libX11/specs/libX11/CH16.xml
index f8663a006..602668faf 100644
--- a/libX11/specs/libX11/CH16.xml
+++ b/libX11/specs/libX11/CH16.xml
@@ -98,6 +98,7 @@ use the functions described in section 12.7.
<!-- .sp -->
To obtain a KeySym for the KeyCode of an event, use
<function>XLookupKeysym</function>.
+</para>
<indexterm significance="preferred"><primary>XLookupKeysym</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlookupkeysym'>
@@ -134,7 +135,6 @@ Specifies the index into the KeySyms list for the event's KeyCode.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -156,6 +156,7 @@ returns
<!-- .sp -->
To obtain a KeySym for a specific KeyCode, use
<function>XKeycodeToKeysym</function>.
+</para>
<indexterm significance="preferred"><primary>XKeycodeToKeysym</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xkeycodetokeysym'>
@@ -199,7 +200,6 @@ Specifies the element of KeyCode vector.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -218,6 +218,7 @@ returns
<!-- .sp -->
To obtain a KeyCode for a key having a specific KeySym, use
<function>XKeysymToKeycode</function>.
+</para>
<indexterm significance="preferred"><primary>XKeysymToKeycode</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xkeysymtokeycode'>
@@ -250,7 +251,6 @@ Specifies the KeySym that is to be searched for.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -266,6 +266,7 @@ When this information is changed at the server, an Xlib function must
be called to refresh the cache.
To refresh the stored modifier and keymap information, use
<function>XRefreshKeyboardMapping</function>.
+</para>
<indexterm significance="preferred"><primary>XRefreshKeyboardMapping</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrefreshkeyboardmapping'>
@@ -287,7 +288,6 @@ Specifies the mapping event that is to be used.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -308,6 +308,7 @@ The result is to update Xlib's knowledge of the keyboard.
<!-- .sp -->
To obtain the uppercase and lowercase forms of a KeySym, use
<function>XConvertCase</function>.
+</para>
<indexterm significance="preferred"><primary>XConvertCase</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xconvertcase'>
@@ -352,7 +353,6 @@ Returns the uppercase form of keysym, or keysym.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -371,6 +371,7 @@ implementation-dependent.
KeySyms have string names as well as numeric codes.
To convert the name of the KeySym to the KeySym code, use
<function>XStringToKeysym</function>.
+</para>
<indexterm significance="preferred"><primary>XStringToKeysym</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xstringtokeysym'>
@@ -392,7 +393,6 @@ Specifies the name of the KeySym that is to be converted.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -421,6 +421,7 @@ returns
<!-- .sp -->
To convert a KeySym code to the name of the KeySym, use
<function>XKeysymToString</function>.
+</para>
<indexterm significance="preferred"><primary>XKeysymToString</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xkeysymtostring'>
@@ -443,7 +444,6 @@ Specifies the KeySym that is to be (Fn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -670,6 +670,7 @@ described in chapter 13 and does not depend on the current locale.
<!-- .sp -->
To map a key event to an ISO Latin-1 string, use
<function>XLookupString</function>.
+</para>
<indexterm significance="preferred"><primary>XLookupString</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xlookupstring'>
@@ -742,7 +743,6 @@ structure or NULL.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -792,6 +792,7 @@ To rebind the meaning of a KeySym for
<function>XLookupString</function>,
use
<function>XRebindKeysym</function>.
+</para>
<indexterm significance="preferred"><primary>XRebindKeysym</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrebindkeysym'>
@@ -870,7 +871,6 @@ Specifies the number of bytes in the string argument.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -930,7 +930,6 @@ To parse standard window geometry strings, use
<indexterm><primary>Window</primary><secondary>determining location</secondary></indexterm>
<indexterm significance="preferred"><primary>XParseGeometry</primary></indexterm>
</para>
-<para>
<!-- .LP -->
<!-- .sM -->
<funcsynopsis id='xparsegeometry'>
@@ -996,7 +995,6 @@ Return the width and height determined.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1065,6 +1063,7 @@ you should place the window at the requested position.
<!-- .LP -->
To construct a window's geometry information, use
<function>XWMGeometry</function>.
+</para>
<indexterm significance="preferred"><primary>XWMGeometry</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xwmgeometry'>
@@ -1197,7 +1196,6 @@ Returns the window gravity.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1367,6 +1365,7 @@ see
<!-- .sp -->
To set the clip-mask of a GC to a region, use
<function>XSetRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XSetRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsetregion'>
@@ -1410,7 +1409,6 @@ Specifies the region.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1427,6 +1425,7 @@ the region can be destroyed.
<!-- .sp -->
To deallocate the storage associated with a specified region, use
<function>XDestroyRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XDestroyRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdestroyregion'>
@@ -1448,7 +1447,6 @@ Specifies the region.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1463,6 +1461,7 @@ Specifies the region.
<!-- .LP -->
To move a region by a specified amount, use
<function>XOffsetRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XOffsetRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xoffsetregion'>
@@ -1508,13 +1507,13 @@ which define the amount you want to (Dy the specified region.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To reduce a region by a specified amount, use
<function>XShrinkRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XShrinkRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xshrinkregion'>
@@ -1560,7 +1559,6 @@ which define the amount you want to (Dy the specified region.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1578,6 +1576,7 @@ and negative values expand the region.
<!-- .sp -->
To generate the smallest rectangle enclosing a region, use
<function>XClipBox</function>.
+</para>
<indexterm significance="preferred"><primary>XClipBox</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xclipbox'>
@@ -1610,7 +1609,6 @@ Returns the smallest enclosing rectangle.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1623,6 +1621,7 @@ function returns the smallest rectangle enclosing the specified region.
<!-- .LP -->
To compute the intersection of two regions, use
<function>XIntersectRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XIntersectRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xintersectregion'>
@@ -1665,13 +1664,13 @@ Returns the result of the computation.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To compute the union of two regions, use
<function>XUnionRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XUnionRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xunionregion'>
@@ -1714,13 +1713,13 @@ Returns the result of the computation.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
<!-- .sp -->
To create a union of a source region and a rectangle, use
<function>XUnionRectWithRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XUnionRectWithRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xunionrectwithregion'>
@@ -1764,7 +1763,6 @@ Returns the destination region.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1778,6 +1776,7 @@ and the specified source region.
<!-- .sp -->
To subtract two regions, use
<function>XSubtractRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XSubtractRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsubtractregion'>
@@ -1820,7 +1819,6 @@ Returns the result of the computation.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1834,6 +1832,7 @@ function subtracts srb from sra and stores the results in dr_return.
To calculate the difference between the union and intersection
of two regions, use
<function>XXorRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XXorRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xxorregion'>
@@ -1876,7 +1875,6 @@ Returns the result of the computation.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1891,6 +1889,7 @@ Returns the result of the computation.
<!-- .LP -->
To determine if the specified region is empty, use
<function>XEmptyRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XEmptyRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xemptyregion'>
@@ -1912,7 +1911,6 @@ Specifies the region.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1927,6 +1925,7 @@ if the region is empty.
<!-- .sp -->
To determine if two regions have the same offset, size, and shape, use
<function>XEqualRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XEqualRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xequalregion'>
@@ -1959,7 +1958,6 @@ Specify the two regions.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -1979,6 +1977,7 @@ if the two regions have the same offset, size, and shape.
<!-- .LP -->
To determine if a specified point resides in a specified region, use
<function>XPointInRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XPointInRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xpointinregion'>
@@ -2023,7 +2022,6 @@ Specify the x and y coordinates(Xy.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2038,6 +2036,7 @@ if the point (x, y) is contained in the region r.
<!-- .sp -->
To determine if a specified rectangle is inside a region, use
<function>XRectInRegion</function>.
+</para>
<indexterm significance="preferred"><primary>XRectInRegion</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrectinregion'>
@@ -2105,7 +2104,6 @@ Specify the width and height(Wh.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2151,6 +2149,7 @@ and can be accessed as a ring or as explicit buffers (numbered 0 through 7).
<!-- .sp -->
To store data in cut buffer 0, use
<function>XStoreBytes</function>.
+</para>
<indexterm significance="preferred"><primary>XStoreBytes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xstorebytes'>
@@ -2194,7 +2193,6 @@ Specifies the number of bytes to be stored.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2216,6 +2214,7 @@ error.
<!-- .sp -->
To store data in a specified cut buffer, use
<function>XStoreBuffer</function>.
+</para>
<indexterm significance="preferred"><primary>XStoreBuffer</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xstorebuffer'>
@@ -2271,7 +2270,6 @@ Specifies the buffer (Fn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2291,6 +2289,7 @@ error.
<!-- .sp -->
To return data from cut buffer 0, use
<function>XFetchBytes</function>.
+</para>
<indexterm significance="preferred"><primary>XFetchBytes</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfetchbytes'>
@@ -2323,7 +2322,6 @@ Returns the number of bytes in the buffer.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2343,6 +2341,7 @@ The client must free this storage when finished with it by calling
<!-- .sp -->
To return data from a specified cut buffer, use
<function>XFetchBuffer</function>.
+</para>
<indexterm significance="preferred"><primary>XFetchBuffer</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfetchbuffer'>
@@ -2387,7 +2386,6 @@ Specifies the buffer (Fn.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2402,6 +2400,7 @@ buffer is specified.
<!-- .sp -->
To rotate the cut buffers, use
<function>XRotateBuffers</function>.
+</para>
<indexterm significance="preferred"><primary>XRotateBuffers</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xrotatebuffers'>
@@ -2434,7 +2433,6 @@ Specifies how much to rotate the cut buffers.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2522,6 +2520,7 @@ typedef struct {
To obtain a list of visual information structures that match a specified
template, use
<function>XGetVisualInfo</function>.
+</para>
<indexterm significance="preferred"><primary>XGetVisualInfo</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetvisualinfo'>
@@ -2577,7 +2576,6 @@ Returns the number of matching visual structures.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2597,6 +2595,7 @@ To free the data returned by this function, use
To obtain the visual information that matches the specified depth and
class of the screen, use
<function>XMatchVisualInfo</function>.
+</para>
<indexterm significance="preferred"><primary>XMatchVisualInfo</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xmatchvisualinfo'>
@@ -2662,7 +2661,6 @@ Returns the matched visual information.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2747,6 +2745,7 @@ To allocate an
<structname>XImage</structname>
structure and initialize it with image format values from a display, use
<function>XCreateImage</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateImage</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreateimage'>
@@ -2877,7 +2876,6 @@ the start of one scanline and the start of the next.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2930,6 +2928,7 @@ in the image object and are defined in
<!-- .sp -->
To obtain a pixel value in an image, use
<function>XGetPixel</function>.
+</para>
<indexterm significance="preferred"><primary>XGetPixel</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xgetpixel'>
@@ -2974,7 +2973,6 @@ Specify the x and y coordinates.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -2991,6 +2989,7 @@ The image must contain the x and y coordinates.
<!-- .sp -->
To set a pixel value in an image, use
<function>XPutPixel</function>.
+</para>
<indexterm significance="preferred"><primary>XPutPixel</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xputpixel'>
@@ -3046,7 +3045,6 @@ Specifies the new pixel value.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3063,6 +3061,7 @@ The image must contain the x and y coordinates.
<!-- .sp -->
To create a subimage, use
<function>XSubImage</function>.
+</para>
<indexterm significance="preferred"><primary>XSubImage</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsubimage'>
@@ -3129,7 +3128,6 @@ Specifies the height of the new subimage, in pixels.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3149,6 +3147,7 @@ and subimage_height.
<!-- .sp -->
To increment each pixel in an image by a constant value, use
<function>XAddPixel</function>.
+</para>
<indexterm significance="preferred"><primary>XAddPixel</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xaddpixel'>
@@ -3181,7 +3180,6 @@ Specifies the constant value that is to be added.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3198,6 +3196,7 @@ To deallocate the memory allocated in a previous call to
<function>XCreateImage</function>,
use
<function>XDestroyImage</function>.
+</para>
<indexterm significance="preferred"><primary>XDestroyImage</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdestroyimage'>
@@ -3219,7 +3218,6 @@ Specifies the image.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3285,6 +3283,7 @@ The bitmap unit is 8.
<!-- .sp -->
To read a bitmap from a file and store it in a pixmap, use
<function>XReadBitmapFile</function>.
+</para>
<indexterm significance="preferred"><primary>XReadBitmapFile</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xreadbitmapfile'>
@@ -3385,7 +3384,6 @@ Return the hotspot coordinates.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3440,6 +3438,7 @@ errors.
<!-- .sp -->
To read a bitmap from a file and return it as data, use
<function>XReadBitmapFileData</function>.
+</para>
<indexterm significance="preferred"><primary>XReadBitmapFileData</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xreadbitmapfiledata'>
@@ -3517,7 +3516,6 @@ Return the hotspot coordinates.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3537,6 +3535,7 @@ The status and other return values are the same as for
<!-- .sp -->
To write out a bitmap from a pixmap to a file, use
<function>XWriteBitmapFile</function>.
+</para>
<indexterm significance="preferred"><primary>XWriteBitmapFile</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xwritebitmapfile'>
@@ -3626,7 +3625,6 @@ in the file.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3664,6 +3662,7 @@ errors.
<!-- .sp -->
To create a pixmap and then store bitmap-format data into it, use
<function>XCreatePixmapFromBitmapData</function>.
+</para>
<indexterm significance="preferred"><primary>XCreatePixmapFromBitmapData</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreatepixmapfrombitmapdata'>
@@ -3763,7 +3762,6 @@ Specifies the depth of the pixmap.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3796,6 +3794,7 @@ To include a bitmap written out by
<indexterm><primary>XWriteBitmapFile</primary></indexterm>
in a program directly, as opposed to reading it in every time at run time, use
<function>XCreateBitmapFromData</function>.
+</para>
<indexterm significance="preferred"><primary>XCreateBitmapFromData</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xcreatebitmapfromdata'>
@@ -3862,7 +3861,6 @@ Specify the width and height.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -3942,6 +3940,7 @@ The symbols used are in
<!-- .sp -->
To save a data value that corresponds to a resource ID and context type, use
<function>XSaveContext</function>.
+</para>
<indexterm significance="preferred"><primary>XSaveContext</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xsavecontext'>
@@ -3996,7 +3995,6 @@ Specifies the data to be associated with the window and type.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4016,6 +4014,7 @@ Possible errors are
<!-- .sp -->
To get the data associated with a resource ID and type, use
<function>XFindContext</function>.
+</para>
<indexterm significance="preferred"><primary>XFindContext</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xfindcontext'>
@@ -4070,7 +4069,6 @@ Returns the data.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
@@ -4089,6 +4087,7 @@ Possible errors are
<!-- .sp -->
To delete an entry for a given resource ID and type, use
<function>XDeleteContext</function>.
+</para>
<indexterm significance="preferred"><primary>XDeleteContext</primary></indexterm>
<!-- .sM -->
<funcsynopsis id='xdeletecontext'>
@@ -4132,7 +4131,6 @@ Specifies the context type to which the data belongs.
</listitem>
</varlistentry>
</variablelist>
-</para>
<para>
<!-- .LP -->
<!-- .eM -->
diff --git a/libX11/specs/libX11/credits.xml b/libX11/specs/libX11/credits.xml
index 13c8c055e..753a6cce2 100644
--- a/libX11/specs/libX11/credits.xml
+++ b/libX11/specs/libX11/credits.xml
@@ -1,235 +1,235 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
- "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
-<preface id="acknowledgments">
-<title>Acknowledgments</title>
-<para>
-The design and implementation of the first 10 versions of X
-were primarily the work of three individuals: Robert Scheifler of the
-MIT Laboratory for Computer Science and Jim Gettys of Digital
-Equipment Corporation and Ron Newman of MIT, both at MIT
-Project Athena.
-X version 11, however, is the result of the efforts of
-dozens of individuals at almost as many locations and organizations.
-At the risk of offending some of the players by exclusion,
-we would like to acknowledge some of the people who deserve special credit
-and recognition for their work on Xlib.
-Our apologies to anyone inadvertently overlooked.
-</para>
-<sect1 id="release1">
-<title>
-Release 1
-</title>
-<para>
-Our thanks does to Ron Newman (MIT Project Athena),
-who contributed substantially to the
-design and implementation of the Version 11 Xlib interface.
-</para>
-<para>
-Our thanks also goes to Ralph Swick (Project Athena and Digital) who kept
-it all together for us during the early releases.
-He handled literally thousands of requests from people everywhere
-and saved the sanity of at least one of us.
-His calm good cheer was a foundation on which we could build.
-</para>
-<para>
-Our thanks also goes to Todd Brunhoff (Tektronix) who was ``loaned''
-to Project Athena at exactly the right moment to provide very capable
-and much-needed assistance during the alpha and beta releases.
-He was responsible for the successful integration of sources
-from multiple sites;
-we would not have had a release without him.
-</para>
-<para>
-Our thanks also goes to Al Mento and Al Wojtas of Digital's ULTRIX
-Documentation Group.
-With good humor and cheer,
-they took a rough draft and made it an infinitely better and more useful
-document.
-The work they have done will help many everywhere.
-We also would like to thank Hal Murray (Digital SRC) and
-Peter George (Digital VMS) who contributed much
-by proofreading the early drafts of this document.
-</para>
-<para>
-Our thanks also goes to Jeff Dike (Digital UEG), Tom Benson,
-Jackie Granfield, and Vince Orgovan (Digital VMS) who helped with the
-library utilities implementation;
-to Hania Gajewska (Digital UEG-WSL) who,
-along with Ellis Cohen (CMU and Siemens),
-was instrumental in the semantic design of the window manager properties;
-and to Dave Rosenthal (Sun Microsystems) who also contributed to the protocol
-and provided the sample generic color frame buffer device-dependent code.
-</para>
-<para>
-The alpha and beta test participants deserve special recognition and thanks
-as well.
-It is significant
-that the bug reports (and many fixes) during alpha and beta test came almost
-exclusively from just a few of the alpha testers, mostly hardware vendors
-working on product implementations of X.
-The continued public
-contribution of vendors and universities is certainly to the benefit
-of the entire X community.
-</para>
-<para>
-Our special thanks must go to Sam Fuller, Vice-President of Corporate
-Research at Digital, who has remained committed to the widest public
-availability of X and who made it possible to greatly supplement MIT's
-resources with the Digital staff in order to make version 11 a reality.
-Many of the people mentioned here are part of the Western
-Software Laboratory (Digital UEG-WSL) of the ULTRIX Engineering group
-and work for Smokey Wallace, who has been vital to the project's success.
-Others not mentioned here worked on the toolkit and are acknowledged
-in the X Toolkit documentation.
-</para>
-<para>
-Of course,
-we must particularly thank Paul Asente, formerly of Stanford University
-and now of Digital UEG-WSL, who wrote W, the predecessor to X,
-and Brian Reid, formerly of Stanford University and now of Digital WRL,
-who had much to do with W's design.
-</para>
-<para>
-Finally, our thanks goes to MIT, Digital Equipment Corporation,
-and IBM for providing the environment where it could happen.
-</para>
-</sect1>
-<sect1 id="release4">
-<title>
-Release 4
-</title>
-<para>
-Our thanks go to Jim Fulton (MIT X Consortium) for designing and
-specifying the new Xlib functions for Inter-Client Communication
-Conventions (<acronym>ICCCM</acronym>) support.
-</para>
-<para>
-We also thank Al Mento of Digital for his continued effort in
-maintaining this document and Jim Fulton and Donna Converse (MIT X Consortium)
-for their much-appreciated efforts in reviewing the changes.
-</para>
-</sect1>
-<sect1 id="release5">
-<title>
-Release 5
-</title>
-<para>
-The principal authors of the Input Method facilities are
-Vania Joloboff (Open Software Foundation) and Bill McMahon (Hewlett-Packard).
-The principal author of the rest of the internationalization facilities
-is Glenn Widener (Tektronix). Our thanks to them for keeping their
-sense of humor through a long and sometimes difficult design process.
-Although the words and much of the design are due to them, many others
-have contributed substantially to the design and implementation.
-Tom McFarland (HP) and Frank Rojas (IBM) deserve particular recognition
-for their contributions. Other contributors were:
-Tim Anderson (Motorola), Alka Badshah (OSF), Gabe Beged-Dov (HP),
-Chih-Chung Ko (III), Vera Cheng (III), Michael Collins (Digital),
-Walt Daniels (IBM), Noritoshi Demizu (OMRON), Keisuke Fukui (Fujitsu),
-Hitoshoi Fukumoto (Nihon Sun), Tim Greenwood (Digital), John Harvey (IBM),
-Hideki Hiura (Sun), Fred Horman (AT&amp;T), Norikazu Kaiya (Fujitsu),
-Yuji Kamata (IBM),
-Yutaka Kataoka (Waseda University), Ranee Khubchandani (Sun), Akira Kon (NEC),
-Hiroshi Kuribayashi (OMRON), Teruhiko Kurosaka (Sun), Seiji Kuwari (OMRON),
-Sandra Martin (OSF), Narita Masahiko (Fujitsu), Masato Morisaki (NTT),
-Nelson Ng (Sun),
-Takashi Nishimura (NTT America), Makato Nishino (IBM),
-Akira Ohsone (Nihon Sun), Chris Peterson (MIT), Sam Shteingart (AT&amp;T),
-Manish Sheth (AT&amp;T), Muneiyoshi Suzuki (NTT), Cori Mehring (Digital),
-Shoji Sugiyama (IBM), and Eiji Tosa (IBM).
-</para>
-<para>
-We are deeply indebted to Tatsuya Kato (NTT),
-Hiroshi Kuribayashi (OMRON), Seiji Kuwari (OMRON), Muneiyoshi Suzuki (NTT),
-and Li Yuhong (OMRON) for producing one of the first complete
-sample implementation of the internationalization facilities, and
-Hiromu Inukai (Nihon Sun), Takashi Fujiwara (Fujitsu), Hideki Hiura (Sun),
-Yasuhiro Kawai (Oki Technosystems Laboratory), Kazunori Nishihara (Fuji Xerox),
-Masaki Takeuchi (Sony), Katsuhisa Yano (Toshiba),
-Makoto Wakamatsu (Sony Corporation) for producing the another complete
-sample implementation of the internationalization facilities.
-</para>
-<para>
-The principal authors (design and implementation) of the Xcms color
-management facilities are Al Tabayoyon (Tektronix)
-and Chuck Adams (Tektronix).
-Joann Taylor (Tektronix), Bob Toole (Tektronix),
-and Keith Packard (MIT X Consortium) also
-contributed significantly to the design. Others who contributed are:
-Harold Boll (Kodak), Ken Bronstein (HP), Nancy Cam (SGI),
-Donna Converse (MIT X Consortium), Elias Israel (ISC), Deron Johnson (Sun),
-Jim King (Adobe), Ricardo Motta (HP), Chuck Peek (IBM),
-Wil Plouffe (IBM), Dave Sternlicht (MIT X Consortium), Kumar Talluri (AT&amp;T),
-and Richard Verberg (IBM).
-</para>
-<para>
-We also once again thank Al Mento of Digital for his work in formatting
-and reformatting text for this manual, and for producing man pages.
-Thanks also to Clive Feather (IXI) for proof-reading and finding a
-number of small errors.
-</para>
-</sect1>
-<sect1 id="release6">
-<title>
-Release 6
-</title>
-<para>
-Stephen Gildea (X Consortium) authored the threads support.
-Ovais Ashraf (Sun) and Greg Olsen (Sun) contributed substantially
-by testing the facilities and reporting bugs in a timely fashion.
-</para>
-<para>
-The principal authors of the internationalization facilities, including
-Input and Output Methods, are Hideki Hiura (SunSoft) and
-Shigeru Yamada (Fujitsu OSSI).
-Although the words and much of the design are due to them, many others
-have contributed substantially to the design and implementation.
-They are: Takashi Fujiwara (Fujitsu), Yoshio Horiuchi (IBM),
-Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft),
-Song JaeKyung (KAIST), Franky Ling (Digital), Tom McFarland (HP),
-Hiroyuki Miyamoto (Digital), Masahiko Narita (Fujitsu),
-Frank Rojas (IBM), Hidetoshi Tajima (HP), Masaki Takeuchi (Sony),
-Makoto Wakamatsu (Sony), Masaki Wakao (IBM), Katsuhisa Yano(Toshiba) and
-Jinsoo Yoon (KAIST).
-</para>
-<para>
-The principal producers of the sample implementation of the
-internationalization facilities are:
-Jeffrey Bloomfield (Fujitsu OSSI), Takashi Fujiwara (Fujitsu),
-Hideki Hiura (SunSoft), Yoshio Horiuchi (IBM),
-Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft),
-Song JaeKyung (KAIST), Riki Kawaguchi (Fujitsu),
-Franky Ling (Digital), Hiroyuki Miyamoto (Digital),
-Hidetoshi Tajima (HP), Toshimitsu Terazono (Fujitsu),
-Makoto Wakamatsu (Sony), Masaki Wakao (IBM),
-Shigeru Yamada (Fujitsu OSSI) and Katsuhisa Yano (Toshiba).
-</para>
-<para>
-The coordinators of the integration, testing, and release of this
-implementation of the internationalization facilities are
-Nobuyuki Tanaka (Sony) and Makoto Wakamatsu (Sony).
-</para>
-<para>
-Others who have contributed to the architectural design or
-testing of the sample implementation of the
-internationalization facilities are:
-Hector Chan (Digital), Michael Kung (IBM), Joseph Kwok (Digital),
-Hiroyuki Machida (Sony), Nelson Ng (SunSoft), Frank Rojas (IBM),
-Yoshiyuki Segawa (Fujitsu OSSI), Makiko Shimamura (Fujitsu),
-Shoji Sugiyama (IBM), Lining Sun (SGI), Masaki Takeuchi (Sony),
-Jinsoo Yoon (KAIST) and Akiyasu Zen (HP).
-</para>
-<para>
-<literallayout>
-Jim Gettys
-Cambridge Research Laboratory
-Digital Equipment Corporation
-
-Robert W. Scheifler
-Laboratory for Computer Science
-Massachusetts Institute of Technology
-</literallayout>
-</para>
-</sect1>
-</preface>
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE preface PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
+<preface id="acknowledgments">
+<title>Acknowledgments</title>
+<para>
+The design and implementation of the first 10 versions of X
+were primarily the work of three individuals: Robert Scheifler of the
+MIT Laboratory for Computer Science and Jim Gettys of Digital
+Equipment Corporation and Ron Newman of MIT, both at MIT
+Project Athena.
+X version 11, however, is the result of the efforts of
+dozens of individuals at almost as many locations and organizations.
+At the risk of offending some of the players by exclusion,
+we would like to acknowledge some of the people who deserve special credit
+and recognition for their work on Xlib.
+Our apologies to anyone inadvertently overlooked.
+</para>
+<simplesect>
+<title>
+Release 1
+</title>
+<para>
+Our thanks does to Ron Newman (MIT Project Athena),
+who contributed substantially to the
+design and implementation of the Version 11 Xlib interface.
+</para>
+<para>
+Our thanks also goes to Ralph Swick (Project Athena and Digital) who kept
+it all together for us during the early releases.
+He handled literally thousands of requests from people everywhere
+and saved the sanity of at least one of us.
+His calm good cheer was a foundation on which we could build.
+</para>
+<para>
+Our thanks also goes to Todd Brunhoff (Tektronix) who was ``loaned''
+to Project Athena at exactly the right moment to provide very capable
+and much-needed assistance during the alpha and beta releases.
+He was responsible for the successful integration of sources
+from multiple sites;
+we would not have had a release without him.
+</para>
+<para>
+Our thanks also goes to Al Mento and Al Wojtas of Digital's ULTRIX
+Documentation Group.
+With good humor and cheer,
+they took a rough draft and made it an infinitely better and more useful
+document.
+The work they have done will help many everywhere.
+We also would like to thank Hal Murray (Digital SRC) and
+Peter George (Digital VMS) who contributed much
+by proofreading the early drafts of this document.
+</para>
+<para>
+Our thanks also goes to Jeff Dike (Digital UEG), Tom Benson,
+Jackie Granfield, and Vince Orgovan (Digital VMS) who helped with the
+library utilities implementation;
+to Hania Gajewska (Digital UEG-WSL) who,
+along with Ellis Cohen (CMU and Siemens),
+was instrumental in the semantic design of the window manager properties;
+and to Dave Rosenthal (Sun Microsystems) who also contributed to the protocol
+and provided the sample generic color frame buffer device-dependent code.
+</para>
+<para>
+The alpha and beta test participants deserve special recognition and thanks
+as well.
+It is significant
+that the bug reports (and many fixes) during alpha and beta test came almost
+exclusively from just a few of the alpha testers, mostly hardware vendors
+working on product implementations of X.
+The continued public
+contribution of vendors and universities is certainly to the benefit
+of the entire X community.
+</para>
+<para>
+Our special thanks must go to Sam Fuller, Vice-President of Corporate
+Research at Digital, who has remained committed to the widest public
+availability of X and who made it possible to greatly supplement MIT's
+resources with the Digital staff in order to make version 11 a reality.
+Many of the people mentioned here are part of the Western
+Software Laboratory (Digital UEG-WSL) of the ULTRIX Engineering group
+and work for Smokey Wallace, who has been vital to the project's success.
+Others not mentioned here worked on the toolkit and are acknowledged
+in the X Toolkit documentation.
+</para>
+<para>
+Of course,
+we must particularly thank Paul Asente, formerly of Stanford University
+and now of Digital UEG-WSL, who wrote W, the predecessor to X,
+and Brian Reid, formerly of Stanford University and now of Digital WRL,
+who had much to do with W's design.
+</para>
+<para>
+Finally, our thanks goes to MIT, Digital Equipment Corporation,
+and IBM for providing the environment where it could happen.
+</para>
+</simplesect>
+<simplesect>
+<title>
+Release 4
+</title>
+<para>
+Our thanks go to Jim Fulton (MIT X Consortium) for designing and
+specifying the new Xlib functions for Inter-Client Communication
+Conventions (<acronym>ICCCM</acronym>) support.
+</para>
+<para>
+We also thank Al Mento of Digital for his continued effort in
+maintaining this document and Jim Fulton and Donna Converse (MIT X Consortium)
+for their much-appreciated efforts in reviewing the changes.
+</para>
+</simplesect>
+<simplesect>
+<title>
+Release 5
+</title>
+<para>
+The principal authors of the Input Method facilities are
+Vania Joloboff (Open Software Foundation) and Bill McMahon (Hewlett-Packard).
+The principal author of the rest of the internationalization facilities
+is Glenn Widener (Tektronix). Our thanks to them for keeping their
+sense of humor through a long and sometimes difficult design process.
+Although the words and much of the design are due to them, many others
+have contributed substantially to the design and implementation.
+Tom McFarland (HP) and Frank Rojas (IBM) deserve particular recognition
+for their contributions. Other contributors were:
+Tim Anderson (Motorola), Alka Badshah (OSF), Gabe Beged-Dov (HP),
+Chih-Chung Ko (III), Vera Cheng (III), Michael Collins (Digital),
+Walt Daniels (IBM), Noritoshi Demizu (OMRON), Keisuke Fukui (Fujitsu),
+Hitoshoi Fukumoto (Nihon Sun), Tim Greenwood (Digital), John Harvey (IBM),
+Hideki Hiura (Sun), Fred Horman (AT&amp;T), Norikazu Kaiya (Fujitsu),
+Yuji Kamata (IBM),
+Yutaka Kataoka (Waseda University), Ranee Khubchandani (Sun), Akira Kon (NEC),
+Hiroshi Kuribayashi (OMRON), Teruhiko Kurosaka (Sun), Seiji Kuwari (OMRON),
+Sandra Martin (OSF), Narita Masahiko (Fujitsu), Masato Morisaki (NTT),
+Nelson Ng (Sun),
+Takashi Nishimura (NTT America), Makato Nishino (IBM),
+Akira Ohsone (Nihon Sun), Chris Peterson (MIT), Sam Shteingart (AT&amp;T),
+Manish Sheth (AT&amp;T), Muneiyoshi Suzuki (NTT), Cori Mehring (Digital),
+Shoji Sugiyama (IBM), and Eiji Tosa (IBM).
+</para>
+<para>
+We are deeply indebted to Tatsuya Kato (NTT),
+Hiroshi Kuribayashi (OMRON), Seiji Kuwari (OMRON), Muneiyoshi Suzuki (NTT),
+and Li Yuhong (OMRON) for producing one of the first complete
+sample implementation of the internationalization facilities, and
+Hiromu Inukai (Nihon Sun), Takashi Fujiwara (Fujitsu), Hideki Hiura (Sun),
+Yasuhiro Kawai (Oki Technosystems Laboratory), Kazunori Nishihara (Fuji Xerox),
+Masaki Takeuchi (Sony), Katsuhisa Yano (Toshiba),
+Makoto Wakamatsu (Sony Corporation) for producing the another complete
+sample implementation of the internationalization facilities.
+</para>
+<para>
+The principal authors (design and implementation) of the Xcms color
+management facilities are Al Tabayoyon (Tektronix)
+and Chuck Adams (Tektronix).
+Joann Taylor (Tektronix), Bob Toole (Tektronix),
+and Keith Packard (MIT X Consortium) also
+contributed significantly to the design. Others who contributed are:
+Harold Boll (Kodak), Ken Bronstein (HP), Nancy Cam (SGI),
+Donna Converse (MIT X Consortium), Elias Israel (ISC), Deron Johnson (Sun),
+Jim King (Adobe), Ricardo Motta (HP), Chuck Peek (IBM),
+Wil Plouffe (IBM), Dave Sternlicht (MIT X Consortium), Kumar Talluri (AT&amp;T),
+and Richard Verberg (IBM).
+</para>
+<para>
+We also once again thank Al Mento of Digital for his work in formatting
+and reformatting text for this manual, and for producing man pages.
+Thanks also to Clive Feather (IXI) for proof-reading and finding a
+number of small errors.
+</para>
+</simplesect>
+<simplesect>
+<title>
+Release 6
+</title>
+<para>
+Stephen Gildea (X Consortium) authored the threads support.
+Ovais Ashraf (Sun) and Greg Olsen (Sun) contributed substantially
+by testing the facilities and reporting bugs in a timely fashion.
+</para>
+<para>
+The principal authors of the internationalization facilities, including
+Input and Output Methods, are Hideki Hiura (SunSoft) and
+Shigeru Yamada (Fujitsu OSSI).
+Although the words and much of the design are due to them, many others
+have contributed substantially to the design and implementation.
+They are: Takashi Fujiwara (Fujitsu), Yoshio Horiuchi (IBM),
+Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft),
+Song JaeKyung (KAIST), Franky Ling (Digital), Tom McFarland (HP),
+Hiroyuki Miyamoto (Digital), Masahiko Narita (Fujitsu),
+Frank Rojas (IBM), Hidetoshi Tajima (HP), Masaki Takeuchi (Sony),
+Makoto Wakamatsu (Sony), Masaki Wakao (IBM), Katsuhisa Yano(Toshiba) and
+Jinsoo Yoon (KAIST).
+</para>
+<para>
+The principal producers of the sample implementation of the
+internationalization facilities are:
+Jeffrey Bloomfield (Fujitsu OSSI), Takashi Fujiwara (Fujitsu),
+Hideki Hiura (SunSoft), Yoshio Horiuchi (IBM),
+Makoto Inada (Digital), Hiromu Inukai (Nihon SunSoft),
+Song JaeKyung (KAIST), Riki Kawaguchi (Fujitsu),
+Franky Ling (Digital), Hiroyuki Miyamoto (Digital),
+Hidetoshi Tajima (HP), Toshimitsu Terazono (Fujitsu),
+Makoto Wakamatsu (Sony), Masaki Wakao (IBM),
+Shigeru Yamada (Fujitsu OSSI) and Katsuhisa Yano (Toshiba).
+</para>
+<para>
+The coordinators of the integration, testing, and release of this
+implementation of the internationalization facilities are
+Nobuyuki Tanaka (Sony) and Makoto Wakamatsu (Sony).
+</para>
+<para>
+Others who have contributed to the architectural design or
+testing of the sample implementation of the
+internationalization facilities are:
+Hector Chan (Digital), Michael Kung (IBM), Joseph Kwok (Digital),
+Hiroyuki Machida (Sony), Nelson Ng (SunSoft), Frank Rojas (IBM),
+Yoshiyuki Segawa (Fujitsu OSSI), Makiko Shimamura (Fujitsu),
+Shoji Sugiyama (IBM), Lining Sun (SGI), Masaki Takeuchi (Sony),
+Jinsoo Yoon (KAIST) and Akiyasu Zen (HP).
+</para>
+<para>
+<literallayout>
+Jim Gettys
+Cambridge Research Laboratory
+Digital Equipment Corporation
+
+Robert W. Scheifler
+Laboratory for Computer Science
+Massachusetts Institute of Technology
+</literallayout>
+</para>
+</simplesect>
+</preface>
diff --git a/libXmu/doc/Xmu.xml b/libXmu/doc/Xmu.xml
index 8afe6882f..b1817991d 100644
--- a/libXmu/doc/Xmu.xml
+++ b/libXmu/doc/Xmu.xml
@@ -978,7 +978,13 @@ specifies the logo height
</varlistentry>
</variablelist>
- <figure id="xlogo" float="1" pgwide="0">
+This function draws the &ldquo;official&rdquo; X Window System logo
+(<xref linkend="xlogo"/>). The bounding box
+of the logo in the drawable is given by x, y, width, and height. The logo
+itself is filled using gcFore, and the rest of the rectangle is filled using
+gcBack.
+ </para>
+ <figure id="xlogo" pgwide="0">
<title>The X Logo</title>
<mediaobject>
<imageobject>
@@ -986,14 +992,6 @@ specifies the logo height
</imageobject>
</mediaobject>
</figure>
-
-This function draws the &ldquo;official&rdquo; X Window System logo
-(<xref linkend="xlogo"/>). The bounding box
-of the logo in the drawable is given by x, y, width, and height. The logo
-itself is filled using gcFore, and the rest of the rectangle is filled using
-gcBack.
- </para>
-
<para id="XmuCreateStippledPixmap">
<indexterm zone="XmuCreateStippledPixmap">
<primary><function>XmuCreateStippledPixmap</function></primary>
diff --git a/libXmu/docbook.am b/libXmu/docbook.am
index 2ffb7e60a..4809ce3be 100644
--- a/libXmu/docbook.am
+++ b/libXmu/docbook.am
@@ -41,8 +41,10 @@ XMLTO_XHTML_FLAGS = \
-x $(STYLESHEET_SRCDIR)/xorg-xhtml.xsl \
--stringparam html.stylesheet=$(STYLESHEET_SRCDIR)/xorg.css
+# Caution: img.src.path *must* not be used for html. Pdf copies the image.
XMLTO_FO_FLAGS = \
- -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl
+ -x $(STYLESHEET_SRCDIR)/xorg-fo.xsl \
+ --stringparam img.src.path=$(abs_builddir)/
endif HAVE_STYLESHEETS
shelf_DATA += $(docbook:.xml=.html)
diff --git a/libxcb/configure.ac b/libxcb/configure.ac
index dd8ec283e..52ec39cba 100644
--- a/libxcb/configure.ac
+++ b/libxcb/configure.ac
@@ -135,6 +135,8 @@ AC_PREREQ([2.59c], [], [AC_SUBST([htmldir], [m4_ifset([AC_PACKAGE_TARNAME],
XCB_CHECK_DOXYGEN()
+AC_CHECK_FUNC(getaddrinfo, [AC_DEFINE(HAVE_GETADDRINFO, 1, [getaddrinfo() function is available])], )
+
case $host_os in
# darwin through Snow Leopard has poll() but can't be used to poll character devices.
darwin@<:@789@:>@*|darwin10*) ;;
diff --git a/libxcb/src/c_client.py b/libxcb/src/c_client.py
index 077f0854c..321344190 100644
--- a/libxcb/src/c_client.py
+++ b/libxcb/src/c_client.py
@@ -171,10 +171,14 @@ def c_open(self):
_c('#include <stdlib.h>')
_c('#include <string.h>')
_c('#include <assert.h>')
+ _c('#include <stddef.h> /* for offsetof() */')
_c('#include "xcbext.h"')
_c('#include "%s.h"', _ns.header)
_c('#include <X11/Xtrans/Xtrans.h>')
+ _c('')
+ _c('#define ALIGNOF(type) offsetof(struct { char dummy; type member; }, member)')
+
if _ns.is_ext:
for (n, h) in self.imports:
_hc('#include "%s.h"', h)
@@ -638,7 +642,7 @@ def get_serialize_params(context, self, buffer_var='_buffer', aux_var='_aux'):
def _c_serialize_helper_insert_padding(context, code_lines, space, postpone):
code_lines.append('%s /* insert padding */' % space)
- code_lines.append('%s xcb_pad = -xcb_block_len & 3;' % space)
+ code_lines.append('%s xcb_pad = -xcb_block_len & (xcb_align_to - 1);' % space)
# code_lines.append('%s printf("automatically inserting padding: %%%%d\\n", xcb_pad);' % space)
code_lines.append('%s xcb_buffer_len += xcb_block_len + xcb_pad;' % space)
@@ -994,6 +998,8 @@ def _c_serialize_helper_fields(context, self,
code_lines.append('%s xcb_parts_idx++;' % space)
count += 1
+ code_lines.append('%s xcb_align_to = ALIGNOF(%s);' % (space, 'char' if field.c_field_type == 'void' else field.c_field_type))
+
need_padding = True
if self.var_followed_by_fixed_fields:
need_padding = False
@@ -1101,9 +1107,11 @@ def _c_serialize(context, self):
_c(' %s *xcb_out = *_buffer;', self.c_type)
_c(' unsigned int xcb_out_pad = -sizeof(%s) & 3;', self.c_type)
_c(' unsigned int xcb_buffer_len = sizeof(%s) + xcb_out_pad;', self.c_type)
+ _c(' unsigned int xcb_align_to;')
else:
_c(' char *xcb_out = *_buffer;')
_c(' unsigned int xcb_buffer_len = 0;')
+ _c(' unsigned int xcb_align_to;')
prefix = [('_aux', '->', self)]
aux_ptr = 'xcb_out'
@@ -1126,6 +1134,7 @@ def _c_serialize(context, self):
_c(' unsigned int xcb_buffer_len = 0;')
_c(' unsigned int xcb_block_len = 0;')
_c(' unsigned int xcb_pad = 0;')
+ _c(' unsigned int xcb_align_to;')
elif 'sizeof' == context:
param_names = [p[2] for p in params]
@@ -1170,6 +1179,7 @@ def _c_serialize(context, self):
_c(' unsigned int xcb_buffer_len = 0;')
_c(' unsigned int xcb_block_len = 0;')
_c(' unsigned int xcb_pad = 0;')
+ _c(' unsigned int xcb_align_to;')
_c('')
for t in temp_vars:
diff --git a/libxcb/src/xcb_auth.c b/libxcb/src/xcb_auth.c
index 5cfa9dc7c..dbfd24657 100644
--- a/libxcb/src/xcb_auth.c
+++ b/libxcb/src/xcb_auth.c
@@ -30,6 +30,12 @@
#include <sys/param.h>
#include <unistd.h>
#include <stdlib.h>
+#include <arpa/inet.h>
+
+#ifdef __INTERIX
+/* _don't_ ask. interix has INADDR_LOOPBACK in here. */
+#include <rpc/types.h>
+#endif
#ifdef _WIN32
#include "xcb_windefs.h"
diff --git a/libxcb/src/xcb_util.c b/libxcb/src/xcb_util.c
index b999ea528..499c54904 100644
--- a/libxcb/src/xcb_util.c
+++ b/libxcb/src/xcb_util.c
@@ -34,6 +34,7 @@
#include <stddef.h>
#include <unistd.h>
#include <string.h>
+#include <arpa/inet.h>
#ifdef _WIN32
#include "xcb_windefs.h"
@@ -265,6 +266,18 @@ static int _xcb_socket(int family, int type, int proto)
}
+static int _xcb_do_connect(int fd, const struct sockaddr* addr, int addrlen) {
+ char on = 1;
+
+ if(fd < 0)
+ return -1;
+
+ setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
+ setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on));
+
+ return connect(fd, addr, addrlen);
+}
+
#ifdef WIN32
int InitWSA(void)
{
@@ -285,10 +298,12 @@ int InitWSA(void)
static int _xcb_open_tcp(const char *host, char *protocol, const unsigned short port)
{
int fd = -1;
+#if HAVE_GETADDRINFO
struct addrinfo hints;
char service[6]; /* "65535" with the trailing '\0' */
struct addrinfo *results, *addr;
char *bracket;
+#endif
if (protocol && strcmp("tcp",protocol) && strcmp("inet",protocol)
#ifdef AF_INET6
@@ -300,10 +315,8 @@ static int _xcb_open_tcp(const char *host, char *protocol, const unsigned short
if (*host == '\0')
host = "localhost";
+#if HAVE_GETADDRINFO
memset(&hints, 0, sizeof(hints));
-#ifdef AI_ADDRCONFIG
- hints.ai_flags |= AI_ADDRCONFIG;
-#endif
#ifdef AI_NUMERICSERV
hints.ai_flags |= AI_NUMERICSERV;
#endif
@@ -334,19 +347,42 @@ static int _xcb_open_tcp(const char *host, char *protocol, const unsigned short
for(addr = results; addr; addr = addr->ai_next)
{
fd = _xcb_socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
- if(fd >= 0) {
- char on = 1;
- setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
- setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, &on, sizeof(on));
+ if (_xcb_do_connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
+ break;
+ close(fd);
+ fd = -1;
+ }
+ freeaddrinfo(results);
+ return fd;
+#else
+ {
+ struct hostent* _h;
+ struct sockaddr_in _s;
+ struct in_addr ** _c;
+
+ if((_h = gethostbyname(host)) == NULL)
+ return -1;
- if (connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
+ _c = (struct in_addr**)_h->h_addr_list;
+ fd = -1;
+
+ while(*_c) {
+ _s.sin_family = AF_INET;
+ _s.sin_port = htons(port);
+ _s.sin_addr = *(*_c);
+
+ fd = _xcb_socket(_s.sin_family, SOCK_STREAM, 0);
+ if(_xcb_do_connect(fd, (struct sockaddr*)&_s, sizeof(_s)) >= 0)
break;
+
close(fd);
fd = -1;
+ ++_c;
}
+
+ return fd;
}
- freeaddrinfo(results);
- return fd;
+#endif
}
#ifndef _WIN32
diff --git a/mesalib/.emacs-dirvars b/mesalib/.emacs-dirvars
new file mode 100644
index 000000000..33945f91e
--- /dev/null
+++ b/mesalib/.emacs-dirvars
@@ -0,0 +1,10 @@
+;; -*- emacs-lisp -*-
+;;
+;; This file is processed by the dirvars emacs package. Each variable
+;; setting below is performed when this dirvars file is loaded.
+;;
+indent-tabs-mode: nil
+tab-width: 8
+c-basic-offset: 3
+kde-emacs-after-parent-string: ""
+evaluate: (c-set-offset 'inline-open '0)
diff --git a/mesalib/Android.common.mk b/mesalib/Android.common.mk
new file mode 100644
index 000000000..83177a0cb
--- /dev/null
+++ b/mesalib/Android.common.mk
@@ -0,0 +1,48 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 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.
+
+LOCAL_C_INCLUDES += \
+ $(MESA_TOP)/include
+
+LOCAL_CFLAGS += \
+ -DPTHREADS \
+ -fvisibility=hidden \
+ -Wno-sign-compare
+
+ifeq ($(strip $(MESA_ENABLE_ASM)),true)
+ifeq ($(TARGET_ARCH),x86)
+LOCAL_CFLAGS += \
+ -DUSE_X86_ASM
+endif
+endif
+
+LOCAL_CPPFLAGS += \
+ -Wno-error=non-virtual-dtor \
+ -Wno-non-virtual-dtor
+
+# uncomment to keep the debug symbols
+#LOCAL_STRIP_MODULE := false
+
+ifeq ($(strip $(LOCAL_MODULE_TAGS)),)
+LOCAL_MODULE_TAGS := optional
+endif
diff --git a/mesalib/Android.mk b/mesalib/Android.mk
new file mode 100644
index 000000000..bc4b74e30
--- /dev/null
+++ b/mesalib/Android.mk
@@ -0,0 +1,189 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 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.
+
+# BOARD_GPU_DRIVERS should be defined. The valid values are
+#
+# classic drivers:
+# gallium drivers: swrast i915g nouveau r300g r600g vmwgfx
+#
+# The main target is libGLES_mesa. For each classic driver enabled, a DRI
+# module will also be built. DRI modules will be loaded by libGLES_mesa.
+
+MESA_TOP := $(call my-dir)
+MESA_COMMON_MK := $(MESA_TOP)/Android.common.mk
+MESA_PYTHON2 := python
+
+DRM_TOP := external/drm
+DRM_GRALLOC_TOP := hardware/drm_gralloc
+
+classic_drivers :=
+gallium_drivers := swrast i915g nouveau r300g r600g vmwgfx
+
+MESA_GPU_DRIVERS := $(strip $(BOARD_GPU_DRIVERS))
+
+# warn about invalid drivers
+invalid_drivers := $(filter-out \
+ $(classic_drivers) $(gallium_drivers), $(MESA_GPU_DRIVERS))
+ifneq ($(invalid_drivers),)
+$(warning invalid GPU drivers: $(invalid_drivers))
+# tidy up
+MESA_GPU_DRIVERS := $(filter-out $(invalid_drivers), $(MESA_GPU_DRIVERS))
+endif
+
+# host and target must be the same arch to generate matypes.h
+ifeq ($(TARGET_ARCH),$(HOST_ARCH))
+MESA_ENABLE_ASM := true
+else
+MESA_ENABLE_ASM := false
+endif
+
+ifneq ($(filter $(classic_drivers), $(MESA_GPU_DRIVERS)),)
+MESA_BUILD_CLASSIC := true
+else
+MESA_BUILD_CLASSIC := false
+endif
+
+ifneq ($(filter $(gallium_drivers), $(MESA_GPU_DRIVERS)),)
+MESA_BUILD_GALLIUM := true
+else
+MESA_BUILD_GALLIUM := false
+endif
+
+ifneq ($(strip $(MESA_GPU_DRIVERS)),)
+
+SUBDIRS := \
+ src/mapi \
+ src/glsl \
+ src/mesa \
+ src/egl/main
+
+ifeq ($(strip $(MESA_BUILD_CLASSIC)),true)
+SUBDIRS += src/egl/drivers/dri2
+endif
+
+ifeq ($(strip $(MESA_BUILD_GALLIUM)),true)
+SUBDIRS += src/gallium
+endif
+
+# ---------------------------------------
+# Build libGLES_mesa
+# ---------------------------------------
+
+LOCAL_PATH := $(MESA_TOP)
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=
+LOCAL_CFLAGS :=
+LOCAL_C_INCLUDES :=
+
+LOCAL_STATIC_LIBRARIES :=
+LOCAL_WHOLE_STATIC_LIBRARIES := libmesa_egl
+
+LOCAL_SHARED_LIBRARIES := \
+ libglapi \
+ libdl \
+ libhardware \
+ liblog \
+ libcutils
+
+# hardware drivers require DRM
+ifneq ($(MESA_GPU_DRIVERS),swrast)
+LOCAL_SHARED_LIBRARIES += libdrm
+endif
+
+ifeq ($(strip $(MESA_BUILD_CLASSIC)),true)
+LOCAL_STATIC_LIBRARIES += libmesa_egl_dri2
+endif
+
+ifeq ($(strip $(MESA_BUILD_GALLIUM)),true)
+
+gallium_DRIVERS :=
+
+# swrast
+gallium_DRIVERS += libmesa_pipe_softpipe libmesa_winsys_sw_android
+
+# i915g
+ifneq ($(filter i915g, $(MESA_GPU_DRIVERS)),)
+gallium_DRIVERS += libmesa_winsys_i915 libmesa_pipe_i915
+LOCAL_SHARED_LIBRARIES += libdrm_intel
+endif
+
+# nouveau
+ifneq ($(filter nouveau, $(MESA_GPU_DRIVERS)),)
+gallium_DRIVERS += \
+ libmesa_winsys_nouveau \
+ libmesa_pipe_nvc0 \
+ libmesa_pipe_nv50 \
+ libmesa_pipe_nvfx \
+ libmesa_pipe_nouveau
+LOCAL_SHARED_LIBRARIES += libdrm_nouveau
+endif
+
+# r300g/r600g
+ifneq ($(filter r300g r600g, $(MESA_GPU_DRIVERS)),)
+gallium_DRIVERS += libmesa_winsys_radeon
+ifneq ($(filter r300g, $(MESA_GPU_DRIVERS)),)
+gallium_DRIVERS += libmesa_pipe_r300
+endif
+ifneq ($(filter r600g, $(MESA_GPU_DRIVERS)),)
+gallium_DRIVERS += libmesa_pipe_r600 libmesa_winsys_r600
+endif
+endif
+
+# vmwgfx
+ifneq ($(filter vmwgfx, $(MESA_GPU_DRIVERS)),)
+gallium_DRIVERS += libmesa_winsys_svga libmesa_pipe_svga
+endif
+
+#
+# Notes about the order here:
+#
+# * libmesa_st_egl depends on libmesa_winsys_sw_android in $(gallium_DRIVERS)
+# * libmesa_pipe_r300 in $(gallium_DRIVERS) depends on libmesa_st_mesa and
+# libmesa_glsl
+# * libmesa_st_mesa depends on libmesa_glsl
+# * libmesa_glsl depends on libmesa_glsl_utils
+#
+LOCAL_STATIC_LIBRARIES := \
+ libmesa_egl_gallium \
+ libmesa_st_egl \
+ $(gallium_DRIVERS) \
+ libmesa_st_mesa \
+ libmesa_glsl \
+ libmesa_glsl_utils \
+ libmesa_gallium \
+ $(LOCAL_STATIC_LIBRARIES)
+
+endif # MESA_BUILD_GALLIUM
+
+LOCAL_MODULE := libGLES_mesa
+LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/egl
+
+include $(MESA_COMMON_MK)
+include $(BUILD_SHARED_LIBRARY)
+
+mkfiles := $(patsubst %,$(MESA_TOP)/%/Android.mk,$(SUBDIRS))
+include $(mkfiles)
+
+endif # MESA_GPU_DRIVERS
diff --git a/mesalib/Makefile b/mesalib/Makefile
index 916c49841..d65d4c496 100644
--- a/mesalib/Makefile
+++ b/mesalib/Makefile
@@ -82,7 +82,6 @@ aix-static \
autoconf \
bluegene-osmesa \
bluegene-xlc-osmesa \
-beos \
catamount-osmesa-pgi \
darwin \
darwin-fat-32bit \
diff --git a/mesalib/bin/mklib b/mesalib/bin/mklib
index 2c7ed3880..fd87aad42 100644
--- a/mesalib/bin/mklib
+++ b/mesalib/bin/mklib
@@ -802,22 +802,6 @@ case $ARCH in
FINAL_LIBS=`make_ar_static_lib -ru 0 ${LIBNAME} ${OBJECTS}`
;;
- 'BeOS')
- if [ $STATIC = 1 ] ; then
- LIBNAME="lib${LIBNAME}.a"
- echo "mklib: Making BeOS static library: " ${LIBNAME}
- FINAL_LIBS=`make_ar_static_lib -cru 0 ${LIBNAME} ${OBJECTS}`
- else
- LIBNAME="lib${LIBNAME}.so"
- echo "mklib: Making BeOS shared library: " ${LIBNAME}
- gcc -nostart -Xlinker "-soname=${LIBNAME}" -L/Be/develop/lib/x86 -lbe ${DEPS} ${OBJECTS} -o "${LIBNAME}"
- mimeset -f "${LIBNAME}"
- # XXX remove the Mesa3D stuff here since mklib isn't mesa-specific.
- setversion "${LIBNAME}" -app ${MAJOR} ${MINOR} ${PATCH} -short "Powered by Mesa3D!" -long "Powered by Mesa3D!"
- fi
- FINAL_LIBS=${LIBNAME}
- ;;
-
'QNX')
LIBNAME="lib${LIBNAME}.a"
echo "mklib: Making QNX library: " ${LIBNAME}
diff --git a/mesalib/common.py b/mesalib/common.py
index 9a3bcdaf3..718104ca1 100644
--- a/mesalib/common.py
+++ b/mesalib/common.py
@@ -88,6 +88,7 @@ def AddOptions(opts):
opts.Add('toolchain', 'compiler toolchain', default_toolchain)
opts.Add(BoolOption('gles', 'EXPERIMENTAL: enable OpenGL ES support', 'no'))
opts.Add(BoolOption('llvm', 'use LLVM', default_llvm))
+ opts.Add(BoolOption('openmp', 'EXPERIMENTAL: compile with openmp (swrast)', 'no'))
opts.Add(BoolOption('debug', 'DEPRECATED: debug build', 'yes'))
opts.Add(BoolOption('profile', 'DEPRECATED: profile build', 'no'))
opts.Add(BoolOption('quiet', 'DEPRECATED: profile build', 'yes'))
diff --git a/mesalib/configs/beos b/mesalib/configs/beos
deleted file mode 100644
index 91ea6f768..000000000
--- a/mesalib/configs/beos
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration for BeOS
-# Written by Philippe Houdoin
-
-include $(TOP)/configs/default
-
-CONFIG_NAME = beos
-
-
-DEFINES = \
- -DBEOS_THREADS
-
-MACHINE=$(shell uname -m)
-ifeq ($(MACHINE), BePC)
- CPU = x86
-else
- CPU = ppc
-endif
-
-ifeq ($(CPU), x86)
- # BeOS x86 settings
-
- DEFINES += \
- -DGNU_ASSEMBLER \
- -DUSE_X86_ASM \
- -DUSE_MMX_ASM \
- -DUSE_3DNOW_ASM \
- -DUSE_SSE_ASM
-
- MESA_ASM_SOURCES = $(X86_SOURCES)
- GLAPI_ASM_SOURCES = $(X86_API)
-
- CC = gcc
- CXX = g++
- LD = gcc
-
- CFLAGS = \
- -Wall -Wno-multichar -Wno-ctor-dtor-privacy \
- $(DEFINES)
-
- CXXFLAGS = $(CFLAGS)
-
- # Work around aliasing bugs - developers should comment this out
- CFLAGS += -fno-strict-aliasing
- CXXFLAGS += -fno-strict-aliasing
-
- LDFLAGS += -Xlinker
-
- ifdef DEBUG
- CFLAGS += -g -O0
- LDFLAGS += -g
- DEFINES += -DDEBUG
- else
- CFLAGS += -O3
- endif
-
- GLUT_CFLAGS = -fexceptions
-
-else
- # BeOS PPC settings
-
- CC = mwcc
- CXX = $(CC)
- LD = mwldppc
-
- CFLAGS = \
- -w on -requireprotos \
- $(DEFINES)
-
- CXXFLAGS = $(CFLAGS)
-
- LDFLAGS += \
- -export pragma \
- -init _init_routine_ \
- -term _term_routine_ \
- -lroot \
- /boot/develop/lib/ppc/glue-noinit.a \
- /boot/develop/lib/ppc/init_term_dyn.o \
- /boot/develop/lib/ppc/start_dyn.o
-
- ifdef DEBUG
- CFLAGS += -g -O0
- CXXFLAGS += -g -O0
- LDFLAGS += -g
- else
- CFLAGS += -O7
- CXXFLAGS += -O7
- endif
-
- GLUT_CFLAGS = -fexceptions
-endif
-
-# Directories
-SRC_DIRS = gallium mesa glu
-GLU_DIRS = sgi
-DRIVER_DIRS = beos
-
-# Library/program dependencies
-GL_LIB_DEPS =
-OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
-GLU_LIB_DEPS =
-APP_LIB_DEPS = -lbe -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -l$(GLUT_LIB)
-
diff --git a/mesalib/configs/darwin b/mesalib/configs/darwin
index 41e7ba800..83f417ce0 100644
--- a/mesalib/configs/darwin
+++ b/mesalib/configs/darwin
@@ -50,7 +50,6 @@ GLU_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -L$(INSTALL_DIR)/$(LIB_DIR) -L$(X11_DIR)/$(LIB_DIR) -lX11 -lXt
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 mapi/glapi mapi/vgapi glx/apple mesa gallium glu
GLU_DIRS = sgi
DRIVER_DIRS = osmesa
diff --git a/mesalib/configs/default b/mesalib/configs/default
index e839a1e50..078c85e8b 100644
--- a/mesalib/configs/default
+++ b/mesalib/configs/default
@@ -105,7 +105,7 @@ MOTIF_CFLAGS = -I/usr/include/Motif1.2
# Directories to build
LIB_DIR = lib
SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
- gallium egl gallium/winsys gallium/targets glu glw
+ gallium egl gallium/winsys gallium/targets glu
GLU_DIRS = sgi
DRIVER_DIRS = x11 osmesa
diff --git a/mesalib/configs/freebsd-dri b/mesalib/configs/freebsd-dri
index fdf4b293a..c4169b81d 100644
--- a/mesalib/configs/freebsd-dri
+++ b/mesalib/configs/freebsd-dri
@@ -42,11 +42,10 @@ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -L/usr/local/lib -lGL -lXt -lX11
# Directories
-SRC_DIRS = glx gallium mesa glu glw
+SRC_DIRS = glx gallium mesa glu
DRIVER_DIRS = dri
DRM_SOURCE_PATH=$(TOP)/../drm
-DRI_DIRS = i810 i915 i965 mach64 mga r128 r200 r300 radeon tdfx \
- unichrome savage sis
+DRI_DIRS = i915 i965 r200 r300 radeon
diff --git a/mesalib/configs/linux-cell b/mesalib/configs/linux-cell
index e87e69a80..7f38da971 100644
--- a/mesalib/configs/linux-cell
+++ b/mesalib/configs/linux-cell
@@ -36,7 +36,6 @@ CFLAGS = $(COMMON_C_CPP_FLAGS) -Wmissing-prototypes -std=c99
CXXFLAGS = $(COMMON_C_CPP_FLAGS)
-# Omitting glw here:
SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
gallium gallium/winsys gallium/targets glu
diff --git a/mesalib/configs/linux-dri b/mesalib/configs/linux-dri
index 4c885d632..cc312eeca 100644
--- a/mesalib/configs/linux-dri
+++ b/mesalib/configs/linux-dri
@@ -62,8 +62,7 @@ GALLIUM_WINSYS_DIRS = sw sw/xlib drm/vmware drm/intel drm/i965
GALLIUM_TARGET_DIRS =
GALLIUM_STATE_TRACKERS_DIRS = egl
-DRI_DIRS = i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
- savage sis tdfx unichrome swrast
+DRI_DIRS = i915 i965 nouveau r200 r300 r600 radeon swrast
INTEL_LIBS = $(shell pkg-config --libs libdrm_intel)
INTEL_CFLAGS = $(shell pkg-config --cflags libdrm_intel)
diff --git a/mesalib/configs/linux-dri-debug b/mesalib/configs/linux-dri-debug
index 0dbf42883..c42654ce3 100644
--- a/mesalib/configs/linux-dri-debug
+++ b/mesalib/configs/linux-dri-debug
@@ -11,6 +11,4 @@ ARCH_FLAGS = -DDEBUG
#DRI_DIRS = i915tex i915
#DRI_DIRS = i965
#DRI_DIRS = radeon r200 r300
-#DRI_DIRS = unichrome sis
-#DRI_DIRS = i810 mga r128 tdfx
diff --git a/mesalib/configs/linux-dri-ppc b/mesalib/configs/linux-dri-ppc
index a3a3ca83c..cc1ab9c4f 100644
--- a/mesalib/configs/linux-dri-ppc
+++ b/mesalib/configs/linux-dri-ppc
@@ -13,5 +13,5 @@ MESA_ASM_SOURCES = $(PPC_SOURCES)
# Build only the drivers for cards that exist on PowerPC. At some point MGA
# will be added, but not yet.
-DRI_DIRS = mach64 r128 r200 r300 radeon tdfx
+DRI_DIRS = r200 r300 radeon
diff --git a/mesalib/configs/linux-dri-x86-64 b/mesalib/configs/linux-dri-x86-64
index 656cf6140..84f547812 100644
--- a/mesalib/configs/linux-dri-x86-64
+++ b/mesalib/configs/linux-dri-x86-64
@@ -16,9 +16,5 @@ LIB_DIR = lib64
# Library/program dependencies
EXTRA_LIB_PATH=-L/usr/X11R6/lib64
-# sis is missing because it has not been converted to use
-# the new interface. i810 are missing because there is no x86-64
-# system where they could *ever* be used.
-#
-DRI_DIRS = i915 i965 mach64 mga r128 r200 r300 radeon savage tdfx unichrome
+DRI_DIRS = i915 i965 r200 r300 radeon
diff --git a/mesalib/configs/linux-dri-xcb b/mesalib/configs/linux-dri-xcb
index 021aa3e8b..a845f71d2 100644
--- a/mesalib/configs/linux-dri-xcb
+++ b/mesalib/configs/linux-dri-xcb
@@ -49,8 +49,7 @@ DRI_LIB_DEPS = $(MESA_MODULES) $(EXTRA_LIB_PATH) -lm -lpthread -lexpat -ldl $(L
GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lm -lpthread -ldl \
$(LIBDRM_LIB) $(shell pkg-config --libs xcb) $(shell pkg-config --libs x11-xcb) $(shell pkg-config --libs xcb-glx)
-SRC_DIRS = glx gallium mesa glu glw
+SRC_DIRS = glx gallium mesa glu
DRIVER_DIRS = dri
-DRI_DIRS = i810 i915 mach64 mga r128 r200 r300 radeon \
- savage sis tdfx unichrome
+DRI_DIRS = i915 r200 r300 radeon
diff --git a/mesalib/configs/linux-fbdev b/mesalib/configs/linux-fbdev
deleted file mode 100644
index 45b482a91..000000000
--- a/mesalib/configs/linux-fbdev
+++ /dev/null
@@ -1,16 +0,0 @@
-# Configuration for Linux fbdev interface
-
-include $(TOP)/configs/linux
-
-CONFIG_NAME = linux-fbdev
-
-CFLAGS += -DUSE_GLFBDEV_DRIVER
-
-# Work around aliasing bugs - developers should comment this out
-CFLAGS += -fno-strict-aliasing
-
-DRIVER_DIRS = fbdev osmesa
-
-GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lm -lpthread
-OSMESA_LIB_DEPS = -lm -lpthread
-
diff --git a/mesalib/configs/linux-indirect b/mesalib/configs/linux-indirect
index 82868c4a1..5592a8f29 100644
--- a/mesalib/configs/linux-indirect
+++ b/mesalib/configs/linux-indirect
@@ -48,5 +48,5 @@ GL_LIB_DEPS = $(EXTRA_LIB_PATH) -lX11 -lXext -lXxf86vm -lm -lpthread -ldl
# Directories
-SRC_DIRS = glx glu glw
+SRC_DIRS = glx glu
DRIVER_DIRS =
diff --git a/mesalib/configure.ac b/mesalib/configure.ac
index 1b1823a21..9916a06a9 100644
--- a/mesalib/configure.ac
+++ b/mesalib/configure.ac
@@ -359,7 +359,6 @@ fi
GL_LIB_NAME='lib$(GL_LIB).'${LIB_EXTENSION}
GLU_LIB_NAME='lib$(GLU_LIB).'${LIB_EXTENSION}
GLUT_LIB_NAME='lib$(GLUT_LIB).'${LIB_EXTENSION}
-GLW_LIB_NAME='lib$(GLW_LIB).'${LIB_EXTENSION}
OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
@@ -372,7 +371,6 @@ GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
GLUT_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLUT_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
-GLW_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLW_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
OSMESA_LIB_GLOB=${LIB_PREFIX_GLOB}'$(OSMESA_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
@@ -386,7 +384,6 @@ GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTE
AC_SUBST([GL_LIB_NAME])
AC_SUBST([GLU_LIB_NAME])
AC_SUBST([GLUT_LIB_NAME])
-AC_SUBST([GLW_LIB_NAME])
AC_SUBST([OSMESA_LIB_NAME])
AC_SUBST([EGL_LIB_NAME])
AC_SUBST([GLESv1_CM_LIB_NAME])
@@ -399,7 +396,6 @@ AC_SUBST([GBM_LIB_NAME])
AC_SUBST([GL_LIB_GLOB])
AC_SUBST([GLU_LIB_GLOB])
AC_SUBST([GLUT_LIB_GLOB])
-AC_SUBST([GLW_LIB_GLOB])
AC_SUBST([OSMESA_LIB_GLOB])
AC_SUBST([EGL_LIB_GLOB])
AC_SUBST([GLESv1_CM_LIB_GLOB])
@@ -1165,25 +1161,20 @@ if test "x$enable_dri" = xyes; then
case "$host_cpu" in
x86_64)
- # sis is missing because they have not be converted to use
- # the new interface. i810 are missing because there is no
- # x86-64 system where they could *ever* be used.
if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
- radeon savage tdfx unichrome swrast"
+ DRI_DIRS="i915 i965 nouveau r200 r300 r600 radeon swrast"
fi
;;
powerpc*)
# Build only the drivers for cards that exist on PowerPC.
- # At some point MGA will be added, but not yet.
if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="mach64 r128 r200 r300 r600 radeon tdfx swrast"
+ DRI_DIRS="r200 r300 r600 radeon swrast"
fi
;;
sparc*)
- # Build only the drivers for cards that exist on sparc`
+ # Build only the drivers for cards that exist on sparc
if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="mach64 r128 r200 r300 r600 radeon swrast"
+ DRI_DIRS="r200 r300 r600 radeon swrast"
fi
;;
esac
@@ -1193,8 +1184,7 @@ if test "x$enable_dri" = xyes; then
DEFINES="$DEFINES -DIN_DRI_DRIVER -DHAVE_ALIAS"
if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 \
- radeon tdfx unichrome savage sis swrast"
+ DRI_DIRS="i915 i965 nouveau r200 r300 r600 radeon swrast"
fi
;;
gnu*)
@@ -1214,8 +1204,7 @@ if test "x$enable_dri" = xyes; then
# default drivers
if test "x$DRI_DIRS" = "xyes"; then
- DRI_DIRS="i810 i915 i965 mach64 mga nouveau r128 r200 r300 r600 radeon \
- savage sis tdfx unichrome swrast"
+ DRI_DIRS="i915 i965 nouveau r200 r300 r600 radeon swrast"
fi
DRI_DIRS=`echo "$DRI_DIRS" | $SED 's/ */ /g'`
@@ -1370,6 +1359,8 @@ if test "x$enable_egl" = xyes; then
EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
EGL_DRIVERS_DIRS=""
+ AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
+
if test "$enable_static" != yes; then
# build egl_glx when libGL is built
if test "x$enable_glx" = xyes; then
@@ -1603,77 +1594,6 @@ AC_SUBST([GLU_PC_LIB_PRIV])
AC_SUBST([GLU_PC_CFLAGS])
dnl
-dnl GLw configuration
-dnl
-AC_ARG_ENABLE([glw],
- [AS_HELP_STRING([--disable-glw],
- [enable Xt/Motif widget library @<:@default=enabled@:>@])],
- [enable_glw="$enableval"],
- [enable_glw=yes])
-dnl Don't build GLw on osmesa
-if test "x$enable_glw" = xyes -a "x$enable_glx" = xno; then
- AC_MSG_NOTICE([Disabling GLw since there is no OpenGL driver])
- enable_glw=no
-fi
-AC_ARG_ENABLE([motif],
- [AS_HELP_STRING([--enable-motif],
- [use Motif widgets in GLw @<:@default=disabled@:>@])],
- [enable_motif="$enableval"],
- [enable_motif=no])
-
-if test "x$enable_glw" = xyes; then
- SRC_DIRS="$SRC_DIRS glw"
- if test "$x11_pkgconfig" = yes; then
- PKG_CHECK_MODULES([GLW],[x11 xt])
- GLW_PC_REQ_PRIV="x11 xt"
- GLW_LIB_DEPS="$GLW_LIBS"
- else
- # should check these...
- GLW_LIB_DEPS="$X_LIBS -lXt -lX11"
- GLW_PC_LIB_PRIV="$GLW_LIB_DEPS"
- GLW_PC_CFLAGS="$X11_INCLUDES"
- fi
-
- GLW_SOURCES="GLwDrawA.c"
- MOTIF_CFLAGS=
- if test "x$enable_motif" = xyes; then
- GLW_SOURCES="$GLW_SOURCES GLwMDrawA.c"
- AC_PATH_PROG([MOTIF_CONFIG], [motif-config], [no])
- if test "x$MOTIF_CONFIG" != xno; then
- MOTIF_CFLAGS=`$MOTIF_CONFIG --cflags`
- MOTIF_LIBS=`$MOTIF_CONFIG --libs`
- else
- AC_CHECK_HEADER([Xm/PrimitiveP.h], [],
- [AC_MSG_ERROR([Can't locate Motif headers])])
- AC_CHECK_LIB([Xm], [XmGetPixmap], [MOTIF_LIBS="-lXm"],
- [AC_MSG_ERROR([Can't locate Motif Xm library])])
- fi
- # MOTIF_LIBS is prepended to GLW_LIB_DEPS since Xm needs Xt/X11
- GLW_LIB_DEPS="$MOTIF_LIBS $GLW_LIB_DEPS"
- GLW_PC_LIB_PRIV="$MOTIF_LIBS $GLW_PC_LIB_PRIV"
- GLW_PC_CFLAGS="$MOTIF_CFLAGS $GLW_PC_CFLAGS"
- fi
-
- # If static, empty GLW_LIB_DEPS and add libs for programs to link
- GLW_PC_LIB_PRIV="$GLW_PC_LIB_PRIV"
- if test "$enable_static" = no; then
- GLW_MESA_DEPS='-l$(GL_LIB)'
- GLW_LIB_DEPS="$GLW_LIB_DEPS"
- else
- APP_LIB_DEPS="$APP_LIB_DEPS $GLW_LIB_DEPS"
- GLW_LIB_DEPS=""
- GLW_MESA_DEPS=""
- fi
-fi
-AC_SUBST([GLW_LIB_DEPS])
-AC_SUBST([GLW_MESA_DEPS])
-AC_SUBST([GLW_SOURCES])
-AC_SUBST([MOTIF_CFLAGS])
-AC_SUBST([GLW_PC_REQ_PRIV])
-AC_SUBST([GLW_PC_LIB_PRIV])
-AC_SUBST([GLW_PC_CFLAGS])
-
-dnl
dnl Program library dependencies
dnl Only libm is added here if necessary as the libraries should
dnl be pulled in by the linker
@@ -1928,7 +1848,7 @@ if test "x$with_gallium_drivers" != x; then
;;
xr600)
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
- gallium_check_st "r600/drm" "dri-r600" "" "" "xvmc-r600" "vdpau-r600" "va-r600"
+ gallium_check_st "r600/drm radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
;;
xnouveau)
PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
@@ -2051,7 +1971,6 @@ esac
echo ""
echo " GLU: $enable_glu"
-echo " GLw: $enable_glw (Motif: $enable_motif)"
dnl EGL
echo ""
diff --git a/mesalib/docs/GL3.txt b/mesalib/docs/GL3.txt
index c3a2472cf..965f385f5 100644
--- a/mesalib/docs/GL3.txt
+++ b/mesalib/docs/GL3.txt
@@ -123,7 +123,7 @@ GL_ARB_texture_storage not started
GL_ARB_transform_feedback_instanced not started
GL_ARB_base_instance not started
GL_ARB_shader_image_load_store not started
-GL_ARB_conservative_depth not started (may be close to AMD_conservative_depth though)
+GL_ARB_conservative_depth DONE (compiler)
GL_ARB_shading_language_420pack not started
GL_ARB_internalformat_query not started
GL_ARB_map_buffer_alignment not started
diff --git a/mesalib/docs/README.BEOS b/mesalib/docs/README.BEOS
deleted file mode 100644
index efd84e888..000000000
--- a/mesalib/docs/README.BEOS
+++ /dev/null
@@ -1,136 +0,0 @@
-
- Mesa / BeOS Information
-
-
-
-* Introduction
-
-Brian Paul added in Mesa 3.1 a driver for BeOS R4.5 operating system.
-This driver implements a clone of the BGLView class. This class,
-derived from BView, allows OpenGL rendering into any BeOS window. His
-driver was updated in Mesa 4.1 and again in version 6.1 by Philippe
-Houdoin, who's maintaining this driver since.
-
-Any application which uses the BGLView should be able to use Mesa
-instead of Be's OpenGL without changing any code.
-
-Since Be's OpenGL implementation (as of R5) is basically just the
-SGI sample implementation, it's pretty slow. You'll see that Mesa
-is considerably faster.
-
-
-* Source Code
-
-The source code for the driver is in src/mesa/drivers/beos/ directory.
-It's not 100% finished at this time but many GLUT-based demos are
-working. No optimizations have been made at this time.
-
-
-* Compiling
-
-Since Mesa 6.x, it can be build under BeOS with both the R5 builtin gcc version
-or more recent gcc versions available for BeOS, like this gcc version 2.95.3 for BeOS
-you can find at http://www.bebits.com/app/2157.
-Anyway, keep in mind that to take full advantage of Mesa x86 optimizations, you better
-want to use gcc 2.95.3 or sooner versions...
-
-To build Mesa-powered BeOS libGL.so version, open an Terminal window,
-move to Mesa root folder and type this command:
-
-$ make beos
-
-Note that the "beos" argument is only needed the first time to setup build config.
-Next times, typing "make" will be enough.
-
-When it finishes the Mesa based libGL.so library for
-BeOS will be in the lib/ directory, along libglut.so library.
-Several demo/test programs should have been build too under progs/* folders.
-If it stop when building one of the progs/* programs, you may want to ignore it
-and force make to move on next target by adding the -k make option:
-
-$ cd progs
-$ make -k
-
-To install it as Be's default libGL.so replacement, put it in your
-/boot/home/config/lib/ directory. All your GL/GLUT apps will use
-the Mesa based then.
-
-By default, it build a non-debug version library.
-The x86 (MMX, SSE and 3DNOW) optimizations are also supported for x86 target.
-For PowerPC BeOS flavor, sorry, Mesa don't have ppc (Altivec) optimizations
-yet.
-
-To build a DEBUG version, type instead this :
-
-$ DEBUG=1 make
-
-
-* Example Programs
-
-Look under progs/beos/ for some BGLView-based programs.
-You should find under progs/samples and progs/redbook directories GLUT-based programs too.
-They all should have been compiled along with the Mesa library.
-
-
-* GLUT
-
-A beta version of GLUT 3.7 port for BeOS, made by Jake Hamby, can be found at
-http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
-This is the version currently included in Mesa source code, and
-build in lib/libglut.so.
-
-A previous 3.5 version of this GLUT BeOS port used to be available at
-http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip.
-
-They're special versions of GLUT for the BeOS platform. I don't
-believe Mark Kilgard's normal GLUT distribution includes BeOS
-support.
-
-
-* Special Features
-
-Mesa's implementation of the BGLView class has an extra member
-function: CopySubBufferMESA(). It basically works like SwapBuffers()
-but it only copies a sub region from the back buffer to the front
-buffer. This is a useful optimization for some applications.
-If you use this method in your code be sure that you check at runtime
-that you're actually using Mesa (with glGetString) so you don't
-cause a fatal error when running with Be's OpenGL.
-
-
-* Work Left To Do
-
-- BDirectWindow single buffering support is not implemented yet.
-- Color index mode is not implemented yet.
-- Reading pixels from the front buffer not implemented yet.
-- There is also a BGLScreen class in BeOS for full-screen OpenGL rendering.
- This should also be implemented for Mesa.
-- Multiple renderers add-ons support, first step toward hardware acceleration
- support.
-
-* Other contributors to this BeOS port
-
-Jake Hamby jhamby <at> anobject <dot> com
-Marcin Konicki ahwayakchih <at> neoni <dot> net
-Francois Revol revol <at> free <dot> fr
-Nathan Whitehorn nathanw <at> uchicago <dot> edu
-
-
-* Older BeOS Driver
-
-Mesa 2.6 had an earlier BeOS driver. It was based on Mesa's Off-screen
-rendering interface, not BGLView. If you're interested in the older
-driver you should get Mesa 2.6.
-
-
-* BeOS and Glide
-
-Mesa 3.0 supported the 3Dfx/Glide library on Beos. Download Mesa 3.0
-if interested. Ideally, the 3Dfx/Glide support should be updated to
-work with the new Mesa 3.1 BGLView implementation.
-
-The Glide library hasn't been updated for BeOS R4 and newer, to my knowledge,
-as of February, 1999.
-
-
-----------------------------------------------------------------------
diff --git a/mesalib/docs/autoconf.html b/mesalib/docs/autoconf.html
index 64bcbd48a..895cf665c 100644
--- a/mesalib/docs/autoconf.html
+++ b/mesalib/docs/autoconf.html
@@ -20,7 +20,6 @@
<li><a href="#library">Library Options</a></li>
<ul>
<li><a href="#glu">GLU</a></li>
- <li><a href="#glw">GLw</a></li>
</ul>
<li><a href="#demos">Demo Program Options</a></li>
</ol>
@@ -245,12 +244,6 @@ instructions</a>.
on all drivers. This can be disable with the option
<code>--disable-glu</code>.
</li>
-
-<a name="glw">
-<li><b><em>GLw</em></b> - The libGLw library will be built by default
-if libGLU has been enabled. This can be disable with the option
-<code>--disable-glw</code>.
-</li>
</ul>
</p>
diff --git a/mesalib/docs/contents.html b/mesalib/docs/contents.html
index bf5e9aa09..df0fb6474 100644
--- a/mesalib/docs/contents.html
+++ b/mesalib/docs/contents.html
@@ -1,106 +1,105 @@
-<html>
-
-<title>Contents</title>
-
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<!--Override a few values from the style sheet: -->
-<style>
-<!--
-body {
- background-color: #cccccc;
- color: black;
-}
-a:link {
- color: #000;
-}
-a:visited {
- color: #000;
-}
--->
-</style>
-
-
-<b>Documentation</b>
-<ul>
-<li><a href="intro.html" target="MainFrame">Introduction</a>
-<li><a href="news.html" target="MainFrame">News</a>
-<LI><A HREF="developers.html" target="MainFrame">Developers</A>
-<li><a href="systems.html" target="MainFrame">Platforms and Drivers</a>
-<li><a href="license.html" target="MainFrame">License & Copyright</a>
-<li><a href="faq.html" target="MainFrame">FAQ</a>
-<li><a href="relnotes.html" target="MainFrame">Release Notes</a>
-<li><a href="thanks.html" target="MainFrame">Acknowledgements</a>
-<li><a href="conform.html" target="MainFrame">Conformance Testing</a>
-<li>more docs below...
-</ul>
-
-<b>Download / Install</b>
-<ul>
-<li><a href="download.html" target="MainFrame">Downloading / Unpacking</a>
-<li><a href="install.html" target="MainFrame">Compiling / Installing</a>
-<li><a href="precompiled.html" target="MainFrame">Precompiled Libraries</a>
-</ul>
-
-<b>Resources</b>
-<ul>
-<li><a href="lists.html" target="MainFrame">Mailing Lists</a>
-<li><a href="bugs.html" target="MainFrame">Bug Database</a>
-<li><a href="webmaster.html" target="MainFrame">Webmaster</a>
-<li><a href="http://dri.freedesktop.org/" target="_parent">Mesa/DRI Wiki</a>
-</ul>
-
-<b>User Topics</b>
-<ul>
-<li><a href="shading.html" target="MainFrame">Shading Language</a>
-<li><a href="egl.html" target="MainFrame">EGL</a>
-<li><a href="opengles.html" target="MainFrame">OpenGL ES</a>
-<li><a href="openvg.html" target="MainFrame">OpenVG / Vega</a>
-<LI><A HREF="envvars.html" target="MainFrame">Environment Variables</A>
-<LI><A HREF="osmesa.html" target="MainFrame">Off-Screen Rendering</A>
-<LI><A HREF="debugging.html" target="MainFrame">Debugging Tips</A>
-<LI><A HREF="perf.html" target="MainFrame">Performance Tips</A>
-<LI><A HREF="extensions.html" target="MainFrame">Mesa Extensions</A>
-<LI><A HREF="mangling.html" target="MainFrame">Function Name Mangling</A>
-<LI><A href="llvmpipe.html" target="MainFrame">Gallium llvmpipe driver</A>
-</ul>
-
-<b>Developer Topics</b>
-<ul>
-<li><a href="http://sourceforge.net/projects/mesa3d" target="_parent">SourceForge homepage</a>
-<li><a href="repository.html" target="MainFrame">Source Code Repository</a>
-<li><a href="sourcetree.html" target="MainFrame">Source Code Tree</a>
-<li><a href="glu.html" target="MainFrame">SGI's GLU</a>
-<li><a href="utilities.html" target="MainFrame">Utilities</a>
-<li><a href="helpwanted.html" target="MainFrame">Help Wanted</a>
-<li><a href="devinfo.html" target="MainFrame">Development Notes</a>
-<li><a href="sourcedocs.html" target="MainFrame">Source Documentation</a>
-<li><a href="fbdev-dri.html" target="MainFrame">fbdev/DRI Environment</a>
-<li><a href="subset.html" target="MainFrame">Mesa Subset Driver</a>
-<li><a href="glfbdev-driver.html" target="MainFrame">glFBDev Driver</a>
-<LI><A HREF="dispatch.html" target="MainFrame">GL Dispatch</A>
-<li><a href="cell.html" target="MainFrame">Cell Driver</A>
-</ul>
-
-<b>Links</b>
-<ul>
-<li><a href="http://www.opengl.org" target="_parent">OpenGL website</a>
-<li><a href="http://dri.freedesktop.org" target="_parent">DRI website</a>
-<li><a href="http://www.freedesktop.org" target="_parent">freedesktop.org</a>
-<li><a href="games.html" target="MainFrame">Games and Entertainment</a>
-<li><a href="libraries.html" target="MainFrame">Libraries and Toolkits</a>
-<li><a href="modelers.html" target="MainFrame">Modeling and Rendering</a>
-<li><a href="science.html" target="MainFrame">Science and Technical</a>
-<li><a href="utility.html" target="MainFrame">Utilities</a>
-</ul>
-
-<b>Hosted by:</b>
-<br>
-<blockquote>
-<A HREF="http://sourceforge.net"
-target="_parent"><IMG SRC="http://sourceforge.net/sflogo.php?group_id=3&type=1"
-WIDTH="88" HEIGHT="31" ALIGN="BOTTOM" ALT="Sourceforge.net" BORDER="0"></A>
-</blockquote>
-
-</body>
-</html>
+<html>
+
+<title>Contents</title>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<!--Override a few values from the style sheet: -->
+<style>
+<!--
+body {
+ background-color: #cccccc;
+ color: black;
+}
+a:link {
+ color: #000;
+}
+a:visited {
+ color: #000;
+}
+-->
+</style>
+
+
+<b>Documentation</b>
+<ul>
+<li><a href="intro.html" target="MainFrame">Introduction</a>
+<li><a href="news.html" target="MainFrame">News</a>
+<LI><A HREF="developers.html" target="MainFrame">Developers</A>
+<li><a href="systems.html" target="MainFrame">Platforms and Drivers</a>
+<li><a href="license.html" target="MainFrame">License & Copyright</a>
+<li><a href="faq.html" target="MainFrame">FAQ</a>
+<li><a href="relnotes.html" target="MainFrame">Release Notes</a>
+<li><a href="thanks.html" target="MainFrame">Acknowledgements</a>
+<li><a href="conform.html" target="MainFrame">Conformance Testing</a>
+<li>more docs below...
+</ul>
+
+<b>Download / Install</b>
+<ul>
+<li><a href="download.html" target="MainFrame">Downloading / Unpacking</a>
+<li><a href="install.html" target="MainFrame">Compiling / Installing</a>
+<li><a href="precompiled.html" target="MainFrame">Precompiled Libraries</a>
+</ul>
+
+<b>Resources</b>
+<ul>
+<li><a href="lists.html" target="MainFrame">Mailing Lists</a>
+<li><a href="bugs.html" target="MainFrame">Bug Database</a>
+<li><a href="webmaster.html" target="MainFrame">Webmaster</a>
+<li><a href="http://dri.freedesktop.org/" target="_parent">Mesa/DRI Wiki</a>
+</ul>
+
+<b>User Topics</b>
+<ul>
+<li><a href="shading.html" target="MainFrame">Shading Language</a>
+<li><a href="egl.html" target="MainFrame">EGL</a>
+<li><a href="opengles.html" target="MainFrame">OpenGL ES</a>
+<li><a href="openvg.html" target="MainFrame">OpenVG / Vega</a>
+<LI><A HREF="envvars.html" target="MainFrame">Environment Variables</A>
+<LI><A HREF="osmesa.html" target="MainFrame">Off-Screen Rendering</A>
+<LI><A HREF="debugging.html" target="MainFrame">Debugging Tips</A>
+<LI><A HREF="perf.html" target="MainFrame">Performance Tips</A>
+<LI><A HREF="extensions.html" target="MainFrame">Mesa Extensions</A>
+<LI><A HREF="mangling.html" target="MainFrame">Function Name Mangling</A>
+<LI><A href="llvmpipe.html" target="MainFrame">Gallium llvmpipe driver</A>
+<LI><A href="postprocess.html" target="MainFrame">Gallium post-processing</A>
+</ul>
+
+<b>Developer Topics</b>
+<ul>
+<li><a href="http://sourceforge.net/projects/mesa3d" target="_parent">SourceForge homepage</a>
+<li><a href="repository.html" target="MainFrame">Source Code Repository</a>
+<li><a href="sourcetree.html" target="MainFrame">Source Code Tree</a>
+<li><a href="glu.html" target="MainFrame">SGI's GLU</a>
+<li><a href="utilities.html" target="MainFrame">Utilities</a>
+<li><a href="helpwanted.html" target="MainFrame">Help Wanted</a>
+<li><a href="devinfo.html" target="MainFrame">Development Notes</a>
+<li><a href="sourcedocs.html" target="MainFrame">Source Documentation</a>
+<li><a href="subset.html" target="MainFrame">Mesa Subset Driver</a>
+<LI><A HREF="dispatch.html" target="MainFrame">GL Dispatch</A>
+<li><a href="cell.html" target="MainFrame">Cell Driver</A>
+</ul>
+
+<b>Links</b>
+<ul>
+<li><a href="http://www.opengl.org" target="_parent">OpenGL website</a>
+<li><a href="http://dri.freedesktop.org" target="_parent">DRI website</a>
+<li><a href="http://www.freedesktop.org" target="_parent">freedesktop.org</a>
+<li><a href="games.html" target="MainFrame">Games and Entertainment</a>
+<li><a href="libraries.html" target="MainFrame">Libraries and Toolkits</a>
+<li><a href="modelers.html" target="MainFrame">Modeling and Rendering</a>
+<li><a href="science.html" target="MainFrame">Science and Technical</a>
+<li><a href="utility.html" target="MainFrame">Utilities</a>
+</ul>
+
+<b>Hosted by:</b>
+<br>
+<blockquote>
+<A HREF="http://sourceforge.net"
+target="_parent"><IMG SRC="http://sourceforge.net/sflogo.php?group_id=3&type=1"
+WIDTH="88" HEIGHT="31" ALIGN="BOTTOM" ALT="Sourceforge.net" BORDER="0"></A>
+</blockquote>
+
+</body>
+</html>
diff --git a/mesalib/docs/devinfo.html b/mesalib/docs/devinfo.html
index 8887dd026..d9e82e29d 100644
--- a/mesalib/docs/devinfo.html
+++ b/mesalib/docs/devinfo.html
@@ -72,6 +72,13 @@ If you use tabs, set them to 8 columns
</p>
<p>
+Line width: the preferred width to fill comments and code in Mesa is 78
+columns. Exceptions are sometimes made for clarity (e.g. tabular data is
+sometimes filled to a much larger width so that extraneous carriage returns
+don't obscure the table).
+</p>
+
+<p>
Brace example:
</p>
<pre>
@@ -81,10 +88,26 @@ Brace example:
else {
bar;
}
+
+ switch (condition) {
+ case 0:
+ foo();
+ break;
+
+ case 1: {
+ ...
+ break;
+ }
+
+ default:
+ ...
+ break;
+ }
</pre>
<p>
Here's the GNU indent command which will best approximate my preferred style:
+(Note that it won't format switch statements in the preferred way)
</p>
<pre>
indent -br -i3 -npcs --no-tabs infile.c -o outfile.c
@@ -114,6 +137,16 @@ Function name examples:
_mesa_foo_bar() - an internal non-static Mesa function
</pre>
+<p>
+Places that are not directly visible to the GL API should prefer the use
+of <tt>bool</tt>, <tt>true</tt>, and
+<tt>false</tt> over <tt>GLboolean</tt>, <tt>GL_TRUE</tt>, and
+<tt>GL_FALSE</tt>. In C code, this may mean that
+<tt>#include &lt;stdbool.h&gt;</tt> need to be added. The
+<tt>try_emit_</tt>* methods in src/mesa/program/ir_to_mesa.cpp and
+src/mesa/state_tracker/st_glsl_to_tgsi.cpp can serve as an example.
+</p>
+
<H2>Making a New Mesa Release</H2>
diff --git a/mesalib/docs/dispatch.html b/mesalib/docs/dispatch.html
index e5587c1a2..c3a33b90b 100644
--- a/mesalib/docs/dispatch.html
+++ b/mesalib/docs/dispatch.html
@@ -198,9 +198,7 @@ few preprocessor defines.</p>
<ul>
<li>If <tt>GLX_USE_TLS</tt> is defined, method #4 is used.</li>
<li>If <tt>PTHREADS</tt> is defined, method #3 is used.</li>
-<li>If any of <tt>PTHREADS</tt>,
-<tt>WIN32_THREADS</tt>, or <tt>BEOS_THREADS</tt>
-is defined, method #2 is used.</li>
+<li>If <tt>WIN32_THREADS</tt> is defined, method #2 is used.</li>
<li>If none of the preceeding are defined, method #1 is used.</li>
</ul>
diff --git a/mesalib/docs/download.html b/mesalib/docs/download.html
index df4f7a728..08641f8ac 100644
--- a/mesalib/docs/download.html
+++ b/mesalib/docs/download.html
@@ -84,7 +84,6 @@ src/mesa - sources for the main Mesa library and device drivers
src/gallium - sources for Gallium and Gallium drivers
src/glu - libGLU source code
src/glx - sources for building libGL with full GLX and DRI support
-src/glw - Xt/Motif/OpenGL widget code
</pre>
If you downloaded and unpacked the MesaGLUT.x.y.z package:
diff --git a/mesalib/docs/faq.html b/mesalib/docs/faq.html
index 071381c5a..bf6545fd5 100644
--- a/mesalib/docs/faq.html
+++ b/mesalib/docs/faq.html
@@ -204,8 +204,13 @@ If you don't already have GLUT installed, you should grab
</a></p>
+<h2><a name="part2">2.4 Where is the GLw library?</a></h2>
+<p>
+<a name="part2">GLw (OpenGL widget library) is now available from a separate <a href="http://cgit.freedesktop.org/mesa/glw/">git repository</a>. Unless you're using very old Xt/Motif applications with OpenGL, you shouldn't need it.
+</a></p>
+
-<h2><a name="part2">2.4 What's the proper place for the libraries and headers?</a></h2>
+<h2><a name="part2">2.5 What's the proper place for the libraries and headers?</a></h2>
<p>
<a name="part2">On Linux-based systems you'll want to follow the
</a><a href="http://oss.sgi.com/projects/ogl-sample/ABI/index.html"
diff --git a/mesalib/docs/fbdev-dri.html b/mesalib/docs/fbdev-dri.html
deleted file mode 100644
index 0eea5e8e3..000000000
--- a/mesalib/docs/fbdev-dri.html
+++ /dev/null
@@ -1,343 +0,0 @@
-<html><head><title>Mesa fbdev/DRI Environment</title>
-
-
-
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<body>
-
-<center><h1>Mesa fbdev/DRI Drivers</h1></center>
-<br>
-
-<h1><center>NOTE: this information is obsolete and will be removed at
-a future date</center></h1>
-
-<h1>1. Introduction</h1>
-
-<p>
-The fbdev/DRI environment supports hardware-accelerated 3D rendering without
-the X window system. This is typically used for embedded applications.
-</p>
-
-<p>
-Contributors to this project include Jon Smirl, Keith Whitwell and Dave Airlie.
-</p>
-
-<p>
-Applications in the fbdev/DRI environment use
-the MiniGLX interface to choose pixel
-formats, create rendering contexts, etc. It's a subset of the GLX and
-Xlib interfaces allowing some degree of application portability between
-the X and X-less environments.
-</p>
-
-<p>
-Note that this environment is not well-supported and these instructions
-may not be completely up to date.
-</p>
-<br>
-
-
-
-<h1>2. Compilation</h1>
-<p>
-
-<h2>2.1 glxproto</h2>
-
-Get <a href="http://cvsweb.xfree86.org/cvsweb/*checkout*/xc/include/GL/glxproto.h?rev=1.9">glxproto.h</a>. Copy it to the /mesa/include/GL/ directory.
-</p>
-
-<h2>2.2 libpciaccess</h2>
-<p>
-Check if you have libpciaccess installed:
-</p>
-
-<pre>pkg-config --modversion pciaccess
-</pre>
-<p>
-If not you can download the latest code from:
-</p>
-<pre> git clone git://anongit.freedesktop.org/git/xorg/lib/libpciaccess
-</pre>
-<p>
-Run autogen.sh to generate a configure file. autogen.sh uses autoconf
-utility. This utility may not be installed with your linux distro,
-check if it is available. if not you can use your package manager or
-type:
-</p>
-<pre>sudo apt-get install autoconf
-</pre>
-The next step is to install the libpciaccess library.
-<pre>make
-make install
-</pre>
-<p> Now your libpciaccess.a file is saved into /usr/local/lib
-directory. If you have a libpciaccess.a in /usr/lib you may simply copy
-and overwrite these files. Don't forget to copy libpciaccess.pc file to
-/usr/lib/pkgconfig, which is also located in /usr/local/lib/pkgconfig/.
-Or you may use the following system variables:
-</p>
-<pre>export LD_LIBRARY_PATH=/usr/local/lib
-export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
-</pre>
-
-<h2>2.3 drm</h2>
-
-<p>The next step is to compile the drm. DRM consists of two seperate parts,
-the DRM client library(lindrm.so) and kernel device module(such as
-radeon.ko). We need to make a small change in kernel device module. So
-you need to download the kernel source. You may choose the nearest
-mirror from www.kernel.org, or you are using Fedora Core 5, for
-example, you may need to install RPMs such as:
-kernel-smp-devel-2.16.15-1.2054_FC5.i686.rpm
-kernel-devel-2.6.15-1.2054_FC5.i686.rpm
-etc. You can find a detailed information <a href="http://www.howtoforge.com/kernel_compilation_fedora">here.</a>
-</p>
-
-<p>You will find drm_drv.c at /usr/src/LINUX-VERSION/drivers/char/drm/. Edit this code and comment out the following part:
-</p>
-
-<pre>
- /* ||
- ((ioctl-&gt;flags &amp; DRM_MASTER) &amp;&amp; !priv-&gt;master)*/
-</pre>
-Now you are ready to compile your kernel. If your kernel version is
-identical to the version you have compiled, you can simply over write
-your new "ko" files over older ones. If you have compiled a different
-kernel, you must configure your grub or lilo to be able to boot your
-new kernel. <p>
-You'll need fbdev header files. Check with:
-</p>
-<pre>
- ls -l /usr/include/linux/fb.
-</pre>
-<p>This file may be missing if you have not installed linux header files.
-
-
-<h2>2.4 Mesa</h2>
-
-</p><p>Get latest development Mesa sources from git repository
-(currently 7.1-prerelease)
-</p>
-<pre>
- git clone git://anongit.freedesktop.org/git/mesa/mesa
-</pre>
-
-<p>You will need the makedepend utility which is a part of mesa project
-to build your linux-solo. You probably wont have this utility. You can
-download its source from following git repulsitory:
-</p>
-<pre>
- git clone git://anongit.freedesktop.org/git/xorg/util/makedepend
-</pre>
-
-<p>Get the latest stable mesa version from SourceForge (currently 7.0.3)
-<a href="http://sourceforge.net/project/showfiles.php?group_id=3">http://sourceforge.net/project/showfiles.php?group_id=3</a>
-</p>
-
-<p>Copy the miniglx folder from 7.1-prerelease to 7.0.3.
-You may also extract GLUT to 7.0.3 version at this step.
-</p>
-
-<p>Edit linux-solo.conf at /conf directory, just only compile the
-graphics driver you need, delete the unwanted drivers names from the
-list(some drivers are causing problems...)
-</p>
-<pre>
- while(build==0)
- {
- make linux-solo
-
- There will be some missing header files, copy them from 7.1-prerelease
- }
-</pre>
-
-<p>
-When complete you should have the following:
-</p>
-<ul>
-<li>lib/libGL.so - the GL library which applications link with
-</li><li>lib/*_dri_so - DRI drivers
-</li><li>lib/miniglx.conf - sample MiniGLX config file
-</li><li>progs/miniglx/* - several MiniGLX sample programs
-</li></ul>
-
-To install these files into appropriate locations in system:
-<pre>
- make install
-</pre>
-
-Now your openGL libraries are copied to /usr/local/lib and
-miniglx.conf is copied to /etc. You may copy them to /usr/lib and
-overwrite your old GL libraries. Or you may export following variable:
-
-<pre>
- export LIBGL_DRIVERS_PATH=/usr/local/lib
-</pre>
-<br>
-
-
-<h1>3. Using fbdev/DRI</h1>
-
-<p>
-If an X server currently running, exit/stop it so you're working from
-the console. Following command shuts down the x window and also the multi user support.
-</p>
-<pre>
- init 1
-</pre>
-
-<p>Also you may define the runlevel as 1 in "/etc/inittab". Your system
-will always start in single user mode and without x-window with this
-option set.
-</p><h2>3.1 Load Kernel Modules</h2>
-
-<p>
-You'll need to load the kernel modules specific to your graphics hardware.
-Typically, this consists of the agpgart module, an fbdev driver module
-and the DRM kernel module.
-</p>
-<p>
-As root, the kernel modules can be loaded as follows:
-</p>
-
-<p>
-If you have Intel i915/i945 hardware:
-</p>
-<pre> modprobe agpgart # the AGP GART module
- modprobe intelfb # the Intel fbdev driver
- modprobe i915 # the i915/945 DRI kernel module
-</pre>
-
-<p>
-If you have ATI Radeon/R200 hardware:
-</p>
-<pre> modprobe agpgart # the AGP GART module
- modprobe radeonfb # the Radeon fbdev driver
- modprobe radeon # the Radeon DRI kernel module
-</pre>
-
-<p>
-If you have ATI Rage 128 hardware:
-</p>
-<pre> modprobe agpgart # the AGP GART module
- modprobe aty128fb # the Rage 128 fbdev driver
- modprobe r128 # the Rage 128 DRI kernel module
-</pre>
-
-<p>
-If you have Matrox G200/G400 hardware:
-</p>
-<pre> modprobe agpgart # the AGP GART module
- modprobe mgafb # the Matrox fbdev driver
- modprobe mga # the Matrox DRI kernel module
-</pre>
-
-<p>
-To verify that the agpgart, fbdev and drm modules are loaded:
-</p>
-<pre> ls -l /dev/agpgart /dev/fb* /dev/dri
-</pre>
-<p>
-Alternately, use lsmod to inspect the currently installed modules.
-If you have problems, look at the output of dmesg.
-</p>
-
-
-<h2>3.2 Configuration File</h2>
-
-<p>
-review/edit /etc/miniglx.conf.
-Alternately, the MINIGLX_CONF environment variable can be used to
-indicate the location of miniglx.conf
-</p>
-
-To determine the pciBusID value, run lspci and examine the output.
-For example:
-<p></p>
-<pre> /sbin/lspci:
- 00:02.0 VGA compatible controller: Intel Corporation 82915G/GV/910GL Express Chipset Family Graphics Controller (rev 04)
-</pre>
-<p>
-00:02.0 indicates that pciBusID should be PCI:0:2:0
-</p>
-
-
-
-
-<h2>3.3 Running fbdev/DRI Programs</h2>
-
-<p>
-Make sure your LD_LIBRARY_PATH environment variable is set to the
-location of the libGL.so library. You may need to append other paths
-to LD_LIBRARY_PATH if libpciaccess.so is in a non-standard location,
-for example.
-</p>
-
-<p>
-Change to the <code>Mesa/progs/miniglx/</code> directory and
-start the sample_server program in the background:
-</p>
-<pre> ./sample_server &amp;
-</pre>
-
-<p>
-Then try running the <code>miniglxtest</code> program:
-</p>
-<pre> ./miniglxtest
-</pre>
-<p>
-You should see a rotating quadrilateral which changes color as it rotates.
-It will exit automatically after a bit.
-</p>
-
-<p>
-If you run other tests in the miniglx/ directory, you may want to run
-them from a remote shell so that you can stop them with ctrl-C.
-</p>
-<br>
-
-
-<h1>4.0 Troubleshooting</h1>
-
-<ol>
-<li>
-If you try to run miniglxtest and get the following:
-<br>
-<pre> [miniglx] failed to probe chipset
- connect: Connection refused
- server connection lost
-</pre>
-It means that the sample_server process is not running.
-<br>
-<br>
-</li>
-</ol>
-
-
-<h1>5.0 Programming Information</h1>
-
-<p>
-OpenGL/Mesa is interfaced to fbdev via the MiniGLX interface.
-MiniGLX is a subset of Xlib and GLX API functions which provides just
-enough functionality to setup OpenGL rendering and respond to simple
-input events.
-</p>
-
-<p>
-Since MiniGLX is a subset of the usual Xlib and GLX APIs, programs written
-to the MiniGLX API can also be run on full Xlib/GLX implementations.
-This allows some degree of flexibility for software development and testing.
-</p>
-
-<p>
-However, the MiniGLX API is not binary-compatible with full Xlib/GLX.
-Some of the structures are different and some macros/functions work
-differently.
-See the GL/miniglx.h header file for details.
-</p>
-
-
-
-</body>
-</html>
diff --git a/mesalib/docs/glfbdev-driver.html b/mesalib/docs/glfbdev-driver.html
deleted file mode 100644
index 981df7c08..000000000
--- a/mesalib/docs/glfbdev-driver.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<HTML>
-
-<TITLE>Mesa glFBDev Driver</TITLE>
-
-<link rel="stylesheet" type="text/css" href="mesa.css"></head>
-
-<BODY>
-
-<center><H1>Mesa glFBDev Driver</H1></center>
-
-
-<H1>1. Introduction</H1>
-
-<p>
-The GLFBDev driver interface allows one to do OpenGL rendering into a
-framebuffer managed with the Linux's fbdev interface.
-</p>
-
-<p>
-Basically, the programmer uses the fbdev functions to initialize the
-graphics hardware and setup the framebuffer.
-Then, using a calls to Mesa's glFBDev API functions, one can render
-into the framebuffer with the OpenGL API functions.
-</p>
-
-<p>
-Note, only software rendering is supported; there is no hardware
-acceleration.
-</p>
-
-
-<p>
-The GL/glfbdev.h header file defines the glFBDev interface.
-</p>
-
-<p>
-The progs/fbdev/glfbdevtest.c demonstrates how to use the glFBDev interface.
-</p>
-
-
-<p>
-For more information about fbdev, see the
-<a href="http://www.tldp.org/HOWTO/Framebuffer-HOWTO.html" target="_parent">
-Framebuffer Howto</a>
-</p>
-<p>
-You will need at minimum, a framebuffer device, check /dev/fb0
-</p>
-
-<h1>2. Compilation</h1>
-
-<p>
-To compile Mesa with support for the glFBDev interface:
-<pre>
- make realclean
- make linux-fbdev
-</pre>
-
-<p>
-When compilation is finished look in progs/glfbdev/ for the glfbdevtest demo.
-</p>
-<h1>3. Permissions</h1>
-
-<p>
-Typically /dev/fb/0 is grouped to the video group. It may be useful to add
-your user to the video group so the demos will not have to be run as root.
-To use fbdevglut with the prefered tty input, you should add the user to the
-tty group as well
-<p>
-
-<h1>4. Using fbdevglut</h1>
-Almost all of the programs in the progs directory use glut, and they compile with fbdevglut.
-
-<p>
-To compile the redbook sample programs:
-<pre>
- cd progs/redbook
- make
-</pre>
-</p>
-<p>glut features not supported:
-<li>Overlays
-<li>Subwindows
-<li>Input devices other than Keyboard/Mouse
-<li>No support for GLUT_MULTISAMPLE, GLUT_STEREO, or GLUT_LUMINANCE
-<li>Cursor and Menu Support will flicker in GLUT_SINGLE mode
-
-<p>Keyboard input is read by opening /dev/tty and reading keycodes in medium raw mode.
-<p>Mouse input is read from env var MOUSE, or /dev/gpmdata and should be in ms3 format.
-To forward data in this format to /dev/gpmdata, run gpm with the -Rms3 option.
-<p> glutInit allows glut programs to pass parameters to the glut library, currently the
-following options are supported for fbdevglut:
-<p><li>-geometry widthxheight -- This will force the resolution to be widthxheight instead of autodetecting.
-The modes are read from /etc/fb.modes
-<p><li>-bpp -- This will force the bitdepth to the one specified
-<p><li>-vt -- This allows you to specify the virtual terminal to attach keyboard input to. It is useful to specify when running inside screen.
-<p><li>-mousespeed -- A floating point multiplication factor to increase mouse speed
-<p><li>-nomouse -- Disable mouse support
-<p><li>-nokeyboard -- Disable keyboard support (this will probably break mouse support as well)
-<p><li>-stdin -- Use stdin for input instead of attaching to kbd in medium-raw mode.
-This will make it impossible to detect keypresses like Shift+Tab, you will also need to specify -gpmmouse for mouse support. This option can be used with a debugger, and it is possible to single step a program with gdb and set the FRAMEBUFFER environment variable to a different framebuffer for display. The program will not be able to handle vt switching on it's own, so it will always display.
-<p><li>-gpmmouse -- This will attempt to connect to the /dev/gpmctl socket using liblow
-for mouse data. Gpm does not provide this data when in graphics mode, so vt switching
-will briefly display text. This mode typically has no initial mouse delay.
-<p><li>-- Ignore any additional arguments
-<p>Notes:
-<p>
-1. The mouse pointer flickers in single buffering mode, as it must be rendered in software. Hopefully in the future there will be a way to access hardware cursors in fbdev devices.
-</p>
-</body>
-</html>
diff --git a/mesalib/docs/install.html b/mesalib/docs/install.html
index b82b1d743..313f36337 100644
--- a/mesalib/docs/install.html
+++ b/mesalib/docs/install.html
@@ -157,9 +157,6 @@ lrwxrwxrwx 1 brian users 20 Mar 26 07:53 libGLU.so.1 -> libGLU.so
lrwxrwxrwx 1 brian users 12 Mar 26 07:53 libglut.so -> libglut.so.3*
lrwxrwxrwx 1 brian users 16 Mar 26 07:53 libglut.so.3 -> libglut.so.3.7.1*
-rwxr-xr-x 1 brian users 597754 Mar 26 07:53 libglut.so.3.7.1*
-lrwxrwxrwx 1 brian users 11 Mar 26 08:04 libGLw.so -> libGLw.so.1*
-lrwxrwxrwx 1 brian users 15 Mar 26 08:04 libGLw.so.1 -> libGLw.so.1.0.0*
--rwxr-xr-x 1 brian users 20750 Mar 26 08:04 libGLw.so.1.0.0*
lrwxrwxrwx 1 brian users 14 Mar 26 07:53 libOSMesa.so -> libOSMesa.so.6*
lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSMesa.so.6.1.060100*
-rwxr-xr-x 1 brian users 23871 Mar 26 07:53 libOSMesa.so.6.1.060100*
@@ -172,8 +169,6 @@ lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSM
<br>
<b>libglut</b> is the GLUT library.
<br>
-<b>libGLw</b> is the Xt/Motif OpenGL drawing area widget library.
-<br>
<b>libOSMesa</b> is the OSMesa (Off-Screen) interface library.
</p>
@@ -181,22 +176,10 @@ lrwxrwxrwx 1 brian users 23 Mar 26 07:53 libOSMesa.so.6 -> libOSM
If you built the DRI hardware drivers, you'll also see the DRI drivers:
</p>
<pre>
--rwxr-xr-x 1 brian users 15607851 Jul 21 12:11 ffb_dri.so
--rwxr-xr-x 1 brian users 15148747 Jul 21 12:11 i810_dri.so
--rwxr-xr-x 1 brian users 14497814 Jul 21 12:11 i830_dri.so
-rwxr-xr-x 1 brian users 16895413 Jul 21 12:11 i915_dri.so
--rwxr-xr-x 1 brian users 11320803 Jul 21 12:11 mach64_dri.so
--rwxr-xr-x 1 brian users 11418014 Jul 21 12:12 mga_dri.so
--rwxr-xr-x 1 brian users 11064426 Jul 21 12:12 r128_dri.so
-rwxr-xr-x 1 brian users 11849858 Jul 21 12:12 r200_dri.so
-rwxr-xr-x 1 brian users 16050488 Jul 21 12:11 r300_dri.so
-rwxr-xr-x 1 brian users 11757388 Jul 21 12:12 radeon_dri.so
--rwxr-xr-x 1 brian users 11232304 Jul 21 12:13 s3v_dri.so
--rwxr-xr-x 1 brian users 11062970 Jul 21 12:13 savage_dri.so
--rwxr-xr-x 1 brian users 11214212 Jul 21 12:13 sis_dri.so
--rwxr-xr-x 1 brian users 11368736 Jul 21 12:13 tdfx_dri.so
--rwxr-xr-x 1 brian users 10598868 Jul 21 12:13 trident_dri.so
--rwxr-xr-x 1 brian users 10997120 Jul 21 12:13 unichrome_dri.so
</pre>
<p>
@@ -327,7 +310,6 @@ Documentation for other environments (some may be very out of date):
<LI><A HREF="README.GGI">README.GGI</A> - GGI
<LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver
<LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin
-<LI><A HREF="README.BEOS">README.BEOS</A> - BeOS
<LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver
<LI><A HREF="README.DJ">README.DJ</A> - DJGPP
<LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS
diff --git a/mesalib/docs/libGL.txt b/mesalib/docs/libGL.txt
index 750917d10..d06b4e62a 100644
--- a/mesalib/docs/libGL.txt
+++ b/mesalib/docs/libGL.txt
@@ -1,197 +1,197 @@
-
-
-
-Introduction
-------------
-
-This document describes the implementation of the XFree86 4.0 libGL.so
-library defined by the Linux/OpenGL Base specification found at
-http://reality.sgi.com/opengl/linux/linuxbase.html.
-
-The documentation is divided into two sections:
- User's Guide
- Driver Developer's Guide
-
-Author: Brian Paul (brian@precisioninsight.com)
-Date: February 2000
-
-
-
-User's Guide
-------------
-
-Using libGL.so
-
-The libGL.so library defines the gl- and glX-prefixed functions needed to
-run OpenGL programs. OpenGL client applications should link with the
--lGL option to use it.
-
-libGL.so serves two primary functions: GLX protocol generation for indirect
-rendering and loading/management of hardware drivers for direct rendering.
-
-When libGL.so initializes itself it uses the DRI to determine the
-appropriate hardware driver for each screen on the local X display.
-The hardware drivers are expected to be in the /usr/X11R6/lib/modules/dri/
-directory. Drivers are named with the convention <name>_dri.so where
-<name> is a driver such as "tdfx", "i810", "gamma", etc.
-
-The LIBGL_DRIVERS_DIR environment variable may be used to specify a
-different DRI modules directory, overriding /usr/X11R6/lib/modules/dri/.
-This environment variable is ignored in setuid programs for security
-reasons.
-
-When libGL.so is unable to locate appropriate hardware drivers it will
-fall back to using indirect GLX rendering.
-
-To aid in solving problems, libGL.so will print diagnostic messages to
-stderr if the LIBGL_DEBUG environment variable is defined.
-
-libGL.so is thread safe. The overhead of thread safety for common,
-single-thread clients is negligible. However, the overhead of thread
-safety for multi-threaded clients is significant. Each GL API call
-requires two calls to pthread_get_specific() which can noticably
-impact performance. Warning: libGL.so is thread safe but individual
-DRI drivers may not be. Please consult the documentation for a driver
-to learn if it is thread safe.
-
-
-
-Indirect Rendering
-
-You can force indirect rendering mode by setting the LIBGL_ALWAYS_INDIRECT
-environment variable. Hardware acceleration will not be used.
-
-
-
-libGL.so Extensibility
-
-libGL.so is designed to be extended without upgrading. That is,
-drivers may install new OpenGL extension functions into libGL.so
-without requiring libGL.so to be replaced. Clients of libGL.so should
-use the glXGetProcAddressEXT() function to obtain the address of
-functions by name. For more details of GLX_ARB_get_proc_address see
-http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.spec
-
-libGL.so is also designed with flexibility such that it may be used
-with many generations of hardware drivers to come.
-
-
-
-
-Driver Developer's Guide
-------------------------
-
-This section describes the requirements to make an XFree86 4.0
-libGL.so-compatible hardware driver. It is not intended for end
-users of libGL.so.
-
-
-XFree86 source files
-
-libGL.so is built inside XFree86 with sources found in xc/lib/GL/.
-Specifically, libGL.so is built from:
-
- xc/lib/GL/glx/*.c
- xc/lib/dri/XF86dri.c
- xc/lib/dri/dri_glx.c
- xc/lib/GL/mesa/src/glapi.c
- xc/lib/GL/mesa/src/glapitemp.h
- xc/lib/GL/mesa/src/glapitable.h
- xc/lib/GL/mesa/src/glapioffsets.h
- xc/lib/GL/mesa/src/glapinoop.c
- xc/lib/GL/mesa/src/glheader.h
- xc/lib/GL/mesa/src/glthread.c
- xc/lib/GL/mesa/src/glthread.h
- xc/lib/GL/mesa/src/X86/glapi_x86.S
- xc/lib/GL/mesa/src/X86/assyntax.h
-
-Understand that the mesa/src/gl*.[ch] files are not tied to Mesa. They
-have no dependencies on the rest of Mesa and are designed to be reusable
-in a number of projects.
-
-The glapi_x86.X and assyntax.h files implement x86-optimized dispatch
-of GL functions. They are not required; C-based dispatch can be used
-instead, with a slight performance penalty.
-
-
-
-Driver loading and binding
-
-When libGL.so initializes itself (via the __glXInitialize function) a
-call is made to driCreateDisplay(). This function uses DRI facilities
-to determine the driver file appropriate for each screen on the local
-display. Each screen's driver is then opened with dlopen() and asked
-for its __driCreateScreen() function. The pointers to the __driCreateScreen()
-functions are kept in an array, indexed by screen number, in the
-__DRIdisplayRec struct.
-
-When a driver's __driCreateScreen() function is called, it must initialize
-a __DRIscreenRec struct. This struct acts as the root of a tree of
-function pointers which are called to create and destroy contexts and
-drawables and perform all the operations needed by the GLX interface.
-See the xc/lib/GL/glx/glxclient.h file for details.
-
-
-
-Dynamic Extension Function Registration
-
-In order to provide forward compatibility with future drivers, libGL.so
-allows drivers to register new OpenGL extension functions which weren't
-known when libGL.so was built.
-
-The register_extensions() function in xc/lib/GL/dri/dri_glx.c is called
-as soon as libGL.so is loaded. This is done with gcc's constructor
-attribute. This mechanism will likely have to be changed for other compilers.
-
-register_extensions() loops over all local displays and screens, determines
-the DRI driver for each, and calls the driver's __driRegisterExtensions()
-function, if present.
-
-The __driRegisterExtensions() function can add new entrypoints to libGL
-by calling:
-
- GLboolean _glapi_add_entrypoint(const char *funcName, GLuint offset)
-
-The parameters are the name of the function (such as "glFoobarEXT") and the
-offset of the dispatch slot in the API dispatch table. The return value
-indicates success (GL_TRUE) or failure (GL_FALSE).
-
-_glapi_add_entrypoint() will synthesize entrypoint code in assembly
-language. Assembly languages is required since parameter passing
-can't be handled correctly using a C-based solution.
-
-The address of the new entrypoint is obtained by calling the
-glXGetProcAddressARB() function.
-
-The dispatch offset number MUST be a number allocated by SGI in the same
-manner in which new GL_* constants are allocated. Using an arbitrary
-offset number will result in many problems.
-
-
-
-Dispatch Management
-
-When a GL context is made current, the driver must install its dispatch
-table as the current dispatch table. This is done by calling
-
- void _glapi_set_dispatch(struct _glapi_table *dispatch);
-
-This will install the named dispatch table for the calling thread.
-The current dispatch table for a thread can be obtained by calling
-
- struct _glapi_table *_glapi_get_dispatch(void);
-
-For higher performance in the common single-thread case, the global
-variable _glapi_Dispatch will point to the current dispatch table.
-This variable will be NULL when in multi-thread mode.
-
-
-
-Context Management
-
-libGL.so uses the XFree86 xthreads package to manage a thread-specific
-current context pointer. See __glXGet/SetCurrentContext() in glext.c
-
-Drivers may use the _glapi_set/get_context() functions to maintain
-a private thread-specific context pointer.
-
+
+
+
+Introduction
+------------
+
+This document describes the implementation of the XFree86 4.0 libGL.so
+library defined by the Linux/OpenGL Base specification found at
+http://reality.sgi.com/opengl/linux/linuxbase.html.
+
+The documentation is divided into two sections:
+ User's Guide
+ Driver Developer's Guide
+
+Author: Brian Paul (brian@precisioninsight.com)
+Date: February 2000
+
+
+
+User's Guide
+------------
+
+Using libGL.so
+
+The libGL.so library defines the gl- and glX-prefixed functions needed to
+run OpenGL programs. OpenGL client applications should link with the
+-lGL option to use it.
+
+libGL.so serves two primary functions: GLX protocol generation for indirect
+rendering and loading/management of hardware drivers for direct rendering.
+
+When libGL.so initializes itself it uses the DRI to determine the
+appropriate hardware driver for each screen on the local X display.
+The hardware drivers are expected to be in the /usr/X11R6/lib/modules/dri/
+directory. Drivers are named with the convention <name>_dri.so where
+<name> is a driver such as "radeon", "i965", "nouveau", etc.
+
+The LIBGL_DRIVERS_DIR environment variable may be used to specify a
+different DRI modules directory, overriding /usr/X11R6/lib/modules/dri/.
+This environment variable is ignored in setuid programs for security
+reasons.
+
+When libGL.so is unable to locate appropriate hardware drivers it will
+fall back to using indirect GLX rendering.
+
+To aid in solving problems, libGL.so will print diagnostic messages to
+stderr if the LIBGL_DEBUG environment variable is defined.
+
+libGL.so is thread safe. The overhead of thread safety for common,
+single-thread clients is negligible. However, the overhead of thread
+safety for multi-threaded clients is significant. Each GL API call
+requires two calls to pthread_get_specific() which can noticably
+impact performance. Warning: libGL.so is thread safe but individual
+DRI drivers may not be. Please consult the documentation for a driver
+to learn if it is thread safe.
+
+
+
+Indirect Rendering
+
+You can force indirect rendering mode by setting the LIBGL_ALWAYS_INDIRECT
+environment variable. Hardware acceleration will not be used.
+
+
+
+libGL.so Extensibility
+
+libGL.so is designed to be extended without upgrading. That is,
+drivers may install new OpenGL extension functions into libGL.so
+without requiring libGL.so to be replaced. Clients of libGL.so should
+use the glXGetProcAddressEXT() function to obtain the address of
+functions by name. For more details of GLX_ARB_get_proc_address see
+http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.spec
+
+libGL.so is also designed with flexibility such that it may be used
+with many generations of hardware drivers to come.
+
+
+
+
+Driver Developer's Guide
+------------------------
+
+This section describes the requirements to make an XFree86 4.0
+libGL.so-compatible hardware driver. It is not intended for end
+users of libGL.so.
+
+
+XFree86 source files
+
+libGL.so is built inside XFree86 with sources found in xc/lib/GL/.
+Specifically, libGL.so is built from:
+
+ xc/lib/GL/glx/*.c
+ xc/lib/dri/XF86dri.c
+ xc/lib/dri/dri_glx.c
+ xc/lib/GL/mesa/src/glapi.c
+ xc/lib/GL/mesa/src/glapitemp.h
+ xc/lib/GL/mesa/src/glapitable.h
+ xc/lib/GL/mesa/src/glapioffsets.h
+ xc/lib/GL/mesa/src/glapinoop.c
+ xc/lib/GL/mesa/src/glheader.h
+ xc/lib/GL/mesa/src/glthread.c
+ xc/lib/GL/mesa/src/glthread.h
+ xc/lib/GL/mesa/src/X86/glapi_x86.S
+ xc/lib/GL/mesa/src/X86/assyntax.h
+
+Understand that the mesa/src/gl*.[ch] files are not tied to Mesa. They
+have no dependencies on the rest of Mesa and are designed to be reusable
+in a number of projects.
+
+The glapi_x86.X and assyntax.h files implement x86-optimized dispatch
+of GL functions. They are not required; C-based dispatch can be used
+instead, with a slight performance penalty.
+
+
+
+Driver loading and binding
+
+When libGL.so initializes itself (via the __glXInitialize function) a
+call is made to driCreateDisplay(). This function uses DRI facilities
+to determine the driver file appropriate for each screen on the local
+display. Each screen's driver is then opened with dlopen() and asked
+for its __driCreateScreen() function. The pointers to the __driCreateScreen()
+functions are kept in an array, indexed by screen number, in the
+__DRIdisplayRec struct.
+
+When a driver's __driCreateScreen() function is called, it must initialize
+a __DRIscreenRec struct. This struct acts as the root of a tree of
+function pointers which are called to create and destroy contexts and
+drawables and perform all the operations needed by the GLX interface.
+See the xc/lib/GL/glx/glxclient.h file for details.
+
+
+
+Dynamic Extension Function Registration
+
+In order to provide forward compatibility with future drivers, libGL.so
+allows drivers to register new OpenGL extension functions which weren't
+known when libGL.so was built.
+
+The register_extensions() function in xc/lib/GL/dri/dri_glx.c is called
+as soon as libGL.so is loaded. This is done with gcc's constructor
+attribute. This mechanism will likely have to be changed for other compilers.
+
+register_extensions() loops over all local displays and screens, determines
+the DRI driver for each, and calls the driver's __driRegisterExtensions()
+function, if present.
+
+The __driRegisterExtensions() function can add new entrypoints to libGL
+by calling:
+
+ GLboolean _glapi_add_entrypoint(const char *funcName, GLuint offset)
+
+The parameters are the name of the function (such as "glFoobarEXT") and the
+offset of the dispatch slot in the API dispatch table. The return value
+indicates success (GL_TRUE) or failure (GL_FALSE).
+
+_glapi_add_entrypoint() will synthesize entrypoint code in assembly
+language. Assembly languages is required since parameter passing
+can't be handled correctly using a C-based solution.
+
+The address of the new entrypoint is obtained by calling the
+glXGetProcAddressARB() function.
+
+The dispatch offset number MUST be a number allocated by SGI in the same
+manner in which new GL_* constants are allocated. Using an arbitrary
+offset number will result in many problems.
+
+
+
+Dispatch Management
+
+When a GL context is made current, the driver must install its dispatch
+table as the current dispatch table. This is done by calling
+
+ void _glapi_set_dispatch(struct _glapi_table *dispatch);
+
+This will install the named dispatch table for the calling thread.
+The current dispatch table for a thread can be obtained by calling
+
+ struct _glapi_table *_glapi_get_dispatch(void);
+
+For higher performance in the common single-thread case, the global
+variable _glapi_Dispatch will point to the current dispatch table.
+This variable will be NULL when in multi-thread mode.
+
+
+
+Context Management
+
+libGL.so uses the XFree86 xthreads package to manage a thread-specific
+current context pointer. See __glXGet/SetCurrentContext() in glext.c
+
+Drivers may use the _glapi_set/get_context() functions to maintain
+a private thread-specific context pointer.
+
diff --git a/mesalib/docs/postprocess.html b/mesalib/docs/postprocess.html
new file mode 100644
index 000000000..2a3796942
--- /dev/null
+++ b/mesalib/docs/postprocess.html
@@ -0,0 +1,56 @@
+<HTML>
+
+<TITLE>Gallium Post-processing</TITLE>
+
+<link rel="stylesheet" type="text/css" href="mesa.css"></head>
+
+<BODY>
+
+<H1>Gallium Post-processing</H1>
+
+<p>
+The Gallium drivers support user-defined image post-processing.
+At the end of drawing a frame a post-processing filter can be applied to
+the rendered image.
+Example filters include morphological antialiasing and cell shading.
+</p>
+
+<p>
+The filters can be toggled per-app via driconf, or per-session via the
+corresponding environment variables.
+</p>
+
+<p>
+Multiple filters can be used together.
+</p>
+
+
+<H2>PP environment variables</H2>
+
+<ul>
+<li>PP_DEBUG - If defined debug information will be printed to stderr.
+</ul>
+
+<h2>Current filters</h2>
+
+<ul>
+<li>pp_nored, pp_nogreen, pp_noblue - set to 1 to remove the corresponding color channel.
+These are basic filters for easy testing of the PP queue.
+<li>pp_jimenezmlaa, pp_jimenezmlaa_color -
+<a href="http://www.iryokufx.com/mlaa/" target=_blank>Jimenez's MLAA</a>
+is a morphological antialiasing filter.
+The two versions use depth and color data, respectively.
+Which works better depends on the app - depth will not blur text, but it will
+miss transparent textures for example.
+Set to a number from 2 to 32, roughly corresponding to quality.
+Numbers higher than 8 see minimizing gains.
+<li>pp_celshade - set to 1 to enable cell shading (a more complex color filter).
+</ul>
+
+
+<br>
+<br>
+
+
+</BODY>
+</HTML>
diff --git a/mesalib/docs/sourcetree.html b/mesalib/docs/sourcetree.html
index 2e2d1d3f2..713e25b01 100644
--- a/mesalib/docs/sourcetree.html
+++ b/mesalib/docs/sourcetree.html
@@ -153,8 +153,6 @@ each directory.
<li><b>glx</b> - The GLX library code for building libGL. This is used for
direct rendering drivers. It will dynamically load one of the
xxx_dri.so drivers.
- <li><b>glw</b> - Widgets for Xt/Motif.
- <li><b>glew</b> - OpenGL Extension Wrangler library (used by demo programs)
</ul>
<li><b>progs</b> - OpenGL test and demonstration programs
<li><b>lib</b> - where the GL libraries are placed
diff --git a/mesalib/docs/subset.html b/mesalib/docs/subset.html
index 4ac2eadff..c706381e3 100644
--- a/mesalib/docs/subset.html
+++ b/mesalib/docs/subset.html
@@ -12,7 +12,7 @@
In 2002/2003 Tungsten Graphics was contracted to develop a subset Mesa/Radeon
driver for an embedded environment. The result is a reduced-size DRI driver
for the ATI R200 chip, for use with
-<a href="fbdev-dri.html">fbdev/DRI environment</a>.
+fbdev/DRI environment.
</p>
<p>
diff --git a/mesalib/docs/systems.html b/mesalib/docs/systems.html
index 5137b074e..03db779a1 100644
--- a/mesalib/docs/systems.html
+++ b/mesalib/docs/systems.html
@@ -16,14 +16,13 @@ X development environment to use Mesa.
<p>
The DRI hardware drivers for the X.org server and XFree86 provide
-hardware accelerated rendering for chips from ATI, Intel, Matrox, 3dfx
-and others on Linux and FreeBSD.
+hardware accelerated rendering for chips from ATI, Intel, and NVIDIA
+on Linux and FreeBSD.
</p>
<p>
Drivers for other assorted platforms include:
-the Amiga, Apple Macintosh, BeOS, NeXT, OS/2, MS-DOS, VMS, Windows
-9x/NT, and Direct3D.
+the Apple Macintosh and Windows.
</p>
<p>
@@ -51,7 +50,6 @@ They can be saved if someone steps up to help.
<LI>3dfx/Glide <A HREF="README.3DFX">(README.3DFX)</A>
<LI>GGI <A HREF="README.GGI">(README.GGI)</A>
<LI>Amiga Amiwin <A HREF="README.AMIWIN">(README.AMIWIN)</A>
-<LI>BeOS <A HREF="README.BEOS">(README.BEOS)</A>
<LI>Direct3D driver <A HREF="README.D3D">(README.D3D)</A>
<LI>DJGPP <A HREF="README.DJ">(README.DJ)</A>
<LI>LynxOS <A HREF="README.LYNXOS">(README.LYNXOS)</A>
diff --git a/mesalib/include/EGL/eglext.h b/mesalib/include/EGL/eglext.h
index 9915b8cab..0449ae2cd 100644
--- a/mesalib/include/EGL/eglext.h
+++ b/mesalib/include/EGL/eglext.h
@@ -390,6 +390,20 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOK) (EGLDisplay dpy, EG
#define EGL_Y_INVERTED_NOK 0x307F
#endif /* EGL_NOK_texture_from_pixmap */
+#ifndef EGL_ANDROID_image_native_buffer
+#define EGL_ANDROID_image_native_buffer 1
+struct android_native_buffer_t;
+#define EGL_NATIVE_BUFFER_ANDROID 0x3140 /* eglCreateImageKHR target */
+#endif
+
+#ifndef EGL_ANDROID_swap_rectangle
+#define EGL_ANDROID_swap_rectangle 1
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSetSwapRectangleANDROID (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
+#endif /* EGL_EGLEXT_PROTOTYPES */
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSETSWAPRECTANGLEANDROIDPROC) (EGLDisplay dpy, EGLSurface draw, EGLint left, EGLint top, EGLint width, EGLint height);
+#endif
+
#ifdef __cplusplus
}
diff --git a/mesalib/include/EGL/eglplatform.h b/mesalib/include/EGL/eglplatform.h
index fbfdce32e..8d3f72f24 100644
--- a/mesalib/include/EGL/eglplatform.h
+++ b/mesalib/include/EGL/eglplatform.h
@@ -90,6 +90,15 @@ typedef struct gbm_device *EGLNativeDisplayType;
typedef struct gbm_bo *EGLNativePixmapType;
typedef void *EGLNativeWindowType;
+#elif defined(ANDROID) /* Android */
+
+struct ANativeWindow;
+struct egl_native_pixmap_t;
+
+typedef struct ANativeWindow *EGLNativeWindowType;
+typedef struct egl_native_pixmap_t *EGLNativePixmapType;
+typedef void *EGLNativeDisplayType;
+
#elif defined(__unix__) || defined(__unix)
#ifdef MESA_EGL_NO_X11_HEADERS
diff --git a/mesalib/include/GL/internal/dri_interface.h b/mesalib/include/GL/internal/dri_interface.h
index 7b9de0359..09b2f2c8a 100644
--- a/mesalib/include/GL/internal/dri_interface.h
+++ b/mesalib/include/GL/internal/dri_interface.h
@@ -696,6 +696,9 @@ struct __DRIswrastExtensionRec {
#define __DRI_BUFFER_DEPTH_STENCIL 9 /**< Only available with DRI2 1.1 */
#define __DRI_BUFFER_HIZ 10
+/* Inofficial and for internal use. Increase when adding a new buffer token. */
+#define __DRI_BUFFER_COUNT 11
+
struct __DRIbufferRec {
unsigned int attachment;
unsigned int name;
diff --git a/mesalib/include/GL/osmesa.h b/mesalib/include/GL/osmesa.h
index 56fa23ce8..304655e7c 100644
--- a/mesalib/include/GL/osmesa.h
+++ b/mesalib/include/GL/osmesa.h
@@ -101,7 +101,7 @@ extern "C" {
typedef struct osmesa_context *OSMesaContext;
-#if defined(__BEOS__) || defined(__QUICKDRAW__)
+#if defined(__QUICKDRAW__)
#pragma export on
#endif
@@ -275,12 +275,6 @@ OSMesaGetProcAddress( const char *funcName );
GLAPI void GLAPIENTRY
OSMesaColorClamp(GLboolean enable);
-
-#if defined(__BEOS__) || defined(__QUICKDRAW__)
-#pragma export off
-#endif
-
-
#ifdef __cplusplus
}
#endif
diff --git a/mesalib/scons/crossmingw.py b/mesalib/scons/crossmingw.py
index cc046229e..4a695a440 100644
--- a/mesalib/scons/crossmingw.py
+++ b/mesalib/scons/crossmingw.py
@@ -128,6 +128,42 @@ res_builder = SCons.Builder.Builder(action=res_action, suffix='.o',
source_scanner=SCons.Tool.SourceFileScanner)
SCons.Tool.SourceFileScanner.add_scanner('.rc', SCons.Defaults.CScan)
+
+
+def compile_without_gstabs(env, sources, c_file):
+ '''This is a hack used to compile some source files without the
+ -gstabs option.
+
+ It seems that some versions of mingw32's gcc (4.4.2 at least) die
+ when compiling large files with the -gstabs option. -gstabs is
+ related to debug symbols and can be omitted from the effected
+ files.
+
+ This function compiles the given c_file without -gstabs, removes
+ the c_file from the sources list, then appends the new .o file to
+ sources. Then return the new sources list.
+ '''
+
+ # Modify CCFLAGS to not have -gstabs option:
+ env2 = env.Clone()
+ flags = str(env2['CCFLAGS'])
+ flags = flags.replace("-gstabs", "")
+ env2['CCFLAGS'] = SCons.Util.CLVar(flags)
+
+ # Build the special-case files:
+ obj_file = env2.SharedObject(c_file)
+
+ # Replace ".cpp" or ".c" with ".o"
+ o_file = c_file.replace(".cpp", ".o")
+ o_file = o_file.replace(".c", ".o")
+
+ # Replace the .c files with the specially-compiled .o file
+ sources.remove(c_file)
+ sources.append(o_file)
+
+ return sources
+
+
def generate(env):
mingw_prefix = find(env)
@@ -197,5 +233,7 @@ def generate(env):
# Avoid depending on gcc runtime DLLs
env.AppendUnique(LINKFLAGS = ['-static-libgcc'])
+ env.AddMethod(compile_without_gstabs, 'compile_without_gstabs')
+
def exists(env):
return find(env)
diff --git a/mesalib/scons/custom.py b/mesalib/scons/custom.py
index 5de5537bf..d006ded01 100644
--- a/mesalib/scons/custom.py
+++ b/mesalib/scons/custom.py
@@ -42,6 +42,7 @@ import SCons.Scanner
import fixes
+import source_list
def quietCommandLines(env):
# Quiet command lines
@@ -229,6 +230,40 @@ def createPkgConfigMethods(env):
env.AddMethod(pkg_use_modules, 'PkgUseModules')
+def parse_source_list(env, filename, names=None):
+ # parse the source list file
+ parser = source_list.SourceListParser()
+ src = env.File(filename).srcnode()
+ sym_table = parser.parse(src.abspath)
+
+ if names:
+ if isinstance(names, basestring):
+ names = [names]
+
+ symbols = names
+ else:
+ symbols = sym_table.keys()
+
+ # convert the symbol table to source lists
+ src_lists = {}
+ for sym in symbols:
+ val = sym_table[sym]
+ src_lists[sym] = [f for f in val.split(' ') if f]
+
+ # if names are given, concatenate the lists
+ if names:
+ srcs = []
+ for name in names:
+ srcs.extend(src_lists[name])
+
+ return srcs
+ else:
+ return src_lists
+
+def createParseSourceListMethod(env):
+ env.AddMethod(parse_source_list, 'ParseSourceList')
+
+
def generate(env):
"""Common environment generation code"""
@@ -240,6 +275,7 @@ def generate(env):
createConvenienceLibBuilder(env)
createCodeGenerateMethod(env)
createPkgConfigMethods(env)
+ createParseSourceListMethod(env)
# for debugging
#print env.Dump()
diff --git a/mesalib/scons/gallium.py b/mesalib/scons/gallium.py
index 1cdc11cb5..091c74078 100644
--- a/mesalib/scons/gallium.py
+++ b/mesalib/scons/gallium.py
@@ -596,6 +596,18 @@ def generate(env):
libs += ['m', 'pthread', 'dl']
env.Append(LIBS = libs)
+ # OpenMP
+ if env['openmp']:
+ if env['msvc']:
+ env.Append(CCFLAGS = ['/openmp'])
+ # When building openmp release VS2008 link.exe crashes with LNK1103 error.
+ # Workaround: overwrite PDB flags with empty value as it isn't required anyways
+ if env['build'] == 'release':
+ env['PDB'] = ''
+ if env['gcc']:
+ env.Append(CCFLAGS = ['-fopenmp'])
+ env.Append(LIBS = ['gomp'])
+
# Load tools
env.Tool('lex')
env.Tool('yacc')
diff --git a/mesalib/scons/llvm.py b/mesalib/scons/llvm.py
index 66f972df5..57fe922d0 100644
--- a/mesalib/scons/llvm.py
+++ b/mesalib/scons/llvm.py
@@ -92,7 +92,21 @@ def generate(env):
'HAVE_STDINT_H',
])
env.Prepend(LIBPATH = [os.path.join(llvm_dir, 'lib')])
- if llvm_version >= distutils.version.LooseVersion('2.7'):
+ if llvm_version >= distutils.version.LooseVersion('2.9'):
+ # 2.9
+ env.Prepend(LIBS = [
+ 'LLVMObject', 'LLVMMCJIT', 'LLVMMCDisassembler',
+ 'LLVMLinker', 'LLVMipo', 'LLVMInterpreter',
+ 'LLVMInstrumentation', 'LLVMJIT', 'LLVMExecutionEngine',
+ 'LLVMBitWriter', 'LLVMX86Disassembler', 'LLVMX86AsmParser',
+ 'LLVMMCParser', 'LLVMX86AsmPrinter', 'LLVMX86CodeGen',
+ 'LLVMSelectionDAG', 'LLVMX86Utils', 'LLVMX86Info', 'LLVMAsmPrinter',
+ 'LLVMCodeGen', 'LLVMScalarOpts', 'LLVMInstCombine',
+ 'LLVMTransformUtils', 'LLVMipa', 'LLVMAsmParser',
+ 'LLVMArchive', 'LLVMBitReader', 'LLVMAnalysis', 'LLVMTarget',
+ 'LLVMCore', 'LLVMMC', 'LLVMSupport',
+ ])
+ elif llvm_version >= distutils.version.LooseVersion('2.7'):
# 2.7
env.Prepend(LIBS = [
'LLVMLinker', 'LLVMipo', 'LLVMInterpreter',
@@ -121,6 +135,8 @@ def generate(env):
env.Append(LIBS = [
'imagehlp',
'psapi',
+ 'shell32',
+ 'advapi32'
])
if env['msvc']:
# Some of the LLVM C headers use the inline keyword without
diff --git a/mesalib/scons/source_list.py b/mesalib/scons/source_list.py
new file mode 100644
index 000000000..fbd3ef7dc
--- /dev/null
+++ b/mesalib/scons/source_list.py
@@ -0,0 +1,123 @@
+"""Source List Parser
+
+The syntax of a source list file is a very small subset of GNU Make. These
+features are supported
+
+ operators: +=, :=
+ line continuation
+ non-nested variable expansion
+ comment
+
+The goal is to allow Makefile's and SConscript's to share source listing.
+"""
+
+class SourceListParser(object):
+ def __init__(self):
+ self._reset()
+
+ def _reset(self, filename=None):
+ self.filename = filename
+
+ self.line_no = 1
+ self.line_cont = ''
+ self.symbol_table = {}
+
+ def _error(self, msg):
+ raise RuntimeError('%s:%d: %s' % (self.filename, self.line_no, msg))
+
+ def _next_dereference(self, val, cur):
+ """Locate the next $(...) in value."""
+ deref_pos = val.find('$', cur)
+ if deref_pos < 0:
+ return (-1, -1)
+ elif val[deref_pos + 1] != '(':
+ self._error('non-variable dereference')
+
+ deref_end = val.find(')', deref_pos + 2)
+ if deref_end < 0:
+ self._error('unterminated variable dereference')
+
+ return (deref_pos, deref_end + 1)
+
+ def _expand_value(self, val):
+ """Perform variable expansion."""
+ expanded = ''
+ cur = 0
+ while True:
+ deref_pos, deref_end = self._next_dereference(val, cur)
+ if deref_pos < 0:
+ expanded += val[cur:]
+ break
+
+ sym = val[(deref_pos + 2):(deref_end - 1)]
+ expanded += val[cur:deref_pos] + self.symbol_table[sym]
+ cur = deref_end
+
+ return expanded
+
+ def _parse_definition(self, line):
+ """Parse a variable definition line."""
+ op_pos = line.find('=')
+ op_end = op_pos + 1
+ if op_pos < 0:
+ self._error('not a variable definition')
+
+ if op_pos > 0 and line[op_pos - 1] in [':', '+']:
+ op_pos -= 1
+ else:
+ self._error('only := and += are supported')
+
+ # set op, sym, and val
+ op = line[op_pos:op_end]
+ sym = line[:op_pos].strip()
+ val = self._expand_value(line[op_end:].lstrip())
+
+ if op == ':=':
+ self.symbol_table[sym] = val
+ elif op == '+=':
+ self.symbol_table[sym] += ' ' + val
+
+ def _parse_line(self, line):
+ """Parse a source list line."""
+ # more lines to come
+ if line and line[-1] == '\\':
+ # spaces around "\\\n" are replaced by a single space
+ if self.line_cont:
+ self.line_cont += line[:-1].strip() + ' '
+ else:
+ self.line_cont = line[:-1].rstrip() + ' '
+ return 0
+
+ # combine with previous lines
+ if self.line_cont:
+ line = self.line_cont + line.lstrip()
+ self.line_cont = ''
+
+ if line:
+ begins_with_tab = (line[0] == '\t')
+
+ line = line.lstrip()
+ if line[0] != '#':
+ if begins_with_tab:
+ self._error('recipe line not supported')
+ else:
+ self._parse_definition(line)
+
+ return 1
+
+ def parse(self, filename):
+ """Parse a source list file."""
+ if self.filename != filename:
+ fp = open(filename)
+ lines = fp.read().splitlines()
+ fp.close()
+
+ try:
+ self._reset(filename)
+ for line in lines:
+ self.line_no += self._parse_line(line)
+ except:
+ self._reset()
+ raise
+
+ return self.symbol_table
diff --git a/mesalib/src/gallium/auxiliary/util/u_blitter.c b/mesalib/src/gallium/auxiliary/util/u_blitter.c
index 528f344a0..d8e46f07c 100644
--- a/mesalib/src/gallium/auxiliary/util/u_blitter.c
+++ b/mesalib/src/gallium/auxiliary/util/u_blitter.c
@@ -26,8 +26,8 @@
/**
* @file
- * Blitter utility to facilitate acceleration of the clear, clear_render_target, clear_depth_stencil
- * resource_copy_region functions.
+ * Blitter utility to facilitate acceleration of the clear, clear_render_target,
+ * clear_depth_stencil, and resource_copy_region functions.
*
* @author Marek Olšák
*/
@@ -197,8 +197,6 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe)
memset(&velem[0], 0, sizeof(velem[0]) * 2);
for (i = 0; i < 2; i++) {
velem[i].src_offset = i * 4 * sizeof(float);
- velem[i].instance_divisor = 0;
- velem[i].vertex_buffer_index = 0;
velem[i].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
}
ctx->velem_state = pipe->create_vertex_elements_state(pipe, 2, &velem[0]);
@@ -288,26 +286,33 @@ static void blitter_restore_CSOs(struct blitter_context_priv *ctx)
unsigned i;
/* restore the state objects which are always required to be saved */
- pipe->bind_blend_state(pipe, ctx->base.saved_blend_state);
- pipe->bind_depth_stencil_alpha_state(pipe, ctx->base.saved_dsa_state);
pipe->bind_rasterizer_state(pipe, ctx->base.saved_rs_state);
- pipe->bind_fs_state(pipe, ctx->base.saved_fs);
pipe->bind_vs_state(pipe, ctx->base.saved_vs);
pipe->bind_vertex_elements_state(pipe, ctx->base.saved_velem_state);
- ctx->base.saved_blend_state = INVALID_PTR;
- ctx->base.saved_dsa_state = INVALID_PTR;
ctx->base.saved_rs_state = INVALID_PTR;
- ctx->base.saved_fs = INVALID_PTR;
ctx->base.saved_vs = INVALID_PTR;
ctx->base.saved_velem_state = INVALID_PTR;
+ /* restore the state objects which are required to be saved for clear/copy
+ */
+ if (ctx->base.saved_blend_state != INVALID_PTR) {
+ pipe->bind_blend_state(pipe, ctx->base.saved_blend_state);
+ ctx->base.saved_blend_state = INVALID_PTR;
+ }
+ if (ctx->base.saved_dsa_state != INVALID_PTR) {
+ pipe->bind_depth_stencil_alpha_state(pipe, ctx->base.saved_dsa_state);
+ ctx->base.saved_dsa_state = INVALID_PTR;
+ }
+ if (ctx->base.saved_fs != INVALID_PTR) {
+ pipe->bind_fs_state(pipe, ctx->base.saved_fs);
+ ctx->base.saved_fs = INVALID_PTR;
+ }
+
pipe->set_stencil_ref(pipe, &ctx->base.saved_stencil_ref);
pipe->set_viewport_state(pipe, &ctx->base.saved_viewport);
pipe->set_clip_state(pipe, &ctx->base.saved_clip);
- /* restore the state objects which are required to be saved before copy/fill
- */
if (ctx->base.saved_fb_state.nr_cbufs != ~0) {
pipe->set_framebuffer_state(pipe, &ctx->base.saved_fb_state);
util_unreference_framebuffer_state(&ctx->base.saved_fb_state);
@@ -724,14 +729,14 @@ boolean is_overlap(unsigned sx1, unsigned sx2, unsigned sy1, unsigned sy2,
return sx1 < dx2 && sx2 > dx1 && sy1 < dy2 && sy2 > dy1;
}
-void util_blitter_copy_region(struct blitter_context *blitter,
- struct pipe_resource *dst,
- unsigned dstlevel,
- unsigned dstx, unsigned dsty, unsigned dstz,
- struct pipe_resource *src,
- unsigned srclevel,
- const struct pipe_box *srcbox,
- boolean ignore_stencil)
+void util_blitter_copy_texture(struct blitter_context *blitter,
+ struct pipe_resource *dst,
+ unsigned dstlevel,
+ unsigned dstx, unsigned dsty, unsigned dstz,
+ struct pipe_resource *src,
+ unsigned srclevel,
+ const struct pipe_box *srcbox,
+ boolean ignore_stencil)
{
struct blitter_context_priv *ctx = (struct blitter_context_priv*)blitter;
struct pipe_context *pipe = ctx->base.pipe;
diff --git a/mesalib/src/gallium/auxiliary/util/u_blitter.h b/mesalib/src/gallium/auxiliary/util/u_blitter.h
index e59fe6b51..df6f023a6 100644
--- a/mesalib/src/gallium/auxiliary/util/u_blitter.h
+++ b/mesalib/src/gallium/auxiliary/util/u_blitter.h
@@ -1,338 +1,341 @@
-/**************************************************************************
- *
- * 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 the rights to use, copy, modify, merge, publish,
- * distribute, sub license, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice (including the
- * next paragraph) shall be included in all copies or substantial portions
- * of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-#ifndef U_BLITTER_H
-#define U_BLITTER_H
-
-#include "util/u_framebuffer.h"
-#include "util/u_inlines.h"
-#include "util/u_memory.h"
-
-#include "pipe/p_state.h"
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-struct pipe_context;
-
-enum blitter_attrib_type {
- UTIL_BLITTER_ATTRIB_NONE,
- UTIL_BLITTER_ATTRIB_COLOR,
- UTIL_BLITTER_ATTRIB_TEXCOORD
-};
-
-struct blitter_context
-{
- /**
- * Draw a rectangle.
- *
- * \param x1 An X coordinate of the top-left corner.
- * \param y1 A Y coordinate of the top-left corner.
- * \param x2 An X coordinate of the bottom-right corner.
- * \param y2 A Y coordinate of the bottom-right corner.
- * \param depth A depth which the rectangle is rendered at.
- *
- * \param type Semantics of the attributes "attrib".
- * If type is UTIL_BLITTER_ATTRIB_NONE, ignore them.
- * If type is UTIL_BLITTER_ATTRIB_COLOR, the attributes
- * make up a constant RGBA color, and should go
- * to the GENERIC0 varying slot of a fragment shader.
- * If type is UTIL_BLITTER_ATTRIB_TEXCOORD, {a1, a2} and
- * {a3, a4} specify top-left and bottom-right texture
- * coordinates of the rectangle, respectively, and should go
- * to the GENERIC0 varying slot of a fragment shader.
- *
- * \param attrib See type.
- *
- * \note A driver may optionally override this callback to implement
- * a specialized hardware path for drawing a rectangle, e.g. using
- * a rectangular point sprite.
- */
- void (*draw_rectangle)(struct blitter_context *blitter,
- unsigned x1, unsigned y1, unsigned x2, unsigned y2,
- float depth,
- enum blitter_attrib_type type,
- const float attrib[4]);
-
- /* Whether the blitter is running. */
- boolean running;
-
- /* Private members, really. */
- struct pipe_context *pipe; /**< pipe context */
-
- void *saved_blend_state; /**< blend state */
- void *saved_dsa_state; /**< depth stencil alpha state */
- void *saved_velem_state; /**< vertex elements state */
- void *saved_rs_state; /**< rasterizer state */
- void *saved_fs, *saved_vs; /**< fragment shader, vertex shader */
-
- struct pipe_framebuffer_state saved_fb_state; /**< framebuffer state */
- struct pipe_stencil_ref saved_stencil_ref; /**< stencil ref */
- struct pipe_viewport_state saved_viewport;
- struct pipe_clip_state saved_clip;
-
- int saved_num_sampler_states;
- void *saved_sampler_states[PIPE_MAX_SAMPLERS];
-
- int saved_num_sampler_views;
- struct pipe_sampler_view *saved_sampler_views[PIPE_MAX_SAMPLERS];
-
- int saved_num_vertex_buffers;
- struct pipe_vertex_buffer saved_vertex_buffers[PIPE_MAX_ATTRIBS];
-};
-
-/**
- * Create a blitter context.
- */
-struct blitter_context *util_blitter_create(struct pipe_context *pipe);
-
-/**
- * Destroy a blitter context.
- */
-void util_blitter_destroy(struct blitter_context *blitter);
-
-/**
- * Return the pipe context associated with a blitter context.
- */
-static INLINE
-struct pipe_context *util_blitter_get_pipe(struct blitter_context *blitter)
-{
- return blitter->pipe;
-}
-
-/*
- * These CSOs must be saved before any of the following functions is called:
- * - blend state
- * - depth stencil alpha state
- * - rasterizer state
- * - vertex shader
- * - fragment shader
- */
-
-/**
- * Clear a specified set of currently bound buffers to specified values.
- */
-void util_blitter_clear(struct blitter_context *blitter,
- unsigned width, unsigned height,
- unsigned num_cbufs,
- unsigned clear_buffers,
- const float *rgba,
- double depth, unsigned stencil);
-
-void util_blitter_clear_depth_custom(struct blitter_context *blitter,
- unsigned width, unsigned height,
- double depth, void *custom_dsa);
-
-/**
- * Copy a block of pixels from one surface to another.
- *
- * You can copy from any color format to any other color format provided
- * the former can be sampled and the latter can be rendered to. Otherwise,
- * a software fallback path is taken and both surfaces must be of the same
- * format.
- *
- * The same holds for depth-stencil formats with the exception that stencil
- * cannot be copied unless you set ignore_stencil to FALSE. In that case,
- * a software fallback path is taken and both surfaces must be of the same
- * format.
- *
- * Use pipe_screen->is_format_supported to know your options.
- *
- * These states must be saved in the blitter in addition to the state objects
- * already required to be saved:
- * - framebuffer state
- * - fragment sampler states
- * - fragment sampler textures
- */
-void util_blitter_copy_region(struct blitter_context *blitter,
- struct pipe_resource *dst,
- unsigned dstlevel,
- unsigned dstx, unsigned dsty, unsigned dstz,
- struct pipe_resource *src,
- unsigned srclevel,
- const struct pipe_box *srcbox,
- boolean ignore_stencil);
-
-/**
- * Clear a region of a (color) surface to a constant value.
- *
- * These states must be saved in the blitter in addition to the state objects
- * already required to be saved:
- * - framebuffer state
- */
-void util_blitter_clear_render_target(struct blitter_context *blitter,
- struct pipe_surface *dst,
- const float *rgba,
- unsigned dstx, unsigned dsty,
- unsigned width, unsigned height);
-
-/**
- * Clear a region of a depth-stencil surface, both stencil and depth
- * or only one of them if this is a combined depth-stencil surface.
- *
- * These states must be saved in the blitter in addition to the state objects
- * already required to be saved:
- * - framebuffer state
- */
-void util_blitter_clear_depth_stencil(struct blitter_context *blitter,
- struct pipe_surface *dst,
- unsigned clear_flags,
- double depth,
- unsigned stencil,
- unsigned dstx, unsigned dsty,
- unsigned width, unsigned height);
-
-void util_blitter_custom_depth_stencil(struct blitter_context *blitter,
- struct pipe_surface *zsurf,
- struct pipe_surface *cbsurf,
- void *dsa_stage, float depth);
-
-/* The functions below should be used to save currently bound constant state
- * objects inside a driver. The objects are automatically restored at the end
- * of the util_blitter_{clear, copy_region, fill_region} functions and then
- * forgotten.
- *
- * CSOs not listed here are not affected by util_blitter. */
-
-static INLINE
-void util_blitter_save_blend(struct blitter_context *blitter,
- void *state)
-{
- blitter->saved_blend_state = state;
-}
-
-static INLINE
-void util_blitter_save_depth_stencil_alpha(struct blitter_context *blitter,
- void *state)
-{
- blitter->saved_dsa_state = state;
-}
-
-static INLINE
-void util_blitter_save_vertex_elements(struct blitter_context *blitter,
- void *state)
-{
- blitter->saved_velem_state = state;
-}
-
-static INLINE
-void util_blitter_save_stencil_ref(struct blitter_context *blitter,
- const struct pipe_stencil_ref *state)
-{
- blitter->saved_stencil_ref = *state;
-}
-
-static INLINE
-void util_blitter_save_rasterizer(struct blitter_context *blitter,
- void *state)
-{
- blitter->saved_rs_state = state;
-}
-
-static INLINE
-void util_blitter_save_fragment_shader(struct blitter_context *blitter,
- void *fs)
-{
- blitter->saved_fs = fs;
-}
-
-static INLINE
-void util_blitter_save_vertex_shader(struct blitter_context *blitter,
- void *vs)
-{
- blitter->saved_vs = vs;
-}
-
-static INLINE
-void util_blitter_save_framebuffer(struct blitter_context *blitter,
- const struct pipe_framebuffer_state *state)
-{
- blitter->saved_fb_state.nr_cbufs = 0; /* It's ~0 now, meaning it's unsaved. */
- util_copy_framebuffer_state(&blitter->saved_fb_state, state);
-}
-
-static INLINE
-void util_blitter_save_viewport(struct blitter_context *blitter,
- struct pipe_viewport_state *state)
-{
- blitter->saved_viewport = *state;
-}
-
-static INLINE
-void util_blitter_save_clip(struct blitter_context *blitter,
- struct pipe_clip_state *state)
-{
- blitter->saved_clip = *state;
-}
-
-static INLINE
-void util_blitter_save_fragment_sampler_states(
- struct blitter_context *blitter,
- int num_sampler_states,
- void **sampler_states)
-{
- assert(num_sampler_states <= Elements(blitter->saved_sampler_states));
-
- blitter->saved_num_sampler_states = num_sampler_states;
- memcpy(blitter->saved_sampler_states, sampler_states,
- num_sampler_states * sizeof(void *));
-}
-
-static INLINE void
-util_blitter_save_fragment_sampler_views(struct blitter_context *blitter,
- int num_views,
- struct pipe_sampler_view **views)
-{
- unsigned i;
- assert(num_views <= Elements(blitter->saved_sampler_views));
-
- blitter->saved_num_sampler_views = num_views;
- for (i = 0; i < num_views; i++)
- pipe_sampler_view_reference(&blitter->saved_sampler_views[i],
- views[i]);
-}
-
-static INLINE void
-util_blitter_save_vertex_buffers(struct blitter_context *blitter,
- int num_vertex_buffers,
- struct pipe_vertex_buffer *vertex_buffers)
-{
- assert(num_vertex_buffers <= Elements(blitter->saved_vertex_buffers));
-
- blitter->saved_num_vertex_buffers = 0;
- util_copy_vertex_buffers(blitter->saved_vertex_buffers,
- (unsigned*)&blitter->saved_num_vertex_buffers,
- vertex_buffers,
- num_vertex_buffers);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+/**************************************************************************
+ *
+ * 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 the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+ * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ **************************************************************************/
+
+#ifndef U_BLITTER_H
+#define U_BLITTER_H
+
+#include "util/u_framebuffer.h"
+#include "util/u_inlines.h"
+#include "util/u_memory.h"
+
+#include "pipe/p_state.h"
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct pipe_context;
+
+enum blitter_attrib_type {
+ UTIL_BLITTER_ATTRIB_NONE,
+ UTIL_BLITTER_ATTRIB_COLOR,
+ UTIL_BLITTER_ATTRIB_TEXCOORD
+};
+
+struct blitter_context
+{
+ /**
+ * Draw a rectangle.
+ *
+ * \param x1 An X coordinate of the top-left corner.
+ * \param y1 A Y coordinate of the top-left corner.
+ * \param x2 An X coordinate of the bottom-right corner.
+ * \param y2 A Y coordinate of the bottom-right corner.
+ * \param depth A depth which the rectangle is rendered at.
+ *
+ * \param type Semantics of the attributes "attrib".
+ * If type is UTIL_BLITTER_ATTRIB_NONE, ignore them.
+ * If type is UTIL_BLITTER_ATTRIB_COLOR, the attributes
+ * make up a constant RGBA color, and should go
+ * to the GENERIC0 varying slot of a fragment shader.
+ * If type is UTIL_BLITTER_ATTRIB_TEXCOORD, {a1, a2} and
+ * {a3, a4} specify top-left and bottom-right texture
+ * coordinates of the rectangle, respectively, and should go
+ * to the GENERIC0 varying slot of a fragment shader.
+ *
+ * \param attrib See type.
+ *
+ * \note A driver may optionally override this callback to implement
+ * a specialized hardware path for drawing a rectangle, e.g. using
+ * a rectangular point sprite.
+ */
+ void (*draw_rectangle)(struct blitter_context *blitter,
+ unsigned x1, unsigned y1, unsigned x2, unsigned y2,
+ float depth,
+ enum blitter_attrib_type type,
+ const float attrib[4]);
+
+ /* Whether the blitter is running. */
+ boolean running;
+
+ /* Private members, really. */
+ struct pipe_context *pipe; /**< pipe context */
+
+ void *saved_blend_state; /**< blend state */
+ void *saved_dsa_state; /**< depth stencil alpha state */
+ void *saved_velem_state; /**< vertex elements state */
+ void *saved_rs_state; /**< rasterizer state */
+ void *saved_fs, *saved_vs; /**< fragment shader, vertex shader */
+
+ struct pipe_framebuffer_state saved_fb_state; /**< framebuffer state */
+ struct pipe_stencil_ref saved_stencil_ref; /**< stencil ref */
+ struct pipe_viewport_state saved_viewport;
+ struct pipe_clip_state saved_clip;
+
+ int saved_num_sampler_states;
+ void *saved_sampler_states[PIPE_MAX_SAMPLERS];
+
+ int saved_num_sampler_views;
+ struct pipe_sampler_view *saved_sampler_views[PIPE_MAX_SAMPLERS];
+
+ int saved_num_vertex_buffers;
+ struct pipe_vertex_buffer saved_vertex_buffers[PIPE_MAX_ATTRIBS];
+};
+
+/**
+ * Create a blitter context.
+ */
+struct blitter_context *util_blitter_create(struct pipe_context *pipe);
+
+/**
+ * Destroy a blitter context.
+ */
+void util_blitter_destroy(struct blitter_context *blitter);
+
+/**
+ * Return the pipe context associated with a blitter context.
+ */
+static INLINE
+struct pipe_context *util_blitter_get_pipe(struct blitter_context *blitter)
+{
+ return blitter->pipe;
+}
+
+/*
+ * These states must be saved before any of the following functions is called:
+ * - blend state
+ * - depth stencil alpha state
+ * - rasterizer state
+ * - vertex shader
+ * - any other shader??? (XXX)
+ * - fragment shader
+ * - vertex buffers
+ * - vertex elements
+ */
+
+/**
+ * Clear a specified set of currently bound buffers to specified values.
+ */
+void util_blitter_clear(struct blitter_context *blitter,
+ unsigned width, unsigned height,
+ unsigned num_cbufs,
+ unsigned clear_buffers,
+ const float *rgba,
+ double depth, unsigned stencil);
+
+void util_blitter_clear_depth_custom(struct blitter_context *blitter,
+ unsigned width, unsigned height,
+ double depth, void *custom_dsa);
+
+/**
+ * Copy a block of pixels from one surface to another.
+ *
+ * You can copy from any color format to any other color format provided
+ * the former can be sampled and the latter can be rendered to. Otherwise,
+ * a software fallback path is taken and both surfaces must be of the same
+ * format.
+ *
+ * The same holds for depth-stencil formats with the exception that stencil
+ * cannot be copied unless you set ignore_stencil to FALSE. In that case,
+ * a software fallback path is taken and both surfaces must be of the same
+ * format.
+ *
+ * Use pipe_screen->is_format_supported to know your options.
+ *
+ * These states must be saved in the blitter in addition to the state objects
+ * already required to be saved:
+ * - framebuffer state
+ * - fragment sampler states
+ * - fragment sampler textures
+ */
+void util_blitter_copy_texture(struct blitter_context *blitter,
+ struct pipe_resource *dst,
+ unsigned dstlevel,
+ unsigned dstx, unsigned dsty, unsigned dstz,
+ struct pipe_resource *src,
+ unsigned srclevel,
+ const struct pipe_box *srcbox,
+ boolean ignore_stencil);
+
+/**
+ * Clear a region of a (color) surface to a constant value.
+ *
+ * These states must be saved in the blitter in addition to the state objects
+ * already required to be saved:
+ * - framebuffer state
+ */
+void util_blitter_clear_render_target(struct blitter_context *blitter,
+ struct pipe_surface *dst,
+ const float *rgba,
+ unsigned dstx, unsigned dsty,
+ unsigned width, unsigned height);
+
+/**
+ * Clear a region of a depth-stencil surface, both stencil and depth
+ * or only one of them if this is a combined depth-stencil surface.
+ *
+ * These states must be saved in the blitter in addition to the state objects
+ * already required to be saved:
+ * - framebuffer state
+ */
+void util_blitter_clear_depth_stencil(struct blitter_context *blitter,
+ struct pipe_surface *dst,
+ unsigned clear_flags,
+ double depth,
+ unsigned stencil,
+ unsigned dstx, unsigned dsty,
+ unsigned width, unsigned height);
+
+void util_blitter_custom_depth_stencil(struct blitter_context *blitter,
+ struct pipe_surface *zsurf,
+ struct pipe_surface *cbsurf,
+ void *dsa_stage, float depth);
+
+/* The functions below should be used to save currently bound constant state
+ * objects inside a driver. The objects are automatically restored at the end
+ * of the util_blitter_{clear, copy_region, fill_region} functions and then
+ * forgotten.
+ *
+ * CSOs not listed here are not affected by util_blitter. */
+
+static INLINE
+void util_blitter_save_blend(struct blitter_context *blitter,
+ void *state)
+{
+ blitter->saved_blend_state = state;
+}
+
+static INLINE
+void util_blitter_save_depth_stencil_alpha(struct blitter_context *blitter,
+ void *state)
+{
+ blitter->saved_dsa_state = state;
+}
+
+static INLINE
+void util_blitter_save_vertex_elements(struct blitter_context *blitter,
+ void *state)
+{
+ blitter->saved_velem_state = state;
+}
+
+static INLINE
+void util_blitter_save_stencil_ref(struct blitter_context *blitter,
+ const struct pipe_stencil_ref *state)
+{
+ blitter->saved_stencil_ref = *state;
+}
+
+static INLINE
+void util_blitter_save_rasterizer(struct blitter_context *blitter,
+ void *state)
+{
+ blitter->saved_rs_state = state;
+}
+
+static INLINE
+void util_blitter_save_fragment_shader(struct blitter_context *blitter,
+ void *fs)
+{
+ blitter->saved_fs = fs;
+}
+
+static INLINE
+void util_blitter_save_vertex_shader(struct blitter_context *blitter,
+ void *vs)
+{
+ blitter->saved_vs = vs;
+}
+
+static INLINE
+void util_blitter_save_framebuffer(struct blitter_context *blitter,
+ const struct pipe_framebuffer_state *state)
+{
+ blitter->saved_fb_state.nr_cbufs = 0; /* It's ~0 now, meaning it's unsaved. */
+ util_copy_framebuffer_state(&blitter->saved_fb_state, state);
+}
+
+static INLINE
+void util_blitter_save_viewport(struct blitter_context *blitter,
+ struct pipe_viewport_state *state)
+{
+ blitter->saved_viewport = *state;
+}
+
+static INLINE
+void util_blitter_save_clip(struct blitter_context *blitter,
+ struct pipe_clip_state *state)
+{
+ blitter->saved_clip = *state;
+}
+
+static INLINE
+void util_blitter_save_fragment_sampler_states(
+ struct blitter_context *blitter,
+ int num_sampler_states,
+ void **sampler_states)
+{
+ assert(num_sampler_states <= Elements(blitter->saved_sampler_states));
+
+ blitter->saved_num_sampler_states = num_sampler_states;
+ memcpy(blitter->saved_sampler_states, sampler_states,
+ num_sampler_states * sizeof(void *));
+}
+
+static INLINE void
+util_blitter_save_fragment_sampler_views(struct blitter_context *blitter,
+ int num_views,
+ struct pipe_sampler_view **views)
+{
+ unsigned i;
+ assert(num_views <= Elements(blitter->saved_sampler_views));
+
+ blitter->saved_num_sampler_views = num_views;
+ for (i = 0; i < num_views; i++)
+ pipe_sampler_view_reference(&blitter->saved_sampler_views[i],
+ views[i]);
+}
+
+static INLINE void
+util_blitter_save_vertex_buffers(struct blitter_context *blitter,
+ int num_vertex_buffers,
+ struct pipe_vertex_buffer *vertex_buffers)
+{
+ assert(num_vertex_buffers <= Elements(blitter->saved_vertex_buffers));
+
+ blitter->saved_num_vertex_buffers = 0;
+ util_copy_vertex_buffers(blitter->saved_vertex_buffers,
+ (unsigned*)&blitter->saved_num_vertex_buffers,
+ vertex_buffers,
+ num_vertex_buffers);
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_math.h b/mesalib/src/gallium/auxiliary/util/u_math.h
index 9a061e8a9..eb3fc4cb6 100644
--- a/mesalib/src/gallium/auxiliary/util/u_math.h
+++ b/mesalib/src/gallium/auxiliary/util/u_math.h
@@ -199,6 +199,16 @@ roundf(float x)
#endif /* _MSC_VER */
+#ifdef PIPE_OS_ANDROID
+
+static INLINE
+double log2(double d)
+{
+ return log(d) * (1.0 / M_LN2);
+}
+
+#endif
+
@@ -409,7 +419,7 @@ unsigned ffs( unsigned u )
return i;
}
-#elif defined(__MINGW32__)
+#elif defined(__MINGW32__) || defined(PIPE_OS_ANDROID)
#define ffs __builtin_ffs
#endif
diff --git a/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.c b/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.c
index 1b9375209..da250cba9 100644
--- a/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.c
+++ b/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.c
@@ -34,21 +34,6 @@
#include "translate/translate.h"
#include "translate/translate_cache.h"
-/* Hardware vertex fetcher limitations can be described by this structure. */
-struct u_vbuf_caps {
- /* Vertex format CAPs. */
- /* TRUE if hardware supports it. */
- unsigned format_fixed32:1; /* PIPE_FORMAT_*32*_FIXED */
- unsigned format_float16:1; /* PIPE_FORMAT_*16*_FLOAT */
- unsigned format_float64:1; /* PIPE_FORMAT_*64*_FLOAT */
- unsigned format_norm32:1; /* PIPE_FORMAT_*32*NORM */
- unsigned format_scaled32:1; /* PIPE_FORMAT_*32*SCALED */
-
- /* Whether vertex fetches don't have to be dword-aligned. */
- /* TRUE if hardware supports it. */
- unsigned fetch_dword_unaligned:1;
-};
-
struct u_vbuf_mgr_elements {
unsigned count;
struct pipe_vertex_element ve[PIPE_MAX_ATTRIBS];
@@ -69,7 +54,6 @@ struct u_vbuf_mgr_elements {
struct u_vbuf_mgr_priv {
struct u_vbuf_mgr b;
- struct u_vbuf_caps caps;
struct pipe_context *pipe;
struct translate_cache *translate_cache;
@@ -89,25 +73,25 @@ static void u_vbuf_mgr_init_format_caps(struct u_vbuf_mgr_priv *mgr)
{
struct pipe_screen *screen = mgr->pipe->screen;
- mgr->caps.format_fixed32 =
+ mgr->b.caps.format_fixed32 =
screen->is_format_supported(screen, PIPE_FORMAT_R32_FIXED, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER);
- mgr->caps.format_float16 =
+ mgr->b.caps.format_float16 =
screen->is_format_supported(screen, PIPE_FORMAT_R16_FLOAT, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER);
- mgr->caps.format_float64 =
+ mgr->b.caps.format_float64 =
screen->is_format_supported(screen, PIPE_FORMAT_R64_FLOAT, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER);
- mgr->caps.format_norm32 =
+ mgr->b.caps.format_norm32 =
screen->is_format_supported(screen, PIPE_FORMAT_R32_UNORM, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER) &&
screen->is_format_supported(screen, PIPE_FORMAT_R32_SNORM, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER);
- mgr->caps.format_scaled32 =
+ mgr->b.caps.format_scaled32 =
screen->is_format_supported(screen, PIPE_FORMAT_R32_USCALED, PIPE_BUFFER,
0, PIPE_BIND_VERTEX_BUFFER) &&
screen->is_format_supported(screen, PIPE_FORMAT_R32_SSCALED, PIPE_BUFFER,
@@ -130,7 +114,7 @@ u_vbuf_mgr_create(struct pipe_context *pipe,
upload_buffer_alignment,
upload_buffer_bind);
- mgr->caps.fetch_dword_unaligned =
+ mgr->b.caps.fetch_dword_unaligned =
fetch_alignment == U_VERTEX_FETCH_BYTE_ALIGNED;
u_vbuf_mgr_init_format_caps(mgr);
@@ -184,7 +168,7 @@ u_vbuf_translate_begin(struct u_vbuf_mgr_priv *mgr,
/* Check for support. */
if (mgr->ve->ve[i].src_format == mgr->ve->native_format[i] &&
- (mgr->caps.fetch_dword_unaligned ||
+ (mgr->b.caps.fetch_dword_unaligned ||
(vb->buffer_offset % 4 == 0 &&
vb->stride % 4 == 0 &&
mgr->ve->ve[i].src_offset % 4 == 0))) {
@@ -365,7 +349,7 @@ u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
/* Choose a native format.
* For now we don't care about the alignment, that's going to
* be sorted out later. */
- if (!mgr->caps.format_fixed32) {
+ if (!mgr->b.caps.format_fixed32) {
switch (format) {
FORMAT_REPLACE(R32_FIXED, R32_FLOAT);
FORMAT_REPLACE(R32G32_FIXED, R32G32_FLOAT);
@@ -374,7 +358,7 @@ u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
default:;
}
}
- if (!mgr->caps.format_float16) {
+ if (!mgr->b.caps.format_float16) {
switch (format) {
FORMAT_REPLACE(R16_FLOAT, R32_FLOAT);
FORMAT_REPLACE(R16G16_FLOAT, R32G32_FLOAT);
@@ -383,7 +367,7 @@ u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
default:;
}
}
- if (!mgr->caps.format_float64) {
+ if (!mgr->b.caps.format_float64) {
switch (format) {
FORMAT_REPLACE(R64_FLOAT, R32_FLOAT);
FORMAT_REPLACE(R64G64_FLOAT, R32G32_FLOAT);
@@ -392,7 +376,7 @@ u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
default:;
}
}
- if (!mgr->caps.format_norm32) {
+ if (!mgr->b.caps.format_norm32) {
switch (format) {
FORMAT_REPLACE(R32_UNORM, R32_FLOAT);
FORMAT_REPLACE(R32G32_UNORM, R32G32_FLOAT);
@@ -405,7 +389,7 @@ u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
default:;
}
}
- if (!mgr->caps.format_scaled32) {
+ if (!mgr->b.caps.format_scaled32) {
switch (format) {
FORMAT_REPLACE(R32_USCALED, R32_FLOAT);
FORMAT_REPLACE(R32G32_USCALED, R32G32_FLOAT);
@@ -427,11 +411,11 @@ u_vbuf_mgr_create_vertex_elements(struct u_vbuf_mgr *mgrb,
ve->incompatible_layout =
ve->incompatible_layout ||
ve->ve[i].src_format != ve->native_format[i] ||
- (!mgr->caps.fetch_dword_unaligned && ve->ve[i].src_offset % 4 != 0);
+ (!mgr->b.caps.fetch_dword_unaligned && ve->ve[i].src_offset % 4 != 0);
}
/* Align the formats to the size of DWORD if needed. */
- if (!mgr->caps.fetch_dword_unaligned) {
+ if (!mgr->b.caps.fetch_dword_unaligned) {
for (i = 0; i < count; i++) {
ve->native_format_size[i] = align(ve->native_format_size[i], 4);
}
@@ -472,7 +456,7 @@ void u_vbuf_mgr_set_vertex_buffers(struct u_vbuf_mgr *mgrb,
mgr->any_user_vbs = FALSE;
mgr->incompatible_vb_layout = FALSE;
- if (!mgr->caps.fetch_dword_unaligned) {
+ if (!mgr->b.caps.fetch_dword_unaligned) {
/* Check if the strides and offsets are aligned to the size of DWORD. */
for (i = 0; i < count; i++) {
if (bufs[i].buffer) {
diff --git a/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.h b/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.h
index 4e6372435..c653ca434 100644
--- a/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.h
+++ b/mesalib/src/gallium/auxiliary/util/u_vbuf_mgr.h
@@ -37,6 +37,21 @@
#include "pipe/p_state.h"
#include "util/u_transfer.h"
+/* Hardware vertex fetcher limitations can be described by this structure. */
+struct u_vbuf_caps {
+ /* Vertex format CAPs. */
+ /* TRUE if hardware supports it. */
+ unsigned format_fixed32:1; /* PIPE_FORMAT_*32*_FIXED */
+ unsigned format_float16:1; /* PIPE_FORMAT_*16*_FLOAT */
+ unsigned format_float64:1; /* PIPE_FORMAT_*64*_FLOAT */
+ unsigned format_norm32:1; /* PIPE_FORMAT_*32*NORM */
+ unsigned format_scaled32:1; /* PIPE_FORMAT_*32*SCALED */
+
+ /* Whether vertex fetches don't have to be dword-aligned. */
+ /* TRUE if hardware supports it. */
+ unsigned fetch_dword_unaligned:1;
+};
+
/* The manager.
* This structure should also be used to access vertex buffers
* from a driver. */
@@ -63,6 +78,8 @@ struct u_vbuf_mgr {
* - u_upload_buffer
* - u_upload_flush */
struct u_upload_mgr *uploader;
+
+ struct u_vbuf_caps caps;
};
struct u_vbuf_resource {
diff --git a/mesalib/src/glsl/.dir-locals.el b/mesalib/src/glsl/.dir-locals.el
new file mode 100644
index 000000000..be19e29a5
--- /dev/null
+++ b/mesalib/src/glsl/.dir-locals.el
@@ -0,0 +1,3 @@
+((c-mode . ((c-basic-offset . 3)))
+ (c++-mode . ((c-basic-offset . 3)))
+)
diff --git a/mesalib/src/glsl/Android.gen.mk b/mesalib/src/glsl/Android.gen.mk
new file mode 100644
index 000000000..e4ccb7291
--- /dev/null
+++ b/mesalib/src/glsl/Android.gen.mk
@@ -0,0 +1,98 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 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.
+
+# included by glsl Android.mk for source generation
+
+ifeq ($(LOCAL_MODULE_CLASS),)
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+endif
+
+intermediates := $(call local-intermediates-dir)
+
+sources := \
+ glsl_lexer.cpp \
+ glsl_parser.cpp \
+ glcpp/glcpp-lex.c \
+ glcpp/glcpp-parse.c
+
+ifneq ($(LOCAL_IS_HOST_MODULE),true)
+sources += builtin_function.cpp
+endif
+
+LOCAL_SRC_FILES := $(filter-out $(sources), $(LOCAL_SRC_FILES))
+
+LOCAL_C_INCLUDES += $(intermediates) $(intermediates)/glcpp $(MESA_TOP)/src/glsl/glcpp
+
+sources := $(addprefix $(intermediates)/, $(sources))
+LOCAL_GENERATED_SOURCES += $(sources)
+
+define local-l-or-ll-to-c-or-cpp
+ @mkdir -p $(dir $@)
+ @echo "Mesa Lex: $(PRIVATE_MODULE) <= $<"
+ $(hide) $(LEX) --nounistd -o$@ $<
+endef
+
+define local-y-to-c-and-h
+ @mkdir -p $(dir $@)
+ @echo "Mesa Yacc: $(PRIVATE_MODULE) <= $<"
+ $(hide) $(YACC) -o $@ $<
+endef
+
+define local-yy-to-cpp-and-h
+ @mkdir -p $(dir $@)
+ @echo "Mesa Yacc: $(PRIVATE_MODULE) <= $<"
+ $(hide) $(YACC) -p "_mesa_glsl_" -o $@ $<
+ touch $(@:$1=$(YACC_HEADER_SUFFIX))
+ echo '#ifndef '$(@F:$1=_h) > $(@:$1=.h)
+ echo '#define '$(@F:$1=_h) >> $(@:$1=.h)
+ cat $(@:$1=$(YACC_HEADER_SUFFIX)) >> $(@:$1=.h)
+ echo '#endif' >> $(@:$1=.h)
+ rm -f $(@:$1=$(YACC_HEADER_SUFFIX))
+endef
+
+$(intermediates)/glsl_lexer.cpp: $(LOCAL_PATH)/glsl_lexer.ll
+ $(call local-l-or-ll-to-c-or-cpp)
+
+$(intermediates)/glsl_parser.cpp: $(LOCAL_PATH)/glsl_parser.yy
+ $(call local-yy-to-cpp-and-h,.cpp)
+
+$(intermediates)/glcpp/glcpp-lex.c: $(LOCAL_PATH)/glcpp/glcpp-lex.l
+ $(call local-l-or-ll-to-c-or-cpp)
+
+$(intermediates)/glcpp/glcpp-parse.c: $(LOCAL_PATH)/glcpp/glcpp-parse.y
+ $(call local-y-to-c-and-h)
+
+BUILTIN_COMPILER := $(BUILD_OUT_EXECUTABLES)/mesa_builtin_compiler$(BUILD_EXECUTABLE_SUFFIX)
+
+builtin_function_deps := \
+ $(LOCAL_PATH)/builtins/tools/generate_builtins.py \
+ $(LOCAL_PATH)/builtins/tools/texture_builtins.py \
+ $(BUILTIN_COMPILER) \
+ $(wildcard $(LOCAL_PATH)/builtins/profiles/*) \
+ $(wildcard $(LOCAL_PATH)/builtins/ir/*)
+
+$(intermediates)/builtin_function.cpp: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/builtins/tools/generate_builtins.py
+$(intermediates)/builtin_function.cpp: $(builtin_function_deps)
+ @mkdir -p $(dir $@)
+ @echo "Gen GLSL: $(PRIVATE_MODULE) <= $(notdir $@)"
+ $(hide) $(PRIVATE_SCRIPT) $(BUILTIN_COMPILER) > $@ || rm -f $@
diff --git a/mesalib/src/glsl/Android.mk b/mesalib/src/glsl/Android.mk
new file mode 100644
index 000000000..d0b3ff3be
--- /dev/null
+++ b/mesalib/src/glsl/Android.mk
@@ -0,0 +1,171 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 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.
+
+# Android.mk for glsl
+
+LOCAL_PATH := $(call my-dir)
+
+# from Makefile
+LIBGLCPP_SOURCES = \
+ glcpp/glcpp-lex.c \
+ glcpp/glcpp-parse.c \
+ glcpp/pp.c
+
+C_SOURCES = \
+ strtod.c \
+ ralloc.c \
+ $(LIBGLCPP_SOURCES)
+
+CXX_SOURCES = \
+ ast_expr.cpp \
+ ast_function.cpp \
+ ast_to_hir.cpp \
+ ast_type.cpp \
+ glsl_lexer.cpp \
+ glsl_parser.cpp \
+ glsl_parser_extras.cpp \
+ glsl_types.cpp \
+ glsl_symbol_table.cpp \
+ hir_field_selection.cpp \
+ ir_basic_block.cpp \
+ ir_clone.cpp \
+ ir_constant_expression.cpp \
+ ir.cpp \
+ ir_expression_flattening.cpp \
+ ir_function_can_inline.cpp \
+ ir_function_detect_recursion.cpp \
+ ir_function.cpp \
+ ir_hierarchical_visitor.cpp \
+ ir_hv_accept.cpp \
+ ir_import_prototypes.cpp \
+ ir_print_visitor.cpp \
+ ir_reader.cpp \
+ ir_rvalue_visitor.cpp \
+ ir_set_program_inouts.cpp \
+ ir_validate.cpp \
+ ir_variable.cpp \
+ ir_variable_refcount.cpp \
+ linker.cpp \
+ link_functions.cpp \
+ loop_analysis.cpp \
+ loop_controls.cpp \
+ loop_unroll.cpp \
+ lower_discard.cpp \
+ lower_if_to_cond_assign.cpp \
+ lower_instructions.cpp \
+ lower_jumps.cpp \
+ lower_mat_op_to_vec.cpp \
+ lower_noise.cpp \
+ lower_texture_projection.cpp \
+ lower_variable_index_to_cond_assign.cpp \
+ lower_vec_index_to_cond_assign.cpp \
+ lower_vec_index_to_swizzle.cpp \
+ lower_vector.cpp \
+ opt_algebraic.cpp \
+ opt_constant_folding.cpp \
+ opt_constant_propagation.cpp \
+ opt_constant_variable.cpp \
+ opt_copy_propagation.cpp \
+ opt_copy_propagation_elements.cpp \
+ opt_dead_code.cpp \
+ opt_dead_code_local.cpp \
+ opt_dead_functions.cpp \
+ opt_discard_simplification.cpp \
+ opt_function_inlining.cpp \
+ opt_if_simplification.cpp \
+ opt_noop_swizzle.cpp \
+ opt_redundant_jumps.cpp \
+ opt_structure_splitting.cpp \
+ opt_swizzle_swizzle.cpp \
+ opt_tree_grafting.cpp \
+ s_expression.cpp
+
+# ---------------------------------------
+# Build libmesa_glsl
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ $(C_SOURCES) \
+ $(CXX_SOURCES) \
+ builtin_function.cpp
+
+LOCAL_C_INCLUDES := \
+ $(MESA_TOP)/src/mapi \
+ $(MESA_TOP)/src/mesa
+
+LOCAL_MODULE := libmesa_glsl
+
+include $(LOCAL_PATH)/Android.gen.mk
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
+
+# ---------------------------------------
+# Build mesa_builtin_compiler for host
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ $(C_SOURCES) \
+ $(CXX_SOURCES) \
+ builtin_stubs.cpp \
+ main.cpp \
+ standalone_scaffolding.cpp
+
+LOCAL_C_INCLUDES := \
+ $(MESA_TOP)/src/mapi \
+ $(MESA_TOP)/src/mesa
+
+LOCAL_STATIC_LIBRARIES := libmesa_glsl_utils
+
+LOCAL_MODULE := mesa_builtin_compiler
+
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_IS_HOST_MODULE := true
+include $(LOCAL_PATH)/Android.gen.mk
+include $(MESA_COMMON_MK)
+include $(BUILD_HOST_EXECUTABLE)
+
+# ---------------------------------------
+# Build glsl_compiler
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ main.cpp \
+ standalone_scaffolding.cpp
+
+LOCAL_C_INCLUDES := \
+ $(MESA_TOP)/src/mapi \
+ $(MESA_TOP)/src/mesa
+
+LOCAL_STATIC_LIBRARIES := libmesa_glsl libmesa_glsl_utils
+
+LOCAL_MODULE_TAGS := eng
+LOCAL_MODULE := glsl_compiler
+
+include $(MESA_COMMON_MK)
+include $(BUILD_EXECUTABLE)
diff --git a/mesalib/src/glsl/ast_function.cpp b/mesalib/src/glsl/ast_function.cpp
index adb88706f..397164cde 100644
--- a/mesalib/src/glsl/ast_function.cpp
+++ b/mesalib/src/glsl/ast_function.cpp
@@ -134,6 +134,8 @@ match_function_by_name(exec_list *instructions, const char *name,
}
}
+ exec_list post_call_conversions;
+
if (sig != NULL) {
/* Verify that 'out' and 'inout' actual parameters are lvalues. This
* isn't done in ir_function::matching_signature because that function
@@ -141,6 +143,12 @@ match_function_by_name(exec_list *instructions, const char *name,
*
* Also, validate that 'const_in' formal parameters (an extension of our
* IR) correspond to ir_constant actual parameters.
+ *
+ * Also, perform implicit conversion of arguments. Note: to implicitly
+ * convert out parameters, we need to place them in a temporary
+ * variable, and do the conversion after the call takes place. Since we
+ * haven't emitted the call yet, we'll place the post-call conversions
+ * in a temporary exec_list, and emit them later.
*/
exec_list_iterator actual_iter = actual_parameters->iterator();
exec_list_iterator formal_iter = sig->parameters.iterator();
@@ -156,6 +164,7 @@ match_function_by_name(exec_list *instructions, const char *name,
_mesa_glsl_error(loc, state,
"parameter `%s' must be a constant expression",
formal->name);
+ return ir_call::get_error_instruction(ctx);
}
if ((formal->mode == ir_var_out)
@@ -185,8 +194,64 @@ match_function_by_name(exec_list *instructions, const char *name,
}
if (formal->type->is_numeric() || formal->type->is_boolean()) {
- ir_rvalue *converted = convert_component(actual, formal->type);
- actual->replace_with(converted);
+ switch (formal->mode) {
+ case ir_var_const_in:
+ case ir_var_in: {
+ ir_rvalue *converted
+ = convert_component(actual, formal->type);
+ actual->replace_with(converted);
+ break;
+ }
+ case ir_var_out:
+ if (actual->type != formal->type) {
+ /* To convert an out parameter, we need to create a
+ * temporary variable to hold the value before conversion,
+ * and then perform the conversion after the function call
+ * returns.
+ *
+ * This has the effect of transforming code like this:
+ *
+ * void f(out int x);
+ * float value;
+ * f(value);
+ *
+ * Into IR that's equivalent to this:
+ *
+ * void f(out int x);
+ * float value;
+ * int out_parameter_conversion;
+ * f(out_parameter_conversion);
+ * value = float(out_parameter_conversion);
+ */
+ ir_variable *tmp =
+ new(ctx) ir_variable(formal->type,
+ "out_parameter_conversion",
+ ir_var_temporary);
+ instructions->push_tail(tmp);
+ ir_dereference_variable *deref_tmp_1
+ = new(ctx) ir_dereference_variable(tmp);
+ ir_dereference_variable *deref_tmp_2
+ = new(ctx) ir_dereference_variable(tmp);
+ ir_rvalue *converted_tmp
+ = convert_component(deref_tmp_1, actual->type);
+ ir_assignment *assignment
+ = new(ctx) ir_assignment(actual, converted_tmp);
+ post_call_conversions.push_tail(assignment);
+ actual->replace_with(deref_tmp_2);
+ }
+ break;
+ case ir_var_inout:
+ /* Inout parameters should never require conversion, since that
+ * would require an implicit conversion to exist both to and
+ * from the formal parameter type, and there are no
+ * bidirectional implicit conversions.
+ */
+ assert (actual->type == formal->type);
+ break;
+ default:
+ assert (!"Illegal formal parameter mode");
+ break;
+ }
}
actual_iter.next();
@@ -196,8 +261,11 @@ match_function_by_name(exec_list *instructions, const char *name,
/* Always insert the call in the instruction stream, and return a deref
* of its return val if it returns a value, since we don't know if
* the rvalue is going to be assigned to anything or not.
+ *
+ * Also insert any out parameter conversions after the call.
*/
ir_call *call = new(ctx) ir_call(sig, actual_parameters);
+ ir_dereference_variable *deref;
if (!sig->return_type->is_void()) {
/* If the function call is a constant expression, don't
* generate the instructions to call it; just generate an
@@ -214,7 +282,6 @@ match_function_by_name(exec_list *instructions, const char *name,
}
ir_variable *var;
- ir_dereference_variable *deref;
var = new(ctx) ir_variable(sig->return_type,
ralloc_asprintf(ctx, "%s_retval",
@@ -227,11 +294,12 @@ match_function_by_name(exec_list *instructions, const char *name,
instructions->push_tail(assign);
deref = new(ctx) ir_dereference_variable(var);
- return deref;
} else {
instructions->push_tail(call);
- return NULL;
+ deref = NULL;
}
+ instructions->append_list(&post_call_conversions);
+ return deref;
} else {
char *str = prototype_string(NULL, name, actual_parameters);
diff --git a/mesalib/src/glsl/ast_to_hir.cpp b/mesalib/src/glsl/ast_to_hir.cpp
index d4f5065cc..c85bb0dc7 100644
--- a/mesalib/src/glsl/ast_to_hir.cpp
+++ b/mesalib/src/glsl/ast_to_hir.cpp
@@ -653,6 +653,16 @@ validate_assignment(struct _mesa_glsl_parse_state *state,
return NULL;
}
+static void
+mark_whole_array_access(ir_rvalue *access)
+{
+ ir_dereference_variable *deref = access->as_dereference_variable();
+
+ if (deref && deref->var) {
+ deref->var->max_array_access = deref->type->length - 1;
+ }
+}
+
ir_rvalue *
do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state,
ir_rvalue *lhs, ir_rvalue *rhs, bool is_initializer,
@@ -713,6 +723,7 @@ do_assignment(exec_list *instructions, struct _mesa_glsl_parse_state *state,
rhs->type->array_size());
d->type = var->type;
}
+ mark_whole_array_access(lhs);
}
/* Most callers of do_assignment (assign, add_assign, pre_inc/dec,
@@ -773,16 +784,6 @@ ast_node::hir(exec_list *instructions,
return NULL;
}
-static void
-mark_whole_array_access(ir_rvalue *access)
-{
- ir_dereference_variable *deref = access->as_dereference_variable();
-
- if (deref) {
- deref->var->max_array_access = deref->type->length - 1;
- }
-}
-
static ir_rvalue *
do_comparison(void *mem_ctx, int operation, ir_rvalue *op0, ir_rvalue *op1)
{
diff --git a/mesalib/src/glsl/glcpp/glcpp-parse.y b/mesalib/src/glsl/glcpp/glcpp-parse.y
index 0b1ada90d..bfbabb320 100644
--- a/mesalib/src/glsl/glcpp/glcpp-parse.y
+++ b/mesalib/src/glsl/glcpp/glcpp-parse.y
@@ -1132,8 +1132,10 @@ glcpp_parser_create (const struct gl_extensions *extensions, int api)
if (extensions->ARB_shader_texture_lod)
add_builtin_define(parser, "GL_ARB_shader_texture_lod", 1);
- if (extensions->AMD_conservative_depth)
+ if (extensions->AMD_conservative_depth) {
add_builtin_define(parser, "GL_AMD_conservative_depth", 1);
+ add_builtin_define(parser, "GL_ARB_conservative_depth", 1);
+ }
}
language_version = 110;
diff --git a/mesalib/src/glsl/glsl_parser.yy b/mesalib/src/glsl/glsl_parser.yy
index 1851f1e20..25d02fb1e 100644
--- a/mesalib/src/glsl/glsl_parser.yy
+++ b/mesalib/src/glsl/glsl_parser.yy
@@ -1111,7 +1111,7 @@ layout_qualifier_id:
}
}
- /* Layout qualifiers for AMD_conservative_depth. */
+ /* Layout qualifiers for AMD/ARB_conservative_depth. */
if (!got_one && state->AMD_conservative_depth_enable) {
if (strcmp($1, "depth_any") == 0) {
got_one = true;
@@ -1129,7 +1129,7 @@ layout_qualifier_id:
if (got_one && state->AMD_conservative_depth_warn) {
_mesa_glsl_warning(& @1, state,
- "GL_AMD_conservative_depth "
+ "GL_ARB_conservative_depth "
"layout qualifier `%s' is used\n", $1);
}
}
diff --git a/mesalib/src/glsl/glsl_parser_extras.cpp b/mesalib/src/glsl/glsl_parser_extras.cpp
index 72acc2e38..7204c9274 100644
--- a/mesalib/src/glsl/glsl_parser_extras.cpp
+++ b/mesalib/src/glsl/glsl_parser_extras.cpp
@@ -253,6 +253,7 @@ struct _mesa_glsl_extension {
static const _mesa_glsl_extension _mesa_glsl_supported_extensions[] = {
/* target availability API availability */
/* name VS GS FS GL ES supported flag */
+ EXT(ARB_conservative_depth, true, false, true, true, false, AMD_conservative_depth),
EXT(ARB_draw_buffers, false, false, true, true, false, dummy_true),
EXT(ARB_draw_instanced, true, false, false, true, false, ARB_draw_instanced),
EXT(ARB_explicit_attrib_location, true, false, true, true, false, ARB_explicit_attrib_location),
diff --git a/mesalib/src/glsl/glsl_parser_extras.h b/mesalib/src/glsl/glsl_parser_extras.h
index 428cd9e36..6868b5f10 100644
--- a/mesalib/src/glsl/glsl_parser_extras.h
+++ b/mesalib/src/glsl/glsl_parser_extras.h
@@ -184,6 +184,8 @@ struct _mesa_glsl_parse_state {
bool ARB_shader_stencil_export_warn;
bool AMD_conservative_depth_enable;
bool AMD_conservative_depth_warn;
+ bool ARB_conservative_depth_enable;
+ bool ARB_conservative_depth_warn;
bool AMD_shader_stencil_export_enable;
bool AMD_shader_stencil_export_warn;
bool OES_texture_3D_enable;
diff --git a/mesalib/src/glsl/ir.cpp b/mesalib/src/glsl/ir.cpp
index 4b35b8a90..7b15c2b84 100644
--- a/mesalib/src/glsl/ir.cpp
+++ b/mesalib/src/glsl/ir.cpp
@@ -1096,7 +1096,7 @@ ir_dereference_record::ir_dereference_record(ir_variable *var,
}
bool
-ir_dereference::is_lvalue()
+ir_dereference::is_lvalue() const
{
ir_variable *var = this->variable_referenced();
@@ -1121,7 +1121,7 @@ ir_dereference::is_lvalue()
}
-const char *tex_opcode_strs[] = { "tex", "txb", "txl", "txd", "txf" };
+const char *tex_opcode_strs[] = { "tex", "txb", "txl", "txd", "txf", "txs" };
const char *ir_texture::opcode_string()
{
@@ -1150,11 +1150,15 @@ ir_texture::set_sampler(ir_dereference *sampler, const glsl_type *type)
this->sampler = sampler;
this->type = type;
- assert(sampler->type->sampler_type == (int) type->base_type);
- if (sampler->type->sampler_shadow)
- assert(type->vector_elements == 4 || type->vector_elements == 1);
- else
- assert(type->vector_elements == 4);
+ if (this->op == ir_txs) {
+ assert(type->base_type == GLSL_TYPE_INT);
+ } else {
+ assert(sampler->type->sampler_type == (int) type->base_type);
+ if (sampler->type->sampler_shadow)
+ assert(type->vector_elements == 4 || type->vector_elements == 1);
+ else
+ assert(type->vector_elements == 4);
+ }
}
@@ -1310,7 +1314,7 @@ ir_swizzle::create(ir_rvalue *val, const char *str, unsigned vector_length)
#undef I
ir_variable *
-ir_swizzle::variable_referenced()
+ir_swizzle::variable_referenced() const
{
return this->val->variable_referenced();
}
diff --git a/mesalib/src/glsl/ir.h b/mesalib/src/glsl/ir.h
index 8df2c42c3..01008092a 100644
--- a/mesalib/src/glsl/ir.h
+++ b/mesalib/src/glsl/ir.h
@@ -144,7 +144,7 @@ public:
ir_rvalue *as_rvalue_to_saturate();
- virtual bool is_lvalue()
+ virtual bool is_lvalue() const
{
return false;
}
@@ -152,7 +152,7 @@ public:
/**
* Get the variable that is ultimately referenced by an r-value
*/
- virtual ir_variable *variable_referenced()
+ virtual ir_variable *variable_referenced() const
{
return NULL;
}
@@ -236,7 +236,7 @@ enum ir_variable_interpolation {
/**
* \brief Layout qualifiers for gl_FragDepth.
*
- * The AMD_conservative_depth extension allows gl_FragDepth to be redeclared
+ * The AMD/ARB_conservative_depth extensions allow gl_FragDepth to be redeclared
* with a layout qualifier.
*/
enum ir_depth_layout {
@@ -1212,7 +1212,8 @@ enum ir_texture_opcode {
ir_txb, /**< Texture look-up with LOD bias */
ir_txl, /**< Texture look-up with explicit LOD */
ir_txd, /**< Texture look-up with partial derivatvies */
- ir_txf /**< Texel fetch with explicit LOD */
+ ir_txf, /**< Texel fetch with explicit LOD */
+ ir_txs /**< Texture size */
};
@@ -1233,6 +1234,7 @@ enum ir_texture_opcode {
* (txl <type> <sampler> <coordinate> 0 1 ( ) <lod>)
* (txd <type> <sampler> <coordinate> 0 1 ( ) (dPdx dPdy))
* (txf <type> <sampler> <coordinate> 0 <lod>)
+ * (txs <type> <sampler> <lod>)
*/
class ir_texture : public ir_rvalue {
public:
@@ -1355,7 +1357,7 @@ public:
virtual ir_visitor_status accept(ir_hierarchical_visitor *);
- bool is_lvalue()
+ bool is_lvalue() const
{
return val->is_lvalue() && !mask.has_duplicates;
}
@@ -1363,7 +1365,7 @@ public:
/**
* Get the variable that is ultimately referenced by an r-value
*/
- virtual ir_variable *variable_referenced();
+ virtual ir_variable *variable_referenced() const;
ir_rvalue *val;
ir_swizzle_mask mask;
@@ -1387,12 +1389,12 @@ public:
return this;
}
- bool is_lvalue();
+ bool is_lvalue() const;
/**
* Get the variable that is ultimately referenced by an r-value
*/
- virtual ir_variable *variable_referenced() = 0;
+ virtual ir_variable *variable_referenced() const = 0;
};
@@ -1413,7 +1415,7 @@ public:
/**
* Get the variable that is ultimately referenced by an r-value
*/
- virtual ir_variable *variable_referenced()
+ virtual ir_variable *variable_referenced() const
{
return this->var;
}
@@ -1462,7 +1464,7 @@ public:
/**
* Get the variable that is ultimately referenced by an r-value
*/
- virtual ir_variable *variable_referenced()
+ virtual ir_variable *variable_referenced() const
{
return this->array->variable_referenced();
}
@@ -1496,7 +1498,7 @@ public:
/**
* Get the variable that is ultimately referenced by an r-value
*/
- virtual ir_variable *variable_referenced()
+ virtual ir_variable *variable_referenced() const
{
return this->record->variable_referenced();
}
diff --git a/mesalib/src/glsl/ir_clone.cpp b/mesalib/src/glsl/ir_clone.cpp
index eac1f7492..8260b1339 100644
--- a/mesalib/src/glsl/ir_clone.cpp
+++ b/mesalib/src/glsl/ir_clone.cpp
@@ -222,7 +222,8 @@ ir_texture::clone(void *mem_ctx, struct hash_table *ht) const
new_tex->type = this->type;
new_tex->sampler = this->sampler->clone(mem_ctx, ht);
- new_tex->coordinate = this->coordinate->clone(mem_ctx, ht);
+ if (this->coordinate)
+ new_tex->coordinate = this->coordinate->clone(mem_ctx, ht);
if (this->projector)
new_tex->projector = this->projector->clone(mem_ctx, ht);
if (this->shadow_comparitor) {
@@ -240,6 +241,7 @@ ir_texture::clone(void *mem_ctx, struct hash_table *ht) const
break;
case ir_txl:
case ir_txf:
+ case ir_txs:
new_tex->lod_info.lod = this->lod_info.lod->clone(mem_ctx, ht);
break;
case ir_txd:
diff --git a/mesalib/src/glsl/ir_hv_accept.cpp b/mesalib/src/glsl/ir_hv_accept.cpp
index 4a607dc87..d33fc85bf 100644
--- a/mesalib/src/glsl/ir_hv_accept.cpp
+++ b/mesalib/src/glsl/ir_hv_accept.cpp
@@ -171,9 +171,11 @@ ir_texture::accept(ir_hierarchical_visitor *v)
if (s != visit_continue)
return (s == visit_continue_with_parent) ? visit_continue : s;
- s = this->coordinate->accept(v);
- if (s != visit_continue)
- return (s == visit_continue_with_parent) ? visit_continue : s;
+ if (this->coordinate) {
+ s = this->coordinate->accept(v);
+ if (s != visit_continue)
+ return (s == visit_continue_with_parent) ? visit_continue : s;
+ }
if (this->projector) {
s = this->projector->accept(v);
@@ -203,6 +205,7 @@ ir_texture::accept(ir_hierarchical_visitor *v)
break;
case ir_txl:
case ir_txf:
+ case ir_txs:
s = this->lod_info.lod->accept(v);
if (s != visit_continue)
return (s == visit_continue_with_parent) ? visit_continue : s;
diff --git a/mesalib/src/glsl/ir_print_visitor.cpp b/mesalib/src/glsl/ir_print_visitor.cpp
index 7e3649477..89f20529e 100644
--- a/mesalib/src/glsl/ir_print_visitor.cpp
+++ b/mesalib/src/glsl/ir_print_visitor.cpp
@@ -244,19 +244,21 @@ void ir_print_visitor::visit(ir_texture *ir)
ir->sampler->accept(this);
printf(" ");
- ir->coordinate->accept(this);
+ if (ir->op != ir_txs) {
+ ir->coordinate->accept(this);
- printf(" ");
+ printf(" ");
- if (ir->offset != NULL) {
- ir->offset->accept(this);
- } else {
- printf("0");
- }
+ if (ir->offset != NULL) {
+ ir->offset->accept(this);
+ } else {
+ printf("0");
+ }
- printf(" ");
+ printf(" ");
+ }
- if (ir->op != ir_txf) {
+ if (ir->op != ir_txf && ir->op != ir_txs) {
if (ir->projector)
ir->projector->accept(this);
else
@@ -280,6 +282,7 @@ void ir_print_visitor::visit(ir_texture *ir)
break;
case ir_txl:
case ir_txf:
+ case ir_txs:
ir->lod_info.lod->accept(this);
break;
case ir_txd:
diff --git a/mesalib/src/glsl/ir_reader.cpp b/mesalib/src/glsl/ir_reader.cpp
index f3a621734..22009eebc 100644
--- a/mesalib/src/glsl/ir_reader.cpp
+++ b/mesalib/src/glsl/ir_reader.cpp
@@ -885,6 +885,8 @@ ir_reader::read_texture(s_expression *expr)
{ "tex", s_type, s_sampler, s_coord, s_offset, s_proj, s_shadow };
s_pattern txf_pattern[] =
{ "txf", s_type, s_sampler, s_coord, s_offset, s_lod };
+ s_pattern txs_pattern[] =
+ { "txs", s_type, s_sampler, s_lod };
s_pattern other_pattern[] =
{ tag, s_type, s_sampler, s_coord, s_offset, s_proj, s_shadow, s_lod };
@@ -892,6 +894,8 @@ ir_reader::read_texture(s_expression *expr)
op = ir_tex;
} else if (MATCH(expr, txf_pattern)) {
op = ir_txf;
+ } else if (MATCH(expr, txs_pattern)) {
+ op = ir_txs;
} else if (MATCH(expr, other_pattern)) {
op = ir_texture::get_opcode(tag->value());
if (op == -1)
@@ -920,25 +924,27 @@ ir_reader::read_texture(s_expression *expr)
}
tex->set_sampler(sampler, type);
- // Read coordinate (any rvalue)
- tex->coordinate = read_rvalue(s_coord);
- if (tex->coordinate == NULL) {
- ir_read_error(NULL, "when reading coordinate in (%s ...)",
- tex->opcode_string());
- return NULL;
- }
-
- // Read texel offset - either 0 or an rvalue.
- s_int *si_offset = SX_AS_INT(s_offset);
- if (si_offset == NULL || si_offset->value() != 0) {
- tex->offset = read_rvalue(s_offset);
- if (tex->offset == NULL) {
- ir_read_error(s_offset, "expected 0 or an expression");
+ if (op != ir_txs) {
+ // Read coordinate (any rvalue)
+ tex->coordinate = read_rvalue(s_coord);
+ if (tex->coordinate == NULL) {
+ ir_read_error(NULL, "when reading coordinate in (%s ...)",
+ tex->opcode_string());
return NULL;
}
+
+ // Read texel offset - either 0 or an rvalue.
+ s_int *si_offset = SX_AS_INT(s_offset);
+ if (si_offset == NULL || si_offset->value() != 0) {
+ tex->offset = read_rvalue(s_offset);
+ if (tex->offset == NULL) {
+ ir_read_error(s_offset, "expected 0 or an expression");
+ return NULL;
+ }
+ }
}
- if (op != ir_txf) {
+ if (op != ir_txf && op != ir_txs) {
s_int *proj_as_int = SX_AS_INT(s_proj);
if (proj_as_int && proj_as_int->value() == 1) {
tex->projector = NULL;
@@ -973,6 +979,7 @@ ir_reader::read_texture(s_expression *expr)
break;
case ir_txl:
case ir_txf:
+ case ir_txs:
tex->lod_info.lod = read_rvalue(s_lod);
if (tex->lod_info.lod == NULL) {
ir_read_error(NULL, "when reading LOD in (%s ...)",
diff --git a/mesalib/src/glsl/ir_rvalue_visitor.cpp b/mesalib/src/glsl/ir_rvalue_visitor.cpp
index ed6c7cb6a..193bcd2d7 100644
--- a/mesalib/src/glsl/ir_rvalue_visitor.cpp
+++ b/mesalib/src/glsl/ir_rvalue_visitor.cpp
@@ -63,6 +63,7 @@ ir_rvalue_visitor::visit_leave(ir_texture *ir)
break;
case ir_txf:
case ir_txl:
+ case ir_txs:
handle_rvalue(&ir->lod_info.lod);
break;
case ir_txd:
diff --git a/mesalib/src/glsl/ir_validate.cpp b/mesalib/src/glsl/ir_validate.cpp
index ed731b631..90a4d60d2 100644
--- a/mesalib/src/glsl/ir_validate.cpp
+++ b/mesalib/src/glsl/ir_validate.cpp
@@ -59,7 +59,8 @@ public:
virtual ir_visitor_status visit(ir_variable *v);
virtual ir_visitor_status visit(ir_dereference_variable *ir);
- virtual ir_visitor_status visit(ir_if *ir);
+
+ virtual ir_visitor_status visit_enter(ir_if *ir);
virtual ir_visitor_status visit_leave(ir_loop *ir);
virtual ir_visitor_status visit_enter(ir_function *ir);
@@ -102,7 +103,7 @@ ir_validate::visit(ir_dereference_variable *ir)
}
ir_visitor_status
-ir_validate::visit(ir_if *ir)
+ir_validate::visit_enter(ir_if *ir)
{
if (ir->condition->type != glsl_type::bool_type) {
printf("ir_if condition %s type instead of bool.\n",
@@ -541,7 +542,43 @@ ir_validate::visit_enter(ir_call *ir)
abort();
}
+ const exec_node *formal_param_node = callee->parameters.head;
+ const exec_node *actual_param_node = ir->actual_parameters.head;
+ while (true) {
+ if (formal_param_node->is_tail_sentinel()
+ != actual_param_node->is_tail_sentinel()) {
+ printf("ir_call has the wrong number of parameters:\n");
+ goto dump_ir;
+ }
+ if (formal_param_node->is_tail_sentinel()) {
+ break;
+ }
+ const ir_variable *formal_param
+ = (const ir_variable *) formal_param_node;
+ const ir_rvalue *actual_param
+ = (const ir_rvalue *) actual_param_node;
+ if (formal_param->type != actual_param->type) {
+ printf("ir_call parameter type mismatch:\n");
+ goto dump_ir;
+ }
+ if (formal_param->mode == ir_var_out
+ || formal_param->mode == ir_var_inout) {
+ if (!actual_param->is_lvalue()) {
+ printf("ir_call out/inout parameters must be lvalues:\n");
+ goto dump_ir;
+ }
+ }
+ formal_param_node = formal_param_node->next;
+ actual_param_node = actual_param_node->next;
+ }
+
return visit_continue;
+
+dump_ir:
+ ir->print();
+ printf("callee:\n");
+ callee->print();
+ abort();
}
void
diff --git a/mesalib/src/glsl/linker.cpp b/mesalib/src/glsl/linker.cpp
index 0d4d5d88b..3538dc5fe 100644
--- a/mesalib/src/glsl/linker.cpp
+++ b/mesalib/src/glsl/linker.cpp
@@ -395,7 +395,7 @@ cross_validate_globals(struct gl_shader_program *prog,
/* Validate layout qualifiers for gl_FragDepth.
*
- * From the AMD_conservative_depth spec:
+ * From the AMD/ARB_conservative_depth specs:
* "If gl_FragDepth is redeclared in any fragment shader in
* a program, it must be redeclared in all fragment shaders in that
* program that have static assignments to gl_FragDepth. All
diff --git a/mesalib/src/glsl/lower_if_to_cond_assign.cpp b/mesalib/src/glsl/lower_if_to_cond_assign.cpp
index b637eb4fe..7b89a1539 100644
--- a/mesalib/src/glsl/lower_if_to_cond_assign.cpp
+++ b/mesalib/src/glsl/lower_if_to_cond_assign.cpp
@@ -47,6 +47,7 @@
#include "glsl_types.h"
#include "ir.h"
+#include "program/hash_table.h"
class ir_if_to_cond_assign_visitor : public ir_hierarchical_visitor {
public:
@@ -55,6 +56,14 @@ public:
this->progress = false;
this->max_depth = max_depth;
this->depth = 0;
+
+ this->condition_variables = hash_table_ctor(0, hash_table_pointer_hash,
+ hash_table_pointer_compare);
+ }
+
+ ~ir_if_to_cond_assign_visitor()
+ {
+ hash_table_dtor(this->condition_variables);
}
ir_visitor_status visit_enter(ir_if *);
@@ -63,6 +72,8 @@ public:
bool progress;
unsigned max_depth;
unsigned depth;
+
+ struct hash_table *condition_variables;
};
bool
@@ -94,40 +105,43 @@ check_control_flow(ir_instruction *ir, void *data)
void
move_block_to_cond_assign(void *mem_ctx,
- ir_if *if_ir, ir_variable *cond_var, bool then)
+ ir_if *if_ir, ir_rvalue *cond_expr,
+ exec_list *instructions,
+ struct hash_table *ht)
{
- exec_list *instructions;
-
- if (then) {
- instructions = &if_ir->then_instructions;
- } else {
- instructions = &if_ir->else_instructions;
- }
-
- foreach_iter(exec_list_iterator, iter, *instructions) {
- ir_instruction *ir = (ir_instruction *)iter.get();
+ foreach_list_safe(node, instructions) {
+ ir_instruction *ir = (ir_instruction *) node;
if (ir->ir_type == ir_type_assignment) {
ir_assignment *assign = (ir_assignment *)ir;
- ir_rvalue *cond_expr;
- ir_dereference *deref = new(mem_ctx) ir_dereference_variable(cond_var);
-
- if (then) {
- cond_expr = deref;
- } else {
- cond_expr = new(mem_ctx) ir_expression(ir_unop_logic_not,
- glsl_type::bool_type,
- deref,
- NULL);
- }
- if (!assign->condition) {
- assign->condition = cond_expr;
- } else {
- assign->condition = new(mem_ctx) ir_expression(ir_binop_logic_and,
- glsl_type::bool_type,
- cond_expr,
- assign->condition);
+ if (hash_table_find(ht, assign) == NULL) {
+ hash_table_insert(ht, assign, assign);
+
+ /* If the LHS of the assignment is a condition variable that was
+ * previously added, insert an additional assignment of false to
+ * the variable.
+ */
+ const bool assign_to_cv =
+ hash_table_find(ht, assign->lhs->variable_referenced()) != NULL;
+
+ if (!assign->condition) {
+ if (assign_to_cv) {
+ assign->rhs =
+ new(mem_ctx) ir_expression(ir_binop_logic_and,
+ glsl_type::bool_type,
+ cond_expr->clone(mem_ctx, NULL),
+ assign->rhs);
+ } else {
+ assign->condition = cond_expr->clone(mem_ctx, NULL);
+ }
+ } else {
+ assign->condition =
+ new(mem_ctx) ir_expression(ir_binop_logic_and,
+ glsl_type::bool_type,
+ cond_expr->clone(mem_ctx, NULL),
+ assign->condition);
+ }
}
}
@@ -142,6 +156,7 @@ ir_if_to_cond_assign_visitor::visit_enter(ir_if *ir)
{
(void) ir;
this->depth++;
+
return visit_continue;
}
@@ -153,9 +168,7 @@ ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir)
return visit_continue;
bool found_control_flow = false;
- ir_variable *cond_var;
ir_assignment *assign;
- ir_dereference_variable *deref;
/* Check that both blocks don't contain anything we can't support. */
foreach_iter(exec_list_iterator, then_iter, ir->then_instructions) {
@@ -171,24 +184,62 @@ ir_if_to_cond_assign_visitor::visit_leave(ir_if *ir)
void *mem_ctx = ralloc_parent(ir);
- /* Store the condition to a variable so the assignment conditions are
- * simpler.
+ /* Store the condition to a variable. Move all of the instructions from
+ * the then-clause of the if-statement. Use the condition variable as a
+ * condition for all assignments.
*/
- cond_var = new(mem_ctx) ir_variable(glsl_type::bool_type,
- "if_to_cond_assign_condition",
- ir_var_temporary);
- ir->insert_before(cond_var);
-
- deref = new(mem_ctx) ir_dereference_variable(cond_var);
- assign = new(mem_ctx) ir_assignment(deref,
- ir->condition, NULL);
+ ir_variable *const then_var =
+ new(mem_ctx) ir_variable(glsl_type::bool_type,
+ "if_to_cond_assign_then",
+ ir_var_temporary);
+ ir->insert_before(then_var);
+
+ ir_dereference_variable *then_cond =
+ new(mem_ctx) ir_dereference_variable(then_var);
+
+ assign = new(mem_ctx) ir_assignment(then_cond, ir->condition);
ir->insert_before(assign);
- /* Now, move all of the instructions out of the if blocks, putting
- * conditions on assignments.
+ move_block_to_cond_assign(mem_ctx, ir, then_cond,
+ &ir->then_instructions,
+ this->condition_variables);
+
+ /* Add the new condition variable to the hash table. This allows us to
+ * find this variable when lowering other (enclosing) if-statements.
+ */
+ hash_table_insert(this->condition_variables, then_var, then_var);
+
+ /* If there are instructions in the else-clause, store the inverse of the
+ * condition to a variable. Move all of the instructions from the
+ * else-clause if the if-statement. Use the (inverse) condition variable
+ * as a condition for all assignments.
*/
- move_block_to_cond_assign(mem_ctx, ir, cond_var, true);
- move_block_to_cond_assign(mem_ctx, ir, cond_var, false);
+ if (!ir->else_instructions.is_empty()) {
+ ir_variable *const else_var =
+ new(mem_ctx) ir_variable(glsl_type::bool_type,
+ "if_to_cond_assign_else",
+ ir_var_temporary);
+ ir->insert_before(else_var);
+
+ ir_dereference_variable *else_cond =
+ new(mem_ctx) ir_dereference_variable(else_var);
+
+ ir_rvalue *inverse =
+ new(mem_ctx) ir_expression(ir_unop_logic_not,
+ then_cond->clone(mem_ctx, NULL));
+
+ assign = new(mem_ctx) ir_assignment(else_cond, inverse);
+ ir->insert_before(assign);
+
+ move_block_to_cond_assign(mem_ctx, ir, else_cond,
+ &ir->else_instructions,
+ this->condition_variables);
+
+ /* Add the new condition variable to the hash table. This allows us to
+ * find this variable when lowering other (enclosing) if-statements.
+ */
+ hash_table_insert(this->condition_variables, else_var, else_var);
+ }
ir->remove();
diff --git a/mesalib/src/glsl/lower_instructions.cpp b/mesalib/src/glsl/lower_instructions.cpp
index 806f86399..23aa19bde 100644
--- a/mesalib/src/glsl/lower_instructions.cpp
+++ b/mesalib/src/glsl/lower_instructions.cpp
@@ -166,6 +166,10 @@ lower_instructions_visitor::div_to_mul_rcp(ir_expression *ir)
else
op0 = new(ir) ir_expression(ir_unop_u2f, vec_type, ir->operands[0], NULL);
+ vec_type = glsl_type::get_instance(GLSL_TYPE_FLOAT,
+ ir->type->vector_elements,
+ ir->type->matrix_columns);
+
op0 = new(ir) ir_expression(ir_binop_mul, vec_type, op0, op1);
if (ir->operands[1]->type->base_type == GLSL_TYPE_INT) {
diff --git a/mesalib/src/glsl/main.cpp b/mesalib/src/glsl/main.cpp
index b368b3dbc..31f6cbad3 100644
--- a/mesalib/src/glsl/main.cpp
+++ b/mesalib/src/glsl/main.cpp
@@ -35,7 +35,6 @@
#include "ast.h"
#include "glsl_parser_extras.h"
-#include "glsl_parser.h"
#include "ir_optimization.h"
#include "ir_print_visitor.h"
#include "program.h"
diff --git a/mesalib/src/glsl/opt_tree_grafting.cpp b/mesalib/src/glsl/opt_tree_grafting.cpp
index 75bd11c09..e08545b47 100644
--- a/mesalib/src/glsl/opt_tree_grafting.cpp
+++ b/mesalib/src/glsl/opt_tree_grafting.cpp
@@ -258,6 +258,7 @@ ir_tree_grafting_visitor::visit_enter(ir_texture *ir)
break;
case ir_txf:
case ir_txl:
+ case ir_txs:
if (do_graft(&ir->lod_info.lod))
return visit_stop;
break;
diff --git a/mesalib/src/glsl/ralloc.c b/mesalib/src/glsl/ralloc.c
index 6a5eac6b9..fb48a91c5 100644
--- a/mesalib/src/glsl/ralloc.c
+++ b/mesalib/src/glsl/ralloc.c
@@ -28,6 +28,11 @@
#include <string.h>
#include <stdint.h>
+/* Android defines SIZE_MAX in limits.h, instead of the standard stdint.h */
+#ifdef ANDROID
+#include <limits.h>
+#endif
+
#include "ralloc.h"
#ifdef __GNUC__
diff --git a/mesalib/src/glsl/standalone_scaffolding.cpp b/mesalib/src/glsl/standalone_scaffolding.cpp
index 696ea757e..bbd7bb913 100644
--- a/mesalib/src/glsl/standalone_scaffolding.cpp
+++ b/mesalib/src/glsl/standalone_scaffolding.cpp
@@ -63,6 +63,8 @@ void initialize_context_to_defaults(struct gl_context *ctx, gl_api api)
ctx->API = api;
+ ctx->Extensions.dummy_false = false;
+ ctx->Extensions.dummy_true = true;
ctx->Extensions.ARB_ES2_compatibility = true;
ctx->Extensions.ARB_draw_buffers = true;
ctx->Extensions.ARB_draw_instanced = true;
diff --git a/mesalib/src/mapi/glapi/SConscript b/mesalib/src/mapi/glapi/SConscript
index a7764745e..fdd657900 100644
--- a/mesalib/src/mapi/glapi/SConscript
+++ b/mesalib/src/mapi/glapi/SConscript
@@ -74,6 +74,11 @@ if env['platform'] != 'winddk':
else:
pass
+ if env['toolchain'] == 'crossmingw':
+ # compile these files without -gstabs option
+ glapi_sources = env.compile_without_gstabs(glapi_sources, "glapi_dispatch.c")
+ glapi_sources = env.compile_without_gstabs(glapi_sources, "glapi_getproc.c")
+
glapi = env.ConvenienceLibrary(
target = 'glapi',
source = glapi_sources,
diff --git a/mesalib/src/mapi/glapi/gen-es/Makefile b/mesalib/src/mapi/glapi/gen-es/Makefile
deleted file mode 100644
index bf66ec037..000000000
--- a/mesalib/src/mapi/glapi/gen-es/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-TOP = ../../../..
-MAPI = $(TOP)/src/mapi/mapi
-GLAPI = ../gen
-include $(TOP)/configs/current
-
-OUTPUTS := \
- glapi_mapi_tmp.h \
- main/dispatch.h \
- main/remap_helper.h
-
-COMMON = gl_and_es_API.xml gl_XML.py glX_XML.py license.py typeexpr.py
-COMMON := $(addprefix $(GLAPI)/, $(COMMON))
-
-ES1_APIXML := es1_API.xml
-ES2_APIXML := es2_API.xml
-ES1_OUTPUT_DIR := $(TOP)/src/mapi/es1api
-ES2_OUTPUT_DIR := $(TOP)/src/mapi/es2api
-
-ES1_DEPS = $(ES1_APIXML) base1_API.xml es1_EXT.xml es_EXT.xml \
- es1_COMPAT.xml es_COMPAT.xml
-ES2_DEPS = $(ES2_APIXML) base2_API.xml es2_EXT.xml es_EXT.xml \
- es2_COMPAT.xml es_COMPAT.xml
-
-ES1_OUTPUTS := $(addprefix $(ES1_OUTPUT_DIR)/, $(OUTPUTS))
-ES2_OUTPUTS := $(addprefix $(ES2_OUTPUT_DIR)/, $(OUTPUTS))
-
-SHARED_GLAPI_APIXML := $(GLAPI)/gl_and_es_API.xml
-SHARED_GLAPI_OUTPUT_DIR := $(TOP)/src/mapi/shared-glapi
-SHARED_GLAPI_DEPS := $(SHARED_GLAPI_APIXML)
-SHARED_GLAPI_OUTPUTS = $(SHARED_GLAPI_OUTPUT_DIR)/glapi_mapi_tmp.h
-
-all: es1 es2 shared-glapi
-
-es1: $(ES1_OUTPUTS)
-es2: $(ES2_OUTPUTS)
-shared-glapi: $(SHARED_GLAPI_OUTPUTS)
-
-$(ES1_OUTPUTS): APIXML := $(ES1_APIXML)
-$(ES1_OUTPUTS): PRINTER := es1api
-$(ES1_OUTPUTS): $(ES1_DEPS)
-
-$(ES2_OUTPUTS): APIXML := $(ES2_APIXML)
-$(ES2_OUTPUTS): PRINTER := es2api
-$(ES2_OUTPUTS): $(ES2_DEPS)
-
-$(SHARED_GLAPI_OUTPUTS): APIXML := $(SHARED_GLAPI_APIXML)
-$(SHARED_GLAPI_OUTPUTS): PRINTER := shared-glapi
-$(SHARED_GLAPI_OUTPUTS): $(SHARED_GLAPI_DEPS)
-
-define gen-glapi
- @mkdir -p $(dir $@)
- $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) $(1) > $@
-endef
-
-%/glapi_mapi_tmp.h: $(MAPI)/mapi_abi.py $(COMMON)
- @mkdir -p $(dir $@)
- $(PYTHON2) $(PYTHON_FLAGS) $< \
- --printer $(PRINTER) --mode lib $(GLAPI)/gl_and_es_API.xml > $@
-
-%/main/dispatch.h: $(GLAPI)/gl_table.py $(COMMON)
- $(call gen-glapi,-c -m remap_table)
-
-%/main/remap_helper.h: $(GLAPI)/remap_helper.py $(COMMON)
- $(call gen-glapi)
-
-verify_xml:
- @if [ ! -f gl.h ]; then \
- echo "Please copy gl.h and gl2.h to this directory"; \
- exit 1; \
- fi
- @echo "Verifying that es1_API.xml covers OpenGL ES 1.1..."
- @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl.h > tmp.xml
- @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es1_API.xml
- @echo "Verifying that es2_API.xml covers OpenGL ES 2.0..."
- @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl2.h > tmp.xml
- @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es2_API.xml
- @rm -f tmp.xml
-
-clean-es1:
- -rm -f $(ES1_OUTPUTS)
- -rm -rf $(ES1_OUTPUT_DIR)/main
-
-clean-es2:
- -rm -f $(ES2_OUTPUTS)
- -rm -rf $(ES2_OUTPUT_DIR)/main
-
-clean-shared-glapi:
- -rm -f $(SHARED_GLAPI_OUTPUTS)
-
-clean: clean-es1 clean-es2 clean-shared-glapi
- -rm -f *~ *.pyc *.pyo
diff --git a/mesalib/src/mapi/glapi/gen-es/base1_API.xml b/mesalib/src/mapi/glapi/gen-es/base1_API.xml
deleted file mode 100644
index 720be257c..000000000
--- a/mesalib/src/mapi/glapi/gen-es/base1_API.xml
+++ /dev/null
@@ -1,744 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<!-- OpenGL and OpenGL ES 1.x APIs
- This file defines the base categories that can be shared by all APIs.
- They are defined in an incremental fashion.
--->
-
-<OpenGLAPI>
-
-<!-- base subset of OpenGL 1.0 -->
-<category name="base1.0">
- <enum name="FALSE" value="0x0"/>
- <enum name="TRUE" value="0x1"/>
- <enum name="ZERO" value="0x0"/>
- <enum name="ONE" value="0x1"/>
- <enum name="NO_ERROR" value="0x0"/>
-
- <enum name="POINTS" value="0x0000"/>
- <enum name="LINES" value="0x0001"/>
- <enum name="LINE_LOOP" value="0x0002"/>
- <enum name="LINE_STRIP" value="0x0003"/>
- <enum name="TRIANGLES" value="0x0004"/>
- <enum name="TRIANGLE_STRIP" value="0x0005"/>
- <enum name="TRIANGLE_FAN" value="0x0006"/>
- <enum name="NEVER" value="0x0200"/>
- <enum name="LESS" value="0x0201"/>
- <enum name="EQUAL" value="0x0202"/>
- <enum name="LEQUAL" value="0x0203"/>
- <enum name="GREATER" value="0x0204"/>
- <enum name="NOTEQUAL" value="0x0205"/>
- <enum name="GEQUAL" value="0x0206"/>
- <enum name="ALWAYS" value="0x0207"/>
- <enum name="SRC_COLOR" value="0x0300"/>
- <enum name="ONE_MINUS_SRC_COLOR" value="0x0301"/>
- <enum name="SRC_ALPHA" value="0x0302"/>
- <enum name="ONE_MINUS_SRC_ALPHA" value="0x0303"/>
- <enum name="DST_ALPHA" value="0x0304"/>
- <enum name="ONE_MINUS_DST_ALPHA" value="0x0305"/>
- <enum name="DST_COLOR" value="0x0306"/>
- <enum name="ONE_MINUS_DST_COLOR" value="0x0307"/>
- <enum name="SRC_ALPHA_SATURATE" value="0x0308"/>
- <enum name="FRONT" value="0x0404"/>
- <enum name="BACK" value="0x0405"/>
- <enum name="FRONT_AND_BACK" value="0x0408"/>
- <enum name="INVALID_ENUM" value="0x0500"/>
- <enum name="INVALID_VALUE" value="0x0501"/>
- <enum name="INVALID_OPERATION" value="0x0502"/>
- <enum name="OUT_OF_MEMORY" value="0x0505"/>
- <enum name="CW" value="0x0900"/>
- <enum name="CCW" value="0x0901"/>
- <enum name="CULL_FACE" count="1" value="0x0B44">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DEPTH_TEST" count="1" value="0x0B71">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_TEST" count="1" value="0x0B90">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DITHER" count="1" value="0x0BD0">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND" count="1" value="0x0BE2">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SCISSOR_TEST" count="1" value="0x0C11">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="UNPACK_ALIGNMENT" count="1" value="0x0CF5">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="PACK_ALIGNMENT" count="1" value="0x0D05">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_TEXTURE_SIZE" count="1" value="0x0D33">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_VIEWPORT_DIMS" count="2" value="0x0D3A">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SUBPIXEL_BITS" count="1" value="0x0D50">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="RED_BITS" count="1" value="0x0D52">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="GREEN_BITS" count="1" value="0x0D53">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLUE_BITS" count="1" value="0x0D54">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="ALPHA_BITS" count="1" value="0x0D55">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DEPTH_BITS" count="1" value="0x0D56">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_BITS" count="1" value="0x0D57">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_2D" count="1" value="0x0DE1">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DONT_CARE" value="0x1100"/>
- <enum name="FASTEST" value="0x1101"/>
- <enum name="NICEST" value="0x1102"/>
- <enum name="BYTE" count="1" value="0x1400">
- <size name="CallLists"/>
- </enum>
- <enum name="UNSIGNED_BYTE" count="1" value="0x1401">
- <size name="CallLists"/>
- </enum>
- <enum name="SHORT" count="2" value="0x1402">
- <size name="CallLists"/>
- </enum>
- <enum name="UNSIGNED_SHORT" count="2" value="0x1403">
- <size name="CallLists"/>
- </enum>
- <enum name="FLOAT" count="4" value="0x1406">
- <size name="CallLists"/>
- </enum>
- <enum name="INVERT" value="0x150A"/>
- <enum name="TEXTURE" value="0x1702"/>
- <enum name="ALPHA" value="0x1906"/>
- <enum name="RGB" value="0x1907"/>
- <enum name="RGBA" value="0x1908"/>
- <enum name="LUMINANCE" value="0x1909"/>
- <enum name="LUMINANCE_ALPHA" value="0x190A"/>
- <enum name="KEEP" value="0x1E00"/>
- <enum name="REPLACE" value="0x1E01"/>
- <enum name="INCR" value="0x1E02"/>
- <enum name="DECR" value="0x1E03"/>
- <enum name="VENDOR" value="0x1F00"/>
- <enum name="RENDERER" value="0x1F01"/>
- <enum name="VERSION" value="0x1F02"/>
- <enum name="EXTENSIONS" value="0x1F03"/>
- <enum name="NEAREST" value="0x2600"/>
- <enum name="LINEAR" value="0x2601"/>
- <enum name="NEAREST_MIPMAP_NEAREST" value="0x2700"/>
- <enum name="LINEAR_MIPMAP_NEAREST" value="0x2701"/>
- <enum name="NEAREST_MIPMAP_LINEAR" value="0x2702"/>
- <enum name="LINEAR_MIPMAP_LINEAR" value="0x2703"/>
- <enum name="TEXTURE_MAG_FILTER" count="1" value="0x2800">
- <size name="TexParameterfv"/>
- <size name="TexParameteriv"/>
- <size name="GetTexParameterfv" mode="get"/>
- <size name="GetTexParameteriv" mode="get"/>
- </enum>
- <enum name="TEXTURE_MIN_FILTER" count="1" value="0x2801">
- <size name="TexParameterfv"/>
- <size name="TexParameteriv"/>
- <size name="GetTexParameterfv" mode="get"/>
- <size name="GetTexParameteriv" mode="get"/>
- </enum>
- <enum name="TEXTURE_WRAP_S" count="1" value="0x2802">
- <size name="TexParameterfv"/>
- <size name="TexParameteriv"/>
- <size name="GetTexParameterfv" mode="get"/>
- <size name="GetTexParameteriv" mode="get"/>
- </enum>
- <enum name="TEXTURE_WRAP_T" count="1" value="0x2803">
- <size name="TexParameterfv"/>
- <size name="TexParameteriv"/>
- <size name="GetTexParameterfv" mode="get"/>
- <size name="GetTexParameteriv" mode="get"/>
- </enum>
- <enum name="REPEAT" value="0x2901"/>
-
- <enum name="DEPTH_BUFFER_BIT" value="0x00000100"/>
- <enum name="STENCIL_BUFFER_BIT" value="0x00000400"/>
- <enum name="COLOR_BUFFER_BIT" value="0x00004000"/>
-
- <type name="float" size="4" float="true" glx_name="FLOAT32"/>
- <type name="clampf" size="4" float="true" glx_name="FLOAT32"/>
-
- <type name="int" size="4" glx_name="CARD32"/>
- <type name="uint" size="4" unsigned="true" glx_name="CARD32"/>
- <type name="sizei" size="4" glx_name="CARD32"/>
- <type name="enum" size="4" unsigned="true" glx_name="ENUM"/>
- <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
-
- <type name="short" size="2" glx_name="CARD16"/>
- <type name="ushort" size="2" unsigned="true" glx_name="CARD16"/>
-
- <type name="byte" size="1" glx_name="CARD8"/>
- <type name="ubyte" size="1" unsigned="true" glx_name="CARD8"/>
- <type name="boolean" size="1" unsigned="true" glx_name="CARD8"/>
-
- <type name="void" size="1"/>
-
- <function name="BlendFunc" offset="241">
- <param name="sfactor" type="GLenum"/>
- <param name="dfactor" type="GLenum"/>
- <glx rop="160"/>
- </function>
-
- <function name="Clear" offset="203">
- <param name="mask" type="GLbitfield"/>
- <glx rop="127"/>
- </function>
-
- <function name="ClearColor" offset="206">
- <param name="red" type="GLclampf"/>
- <param name="green" type="GLclampf"/>
- <param name="blue" type="GLclampf"/>
- <param name="alpha" type="GLclampf"/>
- <glx rop="130"/>
- </function>
-
- <function name="ClearStencil" offset="207">
- <param name="s" type="GLint"/>
- <glx rop="131"/>
- </function>
-
- <function name="ColorMask" offset="210">
- <param name="red" type="GLboolean"/>
- <param name="green" type="GLboolean"/>
- <param name="blue" type="GLboolean"/>
- <param name="alpha" type="GLboolean"/>
- <glx rop="134"/>
- </function>
-
- <function name="CullFace" offset="152">
- <param name="mode" type="GLenum"/>
- <glx rop="79"/>
- </function>
-
- <function name="DepthFunc" offset="245">
- <param name="func" type="GLenum"/>
- <glx rop="164"/>
- </function>
-
- <function name="DepthMask" offset="211">
- <param name="flag" type="GLboolean"/>
- <glx rop="135"/>
- </function>
-
- <function name="Disable" offset="214">
- <param name="cap" type="GLenum"/>
- <glx rop="138" handcode="client"/>
- </function>
-
- <function name="Enable" offset="215">
- <param name="cap" type="GLenum"/>
- <glx rop="139" handcode="client"/>
- </function>
-
- <function name="Finish" offset="216">
- <glx sop="108" handcode="true"/>
- </function>
-
- <function name="Flush" offset="217">
- <glx sop="142" handcode="true"/>
- </function>
-
- <function name="FrontFace" offset="157">
- <param name="mode" type="GLenum"/>
- <glx rop="84"/>
- </function>
-
- <function name="GetError" offset="261">
- <return type="GLenum"/>
- <glx sop="115" handcode="client"/>
- </function>
-
- <function name="GetIntegerv" offset="263">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="117" handcode="client"/>
- </function>
-
- <function name="GetString" offset="275">
- <param name="name" type="GLenum"/>
- <return type="const GLubyte *"/>
- <glx sop="129" handcode="true"/>
- </function>
-
- <function name="Hint" offset="158">
- <param name="target" type="GLenum"/>
- <param name="mode" type="GLenum"/>
- <glx rop="85"/>
- </function>
-
- <function name="LineWidth" offset="168">
- <param name="width" type="GLfloat"/>
- <glx rop="95"/>
- </function>
-
- <function name="PixelStorei" offset="250">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx sop="110" handcode="client"/>
- </function>
-
- <function name="ReadPixels" offset="256">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
- <glx sop="111"/>
- </function>
-
- <function name="Scissor" offset="176">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="103"/>
- </function>
-
- <function name="StencilFunc" offset="243">
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLint"/>
- <param name="mask" type="GLuint"/>
- <glx rop="162"/>
- </function>
-
- <function name="StencilMask" offset="209">
- <param name="mask" type="GLuint"/>
- <glx rop="133"/>
- </function>
-
- <function name="StencilOp" offset="244">
- <param name="fail" type="GLenum"/>
- <param name="zfail" type="GLenum"/>
- <param name="zpass" type="GLenum"/>
- <glx rop="163"/>
- </function>
-
- <function name="TexParameterf" offset="178">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="105"/>
- </function>
-
- <function name="Viewport" offset="305">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="191"/>
- </function>
-
- <!-- these are not in OpenGL ES 1.0 -->
- <enum name="LINE_WIDTH" count="1" value="0x0B21">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CULL_FACE_MODE" count="1" value="0x0B45">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FRONT_FACE" count="1" value="0x0B46">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DEPTH_RANGE" count="2" value="0x0B70">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DEPTH_WRITEMASK" count="1" value="0x0B72">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DEPTH_CLEAR_VALUE" count="1" value="0x0B73">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DEPTH_FUNC" count="1" value="0x0B74">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_CLEAR_VALUE" count="1" value="0x0B91">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_FUNC" count="1" value="0x0B92">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_VALUE_MASK" count="1" value="0x0B93">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_FAIL" count="1" value="0x0B94">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_PASS_DEPTH_FAIL" count="1" value="0x0B95">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_PASS_DEPTH_PASS" count="1" value="0x0B96">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_REF" count="1" value="0x0B97">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_WRITEMASK" count="1" value="0x0B98">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="VIEWPORT" count="4" value="0x0BA2">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SCISSOR_BOX" count="4" value="0x0C10">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_CLEAR_VALUE" count="4" value="0x0C22">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_WRITEMASK" count="4" value="0x0C23">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="TexParameterfv" offset="179">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="106"/>
- </function>
-
- <function name="TexParameteri" offset="180">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="107"/>
- </function>
-
- <function name="TexParameteriv" offset="181">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="108"/>
- </function>
-
- <function name="GetBooleanv" offset="258">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
- <glx sop="112" handcode="client"/>
- </function>
-
- <function name="GetFloatv" offset="262">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="116" handcode="client"/>
- </function>
-
- <function name="GetTexParameterfv" offset="282">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="136"/>
- </function>
-
- <function name="GetTexParameteriv" offset="283">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="137"/>
- </function>
-
- <function name="IsEnabled" offset="286">
- <param name="cap" type="GLenum"/>
- <return type="GLboolean"/>
- <glx sop="140" handcode="client"/>
- </function>
-</category>
-
-<!-- base subset of OpenGL 1.1 -->
-<category name="base1.1">
- <enum name="POLYGON_OFFSET_FILL" value="0x8037"/>
-
- <function name="BindTexture" offset="307">
- <param name="target" type="GLenum"/>
- <param name="texture" type="GLuint"/>
- <glx rop="4117"/>
- </function>
-
- <function name="CopyTexImage2D" offset="324">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLenum"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <glx rop="4120"/>
- </function>
-
- <function name="CopyTexSubImage2D" offset="326">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="4122"/>
- </function>
-
- <function name="DeleteTextures" offset="327">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="textures" type="const GLuint *" count="n"/>
- <glx sop="144"/>
- </function>
-
- <function name="DrawArrays" offset="310">
- <param name="mode" type="GLenum"/>
- <param name="first" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <glx rop="193" handcode="true"/>
- </function>
-
- <function name="DrawElements" offset="311">
- <param name="mode" type="GLenum"/>
- <param name="count" type="GLsizei"/>
- <param name="type" type="GLenum"/>
- <param name="indices" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="GenTextures" offset="328">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="textures" type="GLuint *" output="true" count="n"/>
- <glx sop="145" always_array="true"/>
- </function>
-
- <function name="PolygonOffset" offset="319">
- <param name="factor" type="GLfloat"/>
- <param name="units" type="GLfloat"/>
- <glx rop="192"/>
- </function>
-
- <function name="TexSubImage2D" offset="333">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="UNUSED" type="GLuint" padding="true"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4100" large="true"/>
- </function>
-
- <!-- these are not in OpenGL ES 1.0 -->
- <enum name="POLYGON_OFFSET_UNITS" count="1" value="0x2A00">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="POLYGON_OFFSET_FACTOR" count="1" value="0x8038">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_BINDING_2D" count="1" value="0x8069">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="IsTexture" offset="330">
- <param name="texture" type="GLuint"/>
- <return type="GLboolean"/>
- <glx sop="146"/>
- </function>
-</category>
-
-<!-- base subset of OpenGL 1.2 -->
-<category name="base1.2">
- <enum name="UNSIGNED_SHORT_4_4_4_4" value="0x8033"/>
- <enum name="UNSIGNED_SHORT_5_5_5_1" value="0x8034"/>
- <enum name="CLAMP_TO_EDGE" value="0x812F"/>
- <enum name="UNSIGNED_SHORT_5_6_5" value="0x8363"/>
- <enum name="ALIASED_POINT_SIZE_RANGE" count="2" value="0x846D">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="ALIASED_LINE_WIDTH_RANGE" count="2" value="0x846E">
- <size name="Get" mode="get"/>
- </enum>
-</category>
-
-<!-- base subset of OpenGL 1.3 -->
-<category name="base1.3">
- <enum name="SAMPLE_ALPHA_TO_COVERAGE" count="1" value="0x809E">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SAMPLE_COVERAGE" count="1" value="0x80A0">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE0" value="0x84C0"/>
- <enum name="TEXTURE1" value="0x84C1"/>
- <enum name="TEXTURE2" value="0x84C2"/>
- <enum name="TEXTURE3" value="0x84C3"/>
- <enum name="TEXTURE4" value="0x84C4"/>
- <enum name="TEXTURE5" value="0x84C5"/>
- <enum name="TEXTURE6" value="0x84C6"/>
- <enum name="TEXTURE7" value="0x84C7"/>
- <enum name="TEXTURE8" value="0x84C8"/>
- <enum name="TEXTURE9" value="0x84C9"/>
- <enum name="TEXTURE10" value="0x84CA"/>
- <enum name="TEXTURE11" value="0x84CB"/>
- <enum name="TEXTURE12" value="0x84CC"/>
- <enum name="TEXTURE13" value="0x84CD"/>
- <enum name="TEXTURE14" value="0x84CE"/>
- <enum name="TEXTURE15" value="0x84CF"/>
- <enum name="TEXTURE16" value="0x84D0"/>
- <enum name="TEXTURE17" value="0x84D1"/>
- <enum name="TEXTURE18" value="0x84D2"/>
- <enum name="TEXTURE19" value="0x84D3"/>
- <enum name="TEXTURE20" value="0x84D4"/>
- <enum name="TEXTURE21" value="0x84D5"/>
- <enum name="TEXTURE22" value="0x84D6"/>
- <enum name="TEXTURE23" value="0x84D7"/>
- <enum name="TEXTURE24" value="0x84D8"/>
- <enum name="TEXTURE25" value="0x84D9"/>
- <enum name="TEXTURE26" value="0x84DA"/>
- <enum name="TEXTURE27" value="0x84DB"/>
- <enum name="TEXTURE28" value="0x84DC"/>
- <enum name="TEXTURE29" value="0x84DD"/>
- <enum name="TEXTURE30" value="0x84DE"/>
- <enum name="TEXTURE31" value="0x84DF"/>
- <enum name="NUM_COMPRESSED_TEXTURE_FORMATS" count="1" value="0x86A2">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COMPRESSED_TEXTURE_FORMATS" count="-1" value="0x86A3">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="ActiveTexture" offset="374">
- <param name="texture" type="GLenum"/>
- <glx rop="197"/>
- </function>
-
- <function name="CompressedTexImage2D" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="imageSize" type="GLsizei" counter="true"/>
- <param name="data" type="const GLvoid *" count="imageSize"/>
- <glx rop="215" handcode="client"/>
- </function>
-
- <function name="CompressedTexSubImage2D" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="imageSize" type="GLsizei" counter="true"/>
- <param name="data" type="const GLvoid *" count="imageSize"/>
- <glx rop="218" handcode="client"/>
- </function>
-
- <function name="SampleCoverage" offset="assign">
- <param name="value" type="GLclampf"/>
- <param name="invert" type="GLboolean"/>
- <glx rop="229"/>
- </function>
-
- <!-- these are not in OpenGL ES 1.0 -->
- <enum name="SAMPLE_BUFFERS" count="1" value="0x80A8">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SAMPLES" count="1" value="0x80A9">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SAMPLE_COVERAGE_VALUE" count="1" value="0x80AA">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SAMPLE_COVERAGE_INVERT" count="1" value="0x80AB">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="ACTIVE_TEXTURE" count="1" value="0x84E0">
- <size name="Get" mode="get"/>
- </enum>
-</category>
-
-<!-- base subset of OpenGL 1.4 -->
-<category name="base1.4">
- <enum name="GENERATE_MIPMAP_HINT" value="0x8192"/>
-</category>
-
-<!-- base subset of OpenGL 1.5 -->
-<category name="base1.5">
- <enum name="BUFFER_SIZE" value="0x8764"/>
- <enum name="BUFFER_USAGE" value="0x8765"/>
- <enum name="ARRAY_BUFFER" value="0x8892"/>
- <enum name="ELEMENT_ARRAY_BUFFER" value="0x8893"/>
- <enum name="ARRAY_BUFFER_BINDING" value="0x8894"/>
- <enum name="ELEMENT_ARRAY_BUFFER_BINDING" value="0x8895"/>
- <enum name="STATIC_DRAW" value="0x88E4"/>
- <enum name="DYNAMIC_DRAW" value="0x88E8"/>
-
- <type name="intptr" size="4" glx_name="CARD32"/>
- <type name="sizeiptr" size="4" glx_name="CARD32"/>
-
- <function name="BindBuffer" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="buffer" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="BufferData" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="size" type="GLsizeiptr" counter="true"/>
- <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/>
- <param name="usage" type="GLenum"/>
- <glx ignore="true"/>
- </function>
-
- <function name="BufferSubData" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="offset" type="GLintptr"/>
- <param name="size" type="GLsizeiptr" counter="true"/>
- <param name="data" type="const GLvoid *" count="size"/>
- <glx ignore="true"/>
- </function>
-
- <function name="DeleteBuffers" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="buffer" type="const GLuint *" count="n"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GenBuffers" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="buffer" type="GLuint *" output="true" count="n"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetBufferParameteriv" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx ignore="true"/>
- </function>
-
- <function name="IsBuffer" offset="assign">
- <param name="buffer" type="GLuint"/>
- <return type="GLboolean"/>
- <glx ignore="true"/>
- </function>
-</category>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/base2_API.xml b/mesalib/src/mapi/glapi/gen-es/base2_API.xml
deleted file mode 100644
index b59ef62de..000000000
--- a/mesalib/src/mapi/glapi/gen-es/base2_API.xml
+++ /dev/null
@@ -1,533 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<!-- OpenGL and OpenGL ES 2.x APIs -->
-
-<OpenGLAPI>
-
-<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- base subset of OpenGL 2.0 -->
-<category name="base2.0">
- <enum name="BLEND_EQUATION_RGB" count="1" value="0x8009"> <!-- same as BLEND_EQUATION -->
- <size name="Get" mode="get"/>
- </enum>
- <enum name="VERTEX_ATTRIB_ARRAY_ENABLED" count="1" value="0x8622">
- <size name="GetVertexAttribdv" mode="get"/>
- <size name="GetVertexAttribfv" mode="get"/>
- <size name="GetVertexAttribiv" mode="get"/>
- </enum>
- <enum name="VERTEX_ATTRIB_ARRAY_SIZE" count="1" value="0x8623">
- <size name="GetVertexAttribdv" mode="get"/>
- <size name="GetVertexAttribfv" mode="get"/>
- <size name="GetVertexAttribiv" mode="get"/>
- </enum>
- <enum name="VERTEX_ATTRIB_ARRAY_STRIDE" count="1" value="0x8624">
- <size name="GetVertexAttribdv" mode="get"/>
- <size name="GetVertexAttribfv" mode="get"/>
- <size name="GetVertexAttribiv" mode="get"/>
- </enum>
- <enum name="VERTEX_ATTRIB_ARRAY_TYPE" count="1" value="0x8625">
- <size name="GetVertexAttribdv" mode="get"/>
- <size name="GetVertexAttribfv" mode="get"/>
- <size name="GetVertexAttribiv" mode="get"/>
- </enum>
- <enum name="CURRENT_VERTEX_ATTRIB" count="1" value="0x8626">
- <size name="GetVertexAttribdv" mode="get"/>
- <size name="GetVertexAttribfv" mode="get"/>
- <size name="GetVertexAttribiv" mode="get"/>
- </enum>
- <enum name="VERTEX_ATTRIB_ARRAY_POINTER" value="0x8645"/>
- <enum name="STENCIL_BACK_FUNC" count="1" value="0x8800">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_BACK_FAIL" count="1" value="0x8801">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_BACK_PASS_DEPTH_FAIL" count="1" value="0x8802">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="STENCIL_BACK_PASS_DEPTH_PASS" count="1" value="0x8803">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_EQUATION_ALPHA" count="1" value="0x883D">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_VERTEX_ATTRIBS" count="1" value="0x8869">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED" value="0x886A"/>
- <enum name="MAX_TEXTURE_IMAGE_UNITS" count="1" value="0x8872">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FRAGMENT_SHADER" value="0x8B30"/>
- <enum name="VERTEX_SHADER" value="0x8B31"/>
- <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS" value="0x8B4C"/>
- <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS" value="0x8B4D"/>
- <enum name="SHADER_TYPE" value="0x8B4F"/>
- <enum name="FLOAT_VEC2" value="0x8B50"/>
- <enum name="FLOAT_VEC3" value="0x8B51"/>
- <enum name="FLOAT_VEC4" value="0x8B52"/>
- <enum name="INT_VEC2" value="0x8B53"/>
- <enum name="INT_VEC3" value="0x8B54"/>
- <enum name="INT_VEC4" value="0x8B55"/>
- <enum name="BOOL" value="0x8B56"/>
- <enum name="BOOL_VEC2" value="0x8B57"/>
- <enum name="BOOL_VEC3" value="0x8B58"/>
- <enum name="BOOL_VEC4" value="0x8B59"/>
- <enum name="FLOAT_MAT2" value="0x8B5A"/>
- <enum name="FLOAT_MAT3" value="0x8B5B"/>
- <enum name="FLOAT_MAT4" value="0x8B5C"/>
- <enum name="SAMPLER_2D" value="0x8B5E"/>
- <enum name="SAMPLER_CUBE" value="0x8B60"/>
- <enum name="DELETE_STATUS" value="0x8B80"/>
- <enum name="COMPILE_STATUS" value="0x8B81"/>
- <enum name="LINK_STATUS" value="0x8B82"/>
- <enum name="VALIDATE_STATUS" value="0x8B83"/>
- <enum name="INFO_LOG_LENGTH" value="0x8B84"/>
- <enum name="ATTACHED_SHADERS" value="0x8B85"/>
- <enum name="ACTIVE_UNIFORMS" value="0x8B86"/>
- <enum name="ACTIVE_UNIFORM_MAX_LENGTH" value="0x8B87"/>
- <enum name="SHADER_SOURCE_LENGTH" value="0x8B88"/>
- <enum name="ACTIVE_ATTRIBUTES" value="0x8B89"/>
- <enum name="ACTIVE_ATTRIBUTE_MAX_LENGTH" value="0x8B8A"/>
- <enum name="SHADING_LANGUAGE_VERSION" value="0x8B8C"/>
- <enum name="CURRENT_PROGRAM" value="0x8B8D"/>
- <enum name="STENCIL_BACK_REF" value="0x8CA3"/>
- <enum name="STENCIL_BACK_VALUE_MASK" value="0x8CA4"/>
- <enum name="STENCIL_BACK_WRITEMASK" value="0x8CA5"/>
-
- <type name="char" size="1" glx_name="CARD8"/>
-
- <function name="AttachShader" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="shader" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="BindAttribLocation" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="index" type="GLuint"/>
- <param name="name" type="const GLchar *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="BlendEquationSeparate" offset="assign">
- <param name="modeRGB" type="GLenum"/>
- <param name="modeA" type="GLenum"/>
- <glx rop="4228"/>
- </function>
-
- <function name="CompileShader" offset="assign">
- <param name="shader" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="CreateProgram" offset="assign">
- <return type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="CreateShader" offset="assign">
- <param name="type" type="GLenum"/>
- <return type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="DeleteProgram" offset="assign">
- <param name="program" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="DeleteShader" offset="assign">
- <param name="program" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="DetachShader" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="shader" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="DisableVertexAttribArray" offset="assign">
- <param name="index" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="EnableVertexAttribArray" offset="assign">
- <param name="index" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetActiveAttrib" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="index" type="GLuint"/>
- <param name="bufSize" type="GLsizei "/>
- <param name="length" type="GLsizei *" output="true"/>
- <param name="size" type="GLint *" output="true"/>
- <param name="type" type="GLenum *" output="true"/>
- <param name="name" type="GLchar *" output="true"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetActiveUniform" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="index" type="GLuint"/>
- <param name="bufSize" type="GLsizei"/>
- <param name="length" type="GLsizei *" output="true"/>
- <param name="size" type="GLint *" output="true"/>
- <param name="type" type="GLenum *" output="true"/>
- <param name="name" type="GLchar *" output="true"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetAttachedShaders" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="maxCount" type="GLsizei"/>
- <param name="count" type="GLsizei *" output="true"/>
- <param name="obj" type="GLuint *" output="true"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetAttribLocation" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="name" type="const GLchar *"/>
- <return type="GLint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetProgramiv" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetProgramInfoLog" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="bufSize" type="GLsizei"/>
- <param name="length" type="GLsizei *"/>
- <param name="infoLog" type="GLchar *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetShaderiv" offset="assign">
- <param name="shader" type="GLuint"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetShaderInfoLog" offset="assign">
- <param name="shader" type="GLuint"/>
- <param name="bufSize" type="GLsizei"/>
- <param name="length" type="GLsizei *"/>
- <param name="infoLog" type="GLchar *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetShaderSource" offset="assign">
- <param name="shader" type="GLuint"/>
- <param name="bufSize" type="GLsizei"/>
- <param name="length" type="GLsizei *" output="true"/>
- <param name="source" type="GLchar *" output="true"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetUniformfv" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="location" type="GLint"/>
- <param name="params" type="GLfloat *" output="true"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetUniformiv" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="location" type="GLint"/>
- <param name="params" type="GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetUniformLocation" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="name" type="const GLchar *"/>
- <return type="GLint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetVertexAttribfv" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetVertexAttribiv" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx ignore="true"/>
- </function>
-
- <function name="GetVertexAttribPointerv" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="pname" type="GLenum"/>
- <param name="pointer" type="GLvoid **" output="true"/>
- <glx ignore="true"/>
- </function>
-
- <function name="IsProgram" offset="assign">
- <param name="program" type="GLuint"/>
- <return type="GLboolean"/>
- <glx ignore="true"/>
- </function>
-
- <function name="IsShader" offset="assign">
- <param name="shader" type="GLuint"/>
- <return type="GLboolean"/>
- <glx ignore="true"/>
- </function>
-
- <function name="LinkProgram" offset="assign">
- <param name="program" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="ShaderSource" offset="assign">
- <param name="shader" type="GLuint"/>
- <param name="count" type="GLsizei"/>
- <param name="string" type="const GLchar **"/>
- <param name="length" type="const GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="StencilFuncSeparate" offset="assign">
- <param name="face" type="GLenum"/>
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLint"/>
- <param name="mask" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="StencilOpSeparate" offset="assign">
- <param name="face" type="GLenum"/>
- <param name="sfail" type="GLenum"/>
- <param name="zfail" type="GLenum"/>
- <param name="zpass" type="GLenum"/>
- <glx ignore="true"/>
- </function>
-
- <function name="StencilMaskSeparate" offset="assign">
- <param name="face" type="GLenum"/>
- <param name="mask" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform1f" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLfloat"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform1fv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLfloat *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform1i" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform1iv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform2f" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLfloat"/>
- <param name="v1" type="GLfloat"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform2fv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLfloat *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform2i" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLint"/>
- <param name="v1" type="GLint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform2iv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform3f" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLfloat"/>
- <param name="v1" type="GLfloat"/>
- <param name="v2" type="GLfloat"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform3fv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLfloat *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform3i" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLint"/>
- <param name="v1" type="GLint"/>
- <param name="v2" type="GLint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform3iv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform4f" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLfloat"/>
- <param name="v1" type="GLfloat"/>
- <param name="v2" type="GLfloat"/>
- <param name="v3" type="GLfloat"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform4fv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLfloat *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform4i" offset="assign">
- <param name="location" type="GLint"/>
- <param name="v0" type="GLint"/>
- <param name="v1" type="GLint"/>
- <param name="v2" type="GLint"/>
- <param name="v3" type="GLint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="Uniform4iv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="value" type="const GLint *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="UniformMatrix2fv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="transpose" type="GLboolean"/>
- <param name="value" type="const GLfloat *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="UniformMatrix3fv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="transpose" type="GLboolean"/>
- <param name="value" type="const GLfloat *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="UniformMatrix4fv" offset="assign">
- <param name="location" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <param name="transpose" type="GLboolean"/>
- <param name="value" type="const GLfloat *"/>
- <glx ignore="true"/>
- </function>
-
- <function name="UseProgram" offset="assign">
- <param name="program" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="ValidateProgram" offset="assign">
- <param name="program" type="GLuint"/>
- <glx ignore="true"/>
- </function>
-
- <function name="VertexAttrib1f" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="x" type="GLfloat"/>
- </function>
-
- <function name="VertexAttrib1fv" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="v" type="const GLfloat *"/>
- </function>
-
- <function name="VertexAttrib2f" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- </function>
-
- <function name="VertexAttrib2fv" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="v" type="const GLfloat *"/>
- </function>
-
- <function name="VertexAttrib3f" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- </function>
-
- <function name="VertexAttrib3fv" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="v" type="const GLfloat *"/>
- </function>
-
- <function name="VertexAttrib4f" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <param name="w" type="GLfloat"/>
- </function>
-
- <function name="VertexAttrib4fv" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="v" type="const GLfloat *"/>
- </function>
-
- <function name="VertexAttribPointer" offset="assign">
- <param name="index" type="GLuint"/>
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="normalized" type="GLboolean"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- </function>
-</category>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es1_API.xml b/mesalib/src/mapi/glapi/gen-es/es1_API.xml
deleted file mode 100644
index 3428ae561..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es1_API.xml
+++ /dev/null
@@ -1,1100 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<!-- OpenGL ES 1.x API -->
-
-<OpenGLAPI>
-
-<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- core subset of OpenGL 1.3 defined in OpenGL ES 1.0 -->
-<category name="core1.0">
- <!-- addition to base1.0 -->
- <enum name="ADD" value="0x0104"/>
- <enum name="STACK_OVERFLOW" value="0x0503"/>
- <enum name="STACK_UNDERFLOW" value="0x0504"/>
- <enum name="EXP" value="0x0800"/>
- <enum name="EXP2" value="0x0801"/>
- <enum name="POINT_SMOOTH" count="1" value="0x0B10">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LINE_SMOOTH" count="1" value="0x0B20">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHTING" count="1" value="0x0B50">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT_MODEL_TWO_SIDE" count="1" value="0x0B52">
- <size name="LightModelfv"/>
- <size name="LightModeliv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT_MODEL_AMBIENT" count="4" value="0x0B53">
- <size name="LightModelfv"/>
- <size name="LightModeliv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_MATERIAL" count="1" value="0x0B57">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FOG" count="1" value="0x0B60">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FOG_DENSITY" count="1" value="0x0B62">
- <size name="Fogfv"/>
- <size name="Fogiv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FOG_START" count="1" value="0x0B63">
- <size name="Fogfv"/>
- <size name="Fogiv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FOG_END" count="1" value="0x0B64">
- <size name="Fogfv"/>
- <size name="Fogiv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FOG_MODE" count="1" value="0x0B65">
- <size name="Fogfv"/>
- <size name="Fogiv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FOG_COLOR" count="4" value="0x0B66">
- <size name="Fogfv"/>
- <size name="Fogiv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="NORMALIZE" count="1" value="0x0BA1">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="ALPHA_TEST" count="1" value="0x0BC0">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="PERSPECTIVE_CORRECTION_HINT" count="1" value="0x0C50">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="POINT_SMOOTH_HINT" count="1" value="0x0C51">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LINE_SMOOTH_HINT" count="1" value="0x0C52">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="POLYGON_SMOOTH_HINT" count="1" value="0x0C53">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FOG_HINT" count="1" value="0x0C54">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_LIGHTS" count="1" value="0x0D31">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_MODELVIEW_STACK_DEPTH" count="1" value="0x0D36">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_PROJECTION_STACK_DEPTH" count="1" value="0x0D38">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_TEXTURE_STACK_DEPTH" count="1" value="0x0D39">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="AMBIENT" count="4" value="0x1200">
- <size name="Materialfv"/>
- <size name="Materialiv"/>
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetMaterialfv" mode="get"/>
- <size name="GetMaterialiv" mode="get"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="DIFFUSE" count="4" value="0x1201">
- <size name="Materialfv"/>
- <size name="Materialiv"/>
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetMaterialfv" mode="get"/>
- <size name="GetMaterialiv" mode="get"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="SPECULAR" count="4" value="0x1202">
- <size name="Materialfv"/>
- <size name="Materialiv"/>
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetMaterialfv" mode="get"/>
- <size name="GetMaterialiv" mode="get"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="POSITION" count="4" value="0x1203">
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="SPOT_DIRECTION" count="3" value="0x1204">
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="SPOT_EXPONENT" count="1" value="0x1205">
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="SPOT_CUTOFF" count="1" value="0x1206">
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="CONSTANT_ATTENUATION" count="1" value="0x1207">
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="LINEAR_ATTENUATION" count="1" value="0x1208">
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="QUADRATIC_ATTENUATION" count="1" value="0x1209">
- <size name="Lightfv"/>
- <size name="Lightiv"/>
- <size name="GetLightfv" mode="get"/>
- <size name="GetLightiv" mode="get"/>
- </enum>
- <enum name="CLEAR" value="0x1500"/>
- <enum name="AND" value="0x1501"/>
- <enum name="AND_REVERSE" value="0x1502"/>
- <enum name="COPY" value="0x1503"/>
- <enum name="AND_INVERTED" value="0x1504"/>
- <enum name="NOOP" value="0x1505"/>
- <enum name="XOR" value="0x1506"/>
- <enum name="OR" value="0x1507"/>
- <enum name="NOR" value="0x1508"/>
- <enum name="EQUIV" value="0x1509"/>
- <enum name="OR_REVERSE" value="0x150B"/>
- <enum name="COPY_INVERTED" value="0x150C"/>
- <enum name="OR_INVERTED" value="0x150D"/>
- <enum name="NAND" value="0x150E"/>
- <enum name="SET" value="0x150F"/>
- <enum name="EMISSION" count="4" value="0x1600">
- <size name="Materialfv"/>
- <size name="Materialiv"/>
- <size name="GetMaterialfv" mode="get"/>
- <size name="GetMaterialiv" mode="get"/>
- </enum>
- <enum name="SHININESS" count="1" value="0x1601">
- <size name="Materialfv"/>
- <size name="Materialiv"/>
- <size name="GetMaterialfv" mode="get"/>
- <size name="GetMaterialiv" mode="get"/>
- </enum>
- <enum name="AMBIENT_AND_DIFFUSE" count="4" value="0x1602">
- <size name="Materialfv"/>
- <size name="Materialiv"/>
- <size name="GetMaterialfv" mode="get"/>
- <size name="GetMaterialiv" mode="get"/>
- </enum>
- <enum name="MODELVIEW" value="0x1700"/>
- <enum name="PROJECTION" value="0x1701"/>
- <enum name="FLAT" value="0x1D00"/>
- <enum name="SMOOTH" value="0x1D01"/>
- <enum name="MODULATE" value="0x2100"/>
- <enum name="DECAL" value="0x2101"/>
- <enum name="TEXTURE_ENV_MODE" count="1" value="0x2200">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="TEXTURE_ENV_COLOR" count="4" value="0x2201">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="TEXTURE_ENV" value="0x2300"/>
- <enum name="LIGHT0" count="1" value="0x4000">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT1" count="1" value="0x4001">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT2" count="1" value="0x4002">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT3" count="1" value="0x4003">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT4" count="1" value="0x4004">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT5" count="1" value="0x4005">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT6" count="1" value="0x4006">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LIGHT7" count="1" value="0x4007">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="AlphaFunc" offset="240">
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLclampf"/>
- <glx rop="159"/>
- </function>
-
- <function name="Color4f" offset="29" vectorequiv="Color4fv">
- <param name="red" type="GLfloat"/>
- <param name="green" type="GLfloat"/>
- <param name="blue" type="GLfloat"/>
- <param name="alpha" type="GLfloat"/>
- </function>
-
- <function name="Fogf" offset="153">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="80"/>
- </function>
-
- <function name="Fogfv" offset="154">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="81"/>
- </function>
-
- <function name="Lightf" offset="159">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="86"/>
- </function>
-
- <function name="Lightfv" offset="160">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="87"/>
- </function>
-
- <function name="LightModelf" offset="163">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="90"/>
- </function>
-
- <function name="LightModelfv" offset="164">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="91"/>
- </function>
-
- <function name="LoadIdentity" offset="290">
- <glx rop="176"/>
- </function>
-
- <function name="LoadMatrixf" offset="291">
- <param name="m" type="const GLfloat *" count="16"/>
- <glx rop="177"/>
- </function>
-
- <function name="LogicOp" offset="242">
- <param name="opcode" type="GLenum"/>
- <glx rop="161"/>
- </function>
-
- <function name="Materialf" offset="169">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="96"/>
- </function>
-
- <function name="Materialfv" offset="170">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="97"/>
- </function>
-
- <function name="MatrixMode" offset="293">
- <param name="mode" type="GLenum"/>
- <glx rop="179"/>
- </function>
-
- <function name="MultMatrixf" offset="294">
- <param name="m" type="const GLfloat *" count="16"/>
- <glx rop="180"/>
- </function>
-
- <function name="Normal3f" offset="56" vectorequiv="Normal3fv">
- <param name="nx" type="GLfloat"/>
- <param name="ny" type="GLfloat"/>
- <param name="nz" type="GLfloat"/>
- </function>
-
- <function name="PointSize" offset="173">
- <param name="size" type="GLfloat"/>
- <glx rop="100"/>
- </function>
-
- <function name="PopMatrix" offset="297">
- <glx rop="183"/>
- </function>
-
- <function name="PushMatrix" offset="298">
- <glx rop="184"/>
- </function>
-
- <function name="Rotatef" offset="300">
- <param name="angle" type="GLfloat"/>
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="186"/>
- </function>
-
- <function name="Scalef" offset="302">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="188"/>
- </function>
-
- <function name="ShadeModel" offset="177">
- <param name="mode" type="GLenum"/>
- <glx rop="104"/>
- </function>
-
- <function name="TexEnvf" offset="184">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="111"/>
- </function>
-
- <function name="TexEnvfv" offset="185">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="112"/>
- </function>
-
- <function name="TexImage2D" offset="183">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
- <glx rop="110" large="true"/>
- </function>
-
- <function name="Translatef" offset="304">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="190"/>
- </function>
-
- <!-- addition to base1.1 -->
- <enum name="COLOR_LOGIC_OP" value="0x0BF2"/>
- <enum name="VERTEX_ARRAY" count="1" value="0x8074">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="NORMAL_ARRAY" count="1" value="0x8075">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_ARRAY" count="1" value="0x8076">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_COORD_ARRAY" count="1" value="0x8078">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="ColorPointer" offset="308">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="DisableClientState" offset="309">
- <param name="array" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="EnableClientState" offset="313">
- <param name="array" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="NormalPointer" offset="318">
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="TexCoordPointer" offset="320">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="VertexPointer" offset="321">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <!-- addition to base1.2 -->
- <enum name="SMOOTH_POINT_SIZE_RANGE" count="2" value="0x0B12">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SMOOTH_LINE_WIDTH_RANGE" count="2" value="0x0B22">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="RESCALE_NORMAL" count="1" value="0x803A">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_ELEMENTS_VERTICES" count="1" value="0x80E8">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_ELEMENTS_INDICES" count="1" value="0x80E9">
- <size name="Get" mode="get"/>
- </enum>
-
- <!-- addition to base1.3 -->
- <enum name="MULTISAMPLE" count="1" value="0x809D">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SAMPLE_ALPHA_TO_ONE" count="1" value="0x809F">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_TEXTURE_UNITS" count="1" value="0x84E2">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="ClientActiveTexture" offset="375">
- <param name="texture" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="MultiTexCoord4f" offset="402" vectorequiv="MultiTexCoord4fv">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- <param name="r" type="GLfloat"/>
- <param name="q" type="GLfloat"/>
- </function>
-</category>
-
-<!-- core subset of OpenGL 1.5 defined in OpenGL ES 1.1 -->
-<category name="core1.1">
- <!-- addition to base1.0 -->
- <enum name="CURRENT_COLOR" count="4" value="0x0B00">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CURRENT_NORMAL" count="3" value="0x0B02">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CURRENT_TEXTURE_COORDS" count="4" value="0x0B03">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="POINT_SIZE" count="1" value="0x0B11">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SHADE_MODEL" count="1" value="0x0B54">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MATRIX_MODE" count="1" value="0x0BA0">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MODELVIEW_STACK_DEPTH" count="1" value="0x0BA3">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="PROJECTION_STACK_DEPTH" count="1" value="0x0BA4">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_STACK_DEPTH" count="1" value="0x0BA5">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MODELVIEW_MATRIX" count="16" value="0x0BA6">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="PROJECTION_MATRIX" count="16" value="0x0BA7">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_MATRIX" count="16" value="0x0BA8">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="ALPHA_TEST_FUNC" count="1" value="0x0BC1">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="ALPHA_TEST_REF" count="1" value="0x0BC2">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_DST" count="1" value="0x0BE0">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_SRC" count="1" value="0x0BE1">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="LOGIC_OP_MODE" count="1" value="0x0BF0">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="ALPHA_SCALE" count="1" value="0x0D1C">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="MAX_CLIP_PLANES" count="1" value="0x0D32">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CLIP_PLANE0" count="1" value="0x3000">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CLIP_PLANE1" count="1" value="0x3001">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CLIP_PLANE2" count="1" value="0x3002">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CLIP_PLANE3" count="1" value="0x3003">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CLIP_PLANE4" count="1" value="0x3004">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="CLIP_PLANE5" count="1" value="0x3005">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="Color4ub" offset="35" vectorequiv="Color4ubv">
- <param name="red" type="GLubyte"/>
- <param name="green" type="GLubyte"/>
- <param name="blue" type="GLubyte"/>
- <param name="alpha" type="GLubyte"/>
- </function>
-
- <function name="GetLightfv" offset="264">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="118"/>
- </function>
-
- <function name="GetMaterialfv" offset="269">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="123"/>
- </function>
-
- <function name="GetTexEnvfv" offset="276">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="130"/>
- </function>
-
- <function name="GetTexEnviv" offset="277">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="131"/>
- </function>
-
- <function name="TexEnvi" offset="186">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="113"/>
- </function>
-
- <function name="TexEnviv" offset="187">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="114"/>
- </function>
-
- <!-- addition to base1.1 -->
- <enum name="VERTEX_ARRAY_SIZE" count="1" value="0x807A">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="VERTEX_ARRAY_TYPE" count="1" value="0x807B">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="VERTEX_ARRAY_STRIDE" count="1" value="0x807C">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="NORMAL_ARRAY_TYPE" count="1" value="0x807E">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="NORMAL_ARRAY_STRIDE" count="1" value="0x807F">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_ARRAY_SIZE" count="1" value="0x8081">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_ARRAY_TYPE" count="1" value="0x8082">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_ARRAY_STRIDE" count="1" value="0x8083">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_COORD_ARRAY_SIZE" count="1" value="0x8088">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_COORD_ARRAY_TYPE" count="1" value="0x8089">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_COORD_ARRAY_STRIDE" count="1" value="0x808A">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="VERTEX_ARRAY_POINTER" value="0x808E"/>
- <enum name="NORMAL_ARRAY_POINTER" value="0x808F"/>
- <enum name="COLOR_ARRAY_POINTER" value="0x8090"/>
- <enum name="TEXTURE_COORD_ARRAY_POINTER" value="0x8092"/>
-
- <function name="GetPointerv" offset="329">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLvoid **" output="true"/>
- <glx handcode="true"/>
- </function>
-
- <!-- addition to base1.2 -->
-
- <!-- addition to base1.3 -->
- <enum name="CLIENT_ACTIVE_TEXTURE" count="1" value="0x84E1">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="SUBTRACT" value="0x84E7"/>
- <enum name="COMBINE" value="0x8570"/>
- <enum name="COMBINE_RGB" count="1" value="0x8571">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="COMBINE_ALPHA" count="1" value="0x8572">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="RGB_SCALE" count="1" value="0x8573">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="ADD_SIGNED" value="0x8574"/>
- <enum name="INTERPOLATE" value="0x8575"/>
- <enum name="CONSTANT" value="0x8576"/>
- <enum name="PRIMARY_COLOR" value="0x8577"/>
- <enum name="PREVIOUS" value="0x8578"/>
- <enum name="OPERAND0_RGB" count="1" value="0x8590">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="OPERAND1_RGB" count="1" value="0x8591">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="OPERAND2_RGB" count="1" value="0x8592">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="OPERAND0_ALPHA" count="1" value="0x8598">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="OPERAND1_ALPHA" count="1" value="0x8599">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="OPERAND2_ALPHA" count="1" value="0x859A">
- <size name="TexEnvfv"/>
- <size name="TexEnviv"/>
- <size name="GetTexEnvfv" mode="get"/>
- <size name="GetTexEnviv" mode="get"/>
- </enum>
- <enum name="DOT3_RGB" value="0x86AE"/>
- <enum name="DOT3_RGBA" value="0x86AF"/>
-
- <!-- addition to base1.4 -->
- <enum name="POINT_SIZE_MIN" count="1" value="0x8126">
- <size name="PointParameterfv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="POINT_SIZE_MAX" count="1" value="0x8127">
- <size name="PointParameterfv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="POINT_FADE_THRESHOLD_SIZE" count="1" value="0x8128">
- <size name="PointParameterfv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="POINT_DISTANCE_ATTENUATION" count="3" value="0x8129">
- <size name="PointParameterfv"/>
- <size name="Get" mode="get"/>
- </enum>
- <enum name="GENERATE_MIPMAP" count="1" value="0x8191">
- <size name="TexParameterfv"/>
- <size name="TexParameteriv"/>
- <size name="GetTexParameterfv" mode="get"/>
- <size name="GetTexParameteriv" mode="get"/>
- </enum>
-
- <function name="PointParameterf" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="2065"/>
- </function>
-
- <function name="PointParameterfv" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="2066"/>
- </function>
-
- <!-- addition to base1.5 -->
- <enum name="SRC0_RGB" value="0x8580"/>
- <enum name="SRC1_RGB" value="0x8581"/>
- <enum name="SRC2_RGB" value="0x8582"/>
- <enum name="SRC0_ALPHA" value="0x8588"/>
- <enum name="SRC1_ALPHA" value="0x8589"/>
- <enum name="SRC2_ALPHA" value="0x858A"/>
- <enum name="VERTEX_ARRAY_BUFFER_BINDING" count="1" value="0x8896">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="NORMAL_ARRAY_BUFFER_BINDING" count="1" value="0x8897">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="COLOR_ARRAY_BUFFER_BINDING" count="1" value="0x8898">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING" count="1" value="0x889A">
- <size name="Get" mode="get"/>
- </enum>
-</category>
-
-<!-- OpenGL ES 1.0 -->
-<category name="es1.0">
- <!-- addition to core1.0 -->
-
- <!-- from GL_OES_fixed_point -->
- <enum name="FIXED" value="0x140C"/>
-
- <type name="fixed" size="4" />
- <type name="clampx" size="4" />
-
- <function name="AlphaFuncx" offset="assign">
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLclampx"/>
- </function>
-
- <function name="ClearColorx" offset="assign">
- <param name="red" type="GLclampx"/>
- <param name="green" type="GLclampx"/>
- <param name="blue" type="GLclampx"/>
- <param name="alpha" type="GLclampx"/>
- </function>
-
- <function name="ClearDepthx" offset="assign">
- <param name="depth" type="GLclampx"/>
- </function>
-
- <function name="Color4x" offset="assign">
- <param name="red" type="GLfixed"/>
- <param name="green" type="GLfixed"/>
- <param name="blue" type="GLfixed"/>
- <param name="alpha" type="GLfixed"/>
- </function>
-
- <function name="DepthRangex" offset="assign">
- <param name="zNear" type="GLclampx"/>
- <param name="zFar" type="GLclampx"/>
- </function>
-
- <function name="Fogx" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="Fogxv" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="Frustumx" offset="assign">
- <param name="left" type="GLfixed"/>
- <param name="right" type="GLfixed"/>
- <param name="bottom" type="GLfixed"/>
- <param name="top" type="GLfixed"/>
- <param name="zNear" type="GLfixed"/>
- <param name="zFar" type="GLfixed"/>
- </function>
-
- <function name="LightModelx" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="LightModelxv" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="Lightx" offset="assign">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="Lightxv" offset="assign">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="LineWidthx" offset="assign">
- <param name="width" type="GLfixed"/>
- </function>
-
- <function name="LoadMatrixx" offset="assign">
- <param name="m" type="const GLfixed *" count="16"/>
- </function>
-
- <function name="Materialx" offset="assign">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="Materialxv" offset="assign">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="MultMatrixx" offset="assign">
- <param name="m" type="const GLfixed *" count="16"/>
- </function>
-
- <function name="MultiTexCoord4x" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfixed"/>
- <param name="t" type="GLfixed"/>
- <param name="r" type="GLfixed"/>
- <param name="q" type="GLfixed"/>
- </function>
-
- <function name="Normal3x" offset="assign">
- <param name="nx" type="GLfixed"/>
- <param name="ny" type="GLfixed"/>
- <param name="nz" type="GLfixed"/>
- </function>
-
- <function name="Orthox" offset="assign">
- <param name="left" type="GLfixed"/>
- <param name="right" type="GLfixed"/>
- <param name="bottom" type="GLfixed"/>
- <param name="top" type="GLfixed"/>
- <param name="zNear" type="GLfixed"/>
- <param name="zFar" type="GLfixed"/>
- </function>
-
- <function name="PointSizex" offset="assign">
- <param name="size" type="GLfixed"/>
- </function>
-
- <function name="PolygonOffsetx" offset="assign">
- <param name="factor" type="GLfixed"/>
- <param name="units" type="GLfixed"/>
- </function>
-
- <function name="Rotatex" offset="assign">
- <param name="angle" type="GLfixed"/>
- <param name="x" type="GLfixed"/>
- <param name="y" type="GLfixed"/>
- <param name="z" type="GLfixed"/>
- </function>
-
- <function name="SampleCoveragex" offset="assign">
- <param name="value" type="GLclampx"/>
- <param name="invert" type="GLboolean"/>
- </function>
-
- <function name="Scalex" offset="assign">
- <param name="x" type="GLfixed"/>
- <param name="y" type="GLfixed"/>
- <param name="z" type="GLfixed"/>
- </function>
-
- <function name="TexEnvx" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="TexEnvxv" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="TexParameterx" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="Translatex" offset="assign">
- <param name="x" type="GLfixed"/>
- <param name="y" type="GLfixed"/>
- <param name="z" type="GLfixed"/>
- </function>
-
- <!-- from GL_OES_single_precision -->
- <function name="ClearDepthf" offset="assign">
- <param name="depth" type="GLclampf"/>
- </function>
-
- <function name="DepthRangef" offset="assign">
- <param name="zNear" type="GLclampf"/>
- <param name="zFar" type="GLclampf"/>
- </function>
-
- <function name="Frustumf" offset="assign">
- <param name="left" type="GLfloat"/>
- <param name="right" type="GLfloat"/>
- <param name="bottom" type="GLfloat"/>
- <param name="top" type="GLfloat"/>
- <param name="zNear" type="GLfloat"/>
- <param name="zFar" type="GLfloat"/>
- </function>
-
- <function name="Orthof" offset="assign">
- <param name="left" type="GLfloat"/>
- <param name="right" type="GLfloat"/>
- <param name="bottom" type="GLfloat"/>
- <param name="top" type="GLfloat"/>
- <param name="zNear" type="GLfloat"/>
- <param name="zFar" type="GLfloat"/>
- </function>
-</category>
-
-<!-- OpenGL ES 1.1 -->
-<category name="es1.1">
- <!-- addition to core1.1 -->
-
- <!-- from GL_OES_fixed_point -->
- <function name="ClipPlanex" offset="assign">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="const GLfixed *" count="4"/>
- </function>
-
- <function name="GetClipPlanex" offset="assign">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="GLfixed *" output="true" count="4"/>
- </function>
-
- <function name="GetFixedv" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetLightxv" offset="assign">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetMaterialxv" offset="assign">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetTexEnvxv" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetTexParameterxv" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="PointParameterx" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="PointParameterxv" offset="assign">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *"/>
- </function>
-
- <function name="TexParameterxv" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <!-- from GL_OES_matrix_get -->
- <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898D"/>
- <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898E"/>
- <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898F"/>
-
- <!-- from GL_OES_single_precision -->
- <function name="ClipPlanef" offset="assign">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="const GLfloat *" count="4"/>
- </function>
-
- <function name="GetClipPlanef" offset="assign">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="GLfloat *" output="true" count="4"/>
- </function>
-</category>
-
-<xi:include href="es1_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="es1_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es1_COMPAT.xml b/mesalib/src/mapi/glapi/gen-es/es1_COMPAT.xml
deleted file mode 100644
index 096cea88d..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es1_COMPAT.xml
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- This file defines the functions that are needed by Mesa. It
- makes sure the generated glapi headers are compatible with Mesa.
- It mainly consists of missing functions and aliases in OpenGL ES.
--->
-
-<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- except for those defined by es_COMPAT.xml, these are also needed -->
-<category name="compat">
- <!-- OpenGL 1.0 -->
- <function name="TexGenf" alias="TexGenfOES" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="117"/>
- </function>
-
- <function name="TexGenfv" alias="TexGenfvOES" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="118"/>
- </function>
-
- <function name="TexGeni" alias="TexGeniOES" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="119"/>
- </function>
-
- <function name="TexGeniv" alias="TexGenivOES" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="120"/>
- </function>
-
- <function name="GetTexGenfv" alias="GetTexGenfvOES" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="133"/>
- </function>
-
- <function name="GetTexGeniv" alias="GetTexGenivOES" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="134"/>
- </function>
-
- <!-- OpenGL 1.2 -->
- <function name="BlendColor" offset="336" static_dispatch="false">
- <param name="red" type="GLclampf"/>
- <param name="green" type="GLclampf"/>
- <param name="blue" type="GLclampf"/>
- <param name="alpha" type="GLclampf"/>
- <glx rop="4096"/>
- </function>
-
- <function name="BlendEquation" alias="BlendEquationOES" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="4097"/>
- </function>
-
- <function name="TexImage3D" offset="371" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
- <glx rop="4114" large="true"/>
- </function>
-
- <function name="TexSubImage3D" offset="372" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="UNUSED" type="GLuint" padding="true"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4115" large="true"/>
- </function>
-
- <function name="CopyTexSubImage3D" offset="373" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="4123"/>
- </function>
-
- <!-- GL_ARB_multitexture -->
- <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false">
- <param name="texture" type="GLenum"/>
- <glx rop="197"/>
- </function>
-
- <function name="ClientActiveTextureARB" alias="ClientActiveTexture" static_dispatch="false">
- <param name="texture" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="MultiTexCoord4fARB" alias="MultiTexCoord4f" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- <param name="r" type="GLfloat"/>
- <param name="q" type="GLfloat"/>
- </function>
-</category>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es1_EXT.xml b/mesalib/src/mapi/glapi/gen-es/es1_EXT.xml
deleted file mode 100644
index c1e86373d..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es1_EXT.xml
+++ /dev/null
@@ -1,699 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<!-- OpenGL ES 1.x extensions -->
-
-<OpenGLAPI>
-
-<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_blend_equation_separate" number="1">
- <enum name="BLEND_EQUATION_RGB_OES" count="1" value="0x8009">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_EQUATION_ALPHA_OES" count="1" value="0x883D">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="BlendEquationSeparateOES" offset="assign">
- <param name="modeRGB" type="GLenum"/>
- <param name="modeA" type="GLenum"/>
- <glx rop="4228"/>
- </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_blend_func_separate" number="2">
- <enum name="BLEND_DST_RGB_OES" count="1" value="0x80C8">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_SRC_RGB_OES" count="1" value="0x80C9">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_DST_ALPHA_OES" count="1" value="0x80CA">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_SRC_ALPHA_OES" count="1" value="0x80CB">
- <size name="Get" mode="get"/>
- </enum>
-
- <function name="BlendFuncSeparateOES" offset="assign">
- <param name="sfactorRGB" type="GLenum"/>
- <param name="dfactorRGB" type="GLenum"/>
- <param name="sfactorAlpha" type="GLenum"/>
- <param name="dfactorAlpha" type="GLenum"/>
- <glx rop="4134"/>
- </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_blend_subtract" number="3">
- <enum name="FUNC_ADD_OES" value="0x8006"/>
- <enum name="BLEND_EQUATION_OES" count="1" value="0x8009">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FUNC_SUBTRACT_OES" value="0x800A"/>
- <enum name="FUNC_REVERSE_SUBTRACT_OES" value="0x800B"/>
-
- <function name="BlendEquationOES" offset="337">
- <param name="mode" type="GLenum"/>
- <glx rop="4097"/>
- </function>
-</category>
-
-<!-- core addition to es1.0 and later -->
-<category name="GL_OES_byte_coordinates" number="4">
- <enum name="BYTE" value="0x1400"/>
-</category>
-
-<!-- optional for es1.1 -->
-<category name="GL_OES_draw_texture" number="7">
- <enum name="TEXTURE_CROP_RECT_OES" value="0x8B9D"/>
-
- <function name="DrawTexiOES" offset="assign">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="z" type="GLint"/>
- <param name="width" type="GLint"/>
- <param name="height" type="GLint"/>
- </function>
-
- <function name="DrawTexivOES" offset="assign">
- <param name="coords" type="const GLint *" count="5"/>
- </function>
-
- <function name="DrawTexfOES" offset="assign">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <param name="width" type="GLfloat"/>
- <param name="height" type="GLfloat"/>
- </function>
-
- <function name="DrawTexfvOES" offset="assign">
- <param name="coords" type="const GLfloat *" count="5"/>
- </function>
-
- <function name="DrawTexsOES" offset="assign">
- <param name="x" type="GLshort"/>
- <param name="y" type="GLshort"/>
- <param name="z" type="GLshort"/>
- <param name="width" type="GLshort"/>
- <param name="height" type="GLshort"/>
- </function>
-
- <function name="DrawTexsvOES" offset="assign">
- <param name="coords" type="const GLshort *" count="5"/>
- </function>
-
- <function name="DrawTexxOES" offset="assign">
- <param name="x" type="GLfixed"/>
- <param name="y" type="GLfixed"/>
- <param name="z" type="GLfixed"/>
- <param name="width" type="GLfixed"/>
- <param name="height" type="GLfixed"/>
- </function>
-
- <function name="DrawTexxvOES" offset="assign">
- <param name="coords" type="const GLfixed *" count="5"/>
- </function>
-
- <!-- TexParameter{ifx}v is skipped here -->
-</category>
-
-<!-- core addition to es1.0 and later -->
-<category name="GL_OES_fixed_point" number="9">
- <enum name="FIXED_OES" value="0x140C"/>
-
- <!-- additon to es1.0 -->
- <function name="AlphaFuncxOES" alias="AlphaFuncx">
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLclampx"/>
- </function>
-
- <function name="ClearColorxOES" alias="ClearColorx">
- <param name="red" type="GLclampx"/>
- <param name="green" type="GLclampx"/>
- <param name="blue" type="GLclampx"/>
- <param name="alpha" type="GLclampx"/>
- </function>
-
- <function name="ClearDepthxOES" alias="ClearDepthx">
- <param name="depth" type="GLclampx"/>
- </function>
-
- <function name="Color4xOES" alias="Color4x">
- <param name="red" type="GLfixed"/>
- <param name="green" type="GLfixed"/>
- <param name="blue" type="GLfixed"/>
- <param name="alpha" type="GLfixed"/>
- </function>
-
- <function name="DepthRangexOES" alias="DepthRangex">
- <param name="zNear" type="GLclampx"/>
- <param name="zFar" type="GLclampx"/>
- </function>
-
- <function name="FogxOES" alias="Fogx">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="FogxvOES" alias="Fogxv">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="FrustumxOES" alias="Frustumx">
- <param name="left" type="GLfixed"/>
- <param name="right" type="GLfixed"/>
- <param name="bottom" type="GLfixed"/>
- <param name="top" type="GLfixed"/>
- <param name="zNear" type="GLfixed"/>
- <param name="zFar" type="GLfixed"/>
- </function>
-
- <function name="LightModelxOES" alias="LightModelx">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="LightModelxvOES" alias="LightModelxv">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="LightxOES" alias="Lightx">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="LightxvOES" alias="Lightxv">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="LineWidthxOES" alias="LineWidthx">
- <param name="width" type="GLfixed"/>
- </function>
-
- <function name="LoadMatrixxOES" alias="LoadMatrixx">
- <param name="m" type="const GLfixed *" count="16"/>
- </function>
-
- <function name="MaterialxOES" alias="Materialx">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="MaterialxvOES" alias="Materialxv">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="MultiTexCoord4xOES" alias="MultiTexCoord4x">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfixed"/>
- <param name="t" type="GLfixed"/>
- <param name="r" type="GLfixed"/>
- <param name="q" type="GLfixed"/>
- </function>
-
- <function name="MultMatrixxOES" alias="MultMatrixx">
- <param name="m" type="const GLfixed *" count="16"/>
- </function>
-
- <function name="Normal3xOES" alias="Normal3x">
- <param name="nx" type="GLfixed"/>
- <param name="ny" type="GLfixed"/>
- <param name="nz" type="GLfixed"/>
- </function>
-
- <function name="OrthoxOES" alias="Orthox">
- <param name="left" type="GLfixed"/>
- <param name="right" type="GLfixed"/>
- <param name="bottom" type="GLfixed"/>
- <param name="top" type="GLfixed"/>
- <param name="zNear" type="GLfixed"/>
- <param name="zFar" type="GLfixed"/>
- </function>
-
- <function name="PointSizexOES" alias="PointSizex">
- <param name="size" type="GLfixed"/>
- </function>
-
- <function name="PolygonOffsetxOES" alias="PolygonOffsetx">
- <param name="factor" type="GLfixed"/>
- <param name="units" type="GLfixed"/>
- </function>
-
- <function name="RotatexOES" alias="Rotatex">
- <param name="angle" type="GLfixed"/>
- <param name="x" type="GLfixed"/>
- <param name="y" type="GLfixed"/>
- <param name="z" type="GLfixed"/>
- </function>
-
- <function name="SampleCoveragexOES" alias="SampleCoveragex">
- <param name="value" type="GLclampx"/>
- <param name="invert" type="GLboolean"/>
- </function>
-
- <function name="ScalexOES" alias="Scalex">
- <param name="x" type="GLfixed"/>
- <param name="y" type="GLfixed"/>
- <param name="z" type="GLfixed"/>
- </function>
-
- <function name="TexEnvxOES" alias="TexEnvx">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="TexEnvxvOES" alias="TexEnvxv">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-
- <function name="TexParameterxOES" alias="TexParameterx">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="TranslatexOES" alias="Translatex">
- <param name="x" type="GLfixed"/>
- <param name="y" type="GLfixed"/>
- <param name="z" type="GLfixed"/>
- </function>
-
- <!-- additon to es1.1 -->
- <function name="ClipPlanexOES" alias="ClipPlanex">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="const GLfixed *" count="4"/>
- </function>
-
- <function name="GetClipPlanexOES" alias="GetClipPlanex">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="GLfixed *" output="true" count="4"/>
- </function>
-
- <function name="GetFixedvOES" alias="GetFixedv">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetLightxvOES" alias="GetLightxv">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetMaterialxvOES" alias="GetMaterialxv">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetTexEnvxvOES" alias="GetTexEnvxv">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="GetTexParameterxvOES" alias="GetTexParameterxv">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="PointParameterxOES" alias="PointParameterx">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfixed"/>
- </function>
-
- <function name="PointParameterxvOES" alias="PointParameterxv">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *"/>
- </function>
-
- <function name="TexParameterxvOES" alias="TexParameterxv">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_framebuffer_object" number="10">
- <enum name="NONE_OES" value="0"/>
- <enum name="INVALID_FRAMEBUFFER_OPERATION_OES" value="0x0506"/>
- <enum name="RGBA4_OES" value="0x8056"/>
- <enum name="RGB5_A1_OES" value="0x8057"/>
- <enum name="DEPTH_COMPONENT16_OES" value="0x81A5"/>
-
- <enum name="MAX_RENDERBUFFER_SIZE_OES" value="0x84E8"/>
- <enum name="FRAMEBUFFER_BINDING_OES" value="0x8CA6"/>
- <enum name="RENDERBUFFER_BINDING_OES" value="0x8CA7"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES" value="0x8CD0"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES" value="0x8CD1"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" value="0x8CD2"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" value="0x8CD3"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>
- <enum name="FRAMEBUFFER_COMPLETE_OES" value="0x8CD5"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES" value="0x8CD6"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" value="0x8CD7"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES" value="0x8CD9"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_OES" value="0x8CDA"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES" value="0x8CDB"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES" value="0x8CDC"/>
- <enum name="FRAMEBUFFER_UNSUPPORTED_OES" value="0x8CDD"/>
- <enum name="COLOR_ATTACHMENT0_OES" value="0x8CE0"/>
- <enum name="DEPTH_ATTACHMENT_OES" value="0x8D00"/>
- <enum name="STENCIL_ATTACHMENT_OES" value="0x8D20"/>
- <enum name="FRAMEBUFFER_OES" value="0x8D40"/>
- <enum name="RENDERBUFFER_OES" value="0x8D41"/>
- <enum name="RENDERBUFFER_WIDTH_OES" value="0x8D42"/>
- <enum name="RENDERBUFFER_HEIGHT_OES" value="0x8D43"/>
- <enum name="RENDERBUFFER_INTERNAL_FORMAT_OES" value="0x8D44"/>
- <enum name="STENCIL_INDEX1_OES" value="0x8D46"/>
- <enum name="STENCIL_INDEX4_OES" value="0x8D47"/>
- <enum name="STENCIL_INDEX8_OES" value="0x8D48"/>
- <enum name="RENDERBUFFER_RED_SIZE_OES" value="0x8D50"/>
- <enum name="RENDERBUFFER_GREEN_SIZE_OES" value="0x8D51"/>
- <enum name="RENDERBUFFER_BLUE_SIZE_OES" value="0x8D52"/>
- <enum name="RENDERBUFFER_ALPHA_SIZE_OES" value="0x8D53"/>
- <enum name="RENDERBUFFER_DEPTH_SIZE_OES" value="0x8D54"/>
- <enum name="RENDERBUFFER_STENCIL_SIZE_OES" value="0x8D55"/>
- <enum name="RGB565_OES" value="0x8D62"/>
-
- <function name="BindFramebufferOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="framebuffer" type="GLuint"/>
- </function>
-
- <function name="BindRenderbufferOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="renderbuffer" type="GLuint"/>
- </function>
-
- <function name="CheckFramebufferStatusOES" offset="assign">
- <param name="target" type="GLenum"/>
- <return type="GLenum"/>
- </function>
-
- <function name="DeleteFramebuffersOES" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="framebuffers" type="const GLuint *" count="n"/>
- </function>
-
- <function name="DeleteRenderbuffersOES" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="renderbuffers" type="const GLuint *" count="n"/>
- </function>
-
- <function name="FramebufferRenderbufferOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="attachment" type="GLenum"/>
- <param name="renderbuffertarget" type="GLenum"/>
- <param name="renderbuffer" type="GLuint"/>
- </function>
-
- <function name="FramebufferTexture2DOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="attachment" type="GLenum"/>
- <param name="textarget" type="GLenum"/>
- <param name="texture" type="GLuint"/>
- <param name="level" type="GLint"/>
- </function>
-
- <function name="GenerateMipmapOES" offset="assign">
- <param name="target" type="GLenum"/>
- </function>
-
- <function name="GenFramebuffersOES" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="framebuffers" type="GLuint *" count="n" output="true"/>
- </function>
-
- <function name="GenRenderbuffersOES" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
- </function>
-
- <function name="GetFramebufferAttachmentParameterivOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="attachment" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true"/>
- </function>
-
- <function name="GetRenderbufferParameterivOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true"/>
- </function>
-
- <function name="IsFramebufferOES" offset="assign">
- <param name="framebuffer" type="GLuint"/>
- <return type="GLboolean"/>
- </function>
-
- <function name="IsRenderbufferOES" offset="assign">
- <param name="renderbuffer" type="GLuint"/>
- <return type="GLboolean"/>
- </function>
-
- <function name="RenderbufferStorageOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- </function>
-</category>
-
-<!-- core addition to es1.1 -->
-<category name="GL_OES_matrix_get" number="11">
- <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898D"/>
- <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898E"/>
- <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES" value="0x898F"/>
-</category>
-
-<!-- optional for es1.1 -->
-<category name="GL_OES_matrix_palette" number="12">
- <enum name="MAX_VERTEX_UNITS_OES" value="0x86A4"/>
- <enum name="WEIGHT_ARRAY_TYPE_OES" value="0x86A9"/>
- <enum name="WEIGHT_ARRAY_STRIDE_OES" value="0x86AA"/>
- <enum name="WEIGHT_ARRAY_SIZE_OES" value="0x86AB"/>
- <enum name="WEIGHT_ARRAY_POINTER_OES" value="0x86AC"/>
- <enum name="WEIGHT_ARRAY_OES" value="0x86AD"/>
- <enum name="MATRIX_PALETTE_OES" value="0x8840"/>
- <enum name="MAX_PALETTE_MATRICES_OES" value="0x8842"/>
- <enum name="CURRENT_PALETTE_MATRIX_OES" value="0x8843"/>
- <enum name="MATRIX_INDEX_ARRAY_OES" value="0x8844"/>
- <enum name="MATRIX_INDEX_ARRAY_SIZE_OES" value="0x8846"/>
- <enum name="MATRIX_INDEX_ARRAY_TYPE_OES" value="0x8847"/>
- <enum name="MATRIX_INDEX_ARRAY_STRIDE_OES" value="0x8848"/>
- <enum name="MATRIX_INDEX_ARRAY_POINTER_OES" value="0x8849"/>
- <enum name="WEIGHT_ARRAY_BUFFER_BINDING_OES" value="0x889E"/>
- <enum name="MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES" value="0x8B9E"/>
-
- <function name="CurrentPaletteMatrixOES">
- <param name="matrixpaletteindex" type="GLuint"/>
- </function>
-
- <function name="LoadPaletteFromModelViewMatrixOES">
- </function>
-
- <function name="MatrixIndexPointerOES">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- </function>
-
- <function name="WeightPointerOES">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- </function>
-</category>
-
-<!-- required for es1.1 -->
-<category name="GL_OES_point_size_array" number="14">
- <enum name="POINT_SIZE_ARRAY_TYPE_OES" value="0x898A"/>
- <enum name="POINT_SIZE_ARRAY_STRIDE_OES" value="0x898B"/>
- <enum name="POINT_SIZE_ARRAY_POINTER_OES" value="0x898C"/>
- <enum name="POINT_SIZE_ARRAY_OES" value="0x8B9C"/>
- <enum name="POINT_SIZE_ARRAY_BUFFER_BINDING_OES" value="0x8B9F"/>
-
- <function name="PointSizePointerOES" offset="assign">
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- </function>
-</category>
-
-<!-- required for es1.1 -->
-<category name="GL_OES_point_sprite" number="15">
- <enum name="POINT_SPRITE_OES" value="0x8861"/>
- <enum name="COORD_REPLACE_OES" value="0x8862"/>
-</category>
-
-<!-- optional for es1.0 -->
-<category name="GL_OES_query_matrix" number="16">
- <function name="QueryMatrixxOES" offset="assign">
- <param name="mantissa" type="GLfixed *" count="16" />
- <param name="exponent" type="GLint *" count="16" />
- <return type="GLbitfield"/>
- </function>
-</category>
-
-<!-- required for es1.0 and later -->
-<category name="GL_OES_read_format" number="17">
- <enum name="IMPLEMENTATION_COLOR_READ_TYPE_OES" value="0x8B9A"/>
- <enum name="IMPLEMENTATION_COLOR_READ_FORMAT_OES" value="0x8B9B"/>
-</category>
-
-<!-- core addition to es1.0 and later -->
-<category name="GL_OES_single_precision" number="18">
- <!-- additon to es1.0 -->
- <function name="ClearDepthfOES" alias="ClearDepthf">
- <param name="depth" type="GLclampf"/>
- </function>
-
- <function name="DepthRangefOES" alias="DepthRangef">
- <param name="zNear" type="GLclampf"/>
- <param name="zFar" type="GLclampf"/>
- </function>
-
- <function name="FrustumfOES" alias="Frustumf">
- <param name="left" type="GLfloat"/>
- <param name="right" type="GLfloat"/>
- <param name="bottom" type="GLfloat"/>
- <param name="top" type="GLfloat"/>
- <param name="zNear" type="GLfloat"/>
- <param name="zFar" type="GLfloat"/>
- </function>
-
- <function name="OrthofOES" alias="Orthof">
- <param name="left" type="GLfloat"/>
- <param name="right" type="GLfloat"/>
- <param name="bottom" type="GLfloat"/>
- <param name="top" type="GLfloat"/>
- <param name="zNear" type="GLfloat"/>
- <param name="zFar" type="GLfloat"/>
- </function>
-
- <!-- additon to es1.1 -->
- <function name="ClipPlanefOES" alias="ClipPlanef">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="const GLfloat *" count="4"/>
- </function>
-
- <function name="GetClipPlanefOES" alias="GetClipPlanef">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="GLfloat *" output="true" count="4"/>
- </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_texture_cube_map" number="20">
- <enum name="TEXTURE_GEN_MODE_OES" value="0x2500"/>
- <enum name="NORMAL_MAP_OES" value="0x8511"/>
- <enum name="REFLECTION_MAP_OES" value="0x8512"/>
- <enum name="TEXTURE_CUBE_MAP_OES" value="0x8513"/>
- <enum name="TEXTURE_BINDING_CUBE_MAP_OES" value="0x8514"/>
- <enum name="TEXTURE_CUBE_MAP_POSITIVE_X_OES" value="0x8515"/>
- <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X_OES" value="0x8516"/>
- <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y_OES" value="0x8517"/>
- <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y_OES" value="0x8518"/>
- <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z_OES" value="0x8519"/>
- <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z_OES" value="0x851A"/>
- <enum name="MAX_CUBE_MAP_TEXTURE_SIZE_OES" value="0x851C"/>
- <enum name="TEXTURE_GEN_STR_OES" value="0x8D60"/>
-
- <function name="GetTexGenfvOES" offset="279">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="133"/>
- </function>
-
- <function name="GetTexGenivOES" offset="280">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="134"/>
- </function>
-
- <function name="GetTexGenxvOES" offset="assign">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
- </function>
-
- <function name="TexGenfOES" offset="190">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="117"/>
- </function>
-
- <function name="TexGenfvOES" offset="191">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="118"/>
- </function>
-
- <function name="TexGeniOES" offset="192">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="119"/>
- </function>
-
- <function name="TexGenivOES" offset="193">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="120"/>
- </function>
-
- <function name="TexGenxOES" offset="assign">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- </function>
-
- <function name="TexGenxvOES" offset="assign">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfixed *" variable_param="pname"/>
- </function>
-</category>
-
-<category name="GL_OES_texture_env_crossbar" number="21">
- <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_texture_mirrored_repeat" number="22">
- <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_EXT_texture_lod_bias" number="60">
- <enum name="TEXTURE_FILTER_CONTROL_EXT" value="0x8500"/>
- <enum name="TEXTURE_LOD_BIAS_EXT" value="0x8501"/>
- <enum name="MAX_TEXTURE_LOD_BIAS_EXT" value="0x84FD"/>
-</category>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es2_API.xml b/mesalib/src/mapi/glapi/gen-es/es2_API.xml
deleted file mode 100644
index f8af63b94..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es2_API.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<!-- OpenGL ES 2.x API -->
-
-<OpenGLAPI>
-
-<xi:include href="base2_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- core subset of OpenGL 2.0 defined in OpenGL ES 2.0 -->
-<category name="core2.0">
- <!-- addition to base1.0 -->
- <enum name="NONE" value="0x0"/>
- <enum name="INT" count="4" value="0x1404">
- <size name="CallLists"/>
- </enum>
- <enum name="UNSIGNED_INT" count="4" value="0x1405">
- <size name="CallLists"/>
- </enum>
- <enum name="STENCIL_INDEX" value="0x1901"/>
- <enum name="DEPTH_COMPONENT" value="0x1902"/>
-
- <function name="TexImage2D" offset="183">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLint"/> <!-- XXX the actual type is GLenum... -->
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
- <glx rop="110" large="true"/>
- </function>
-
- <!-- addition to base1.1 -->
- <enum name="RGBA4" value="0x8056"/>
- <enum name="RGB5_A1" value="0x8057"/>
-
- <!-- addition to base1.2 -->
- <enum name="CONSTANT_COLOR" value="0x8001"/>
- <enum name="ONE_MINUS_CONSTANT_COLOR" value="0x8002"/>
- <enum name="CONSTANT_ALPHA" value="0x8003"/>
- <enum name="ONE_MINUS_CONSTANT_ALPHA" value="0x8004"/>
- <enum name="BLEND_COLOR" count="4" value="0x8005">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FUNC_ADD" value="0x8006"/>
- <enum name="BLEND_EQUATION" count="1" value="0x8009">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="FUNC_SUBTRACT" value="0x800A"/>
- <enum name="FUNC_REVERSE_SUBTRACT" value="0x800B"/>
-
- <function name="BlendColor" offset="336">
- <param name="red" type="GLclampf"/>
- <param name="green" type="GLclampf"/>
- <param name="blue" type="GLclampf"/>
- <param name="alpha" type="GLclampf"/>
- <glx rop="4096"/>
- </function>
-
- <function name="BlendEquation" offset="337">
- <param name="mode" type="GLenum"/>
- <glx rop="4097"/>
- </function>
-
- <!-- addition to base1.3 -->
- <enum name="TEXTURE_CUBE_MAP" count="1" value="0x8513">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_BINDING_CUBE_MAP" count="1" value="0x8514">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="TEXTURE_CUBE_MAP_POSITIVE_X" value="0x8515"/>
- <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X" value="0x8516"/>
- <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y" value="0x8517"/>
- <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y" value="0x8518"/>
- <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z" value="0x8519"/>
- <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z" value="0x851A"/>
- <enum name="MAX_CUBE_MAP_TEXTURE_SIZE" count="1" value="0x851C">
- <size name="Get" mode="get"/>
- </enum>
-
- <!-- addition to base1.4 -->
- <enum name="BLEND_DST_RGB" count="1" value="0x80C8">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_SRC_RGB" count="1" value="0x80C9">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_DST_ALPHA" count="1" value="0x80CA">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="BLEND_SRC_ALPHA" count="1" value="0x80CB">
- <size name="Get" mode="get"/>
- </enum>
- <enum name="DEPTH_COMPONENT16" value="0x81A5"/>
- <enum name="MIRRORED_REPEAT" value="0x8370"/>
- <enum name="INCR_WRAP" value="0x8507"/>
- <enum name="DECR_WRAP" value="0x8508"/>
-
- <function name="BlendFuncSeparate" offset="assign">
- <param name="sfactorRGB" type="GLenum"/>
- <param name="dfactorRGB" type="GLenum"/>
- <param name="sfactorAlpha" type="GLenum"/>
- <param name="dfactorAlpha" type="GLenum"/>
- <glx rop="4134"/>
- </function>
-
- <!-- addition to base1.5 -->
- <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING" count="1" value="0x889F">
- <size name="GetVertexAttribdv" mode="get"/>
- <size name="GetVertexAttribfv" mode="get"/>
- <size name="GetVertexAttribiv" mode="get"/>
- </enum>
- <enum name="STREAM_DRAW" value="0x88E0"/>
-
- <!-- addition to base2.0 -->
- <!-- base2.0 should have everything defined -->
-</category>
-
-<!-- OpenGL ES 2.0 -->
-<category name="es2.0">
- <!-- addition to core2.0 -->
- <enum name="LOW_FLOAT" value="0x8DF0"/>
- <enum name="MEDIUM_FLOAT" value="0x8DF1"/>
- <enum name="HIGH_FLOAT" value="0x8DF2"/>
- <enum name="LOW_INT" value="0x8DF3"/>
- <enum name="MEDIUM_INT" value="0x8DF4"/>
- <enum name="HIGH_INT" value="0x8DF5"/>
- <enum name="SHADER_BINARY_FORMATS" value="0x8DF8"/>
- <enum name="NUM_SHADER_BINARY_FORMATS" value="0x8DF9"/>
- <enum name="SHADER_COMPILER" value="0x8DFA"/>
- <enum name="MAX_VERTEX_UNIFORM_VECTORS" value="0x8DFB"/>
- <enum name="MAX_VARYING_VECTORS" value="0x8DFC"/>
- <enum name="MAX_FRAGMENT_UNIFORM_VECTORS" value="0x8DFD"/>
-
- <function name="GetShaderPrecisionFormat" offset="assign">
- <param name="shadertype" type="GLenum"/>
- <param name="precisiontype" type="GLenum"/>
- <param name="range" type="GLint *"/>
- <param name="precision" type="GLint *"/>
- </function>
-
- <function name="ReleaseShaderCompiler" offset="assign">
- </function>
-
- <function name="ShaderBinary" offset="assign">
- <param name="n" type="GLsizei"/>
- <param name="shaders" type="const GLuint *"/>
- <param name="binaryformat" type="GLenum"/>
- <param name="binary" type="const GLvoid *"/>
- <param name="length" type="GLsizei"/>
- </function>
-
- <!-- from GL_OES_fixed_point -->
- <enum name="FIXED" value="0x140C"/>
- <type name="fixed" size="4" />
-
- <!-- from GL_OES_framebuffer_object -->
- <enum name="INVALID_FRAMEBUFFER_OPERATION" value="0x0506"/>
- <enum name="MAX_RENDERBUFFER_SIZE" value="0x84E8"/>
- <enum name="FRAMEBUFFER_BINDING" value="0x8CA6"/>
- <enum name="RENDERBUFFER_BINDING" value="0x8CA7"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" value="0x8CD0"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" value="0x8CD1"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" value="0x8CD2"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" value="0x8CD3"/>
- <enum name="FRAMEBUFFER_COMPLETE" value="0x8CD5"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT" value="0x8CD6"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" value="0x8CD7"/>
- <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS" value="0x8CD9"/>
- <enum name="FRAMEBUFFER_UNSUPPORTED" value="0x8CDD"/>
- <enum name="COLOR_ATTACHMENT0" value="0x8CE0"/>
- <enum name="DEPTH_ATTACHMENT" value="0x8D00"/>
- <enum name="STENCIL_ATTACHMENT" value="0x8D20"/>
- <enum name="FRAMEBUFFER" value="0x8D40"/>
- <enum name="RENDERBUFFER" value="0x8D41"/>
- <enum name="RENDERBUFFER_WIDTH" value="0x8D42"/>
- <enum name="RENDERBUFFER_HEIGHT" value="0x8D43"/>
- <enum name="RENDERBUFFER_INTERNAL_FORMAT" value="0x8D44"/>
- <enum name="STENCIL_INDEX8" value="0x8D48"/>
- <enum name="RENDERBUFFER_RED_SIZE" value="0x8D50"/>
- <enum name="RENDERBUFFER_GREEN_SIZE" value="0x8D51"/>
- <enum name="RENDERBUFFER_BLUE_SIZE" value="0x8D52"/>
- <enum name="RENDERBUFFER_ALPHA_SIZE" value="0x8D53"/>
- <enum name="RENDERBUFFER_DEPTH_SIZE" value="0x8D54"/>
- <enum name="RENDERBUFFER_STENCIL_SIZE" value="0x8D55"/>
- <enum name="RGB565" value="0x8D62"/>
-
- <function name="BindFramebuffer" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="framebuffer" type="GLuint"/>
- </function>
-
- <function name="BindRenderbuffer" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="renderbuffer" type="GLuint"/>
- </function>
-
- <function name="CheckFramebufferStatus" offset="assign">
- <param name="target" type="GLenum"/>
- <return type="GLenum"/>
- </function>
-
- <function name="DeleteFramebuffers" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="framebuffers" type="const GLuint *" count="n"/>
- </function>
-
- <function name="DeleteRenderbuffers" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="renderbuffers" type="const GLuint *" count="n"/>
- </function>
-
- <function name="FramebufferRenderbuffer" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="attachment" type="GLenum"/>
- <param name="renderbuffertarget" type="GLenum"/>
- <param name="renderbuffer" type="GLuint"/>
- </function>
-
- <function name="FramebufferTexture2D" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="attachment" type="GLenum"/>
- <param name="textarget" type="GLenum"/>
- <param name="texture" type="GLuint"/>
- <param name="level" type="GLint"/>
- </function>
-
- <function name="GenerateMipmap" offset="assign">
- <param name="target" type="GLenum"/>
- </function>
-
- <function name="GenFramebuffers" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="framebuffers" type="GLuint *" count="n" output="true"/>
- </function>
-
- <function name="GenRenderbuffers" offset="assign">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
- </function>
-
- <function name="GetFramebufferAttachmentParameteriv" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="attachment" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true"/>
- </function>
-
- <function name="GetRenderbufferParameteriv" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true"/>
- </function>
-
- <function name="IsFramebuffer" offset="assign">
- <param name="framebuffer" type="GLuint"/>
- <return type="GLboolean"/>
- </function>
-
- <function name="IsRenderbuffer" offset="assign">
- <param name="renderbuffer" type="GLuint"/>
- <return type="GLboolean"/>
- </function>
-
- <function name="RenderbufferStorage" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- </function>
-
- <!-- from GL_OES_read_format -->
- <enum name="IMPLEMENTATION_COLOR_READ_TYPE" value="0x8B9A"/>
- <enum name="IMPLEMENTATION_COLOR_READ_FORMAT" value="0x8B9B"/>
-
- <!-- from GL_OES_single_precision -->
- <function name="ClearDepthf" offset="assign">
- <param name="depth" type="GLclampf"/>
- </function>
-
- <function name="DepthRangef" offset="assign">
- <param name="zNear" type="GLclampf"/>
- <param name="zFar" type="GLclampf"/>
- </function>
-</category>
-
-<xi:include href="es2_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="es2_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es2_COMPAT.xml b/mesalib/src/mapi/glapi/gen-es/es2_COMPAT.xml
deleted file mode 100644
index 1bd356963..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es2_COMPAT.xml
+++ /dev/null
@@ -1,368 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- This file defines the functions that are needed by Mesa. It
- makes sure the generated glapi headers are compatible with Mesa.
- It mainly consists of missing functions and aliases in OpenGL ES.
--->
-
-<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- except for those defined by es_COMPAT.xml, these are also needed -->
-<category name="compat">
- <!-- OpenGL 1.0 -->
- <function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false">
- <param name="red" type="GLfloat"/>
- <param name="green" type="GLfloat"/>
- <param name="blue" type="GLfloat"/>
- <param name="alpha" type="GLfloat"/>
- </function>
-
- <function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false">
- <param name="red" type="GLubyte"/>
- <param name="green" type="GLubyte"/>
- <param name="blue" type="GLubyte"/>
- <param name="alpha" type="GLubyte"/>
- </function>
-
- <function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false">
- <param name="nx" type="GLfloat"/>
- <param name="ny" type="GLfloat"/>
- <param name="nz" type="GLfloat"/>
- </function>
-
- <function name="Fogf" offset="153" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="80"/>
- </function>
-
- <function name="Fogfv" offset="154" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="81"/>
- </function>
-
- <function name="Lightf" offset="159" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="86"/>
- </function>
-
- <function name="Lightfv" offset="160" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="87"/>
- </function>
-
- <function name="LightModelf" offset="163" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="90"/>
- </function>
-
- <function name="LightModelfv" offset="164" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="91"/>
- </function>
-
- <function name="Materialf" offset="169" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="96"/>
- </function>
-
- <function name="Materialfv" offset="170" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="97"/>
- </function>
-
- <function name="PointSize" offset="173" static_dispatch="false">
- <param name="size" type="GLfloat"/>
- <glx rop="100"/>
- </function>
-
- <function name="ShadeModel" offset="177" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="104"/>
- </function>
-
- <function name="TexEnvf" offset="184" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="111"/>
- </function>
-
- <function name="TexEnvfv" offset="185" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="112"/>
- </function>
-
- <function name="TexEnvi" offset="186" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="113"/>
- </function>
-
- <function name="TexEnviv" offset="187" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="114"/>
- </function>
-
- <function name="TexGenf" offset="190" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="117"/>
- </function>
-
- <function name="TexGenfv" offset="191" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="118"/>
- </function>
-
- <function name="TexGeni" offset="192" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="119"/>
- </function>
-
- <function name="TexGeniv" offset="193" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="120"/>
- </function>
-
- <function name="AlphaFunc" offset="240" static_dispatch="false">
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLclampf"/>
- <glx rop="159"/>
- </function>
-
- <function name="LogicOp" offset="242" static_dispatch="false">
- <param name="opcode" type="GLenum"/>
- <glx rop="161"/>
- </function>
-
- <function name="GetLightfv" offset="264" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="118"/>
- </function>
-
- <function name="GetMaterialfv" offset="269" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="123"/>
- </function>
-
- <function name="GetTexEnvfv" offset="276" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="130"/>
- </function>
-
- <function name="GetTexEnviv" offset="277" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="131"/>
- </function>
-
- <function name="GetTexGenfv" offset="279" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="133"/>
- </function>
-
- <function name="GetTexGeniv" offset="280" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="134"/>
- </function>
-
- <function name="LoadIdentity" offset="290" static_dispatch="false">
- <glx rop="176"/>
- </function>
-
- <function name="LoadMatrixf" offset="291" static_dispatch="false">
- <param name="m" type="const GLfloat *" count="16"/>
- <glx rop="177"/>
- </function>
-
- <function name="MatrixMode" offset="293" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="179"/>
- </function>
-
- <function name="MultMatrixf" offset="294" static_dispatch="false">
- <param name="m" type="const GLfloat *" count="16"/>
- <glx rop="180"/>
- </function>
-
- <function name="PopMatrix" offset="297" static_dispatch="false">
- <glx rop="183"/>
- </function>
-
- <function name="PushMatrix" offset="298" static_dispatch="false">
- <glx rop="184"/>
- </function>
-
- <function name="Rotatef" offset="300" static_dispatch="false">
- <param name="angle" type="GLfloat"/>
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="186"/>
- </function>
-
- <function name="Scalef" offset="302" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="188"/>
- </function>
-
- <function name="Translatef" offset="304" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="190"/>
- </function>
-
- <!-- OpenGL 1.1 -->
- <function name="ColorPointer" offset="308" static_dispatch="false">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="DisableClientState" offset="309" static_dispatch="false">
- <param name="array" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="EnableClientState" offset="313" static_dispatch="false">
- <param name="array" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="NormalPointer" offset="318" static_dispatch="false">
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="TexCoordPointer" offset="320" static_dispatch="false">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="VertexPointer" offset="321" static_dispatch="false">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="GetPointerv" offset="329" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLvoid **" output="true"/>
- <glx handcode="true"/>
- </function>
-
- <!-- OpenGL 1.2 -->
- <function name="TexImage3D" alias="TexImage3DOES" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
- <glx rop="4114" large="true"/>
- </function>
-
- <function name="TexSubImage3D" alias="TexSubImage3DOES" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="UNUSED" type="GLuint" padding="true"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4115" large="true"/>
- </function>
-
- <function name="CopyTexSubImage3D" alias="CopyTexSubImage3DOES" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="4123"/>
- </function>
-
- <!-- GL_ARB_multitexture -->
- <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false">
- <param name="texture" type="GLenum"/>
- <glx rop="197"/>
- </function>
-
- <function name="ClientActiveTextureARB" offset="375" static_dispatch="false">
- <param name="texture" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- <param name="r" type="GLfloat"/>
- <param name="q" type="GLfloat"/>
- </function>
-</category>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es2_EXT.xml b/mesalib/src/mapi/glapi/gen-es/es2_EXT.xml
deleted file mode 100644
index 4a67952e5..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es2_EXT.xml
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<!-- OpenGL ES 2.x extensions -->
-
-<OpenGLAPI>
-
-<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<category name="GL_OES_texture_3D" number="34">
- <enum name="TEXTURE_BINDING_3D_OES" value="0x806A"/>
- <enum name="TEXTURE_3D_OES" value="0x806F"/>
- <enum name="TEXTURE_WRAP_R_OES" value="0x8072"/>
- <enum name="MAX_3D_TEXTURE_SIZE_OES" value="0x8073"/>
- <enum name="SAMPLER_3D_OES" value="0x8B5F"/>
- <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>
-
- <function name="CompressedTexImage3DOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="imageSize" type="GLsizei" counter="true"/>
- <param name="data" type="const GLvoid *" count="imageSize"/>
- <glx rop="216" handcode="client"/>
- </function>
-
- <function name="CompressedTexSubImage3DOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="imageSize" type="GLsizei" counter="true"/>
- <param name="data" type="const GLvoid *" count="imageSize"/>
- <glx rop="219" handcode="client"/>
- </function>
-
- <function name="CopyTexSubImage3DOES" offset="373">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="4123"/>
- </function>
-
- <function name="FramebufferTexture3DOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="attachment" type="GLenum"/>
- <param name="textarget" type="GLenum"/>
- <param name="texture" type="GLuint"/>
- <param name="level" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <glx rop="4323"/>
- </function>
-
- <function name="TexImage3DOES" offset="371">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
- <glx rop="4114" large="true"/>
- </function>
-
- <function name="TexSubImage3DOES" offset="372">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="UNUSED" type="GLuint" padding="true"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4115" large="true"/>
- </function>
-</category>
-
-<!-- the other name is OES_texture_float_linear -->
-<category name="OES_texture_half_float_linear" number="35">
- <!-- No new functions, types, enums. -->
-</category>
-
-<!-- the other name is OES_texture_float -->
-<category name="OES_texture_half_float" number="36">
- <enum name="HALF_FLOAT_OES" value="0x8D61"/>
-</category>
-
-<category name="GL_OES_texture_npot" number="37">
- <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_vertex_half_float" number="38">
- <enum name="HALF_FLOAT_OES" value="0x8D61"/>
-</category>
-
-<category name="GL_EXT_texture_type_2_10_10_10_REV" number="42">
- <enum name="UNSIGNED_INT_2_10_10_10_REV_EXT" value="0x8368"/>
-</category>
-
-<category name="GL_OES_packed_depth_stencil" number="43">
- <enum name="DEPTH_STENCIL_OES" value="0x84F9"/>
- <enum name="UNSIGNED_INT_24_8_OES" value="0x84FA"/>
- <enum name="DEPTH24_STENCIL8_OES" value="0x88F0"/>
-</category>
-
-<category name="GL_OES_depth_texture" number="44">
- <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_standard_derivatives" number="45">
- <enum name="FRAGMENT_SHADER_DERIVATIVE_HINT_OES" value="0x8B8B"/>
-</category>
-
-<category name="GL_OES_vertex_type_10_10_10_2" number="46">
- <enum name="UNSIGNED_INT_10_10_10_2_OES" value="0x8DF6"/>
- <enum name="INT_10_10_10_2_OES" value="0x8DF7"/>
-</category>
-
-<category name="GL_OES_get_program_binary" number="47">
- <enum name="PROGRAM_BINARY_LENGTH_OES" value="0x8741"/>
- <enum name="NUM_PROGRAM_BINARY_FORMATS_OES" value="0x87FE"/>
- <enum name="PROGRAM_BINARY_FORMATS_OES" value="0x87FF"/>
-
- <function name="GetProgramBinaryOES" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="bufSize" type="GLsizei"/>
- <param name="length" type="GLsizei *"/>
- <param name="binaryFormat" type="GLenum *"/>
- <param name="binary" type="GLvoid *"/>
- </function>
-
- <function name="ProgramBinaryOES" offset="assign">
- <param name="program" type="GLuint"/>
- <param name="binaryFormat" type="GLenum"/>
- <param name="binary" type="const GLvoid *"/>
- <param name="length" type="GLint"/>
- </function>
-</category>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es_COMPAT.xml b/mesalib/src/mapi/glapi/gen-es/es_COMPAT.xml
deleted file mode 100644
index 7c7292611..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es_COMPAT.xml
+++ /dev/null
@@ -1,2646 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- This file defines the following categories
-
- a subset of 1.0
- a subset of 1.1
- a subset of 1.2
- a subset of GL_ARB_multitexture
- GL_APPLE_vertex_array_object
-
- to make sure the generated glapi headers are compatible with Mesa.
- It is included by es1_COMPAT.xml and es2_COMPAT.xml.
--->
-
-<category name="1.0">
- <type name="double" size="8" float="true" glx_name="FLOAT64"/>
- <type name="clampd" size="8" float="true" glx_name="FLOAT64"/>
-
- <type name="float" size="4" float="true" glx_name="FLOAT32"/>
- <type name="clampf" size="4" float="true" glx_name="FLOAT32"/>
-
- <type name="int" size="4" glx_name="CARD32"/>
- <type name="uint" size="4" unsigned="true" glx_name="CARD32"/>
- <type name="sizei" size="4" unsigned="true" glx_name="CARD32"/>
- <type name="enum" size="4" unsigned="true" glx_name="ENUM"/>
- <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
-
- <type name="short" size="2" glx_name="CARD16"/>
- <type name="ushort" size="2" unsigned="true" glx_name="CARD16"/>
-
- <type name="byte" size="1" glx_name="CARD8"/>
- <type name="ubyte" size="1" unsigned="true" glx_name="CARD8"/>
- <type name="boolean" size="1" unsigned="true" glx_name="CARD8"/>
-
- <type name="void" size="1"/>
-
- <function name="NewList" offset="0" static_dispatch="false">
- <param name="list" type="GLuint"/>
- <param name="mode" type="GLenum"/>
- <glx sop="101"/>
- </function>
-
- <function name="EndList" offset="1" static_dispatch="false">
- <glx sop="102"/>
- </function>
-
- <function name="CallList" offset="2" static_dispatch="false">
- <param name="list" type="GLuint"/>
- <glx rop="1"/>
- </function>
-
- <function name="CallLists" offset="3" static_dispatch="false">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="type" type="GLenum"/>
- <param name="lists" type="const GLvoid *" variable_param="type" count="n"/>
- <glx rop="2" large="true"/>
- </function>
-
- <function name="DeleteLists" offset="4" static_dispatch="false">
- <param name="list" type="GLuint"/>
- <param name="range" type="GLsizei"/>
- <glx sop="103"/>
- </function>
-
- <function name="GenLists" offset="5" static_dispatch="false">
- <param name="range" type="GLsizei"/>
- <return type="GLuint"/>
- <glx sop="104"/>
- </function>
-
- <function name="ListBase" offset="6" static_dispatch="false">
- <param name="base" type="GLuint"/>
- <glx rop="3"/>
- </function>
-
- <function name="Begin" offset="7" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="4"/>
- </function>
-
- <function name="Bitmap" offset="8" static_dispatch="false">
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="xorig" type="GLfloat"/>
- <param name="yorig" type="GLfloat"/>
- <param name="xmove" type="GLfloat"/>
- <param name="ymove" type="GLfloat"/>
- <param name="bitmap" type="const GLubyte *" img_width="width" img_height="height" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
- <glx rop="5" large="true"/>
- </function>
-
- <function name="Color3b" offset="9" vectorequiv="Color3bv" static_dispatch="false">
- <param name="red" type="GLbyte"/>
- <param name="green" type="GLbyte"/>
- <param name="blue" type="GLbyte"/>
- </function>
-
- <function name="Color3bv" offset="10" static_dispatch="false">
- <param name="v" type="const GLbyte *" count="3"/>
- <glx rop="6"/>
- </function>
-
- <function name="Color3d" offset="11" vectorequiv="Color3dv" static_dispatch="false">
- <param name="red" type="GLdouble"/>
- <param name="green" type="GLdouble"/>
- <param name="blue" type="GLdouble"/>
- </function>
-
- <function name="Color3dv" offset="12" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="3"/>
- <glx rop="7"/>
- </function>
-
- <function name="Color3f" offset="13" vectorequiv="Color3fv" static_dispatch="false">
- <param name="red" type="GLfloat"/>
- <param name="green" type="GLfloat"/>
- <param name="blue" type="GLfloat"/>
- </function>
-
- <function name="Color3fv" offset="14" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="3"/>
- <glx rop="8"/>
- </function>
-
- <function name="Color3i" offset="15" vectorequiv="Color3iv" static_dispatch="false">
- <param name="red" type="GLint"/>
- <param name="green" type="GLint"/>
- <param name="blue" type="GLint"/>
- </function>
-
- <function name="Color3iv" offset="16" static_dispatch="false">
- <param name="v" type="const GLint *" count="3"/>
- <glx rop="9"/>
- </function>
-
- <function name="Color3s" offset="17" vectorequiv="Color3sv" static_dispatch="false">
- <param name="red" type="GLshort"/>
- <param name="green" type="GLshort"/>
- <param name="blue" type="GLshort"/>
- </function>
-
- <function name="Color3sv" offset="18" static_dispatch="false">
- <param name="v" type="const GLshort *" count="3"/>
- <glx rop="10"/>
- </function>
-
- <function name="Color3ub" offset="19" vectorequiv="Color3ubv" static_dispatch="false">
- <param name="red" type="GLubyte"/>
- <param name="green" type="GLubyte"/>
- <param name="blue" type="GLubyte"/>
- </function>
-
- <function name="Color3ubv" offset="20" static_dispatch="false">
- <param name="v" type="const GLubyte *" count="3"/>
- <glx rop="11"/>
- </function>
-
- <function name="Color3ui" offset="21" vectorequiv="Color3uiv" static_dispatch="false">
- <param name="red" type="GLuint"/>
- <param name="green" type="GLuint"/>
- <param name="blue" type="GLuint"/>
- </function>
-
- <function name="Color3uiv" offset="22" static_dispatch="false">
- <param name="v" type="const GLuint *" count="3"/>
- <glx rop="12"/>
- </function>
-
- <function name="Color3us" offset="23" vectorequiv="Color3usv" static_dispatch="false">
- <param name="red" type="GLushort"/>
- <param name="green" type="GLushort"/>
- <param name="blue" type="GLushort"/>
- </function>
-
- <function name="Color3usv" offset="24" static_dispatch="false">
- <param name="v" type="const GLushort *" count="3"/>
- <glx rop="13"/>
- </function>
-
- <function name="Color4b" offset="25" vectorequiv="Color4bv" static_dispatch="false">
- <param name="red" type="GLbyte"/>
- <param name="green" type="GLbyte"/>
- <param name="blue" type="GLbyte"/>
- <param name="alpha" type="GLbyte"/>
- </function>
-
- <function name="Color4bv" offset="26" static_dispatch="false">
- <param name="v" type="const GLbyte *" count="4"/>
- <glx rop="14"/>
- </function>
-
- <function name="Color4d" offset="27" vectorequiv="Color4dv" static_dispatch="false">
- <param name="red" type="GLdouble"/>
- <param name="green" type="GLdouble"/>
- <param name="blue" type="GLdouble"/>
- <param name="alpha" type="GLdouble"/>
- </function>
-
- <function name="Color4dv" offset="28" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="4"/>
- <glx rop="15"/>
- </function>
-
- <!--function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false">
- <param name="red" type="GLfloat"/>
- <param name="green" type="GLfloat"/>
- <param name="blue" type="GLfloat"/>
- <param name="alpha" type="GLfloat"/>
- </function-->
-
- <function name="Color4fv" offset="30" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="4"/>
- <glx rop="16"/>
- </function>
-
- <function name="Color4i" offset="31" vectorequiv="Color4iv" static_dispatch="false">
- <param name="red" type="GLint"/>
- <param name="green" type="GLint"/>
- <param name="blue" type="GLint"/>
- <param name="alpha" type="GLint"/>
- </function>
-
- <function name="Color4iv" offset="32" static_dispatch="false">
- <param name="v" type="const GLint *" count="4"/>
- <glx rop="17"/>
- </function>
-
- <function name="Color4s" offset="33" vectorequiv="Color4sv" static_dispatch="false">
- <param name="red" type="GLshort"/>
- <param name="green" type="GLshort"/>
- <param name="blue" type="GLshort"/>
- <param name="alpha" type="GLshort"/>
- </function>
-
- <function name="Color4sv" offset="34" static_dispatch="false">
- <param name="v" type="const GLshort *" count="4"/>
- <glx rop="18"/>
- </function>
-
- <!--function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false">
- <param name="red" type="GLubyte"/>
- <param name="green" type="GLubyte"/>
- <param name="blue" type="GLubyte"/>
- <param name="alpha" type="GLubyte"/>
- </function-->
-
- <function name="Color4ubv" offset="36" static_dispatch="false">
- <param name="v" type="const GLubyte *" count="4"/>
- <glx rop="19"/>
- </function>
-
- <function name="Color4ui" offset="37" vectorequiv="Color4uiv" static_dispatch="false">
- <param name="red" type="GLuint"/>
- <param name="green" type="GLuint"/>
- <param name="blue" type="GLuint"/>
- <param name="alpha" type="GLuint"/>
- </function>
-
- <function name="Color4uiv" offset="38" static_dispatch="false">
- <param name="v" type="const GLuint *" count="4"/>
- <glx rop="20"/>
- </function>
-
- <function name="Color4us" offset="39" vectorequiv="Color4usv" static_dispatch="false">
- <param name="red" type="GLushort"/>
- <param name="green" type="GLushort"/>
- <param name="blue" type="GLushort"/>
- <param name="alpha" type="GLushort"/>
- </function>
-
- <function name="Color4usv" offset="40" static_dispatch="false">
- <param name="v" type="const GLushort *" count="4"/>
- <glx rop="21"/>
- </function>
-
- <function name="EdgeFlag" offset="41" vectorequiv="EdgeFlagv" static_dispatch="false">
- <param name="flag" type="GLboolean"/>
- </function>
-
- <function name="EdgeFlagv" offset="42" static_dispatch="false">
- <param name="flag" type="const GLboolean *" count="1"/>
- <glx rop="22"/>
- </function>
-
- <function name="End" offset="43" static_dispatch="false">
- <glx rop="23"/>
- </function>
-
- <function name="Indexd" offset="44" vectorequiv="Indexdv" static_dispatch="false">
- <param name="c" type="GLdouble"/>
- </function>
-
- <function name="Indexdv" offset="45" static_dispatch="false">
- <param name="c" type="const GLdouble *" count="1"/>
- <glx rop="24"/>
- </function>
-
- <function name="Indexf" offset="46" vectorequiv="Indexfv" static_dispatch="false">
- <param name="c" type="GLfloat"/>
- </function>
-
- <function name="Indexfv" offset="47" static_dispatch="false">
- <param name="c" type="const GLfloat *" count="1"/>
- <glx rop="25"/>
- </function>
-
- <function name="Indexi" offset="48" vectorequiv="Indexiv" static_dispatch="false">
- <param name="c" type="GLint"/>
- </function>
-
- <function name="Indexiv" offset="49" static_dispatch="false">
- <param name="c" type="const GLint *" count="1"/>
- <glx rop="26"/>
- </function>
-
- <function name="Indexs" offset="50" vectorequiv="Indexsv" static_dispatch="false">
- <param name="c" type="GLshort"/>
- </function>
-
- <function name="Indexsv" offset="51" static_dispatch="false">
- <param name="c" type="const GLshort *" count="1"/>
- <glx rop="27"/>
- </function>
-
- <function name="Normal3b" offset="52" vectorequiv="Normal3bv" static_dispatch="false">
- <param name="nx" type="GLbyte"/>
- <param name="ny" type="GLbyte"/>
- <param name="nz" type="GLbyte"/>
- </function>
-
- <function name="Normal3bv" offset="53" static_dispatch="false">
- <param name="v" type="const GLbyte *" count="3"/>
- <glx rop="28"/>
- </function>
-
- <function name="Normal3d" offset="54" vectorequiv="Normal3dv" static_dispatch="false">
- <param name="nx" type="GLdouble"/>
- <param name="ny" type="GLdouble"/>
- <param name="nz" type="GLdouble"/>
- </function>
-
- <function name="Normal3dv" offset="55" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="3"/>
- <glx rop="29"/>
- </function>
-
- <!--function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false">
- <param name="nx" type="GLfloat"/>
- <param name="ny" type="GLfloat"/>
- <param name="nz" type="GLfloat"/>
- </function-->
-
- <function name="Normal3fv" offset="57" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="3"/>
- <glx rop="30"/>
- </function>
-
- <function name="Normal3i" offset="58" vectorequiv="Normal3iv" static_dispatch="false">
- <param name="nx" type="GLint"/>
- <param name="ny" type="GLint"/>
- <param name="nz" type="GLint"/>
- </function>
-
- <function name="Normal3iv" offset="59" static_dispatch="false">
- <param name="v" type="const GLint *" count="3"/>
- <glx rop="31"/>
- </function>
-
- <function name="Normal3s" offset="60" vectorequiv="Normal3sv" static_dispatch="false">
- <param name="nx" type="GLshort"/>
- <param name="ny" type="GLshort"/>
- <param name="nz" type="GLshort"/>
- </function>
-
- <function name="Normal3sv" offset="61" static_dispatch="false">
- <param name="v" type="const GLshort *" count="3"/>
- <glx rop="32"/>
- </function>
-
- <function name="RasterPos2d" offset="62" vectorequiv="RasterPos2dv" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- </function>
-
- <function name="RasterPos2dv" offset="63" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="2"/>
- <glx rop="33"/>
- </function>
-
- <function name="RasterPos2f" offset="64" vectorequiv="RasterPos2fv" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- </function>
-
- <function name="RasterPos2fv" offset="65" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="2"/>
- <glx rop="34"/>
- </function>
-
- <function name="RasterPos2i" offset="66" vectorequiv="RasterPos2iv" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- </function>
-
- <function name="RasterPos2iv" offset="67" static_dispatch="false">
- <param name="v" type="const GLint *" count="2"/>
- <glx rop="35"/>
- </function>
-
- <function name="RasterPos2s" offset="68" vectorequiv="RasterPos2sv" static_dispatch="false">
- <param name="x" type="GLshort"/>
- <param name="y" type="GLshort"/>
- </function>
-
- <function name="RasterPos2sv" offset="69" static_dispatch="false">
- <param name="v" type="const GLshort *" count="2"/>
- <glx rop="36"/>
- </function>
-
- <function name="RasterPos3d" offset="70" vectorequiv="RasterPos3dv" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- <param name="z" type="GLdouble"/>
- </function>
-
- <function name="RasterPos3dv" offset="71" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="3"/>
- <glx rop="37"/>
- </function>
-
- <function name="RasterPos3f" offset="72" vectorequiv="RasterPos3fv" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- </function>
-
- <function name="RasterPos3fv" offset="73" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="3"/>
- <glx rop="38"/>
- </function>
-
- <function name="RasterPos3i" offset="74" vectorequiv="RasterPos3iv" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="z" type="GLint"/>
- </function>
-
- <function name="RasterPos3iv" offset="75" static_dispatch="false">
- <param name="v" type="const GLint *" count="3"/>
- <glx rop="39"/>
- </function>
-
- <function name="RasterPos3s" offset="76" vectorequiv="RasterPos3sv" static_dispatch="false">
- <param name="x" type="GLshort"/>
- <param name="y" type="GLshort"/>
- <param name="z" type="GLshort"/>
- </function>
-
- <function name="RasterPos3sv" offset="77" static_dispatch="false">
- <param name="v" type="const GLshort *" count="3"/>
- <glx rop="40"/>
- </function>
-
- <function name="RasterPos4d" offset="78" vectorequiv="RasterPos4dv" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- <param name="z" type="GLdouble"/>
- <param name="w" type="GLdouble"/>
- </function>
-
- <function name="RasterPos4dv" offset="79" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="4"/>
- <glx rop="41"/>
- </function>
-
- <function name="RasterPos4f" offset="80" vectorequiv="RasterPos4fv" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <param name="w" type="GLfloat"/>
- </function>
-
- <function name="RasterPos4fv" offset="81" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="4"/>
- <glx rop="42"/>
- </function>
-
- <function name="RasterPos4i" offset="82" vectorequiv="RasterPos4iv" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="z" type="GLint"/>
- <param name="w" type="GLint"/>
- </function>
-
- <function name="RasterPos4iv" offset="83" static_dispatch="false">
- <param name="v" type="const GLint *" count="4"/>
- <glx rop="43"/>
- </function>
-
- <function name="RasterPos4s" offset="84" vectorequiv="RasterPos4sv" static_dispatch="false">
- <param name="x" type="GLshort"/>
- <param name="y" type="GLshort"/>
- <param name="z" type="GLshort"/>
- <param name="w" type="GLshort"/>
- </function>
-
- <function name="RasterPos4sv" offset="85" static_dispatch="false">
- <param name="v" type="const GLshort *" count="4"/>
- <glx rop="44"/>
- </function>
-
- <function name="Rectd" offset="86" vectorequiv="Rectdv" static_dispatch="false">
- <param name="x1" type="GLdouble"/>
- <param name="y1" type="GLdouble"/>
- <param name="x2" type="GLdouble"/>
- <param name="y2" type="GLdouble"/>
- </function>
-
- <function name="Rectdv" offset="87" static_dispatch="false">
- <param name="v1" type="const GLdouble *" count="2"/>
- <param name="v2" type="const GLdouble *" count="2"/>
- <glx rop="45"/>
- </function>
-
- <function name="Rectf" offset="88" vectorequiv="Rectfv" static_dispatch="false">
- <param name="x1" type="GLfloat"/>
- <param name="y1" type="GLfloat"/>
- <param name="x2" type="GLfloat"/>
- <param name="y2" type="GLfloat"/>
- </function>
-
- <function name="Rectfv" offset="89" static_dispatch="false">
- <param name="v1" type="const GLfloat *" count="2"/>
- <param name="v2" type="const GLfloat *" count="2"/>
- <glx rop="46"/>
- </function>
-
- <function name="Recti" offset="90" vectorequiv="Rectiv" static_dispatch="false">
- <param name="x1" type="GLint"/>
- <param name="y1" type="GLint"/>
- <param name="x2" type="GLint"/>
- <param name="y2" type="GLint"/>
- </function>
-
- <function name="Rectiv" offset="91" static_dispatch="false">
- <param name="v1" type="const GLint *" count="2"/>
- <param name="v2" type="const GLint *" count="2"/>
- <glx rop="47"/>
- </function>
-
- <function name="Rects" offset="92" vectorequiv="Rectsv" static_dispatch="false">
- <param name="x1" type="GLshort"/>
- <param name="y1" type="GLshort"/>
- <param name="x2" type="GLshort"/>
- <param name="y2" type="GLshort"/>
- </function>
-
- <function name="Rectsv" offset="93" static_dispatch="false">
- <param name="v1" type="const GLshort *" count="2"/>
- <param name="v2" type="const GLshort *" count="2"/>
- <glx rop="48"/>
- </function>
-
- <function name="TexCoord1d" offset="94" vectorequiv="TexCoord1dv" static_dispatch="false">
- <param name="s" type="GLdouble"/>
- </function>
-
- <function name="TexCoord1dv" offset="95" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="1"/>
- <glx rop="49"/>
- </function>
-
- <function name="TexCoord1f" offset="96" vectorequiv="TexCoord1fv" static_dispatch="false">
- <param name="s" type="GLfloat"/>
- </function>
-
- <function name="TexCoord1fv" offset="97" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="1"/>
- <glx rop="50"/>
- </function>
-
- <function name="TexCoord1i" offset="98" vectorequiv="TexCoord1iv" static_dispatch="false">
- <param name="s" type="GLint"/>
- </function>
-
- <function name="TexCoord1iv" offset="99" static_dispatch="false">
- <param name="v" type="const GLint *" count="1"/>
- <glx rop="51"/>
- </function>
-
- <function name="TexCoord1s" offset="100" vectorequiv="TexCoord1sv" static_dispatch="false">
- <param name="s" type="GLshort"/>
- </function>
-
- <function name="TexCoord1sv" offset="101" static_dispatch="false">
- <param name="v" type="const GLshort *" count="1"/>
- <glx rop="52"/>
- </function>
-
- <function name="TexCoord2d" offset="102" vectorequiv="TexCoord2dv" static_dispatch="false">
- <param name="s" type="GLdouble"/>
- <param name="t" type="GLdouble"/>
- </function>
-
- <function name="TexCoord2dv" offset="103" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="2"/>
- <glx rop="53"/>
- </function>
-
- <function name="TexCoord2f" offset="104" vectorequiv="TexCoord2fv" static_dispatch="false">
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- </function>
-
- <function name="TexCoord2fv" offset="105" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="2"/>
- <glx rop="54"/>
- </function>
-
- <function name="TexCoord2i" offset="106" vectorequiv="TexCoord2iv" static_dispatch="false">
- <param name="s" type="GLint"/>
- <param name="t" type="GLint"/>
- </function>
-
- <function name="TexCoord2iv" offset="107" static_dispatch="false">
- <param name="v" type="const GLint *" count="2"/>
- <glx rop="55"/>
- </function>
-
- <function name="TexCoord2s" offset="108" vectorequiv="TexCoord2sv" static_dispatch="false">
- <param name="s" type="GLshort"/>
- <param name="t" type="GLshort"/>
- </function>
-
- <function name="TexCoord2sv" offset="109" static_dispatch="false">
- <param name="v" type="const GLshort *" count="2"/>
- <glx rop="56"/>
- </function>
-
- <function name="TexCoord3d" offset="110" vectorequiv="TexCoord3dv" static_dispatch="false">
- <param name="s" type="GLdouble"/>
- <param name="t" type="GLdouble"/>
- <param name="r" type="GLdouble"/>
- </function>
-
- <function name="TexCoord3dv" offset="111" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="3"/>
- <glx rop="57"/>
- </function>
-
- <function name="TexCoord3f" offset="112" vectorequiv="TexCoord3fv" static_dispatch="false">
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- <param name="r" type="GLfloat"/>
- </function>
-
- <function name="TexCoord3fv" offset="113" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="3"/>
- <glx rop="58"/>
- </function>
-
- <function name="TexCoord3i" offset="114" vectorequiv="TexCoord3iv" static_dispatch="false">
- <param name="s" type="GLint"/>
- <param name="t" type="GLint"/>
- <param name="r" type="GLint"/>
- </function>
-
- <function name="TexCoord3iv" offset="115" static_dispatch="false">
- <param name="v" type="const GLint *" count="3"/>
- <glx rop="59"/>
- </function>
-
- <function name="TexCoord3s" offset="116" vectorequiv="TexCoord3sv" static_dispatch="false">
- <param name="s" type="GLshort"/>
- <param name="t" type="GLshort"/>
- <param name="r" type="GLshort"/>
- </function>
-
- <function name="TexCoord3sv" offset="117" static_dispatch="false">
- <param name="v" type="const GLshort *" count="3"/>
- <glx rop="60"/>
- </function>
-
- <function name="TexCoord4d" offset="118" vectorequiv="TexCoord4dv" static_dispatch="false">
- <param name="s" type="GLdouble"/>
- <param name="t" type="GLdouble"/>
- <param name="r" type="GLdouble"/>
- <param name="q" type="GLdouble"/>
- </function>
-
- <function name="TexCoord4dv" offset="119" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="4"/>
- <glx rop="61"/>
- </function>
-
- <function name="TexCoord4f" offset="120" vectorequiv="TexCoord4fv" static_dispatch="false">
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- <param name="r" type="GLfloat"/>
- <param name="q" type="GLfloat"/>
- </function>
-
- <function name="TexCoord4fv" offset="121" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="4"/>
- <glx rop="62"/>
- </function>
-
- <function name="TexCoord4i" offset="122" vectorequiv="TexCoord4iv" static_dispatch="false">
- <param name="s" type="GLint"/>
- <param name="t" type="GLint"/>
- <param name="r" type="GLint"/>
- <param name="q" type="GLint"/>
- </function>
-
- <function name="TexCoord4iv" offset="123" static_dispatch="false">
- <param name="v" type="const GLint *" count="4"/>
- <glx rop="63"/>
- </function>
-
- <function name="TexCoord4s" offset="124" vectorequiv="TexCoord4sv" static_dispatch="false">
- <param name="s" type="GLshort"/>
- <param name="t" type="GLshort"/>
- <param name="r" type="GLshort"/>
- <param name="q" type="GLshort"/>
- </function>
-
- <function name="TexCoord4sv" offset="125" static_dispatch="false">
- <param name="v" type="const GLshort *" count="4"/>
- <glx rop="64"/>
- </function>
-
- <function name="Vertex2d" offset="126" vectorequiv="Vertex2dv" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- </function>
-
- <function name="Vertex2dv" offset="127" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="2"/>
- <glx rop="65"/>
- </function>
-
- <function name="Vertex2f" offset="128" vectorequiv="Vertex2fv" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- </function>
-
- <function name="Vertex2fv" offset="129" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="2"/>
- <glx rop="66"/>
- </function>
-
- <function name="Vertex2i" offset="130" vectorequiv="Vertex2iv" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- </function>
-
- <function name="Vertex2iv" offset="131" static_dispatch="false">
- <param name="v" type="const GLint *" count="2"/>
- <glx rop="67"/>
- </function>
-
- <function name="Vertex2s" offset="132" vectorequiv="Vertex2sv" static_dispatch="false">
- <param name="x" type="GLshort"/>
- <param name="y" type="GLshort"/>
- </function>
-
- <function name="Vertex2sv" offset="133" static_dispatch="false">
- <param name="v" type="const GLshort *" count="2"/>
- <glx rop="68"/>
- </function>
-
- <function name="Vertex3d" offset="134" vectorequiv="Vertex3dv" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- <param name="z" type="GLdouble"/>
- </function>
-
- <function name="Vertex3dv" offset="135" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="3"/>
- <glx rop="69"/>
- </function>
-
- <function name="Vertex3f" offset="136" vectorequiv="Vertex3fv" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- </function>
-
- <function name="Vertex3fv" offset="137" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="3"/>
- <glx rop="70"/>
- </function>
-
- <function name="Vertex3i" offset="138" vectorequiv="Vertex3iv" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="z" type="GLint"/>
- </function>
-
- <function name="Vertex3iv" offset="139" static_dispatch="false">
- <param name="v" type="const GLint *" count="3"/>
- <glx rop="71"/>
- </function>
-
- <function name="Vertex3s" offset="140" vectorequiv="Vertex3sv" static_dispatch="false">
- <param name="x" type="GLshort"/>
- <param name="y" type="GLshort"/>
- <param name="z" type="GLshort"/>
- </function>
-
- <function name="Vertex3sv" offset="141" static_dispatch="false">
- <param name="v" type="const GLshort *" count="3"/>
- <glx rop="72"/>
- </function>
-
- <function name="Vertex4d" offset="142" vectorequiv="Vertex4dv" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- <param name="z" type="GLdouble"/>
- <param name="w" type="GLdouble"/>
- </function>
-
- <function name="Vertex4dv" offset="143" static_dispatch="false">
- <param name="v" type="const GLdouble *" count="4"/>
- <glx rop="73"/>
- </function>
-
- <function name="Vertex4f" offset="144" vectorequiv="Vertex4fv" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <param name="w" type="GLfloat"/>
- </function>
-
- <function name="Vertex4fv" offset="145" static_dispatch="false">
- <param name="v" type="const GLfloat *" count="4"/>
- <glx rop="74"/>
- </function>
-
- <function name="Vertex4i" offset="146" vectorequiv="Vertex4iv" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="z" type="GLint"/>
- <param name="w" type="GLint"/>
- </function>
-
- <function name="Vertex4iv" offset="147" static_dispatch="false">
- <param name="v" type="const GLint *" count="4"/>
- <glx rop="75"/>
- </function>
-
- <function name="Vertex4s" offset="148" vectorequiv="Vertex4sv" static_dispatch="false">
- <param name="x" type="GLshort"/>
- <param name="y" type="GLshort"/>
- <param name="z" type="GLshort"/>
- <param name="w" type="GLshort"/>
- </function>
-
- <function name="Vertex4sv" offset="149" static_dispatch="false">
- <param name="v" type="const GLshort *" count="4"/>
- <glx rop="76"/>
- </function>
-
- <function name="ClipPlane" offset="150" static_dispatch="false">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="const GLdouble *" count="4"/>
- <glx rop="77"/>
- </function>
-
- <function name="ColorMaterial" offset="151" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="mode" type="GLenum"/>
- <glx rop="78"/>
- </function>
-
- <!--function name="CullFace" offset="152" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="79"/>
- </function>
-
- <function name="Fogf" offset="153" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="80"/>
- </function>
-
- <function name="Fogfv" offset="154" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="81"/>
- </function-->
-
- <function name="Fogi" offset="155" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="82"/>
- </function>
-
- <function name="Fogiv" offset="156" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="83"/>
- </function>
-
- <!--function name="FrontFace" offset="157" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="84"/>
- </function>
-
- <function name="Hint" offset="158" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="mode" type="GLenum"/>
- <glx rop="85"/>
- </function>
-
- <function name="Lightf" offset="159" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="86"/>
- </function>
-
- <function name="Lightfv" offset="160" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="87"/>
- </function-->
-
- <function name="Lighti" offset="161" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="88"/>
- </function>
-
- <function name="Lightiv" offset="162" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="89"/>
- </function>
-
- <!--function name="LightModelf" offset="163" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="90"/>
- </function>
-
- <function name="LightModelfv" offset="164" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="91"/>
- </function-->
-
- <function name="LightModeli" offset="165" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="92"/>
- </function>
-
- <function name="LightModeliv" offset="166" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="93"/>
- </function>
-
- <function name="LineStipple" offset="167" static_dispatch="false">
- <param name="factor" type="GLint"/>
- <param name="pattern" type="GLushort"/>
- <glx rop="94"/>
- </function>
-
- <!--function name="LineWidth" offset="168" static_dispatch="false">
- <param name="width" type="GLfloat"/>
- <glx rop="95"/>
- </function>
-
- <function name="Materialf" offset="169" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="96"/>
- </function>
-
- <function name="Materialfv" offset="170" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="97"/>
- </function-->
-
- <function name="Materiali" offset="171" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="98"/>
- </function>
-
- <function name="Materialiv" offset="172" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="99"/>
- </function>
-
- <!--function name="PointSize" offset="173" static_dispatch="false">
- <param name="size" type="GLfloat"/>
- <glx rop="100"/>
- </function-->
-
- <function name="PolygonMode" offset="174" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="mode" type="GLenum"/>
- <glx rop="101"/>
- </function>
-
- <function name="PolygonStipple" offset="175" static_dispatch="false">
- <param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
- <glx rop="102"/>
- </function>
-
- <!--function name="Scissor" offset="176" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="103"/>
- </function>
-
- <function name="ShadeModel" offset="177" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="104"/>
- </function>
-
- <function name="TexParameterf" offset="178" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="105"/>
- </function>
-
- <function name="TexParameterfv" offset="179" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="106"/>
- </function>
-
- <function name="TexParameteri" offset="180" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="107"/>
- </function>
-
- <function name="TexParameteriv" offset="181" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="108"/>
- </function-->
-
- <function name="TexImage1D" offset="182" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
- <glx rop="109" large="true"/>
- </function>
-
- <!--function name="TexImage2D" offset="183" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
- <glx rop="110" large="true"/>
- </function>
-
- <function name="TexEnvf" offset="184" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="111"/>
- </function>
-
- <function name="TexEnvfv" offset="185" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="112"/>
- </function>
-
- <function name="TexEnvi" offset="186" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="113"/>
- </function>
-
- <function name="TexEnviv" offset="187" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="114"/>
- </function-->
-
- <function name="TexGend" offset="188" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLdouble"/>
- <glx rop="115"/>
- </function>
-
- <function name="TexGendv" offset="189" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLdouble *" variable_param="pname"/>
- <glx rop="116"/>
- </function>
-
- <!--function name="TexGenf" offset="190" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="117"/>
- </function>
-
- <function name="TexGenfv" offset="191" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="118"/>
- </function>
-
- <function name="TexGeni" offset="192" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="119"/>
- </function>
-
- <function name="TexGeniv" offset="193" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="120"/>
- </function-->
-
- <function name="FeedbackBuffer" offset="194" static_dispatch="false">
- <param name="size" type="GLsizei"/>
- <param name="type" type="GLenum"/>
- <param name="buffer" type="GLfloat *" output="true"/>
- <glx sop="105" handcode="true"/>
- </function>
-
- <function name="SelectBuffer" offset="195" static_dispatch="false">
- <param name="size" type="GLsizei"/>
- <param name="buffer" type="GLuint *" output="true"/>
- <glx sop="106" handcode="true"/>
- </function>
-
- <function name="RenderMode" offset="196" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <return type="GLint"/>
- <glx sop="107" handcode="true"/>
- </function>
-
- <function name="InitNames" offset="197" static_dispatch="false">
- <glx rop="121"/>
- </function>
-
- <function name="LoadName" offset="198" static_dispatch="false">
- <param name="name" type="GLuint"/>
- <glx rop="122"/>
- </function>
-
- <function name="PassThrough" offset="199" static_dispatch="false">
- <param name="token" type="GLfloat"/>
- <glx rop="123"/>
- </function>
-
- <function name="PopName" offset="200" static_dispatch="false">
- <glx rop="124"/>
- </function>
-
- <function name="PushName" offset="201" static_dispatch="false">
- <param name="name" type="GLuint"/>
- <glx rop="125"/>
- </function>
-
- <function name="DrawBuffer" offset="202" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="126"/>
- </function>
-
- <!--function name="Clear" offset="203" static_dispatch="false">
- <param name="mask" type="GLbitfield"/>
- <glx rop="127"/>
- </function-->
-
- <function name="ClearAccum" offset="204" static_dispatch="false">
- <param name="red" type="GLfloat"/>
- <param name="green" type="GLfloat"/>
- <param name="blue" type="GLfloat"/>
- <param name="alpha" type="GLfloat"/>
- <glx rop="128"/>
- </function>
-
- <function name="ClearIndex" offset="205" static_dispatch="false">
- <param name="c" type="GLfloat"/>
- <glx rop="129"/>
- </function>
-
- <!--function name="ClearColor" offset="206" static_dispatch="false">
- <param name="red" type="GLclampf"/>
- <param name="green" type="GLclampf"/>
- <param name="blue" type="GLclampf"/>
- <param name="alpha" type="GLclampf"/>
- <glx rop="130"/>
- </function>
-
- <function name="ClearStencil" offset="207" static_dispatch="false">
- <param name="s" type="GLint"/>
- <glx rop="131"/>
- </function-->
-
- <function name="ClearDepth" offset="208" static_dispatch="false">
- <param name="depth" type="GLclampd"/>
- <glx rop="132"/>
- </function>
-
- <!--function name="StencilMask" offset="209" static_dispatch="false">
- <param name="mask" type="GLuint"/>
- <glx rop="133"/>
- </function>
-
- <function name="ColorMask" offset="210" static_dispatch="false">
- <param name="red" type="GLboolean"/>
- <param name="green" type="GLboolean"/>
- <param name="blue" type="GLboolean"/>
- <param name="alpha" type="GLboolean"/>
- <glx rop="134"/>
- </function>
-
- <function name="DepthMask" offset="211" static_dispatch="false">
- <param name="flag" type="GLboolean"/>
- <glx rop="135"/>
- </function-->
-
- <function name="IndexMask" offset="212" static_dispatch="false">
- <param name="mask" type="GLuint"/>
- <glx rop="136"/>
- </function>
-
- <function name="Accum" offset="213" static_dispatch="false">
- <param name="op" type="GLenum"/>
- <param name="value" type="GLfloat"/>
- <glx rop="137"/>
- </function>
-
- <!--function name="Disable" offset="214" static_dispatch="false">
- <param name="cap" type="GLenum"/>
- <glx rop="138" handcode="client"/>
- </function>
-
- <function name="Enable" offset="215" static_dispatch="false">
- <param name="cap" type="GLenum"/>
- <glx rop="139" handcode="client"/>
- </function>
-
- <function name="Finish" offset="216" static_dispatch="false">
- <glx sop="108" handcode="true"/>
- </function>
-
- <function name="Flush" offset="217" static_dispatch="false">
- <glx sop="142" handcode="true"/>
- </function-->
-
- <function name="PopAttrib" offset="218" static_dispatch="false">
- <glx rop="141"/>
- </function>
-
- <function name="PushAttrib" offset="219" static_dispatch="false">
- <param name="mask" type="GLbitfield"/>
- <glx rop="142"/>
- </function>
-
- <function name="Map1d" offset="220" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="u1" type="GLdouble"/>
- <param name="u2" type="GLdouble"/>
- <param name="stride" type="GLint" client_only="true"/>
- <param name="order" type="GLint"/>
- <param name="points" type="const GLdouble *" variable_param="order"/>
- <glx rop="143" handcode="true"/>
- </function>
-
- <function name="Map1f" offset="221" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="u1" type="GLfloat"/>
- <param name="u2" type="GLfloat"/>
- <param name="stride" type="GLint" client_only="true"/>
- <param name="order" type="GLint"/>
- <param name="points" type="const GLfloat *" variable_param="order"/>
- <glx rop="144" handcode="true"/>
- </function>
-
- <function name="Map2d" offset="222" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="u1" type="GLdouble"/>
- <param name="u2" type="GLdouble"/>
- <param name="ustride" type="GLint" client_only="true"/>
- <param name="uorder" type="GLint"/>
- <param name="v1" type="GLdouble"/>
- <param name="v2" type="GLdouble"/>
- <param name="vstride" type="GLint" client_only="true"/>
- <param name="vorder" type="GLint"/>
- <param name="points" type="const GLdouble *" variable_param="uorder"/>
- <glx rop="145" handcode="true"/>
- </function>
-
- <function name="Map2f" offset="223" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="u1" type="GLfloat"/>
- <param name="u2" type="GLfloat"/>
- <param name="ustride" type="GLint" client_only="true"/>
- <param name="uorder" type="GLint"/>
- <param name="v1" type="GLfloat"/>
- <param name="v2" type="GLfloat"/>
- <param name="vstride" type="GLint" client_only="true"/>
- <param name="vorder" type="GLint"/>
- <param name="points" type="const GLfloat *" variable_param="uorder"/>
- <glx rop="146" handcode="true"/>
- </function>
-
- <function name="MapGrid1d" offset="224" static_dispatch="false">
- <param name="un" type="GLint"/>
- <param name="u1" type="GLdouble"/>
- <param name="u2" type="GLdouble"/>
- <glx rop="147"/>
- </function>
-
- <function name="MapGrid1f" offset="225" static_dispatch="false">
- <param name="un" type="GLint"/>
- <param name="u1" type="GLfloat"/>
- <param name="u2" type="GLfloat"/>
- <glx rop="148"/>
- </function>
-
- <function name="MapGrid2d" offset="226" static_dispatch="false">
- <param name="un" type="GLint"/>
- <param name="u1" type="GLdouble"/>
- <param name="u2" type="GLdouble"/>
- <param name="vn" type="GLint"/>
- <param name="v1" type="GLdouble"/>
- <param name="v2" type="GLdouble"/>
- <glx rop="149"/>
- </function>
-
- <function name="MapGrid2f" offset="227" static_dispatch="false">
- <param name="un" type="GLint"/>
- <param name="u1" type="GLfloat"/>
- <param name="u2" type="GLfloat"/>
- <param name="vn" type="GLint"/>
- <param name="v1" type="GLfloat"/>
- <param name="v2" type="GLfloat"/>
- <glx rop="150"/>
- </function>
-
- <function name="EvalCoord1d" offset="228" vectorequiv="EvalCoord1dv" static_dispatch="false">
- <param name="u" type="GLdouble"/>
- </function>
-
- <function name="EvalCoord1dv" offset="229" static_dispatch="false">
- <param name="u" type="const GLdouble *" count="1"/>
- <glx rop="151"/>
- </function>
-
- <function name="EvalCoord1f" offset="230" vectorequiv="EvalCoord1fv" static_dispatch="false">
- <param name="u" type="GLfloat"/>
- </function>
-
- <function name="EvalCoord1fv" offset="231" static_dispatch="false">
- <param name="u" type="const GLfloat *" count="1"/>
- <glx rop="152"/>
- </function>
-
- <function name="EvalCoord2d" offset="232" vectorequiv="EvalCoord2dv" static_dispatch="false">
- <param name="u" type="GLdouble"/>
- <param name="v" type="GLdouble"/>
- </function>
-
- <function name="EvalCoord2dv" offset="233" static_dispatch="false">
- <param name="u" type="const GLdouble *" count="2"/>
- <glx rop="153"/>
- </function>
-
- <function name="EvalCoord2f" offset="234" vectorequiv="EvalCoord2fv" static_dispatch="false">
- <param name="u" type="GLfloat"/>
- <param name="v" type="GLfloat"/>
- </function>
-
- <function name="EvalCoord2fv" offset="235" static_dispatch="false">
- <param name="u" type="const GLfloat *" count="2"/>
- <glx rop="154"/>
- </function>
-
- <function name="EvalMesh1" offset="236" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <param name="i1" type="GLint"/>
- <param name="i2" type="GLint"/>
- <glx rop="155"/>
- </function>
-
- <function name="EvalPoint1" offset="237" static_dispatch="false">
- <param name="i" type="GLint"/>
- <glx rop="156"/>
- </function>
-
- <function name="EvalMesh2" offset="238" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <param name="i1" type="GLint"/>
- <param name="i2" type="GLint"/>
- <param name="j1" type="GLint"/>
- <param name="j2" type="GLint"/>
- <glx rop="157"/>
- </function>
-
- <function name="EvalPoint2" offset="239" static_dispatch="false">
- <param name="i" type="GLint"/>
- <param name="j" type="GLint"/>
- <glx rop="158"/>
- </function>
-
- <!--function name="AlphaFunc" offset="240" static_dispatch="false">
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLclampf"/>
- <glx rop="159"/>
- </function>
-
- <function name="BlendFunc" offset="241" static_dispatch="false">
- <param name="sfactor" type="GLenum"/>
- <param name="dfactor" type="GLenum"/>
- <glx rop="160"/>
- </function>
-
- <function name="LogicOp" offset="242" static_dispatch="false">
- <param name="opcode" type="GLenum"/>
- <glx rop="161"/>
- </function>
-
- <function name="StencilFunc" offset="243" static_dispatch="false">
- <param name="func" type="GLenum"/>
- <param name="ref" type="GLint"/>
- <param name="mask" type="GLuint"/>
- <glx rop="162"/>
- </function>
-
- <function name="StencilOp" offset="244" static_dispatch="false">
- <param name="fail" type="GLenum"/>
- <param name="zfail" type="GLenum"/>
- <param name="zpass" type="GLenum"/>
- <glx rop="163"/>
- </function>
-
- <function name="DepthFunc" offset="245" static_dispatch="false">
- <param name="func" type="GLenum"/>
- <glx rop="164"/>
- </function-->
-
- <function name="PixelZoom" offset="246" static_dispatch="false">
- <param name="xfactor" type="GLfloat"/>
- <param name="yfactor" type="GLfloat"/>
- <glx rop="165"/>
- </function>
-
- <function name="PixelTransferf" offset="247" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx rop="166"/>
- </function>
-
- <function name="PixelTransferi" offset="248" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx rop="167"/>
- </function>
-
- <function name="PixelStoref" offset="249" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLfloat"/>
- <glx sop="109" handcode="client"/>
- </function>
-
- <!--function name="PixelStorei" offset="250" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="param" type="GLint"/>
- <glx sop="110" handcode="client"/>
- </function-->
-
- <function name="PixelMapfv" offset="251" static_dispatch="false">
- <param name="map" type="GLenum"/>
- <param name="mapsize" type="GLsizei" counter="true"/>
- <param name="values" type="const GLfloat *" count="mapsize"/>
- <glx rop="168" large="true"/>
- </function>
-
- <function name="PixelMapuiv" offset="252" static_dispatch="false">
- <param name="map" type="GLenum"/>
- <param name="mapsize" type="GLsizei" counter="true"/>
- <param name="values" type="const GLuint *" count="mapsize"/>
- <glx rop="169" large="true"/>
- </function>
-
- <function name="PixelMapusv" offset="253" static_dispatch="false">
- <param name="map" type="GLenum"/>
- <param name="mapsize" type="GLsizei" counter="true"/>
- <param name="values" type="const GLushort *" count="mapsize"/>
- <glx rop="170" large="true"/>
- </function>
-
- <function name="ReadBuffer" offset="254" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="171"/>
- </function>
-
- <function name="CopyPixels" offset="255" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="type" type="GLenum"/>
- <glx rop="172"/>
- </function>
-
- <!--function name="ReadPixels" offset="256" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
- <glx sop="111"/>
- </function-->
-
- <function name="DrawPixels" offset="257" static_dispatch="false">
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0" img_pad_dimensions="false"/>
- <glx rop="173" large="true"/>
- </function>
-
- <!--function name="GetBooleanv" offset="258" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
- <glx sop="112" handcode="client"/>
- </function-->
-
- <function name="GetClipPlane" offset="259" static_dispatch="false">
- <param name="plane" type="GLenum"/>
- <param name="equation" type="GLdouble *" output="true" count="4"/>
- <glx sop="113" always_array="true"/>
- </function>
-
- <function name="GetDoublev" offset="260" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
- <glx sop="114" handcode="client"/>
- </function>
-
- <!--function name="GetError" offset="261" static_dispatch="false">
- <return type="GLenum"/>
- <glx sop="115" handcode="client"/>
- </function>
-
- <function name="GetFloatv" offset="262" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="116" handcode="client"/>
- </function>
-
- <function name="GetIntegerv" offset="263" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="117" handcode="client"/>
- </function>
-
- <function name="GetLightfv" offset="264" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="118"/>
- </function-->
-
- <function name="GetLightiv" offset="265" static_dispatch="false">
- <param name="light" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="119"/>
- </function>
-
- <function name="GetMapdv" offset="266" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="query" type="GLenum"/>
- <param name="v" type="GLdouble *" output="true" variable_param="target query"/>
- <glx sop="120"/>
- </function>
-
- <function name="GetMapfv" offset="267" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="query" type="GLenum"/>
- <param name="v" type="GLfloat *" output="true" variable_param="target query"/>
- <glx sop="121"/>
- </function>
-
- <function name="GetMapiv" offset="268" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="query" type="GLenum"/>
- <param name="v" type="GLint *" output="true" variable_param="target query"/>
- <glx sop="122"/>
- </function>
-
- <!--function name="GetMaterialfv" offset="269" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="123"/>
- </function-->
-
- <function name="GetMaterialiv" offset="270" static_dispatch="false">
- <param name="face" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="124"/>
- </function>
-
- <function name="GetPixelMapfv" offset="271" static_dispatch="false">
- <param name="map" type="GLenum"/>
- <param name="values" type="GLfloat *" output="true" variable_param="map"/>
- <glx sop="125"/>
- </function>
-
- <function name="GetPixelMapuiv" offset="272" static_dispatch="false">
- <param name="map" type="GLenum"/>
- <param name="values" type="GLuint *" output="true" variable_param="map"/>
- <glx sop="126"/>
- </function>
-
- <function name="GetPixelMapusv" offset="273" static_dispatch="false">
- <param name="map" type="GLenum"/>
- <param name="values" type="GLushort *" output="true" variable_param="map"/>
- <glx sop="127"/>
- </function>
-
- <function name="GetPolygonStipple" offset="274" static_dispatch="false">
- <param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/>
- <glx sop="128"/>
- </function>
-
- <!--function name="GetString" offset="275" static_dispatch="false">
- <param name="name" type="GLenum"/>
- <return type="const GLubyte *"/>
- <glx sop="129" handcode="true"/>
- </function>
-
- <function name="GetTexEnvfv" offset="276" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="130"/>
- </function>
-
- <function name="GetTexEnviv" offset="277" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="131"/>
- </function-->
-
- <function name="GetTexGendv" offset="278" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
- <glx sop="132"/>
- </function>
-
- <!--function name="GetTexGenfv" offset="279" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="133"/>
- </function>
-
- <function name="GetTexGeniv" offset="280" static_dispatch="false">
- <param name="coord" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="134"/>
- </function-->
-
- <function name="GetTexImage" offset="281" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type"/>
- <glx sop="135" dimensions_in_reply="true"/>
- </function>
-
- <!--function name="GetTexParameterfv" offset="282" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="136"/>
- </function>
-
- <function name="GetTexParameteriv" offset="283" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="137"/>
- </function-->
-
- <function name="GetTexLevelParameterfv" offset="284" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="138"/>
- </function>
-
- <function name="GetTexLevelParameteriv" offset="285" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="139"/>
- </function>
-
- <!--function name="IsEnabled" offset="286" static_dispatch="false">
- <param name="cap" type="GLenum"/>
- <return type="GLboolean"/>
- <glx sop="140" handcode="client"/>
- </function-->
-
- <function name="IsList" offset="287" static_dispatch="false">
- <param name="list" type="GLuint"/>
- <return type="GLboolean"/>
- <glx sop="141"/>
- </function>
-
- <function name="DepthRange" offset="288" static_dispatch="false">
- <param name="zNear" type="GLclampd"/>
- <param name="zFar" type="GLclampd"/>
- <glx rop="174"/>
- </function>
-
- <function name="Frustum" offset="289" static_dispatch="false">
- <param name="left" type="GLdouble"/>
- <param name="right" type="GLdouble"/>
- <param name="bottom" type="GLdouble"/>
- <param name="top" type="GLdouble"/>
- <param name="zNear" type="GLdouble"/>
- <param name="zFar" type="GLdouble"/>
- <glx rop="175"/>
- </function>
-
- <!--function name="LoadIdentity" offset="290" static_dispatch="false">
- <glx rop="176"/>
- </function>
-
- <function name="LoadMatrixf" offset="291" static_dispatch="false">
- <param name="m" type="const GLfloat *" count="16"/>
- <glx rop="177"/>
- </function-->
-
- <function name="LoadMatrixd" offset="292" static_dispatch="false">
- <param name="m" type="const GLdouble *" count="16"/>
- <glx rop="178"/>
- </function>
-
- <!--function name="MatrixMode" offset="293" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="179"/>
- </function>
-
- <function name="MultMatrixf" offset="294" static_dispatch="false">
- <param name="m" type="const GLfloat *" count="16"/>
- <glx rop="180"/>
- </function-->
-
- <function name="MultMatrixd" offset="295" static_dispatch="false">
- <param name="m" type="const GLdouble *" count="16"/>
- <glx rop="181"/>
- </function>
-
- <function name="Ortho" offset="296" static_dispatch="false">
- <param name="left" type="GLdouble"/>
- <param name="right" type="GLdouble"/>
- <param name="bottom" type="GLdouble"/>
- <param name="top" type="GLdouble"/>
- <param name="zNear" type="GLdouble"/>
- <param name="zFar" type="GLdouble"/>
- <glx rop="182"/>
- </function>
-
- <!--function name="PopMatrix" offset="297" static_dispatch="false">
- <glx rop="183"/>
- </function>
-
- <function name="PushMatrix" offset="298" static_dispatch="false">
- <glx rop="184"/>
- </function-->
-
- <function name="Rotated" offset="299" static_dispatch="false">
- <param name="angle" type="GLdouble"/>
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- <param name="z" type="GLdouble"/>
- <glx rop="185"/>
- </function>
-
- <!--function name="Rotatef" offset="300" static_dispatch="false">
- <param name="angle" type="GLfloat"/>
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="186"/>
- </function-->
-
- <function name="Scaled" offset="301" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- <param name="z" type="GLdouble"/>
- <glx rop="187"/>
- </function>
-
- <!--function name="Scalef" offset="302" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="188"/>
- </function-->
-
- <function name="Translated" offset="303" static_dispatch="false">
- <param name="x" type="GLdouble"/>
- <param name="y" type="GLdouble"/>
- <param name="z" type="GLdouble"/>
- <glx rop="189"/>
- </function>
-
- <!--function name="Translatef" offset="304" static_dispatch="false">
- <param name="x" type="GLfloat"/>
- <param name="y" type="GLfloat"/>
- <param name="z" type="GLfloat"/>
- <glx rop="190"/>
- </function>
-
- <function name="Viewport" offset="305" static_dispatch="false">
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="191"/>
- </function-->
-</category>
-
-<category name="1.1">
- <function name="ArrayElement" offset="306" static_dispatch="false">
- <param name="i" type="GLint"/>
- <glx handcode="true"/>
- </function>
-
- <!--function name="ColorPointer" offset="308" static_dispatch="false">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="DisableClientState" offset="309" static_dispatch="false">
- <param name="array" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="DrawArrays" offset="310" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <param name="first" type="GLint"/>
- <param name="count" type="GLsizei"/>
- <glx rop="193" handcode="true"/>
- </function>
-
- <function name="DrawElements" offset="311" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <param name="count" type="GLsizei"/>
- <param name="type" type="GLenum"/>
- <param name="indices" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function-->
-
- <function name="EdgeFlagPointer" offset="312" static_dispatch="false">
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <!--function name="EnableClientState" offset="313" static_dispatch="false">
- <param name="array" type="GLenum"/>
- <glx handcode="true"/>
- </function>
-
- <function name="GetPointerv" offset="329" static_dispatch="false">
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLvoid **" output="true"/>
- <glx handcode="true"/>
- </function-->
-
- <function name="IndexPointer" offset="314" static_dispatch="false">
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="InterleavedArrays" offset="317" static_dispatch="false">
- <param name="format" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <!--function name="NormalPointer" offset="318" static_dispatch="false">
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="TexCoordPointer" offset="320" static_dispatch="false">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="VertexPointer" offset="321" static_dispatch="false">
- <param name="size" type="GLint"/>
- <param name="type" type="GLenum"/>
- <param name="stride" type="GLsizei"/>
- <param name="pointer" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="PolygonOffset" offset="319" static_dispatch="false">
- <param name="factor" type="GLfloat"/>
- <param name="units" type="GLfloat"/>
- <glx rop="192"/>
- </function-->
-
- <function name="CopyTexImage1D" offset="323" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLenum"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <glx rop="4119"/>
- </function>
-
- <!--function name="CopyTexImage2D" offset="324" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLenum"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <glx rop="4120"/>
- </function-->
-
- <function name="CopyTexSubImage1D" offset="325" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <glx rop="4121"/>
- </function>
-
- <!--function name="CopyTexSubImage2D" offset="326" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="4122"/>
- </function-->
-
- <function name="TexSubImage1D" offset="332" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="UNUSED" type="GLuint" padding="true"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_xoff="xoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4099" large="true"/>
- </function>
-
- <!--function name="TexSubImage2D" offset="333" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="UNUSED" type="GLuint" padding="true"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4100" large="true"/>
- </function-->
-
- <function name="AreTexturesResident" offset="322" static_dispatch="false">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="textures" type="const GLuint *" count="n"/>
- <param name="residences" type="GLboolean *" output="true" count="n"/>
- <return type="GLboolean"/>
- <glx sop="143" handcode="client" always_array="true"/>
- </function>
-
- <!--function name="BindTexture" offset="307" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="texture" type="GLuint"/>
- <glx rop="4117"/>
- </function>
-
- <function name="DeleteTextures" offset="327" static_dispatch="false">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="textures" type="const GLuint *" count="n"/>
- <glx sop="144"/>
- </function>
-
- <function name="GenTextures" offset="328" static_dispatch="false">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="textures" type="GLuint *" output="true" count="n"/>
- <glx sop="145" always_array="true"/>
- </function>
-
- <function name="IsTexture" offset="330" static_dispatch="false">
- <param name="texture" type="GLuint"/>
- <return type="GLboolean"/>
- <glx sop="146"/>
- </function-->
-
- <function name="PrioritizeTextures" offset="331" static_dispatch="false">
- <param name="n" type="GLsizei" counter="true"/>
- <param name="textures" type="const GLuint *" count="n"/>
- <param name="priorities" type="const GLclampf *" count="n"/>
- <glx rop="4118"/>
- </function>
-
- <function name="Indexub" offset="315" vectorequiv="Indexubv" static_dispatch="false">
- <param name="c" type="GLubyte"/>
- </function>
-
- <function name="Indexubv" offset="316" static_dispatch="false">
- <param name="c" type="const GLubyte *" count="1"/>
- <glx rop="194"/>
- </function>
-
- <function name="PopClientAttrib" offset="334" static_dispatch="false">
- <glx handcode="true"/>
- </function>
-
- <function name="PushClientAttrib" offset="335" static_dispatch="false">
- <param name="mask" type="GLbitfield"/>
- <glx handcode="true"/>
- </function>
-</category>
-
-<category name="1.2">
- <!--function name="BlendColor" offset="336" static_dispatch="false">
- <param name="red" type="GLclampf"/>
- <param name="green" type="GLclampf"/>
- <param name="blue" type="GLclampf"/>
- <param name="alpha" type="GLclampf"/>
- <glx rop="4096"/>
- </function>
-
- <function name="BlendEquation" offset="337" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <glx rop="4097"/>
- </function-->
-
- <function name="DrawRangeElements" offset="338" static_dispatch="false">
- <param name="mode" type="GLenum"/>
- <param name="start" type="GLuint"/>
- <param name="end" type="GLuint"/>
- <param name="count" type="GLsizei"/>
- <param name="type" type="GLenum"/>
- <param name="indices" type="const GLvoid *"/>
- <glx handcode="true"/>
- </function>
-
- <function name="ColorTable" offset="339" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="table" type="const GLvoid *" img_width="width" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
- <glx rop="2053" large="true"/>
- </function>
-
- <function name="ColorTableParameterfv" offset="340" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="2054"/>
- </function>
-
- <function name="ColorTableParameteriv" offset="341" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="2055"/>
- </function>
-
- <function name="CopyColorTable" offset="342" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <glx rop="2056"/>
- </function>
-
- <function name="GetColorTable" offset="343" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
- <glx sop="147" dimensions_in_reply="true"/>
- </function>
-
- <function name="GetColorTableParameterfv" offset="344" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="148"/>
- </function>
-
- <function name="GetColorTableParameteriv" offset="345" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="149"/>
- </function>
-
- <function name="ColorSubTable" offset="346" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="start" type="GLsizei"/>
- <param name="count" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="data" type="const GLvoid *" img_width="count" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
- <glx rop="195" large="true"/>
- </function>
-
- <function name="CopyColorSubTable" offset="347" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="start" type="GLsizei"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <glx rop="196"/>
- </function>
-
- <function name="ConvolutionFilter1D" offset="348" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="image" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4101" large="true"/>
- </function>
-
- <function name="ConvolutionFilter2D" offset="349" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="image" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4102" large="true"/>
- </function>
-
- <function name="ConvolutionParameterf" offset="350" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat"/>
- <glx rop="4103"/>
- </function>
-
- <function name="ConvolutionParameterfv" offset="351" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLfloat *" variable_param="pname"/>
- <glx rop="4104"/>
- </function>
-
- <function name="ConvolutionParameteri" offset="352" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint"/>
- <glx rop="4105"/>
- </function>
-
- <function name="ConvolutionParameteriv" offset="353" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="const GLint *" variable_param="pname"/>
- <glx rop="4106"/>
- </function>
-
- <function name="CopyConvolutionFilter1D" offset="354" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <glx rop="4107"/>
- </function>
-
- <function name="CopyConvolutionFilter2D" offset="355" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="4108"/>
- </function>
-
- <function name="GetConvolutionFilter" offset="356" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/>
- <glx sop="150" dimensions_in_reply="true"/>
- </function>
-
- <function name="GetConvolutionParameterfv" offset="357" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="151"/>
- </function>
-
- <function name="GetConvolutionParameteriv" offset="358" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="152"/>
- </function>
-
- <function name="GetSeparableFilter" offset="359" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="row" type="GLvoid *" output="true"/>
- <param name="column" type="GLvoid *" output="true"/>
- <param name="span" type="GLvoid *" output="true"/>
- <glx sop="153" handcode="true"/>
- </function>
-
- <function name="SeparableFilter2D" offset="360" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="row" type="const GLvoid *"/>
- <param name="column" type="const GLvoid *"/>
- <glx rop="4109" handcode="true"/>
- </function>
-
- <function name="GetHistogram" offset="361" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="reset" type="GLboolean"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
- <glx sop="154" dimensions_in_reply="true" img_reset="reset"/>
- </function>
-
- <function name="GetHistogramParameterfv" offset="362" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="155"/>
- </function>
-
- <function name="GetHistogramParameteriv" offset="363" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="156"/>
- </function>
-
- <function name="GetMinmax" offset="364" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="reset" type="GLboolean"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/>
- <glx sop="157" img_reset="reset"/>
- </function>
-
- <function name="GetMinmaxParameterfv" offset="365" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
- <glx sop="158"/>
- </function>
-
- <function name="GetMinmaxParameteriv" offset="366" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLint *" output="true" variable_param="pname"/>
- <glx sop="159"/>
- </function>
-
- <function name="Histogram" offset="367" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="width" type="GLsizei"/>
- <param name="internalformat" type="GLenum"/>
- <param name="sink" type="GLboolean"/>
- <glx rop="4110"/>
- </function>
-
- <function name="Minmax" offset="368" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="internalformat" type="GLenum"/>
- <param name="sink" type="GLboolean"/>
- <glx rop="4111"/>
- </function>
-
- <function name="ResetHistogram" offset="369" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <glx rop="4112"/>
- </function>
-
- <function name="ResetMinmax" offset="370" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <glx rop="4113"/>
- </function>
-
- <!--function name="TexImage3D" offset="371" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="internalformat" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="border" type="GLint"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
- <glx rop="4114" large="true"/>
- </function>
-
- <function name="TexSubImage3D" offset="372" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <param name="depth" type="GLsizei"/>
- <param name="format" type="GLenum"/>
- <param name="type" type="GLenum"/>
- <param name="UNUSED" type="GLuint" padding="true"/>
- <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
- <glx rop="4115" large="true"/>
- </function>
-
- <function name="CopyTexSubImage3D" offset="373" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="level" type="GLint"/>
- <param name="xoffset" type="GLint"/>
- <param name="yoffset" type="GLint"/>
- <param name="zoffset" type="GLint"/>
- <param name="x" type="GLint"/>
- <param name="y" type="GLint"/>
- <param name="width" type="GLsizei"/>
- <param name="height" type="GLsizei"/>
- <glx rop="4123"/>
- </function-->
-</category>
-
-<category name="GL_ARB_multitexture" number="1">
- <!--function name="ActiveTextureARB" offset="374" static_dispatch="false">
- <param name="texture" type="GLenum"/>
- <glx rop="197"/>
- </function>
-
- <function name="ClientActiveTextureARB" offset="375" static_dispatch="false">
- <param name="texture" type="GLenum"/>
- <glx handcode="true"/>
- </function-->
-
- <function name="MultiTexCoord1dARB" offset="376" vectorequiv="MultiTexCoord1dvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLdouble"/>
- </function>
-
- <function name="MultiTexCoord1dvARB" offset="377" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLdouble *" count="1"/>
- <glx rop="198"/>
- </function>
-
- <function name="MultiTexCoord1fARB" offset="378" vectorequiv="MultiTexCoord1fvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfloat"/>
- </function>
-
- <function name="MultiTexCoord1fvARB" offset="379" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLfloat *" count="1"/>
- <glx rop="199"/>
- </function>
-
- <function name="MultiTexCoord1iARB" offset="380" vectorequiv="MultiTexCoord1ivARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLint"/>
- </function>
-
- <function name="MultiTexCoord1ivARB" offset="381" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLint *" count="1"/>
- <glx rop="200"/>
- </function>
-
- <function name="MultiTexCoord1sARB" offset="382" vectorequiv="MultiTexCoord1svARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLshort"/>
- </function>
-
- <function name="MultiTexCoord1svARB" offset="383" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLshort *" count="1"/>
- <glx rop="201"/>
- </function>
-
- <function name="MultiTexCoord2dARB" offset="384" vectorequiv="MultiTexCoord2dvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLdouble"/>
- <param name="t" type="GLdouble"/>
- </function>
-
- <function name="MultiTexCoord2dvARB" offset="385" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLdouble *" count="2"/>
- <glx rop="202"/>
- </function>
-
- <function name="MultiTexCoord2fARB" offset="386" vectorequiv="MultiTexCoord2fvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- </function>
-
- <function name="MultiTexCoord2fvARB" offset="387" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLfloat *" count="2"/>
- <glx rop="203"/>
- </function>
-
- <function name="MultiTexCoord2iARB" offset="388" vectorequiv="MultiTexCoord2ivARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLint"/>
- <param name="t" type="GLint"/>
- </function>
-
- <function name="MultiTexCoord2ivARB" offset="389" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLint *" count="2"/>
- <glx rop="204"/>
- </function>
-
- <function name="MultiTexCoord2sARB" offset="390" vectorequiv="MultiTexCoord2svARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLshort"/>
- <param name="t" type="GLshort"/>
- </function>
-
- <function name="MultiTexCoord2svARB" offset="391" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLshort *" count="2"/>
- <glx rop="205"/>
- </function>
-
- <function name="MultiTexCoord3dARB" offset="392" vectorequiv="MultiTexCoord3dvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLdouble"/>
- <param name="t" type="GLdouble"/>
- <param name="r" type="GLdouble"/>
- </function>
-
- <function name="MultiTexCoord3dvARB" offset="393" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLdouble *" count="3"/>
- <glx rop="206"/>
- </function>
-
- <function name="MultiTexCoord3fARB" offset="394" vectorequiv="MultiTexCoord3fvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- <param name="r" type="GLfloat"/>
- </function>
-
- <function name="MultiTexCoord3fvARB" offset="395" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLfloat *" count="3"/>
- <glx rop="207"/>
- </function>
-
- <function name="MultiTexCoord3iARB" offset="396" vectorequiv="MultiTexCoord3ivARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLint"/>
- <param name="t" type="GLint"/>
- <param name="r" type="GLint"/>
- </function>
-
- <function name="MultiTexCoord3ivARB" offset="397" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLint *" count="3"/>
- <glx rop="208"/>
- </function>
-
- <function name="MultiTexCoord3sARB" offset="398" vectorequiv="MultiTexCoord3svARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLshort"/>
- <param name="t" type="GLshort"/>
- <param name="r" type="GLshort"/>
- </function>
-
- <function name="MultiTexCoord3svARB" offset="399" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLshort *" count="3"/>
- <glx rop="209"/>
- </function>
-
- <function name="MultiTexCoord4dARB" offset="400" vectorequiv="MultiTexCoord4dvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLdouble"/>
- <param name="t" type="GLdouble"/>
- <param name="r" type="GLdouble"/>
- <param name="q" type="GLdouble"/>
- </function>
-
- <function name="MultiTexCoord4dvARB" offset="401" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLdouble *" count="4"/>
- <glx rop="210"/>
- </function>
-
- <!--function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLfloat"/>
- <param name="t" type="GLfloat"/>
- <param name="r" type="GLfloat"/>
- <param name="q" type="GLfloat"/>
- </function-->
-
- <function name="MultiTexCoord4fvARB" offset="403" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLfloat *" count="4"/>
- <glx rop="211"/>
- </function>
-
- <function name="MultiTexCoord4iARB" offset="404" vectorequiv="MultiTexCoord4ivARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLint"/>
- <param name="t" type="GLint"/>
- <param name="r" type="GLint"/>
- <param name="q" type="GLint"/>
- </function>
-
- <function name="MultiTexCoord4ivARB" offset="405" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLint *" count="4"/>
- <glx rop="212"/>
- </function>
-
- <function name="MultiTexCoord4sARB" offset="406" vectorequiv="MultiTexCoord4svARB" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="s" type="GLshort"/>
- <param name="t" type="GLshort"/>
- <param name="r" type="GLshort"/>
- <param name="q" type="GLshort"/>
- </function>
-
- <function name="MultiTexCoord4svARB" offset="407" static_dispatch="false">
- <param name="target" type="GLenum"/>
- <param name="v" type="const GLshort *" count="4"/>
- <glx rop="213"/>
- </function>
-</category>
-
-<xi:include href="../gen/APPLE_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/es_EXT.xml b/mesalib/src/mapi/glapi/gen-es/es_EXT.xml
deleted file mode 100644
index 0013df87e..000000000
--- a/mesalib/src/mapi/glapi/gen-es/es_EXT.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
-
-<!-- OpenGL ES extensions -->
-
-<OpenGLAPI>
-
-<category name="GL_OES_compressed_paletted_texture" number="6">
- <enum name="PALETTE4_RGB8_OES" value="0x8B90"/>
- <enum name="PALETTE4_RGBA8_OES" value="0x8B91"/>
- <enum name="PALETTE4_R5_G6_B5_OES" value="0x8B92"/>
- <enum name="PALETTE4_RGBA4_OES" value="0x8B93"/>
- <enum name="PALETTE4_RGB5_A1_OES" value="0x8B94"/>
- <enum name="PALETTE8_RGB8_OES" value="0x8B95"/>
- <enum name="PALETTE8_RGBA8_OES" value="0x8B96"/>
- <enum name="PALETTE8_R5_G6_B5_OES" value="0x8B97"/>
- <enum name="PALETTE8_RGBA4_OES" value="0x8B98"/>
- <enum name="PALETTE8_RGB5_A1_OES" value="0x8B99"/>
-</category>
-
-<!-- 23. GL_OES_EGL_image -->
-<xi:include href="../gen/OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<category name="GL_OES_depth24" number="24">
- <enum name="DEPTH_COMPONENT24_OES" value="0x81A6"/>
-</category>
-
-<category name="GL_OES_depth32" number="25">
- <enum name="DEPTH_COMPONENT32_OES" value="0x81A7"/>
-</category>
-
-<category name="GL_OES_element_index_uint" number="26">
- <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_fbo_render_mipmap" number="27">
- <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_mapbuffer" number="29">
- <enum name="WRITE_ONLY_OES" value="0x88B9"/>
- <enum name="BUFFER_ACCESS_OES" value="0x88BB"/>
- <enum name="BUFFER_MAPPED_OES" value="0x88BC"/>
- <enum name="BUFFER_MAP_POINTER_OES" value="0x88BD"/>
-
- <function name="GetBufferPointervOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="pname" type="GLenum"/>
- <param name="params" type="GLvoid **"/>
- </function>
-
- <function name="MapBufferOES" offset="assign">
- <param name="target" type="GLenum"/>
- <param name="access" type="GLenum"/>
- <return type="GLvoid *"/>
- </function>
-
- <function name="UnmapBufferOES" offset="assign">
- <param name="target" type="GLenum"/>
- <return type="GLboolean"/>
- </function>
-</category>
-
-<category name="GL_OES_rgb8_rgba8" number="30">
- <enum name="RGB8_OES" value="0x8051"/>
- <enum name="RGBA8_OES" value="0x8058"/>
-</category>
-
-<category name="GL_OES_stencil1" number="31">
- <enum name="STENCIL_INDEX1_OES" value="0x8D46"/>
-</category>
-
-<category name="GL_OES_stencil4" number="32">
- <enum name="STENCIL_INDEX4_OES" value="0x8D47"/>
-</category>
-
-<category name="GL_OES_stencil8" number="33">
- <enum name="STENCIL_INDEX8_OES" value="0x8D48"/>
-</category>
-
-<category name="GL_EXT_texture_filter_anisotropic" number="41">
- <enum name="TEXTURE_MAX_ANISOTROPY_EXT" value="0x84FE"/>
- <enum name="MAX_TEXTURE_MAX_ANISOTROPY_EXT" value="0x84FF"/>
-</category>
-
-<category name="GL_EXT_texture_compression_dxt1" number="49">
- <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT" value="0x83F0"/>
- <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT" value="0x83F1"/>
-</category>
-
-<category name="GL_EXT_texture_format_BGRA8888" number="51">
- <enum name="BGRA_EXT" value="0x80E1"/>
-</category>
-
-<category name="GL_EXT_blend_minmax" number="65">
- <enum name="MIN_EXT" value="0x8007"/>
- <enum name="MAX_EXT" value="0x8008"/>
-</category>
-
-<category name="GL_EXT_read_format_bgra" number="66">
- <enum name="BGRA_EXT" value="0x80E1"/>
- <enum name="UNSIGNED_SHORT_4_4_4_4_REV_EXT" value="0x8365"/>
- <enum name="UNSIGNED_SHORT_1_5_5_5_REV_EXT" value="0x8366"/>
-</category>
-
-<category name="GL_EXT_multi_draw_arrays" number="69">
- <function name="MultiDrawArraysEXT" offset="assign">
- <param name="mode" type="GLenum"/>
- <param name="first" type="const GLint *"/>
- <param name="count" type="const GLsizei *"/>
- <param name="primcount" type="GLsizei"/>
- <glx handcode="true"/>
- </function>
-
- <function name="MultiDrawElementsEXT" offset="assign">
- <param name="mode" type="GLenum"/>
- <param name="count" type="const GLsizei *"/>
- <param name="type" type="GLenum"/>
- <param name="indices" type="const GLvoid **"/>
- <param name="primcount" type="GLsizei"/>
- <glx handcode="true"/>
- </function>
-</category>
-
-</OpenGLAPI>
diff --git a/mesalib/src/mapi/glapi/gen-es/gl_compare.py b/mesalib/src/mapi/glapi/gen-es/gl_compare.py
deleted file mode 100644
index 6b5e43bb9..000000000
--- a/mesalib/src/mapi/glapi/gen-es/gl_compare.py
+++ /dev/null
@@ -1,354 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# on the rights to use, copy, modify, merge, publish, distribute, sub
-# license, and/or sell copies of the Software, and to permit persons to whom
-# the Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-import sys
-import os.path
-import getopt
-
-GLAPI = "../../glapi/gen"
-sys.path.append(GLAPI)
-
-import gl_XML
-import glX_XML
-
-class ApiSet(object):
- def __init__(self, api, elts=["enum", "type", "function"]):
- self.api = api
- self.elts = elts
-
- def _check_enum(self, e1, e2, strict=True):
- if e1.name != e2.name:
- raise ValueError("%s: name mismatch" % e1.name)
- if e1.value != e2.value:
- raise ValueError("%s: value 0x%04x != 0x%04x"
- % (e1.name, e1.value, e2.value))
-
- def _check_type(self, t1, t2, strict=True):
- if t1.name != t2.name:
- raise ValueError("%s: name mismatch" % t1.name)
- if t1.type_expr.string() != t2.type_expr.string():
- raise ValueError("%s: type %s != %s"
- % (t1.name, t1.type_expr.string(), t2.type_expr.string()))
-
- def _check_function(self, f1, f2, strict=True):
- if f1.name != f2.name:
- raise ValueError("%s: name mismatch" % f1.name)
- if f1.return_type != f2.return_type:
- raise ValueError("%s: return type %s != %s"
- % (f1.name, f1.return_type, f2.return_type))
- # there might be padded parameters
- if strict and len(f1.parameters) != len(f2.parameters):
- raise ValueError("%s: parameter length %d != %d"
- % (f1.name, len(f1.parameters), len(f2.parameters)))
- if f1.assign_offset != f2.assign_offset:
- if ((f1.assign_offset and f2.offset < 0) or
- (f2.assign_offset and f1.offset < 0)):
- raise ValueError("%s: assign offset %d != %d"
- % (f1.name, f1.assign_offset, f2.assign_offset))
- elif not f1.assign_offset:
- if f1.offset != f2.offset:
- raise ValueError("%s: offset %d != %d"
- % (f1.name, f1.offset, f2.offset))
-
- if strict:
- l1 = f1.entry_points
- l2 = f2.entry_points
- l1.sort()
- l2.sort()
- if l1 != l2:
- raise ValueError("%s: entry points %s != %s"
- % (f1.name, l1, l2))
-
- l1 = f1.static_entry_points
- l2 = f2.static_entry_points
- l1.sort()
- l2.sort()
- if l1 != l2:
- raise ValueError("%s: static entry points %s != %s"
- % (f1.name, l1, l2))
-
- pad = 0
- for i in xrange(len(f1.parameters)):
- p1 = f1.parameters[i]
- p2 = f2.parameters[i + pad]
-
- if not strict and p1.is_padding != p2.is_padding:
- if p1.is_padding:
- pad -= 1
- continue
- else:
- pad += 1
- p2 = f2.parameters[i + pad]
-
- if strict and p1.name != p2.name:
- raise ValueError("%s: parameter %d name %s != %s"
- % (f1.name, i, p1.name, p2.name))
- if p1.type_expr.string() != p2.type_expr.string():
- if (strict or
- # special case
- f1.name == "TexImage2D" and p1.name != "internalformat"):
- raise ValueError("%s: parameter %s type %s != %s"
- % (f1.name, p1.name, p1.type_expr.string(),
- p2.type_expr.string()))
-
- def union(self, other):
- union = gl_XML.gl_api(None)
-
- if "enum" in self.elts:
- union.enums_by_name = other.enums_by_name.copy()
- for key, val in self.api.enums_by_name.iteritems():
- if key not in union.enums_by_name:
- union.enums_by_name[key] = val
- else:
- self._check_enum(val, other.enums_by_name[key])
-
- if "type" in self.elts:
- union.types_by_name = other.types_by_name.copy()
- for key, val in self.api.types_by_name.iteritems():
- if key not in union.types_by_name:
- union.types_by_name[key] = val
- else:
- self._check_type(val, other.types_by_name[key])
-
- if "function" in self.elts:
- union.functions_by_name = other.functions_by_name.copy()
- for key, val in self.api.functions_by_name.iteritems():
- if key not in union.functions_by_name:
- union.functions_by_name[key] = val
- else:
- self._check_function(val, other.functions_by_name[key])
-
- return union
-
- def intersection(self, other):
- intersection = gl_XML.gl_api(None)
-
- if "enum" in self.elts:
- for key, val in self.api.enums_by_name.iteritems():
- if key in other.enums_by_name:
- self._check_enum(val, other.enums_by_name[key])
- intersection.enums_by_name[key] = val
-
- if "type" in self.elts:
- for key, val in self.api.types_by_name.iteritems():
- if key in other.types_by_name:
- self._check_type(val, other.types_by_name[key])
- intersection.types_by_name[key] = val
-
- if "function" in self.elts:
- for key, val in self.api.functions_by_name.iteritems():
- if key in other.functions_by_name:
- self._check_function(val, other.functions_by_name[key])
- intersection.functions_by_name[key] = val
-
- return intersection
-
- def difference(self, other):
- difference = gl_XML.gl_api(None)
-
- if "enum" in self.elts:
- for key, val in self.api.enums_by_name.iteritems():
- if key not in other.enums_by_name:
- difference.enums_by_name[key] = val
- else:
- self._check_enum(val, other.enums_by_name[key])
-
- if "type" in self.elts:
- for key, val in self.api.types_by_name.iteritems():
- if key not in other.types_by_name:
- difference.types_by_name[key] = val
- else:
- self._check_type(val, other.types_by_name[key])
-
- if "function" in self.elts:
- for key, val in self.api.functions_by_name.iteritems():
- if key not in other.functions_by_name:
- difference.functions_by_name[key] = val
- else:
- self._check_function(val, other.functions_by_name[key], False)
-
- return difference
-
-def cmp_enum(e1, e2):
- if e1.value < e2.value:
- return -1
- elif e1.value > e2.value:
- return 1
- else:
- return 0
-
-def cmp_type(t1, t2):
- return t1.size - t2.size
-
-def cmp_function(f1, f2):
- if f1.name > f2.name:
- return 1
- elif f1.name < f2.name:
- return -1
- else:
- return 0
-
-def spaces(n, str=""):
- spaces = n - len(str)
- if spaces < 1:
- spaces = 1
- return " " * spaces
-
-def output_enum(e, indent=0):
- attrs = 'name="%s"' % e.name
- if e.default_count > 0:
- tab = spaces(37, attrs)
- attrs += '%scount="%d"' % (tab, e.default_count)
- tab = spaces(48, attrs)
- val = "%04x" % e.value
- val = "0x" + val.upper()
- attrs += '%svalue="%s"' % (tab, val)
-
- # no child
- if not e.functions:
- print '%s<enum %s/>' % (spaces(indent), attrs)
- return
-
- print '%s<enum %s>' % (spaces(indent), attrs)
- for key, val in e.functions.iteritems():
- attrs = 'name="%s"' % key
- if val[0] != e.default_count:
- attrs += ' count="%d"' % val[0]
- if not val[1]:
- attrs += ' mode="get"'
-
- print '%s<size %s/>' % (spaces(indent * 2), attrs)
-
- print '%s</enum>' % spaces(indent)
-
-def output_type(t, indent=0):
- tab = spaces(16, t.name)
- attrs = 'name="%s"%ssize="%d"' % (t.name, tab, t.size)
- ctype = t.type_expr.string()
- if ctype.find("unsigned") != -1:
- attrs += ' unsigned="true"'
- elif ctype.find("signed") == -1:
- attrs += ' float="true"'
- print '%s<type %s/>' % (spaces(indent), attrs)
-
-def output_function(f, indent=0):
- attrs = 'name="%s"' % f.name
- if f.offset > 0:
- if f.assign_offset:
- attrs += ' offset="assign"'
- else:
- attrs += ' offset="%d"' % f.offset
- print '%s<function %s>' % (spaces(indent), attrs)
-
- for p in f.parameters:
- attrs = 'name="%s" type="%s"' \
- % (p.name, p.type_expr.original_string)
- print '%s<param %s/>' % (spaces(indent * 2), attrs)
- if f.return_type != "void":
- attrs = 'type="%s"' % f.return_type
- print '%s<return %s/>' % (spaces(indent * 2), attrs)
-
- print '%s</function>' % spaces(indent)
-
-def output_category(api, indent=0):
- enums = api.enums_by_name.values()
- enums.sort(cmp_enum)
- types = api.types_by_name.values()
- types.sort(cmp_type)
- functions = api.functions_by_name.values()
- functions.sort(cmp_function)
-
- for e in enums:
- output_enum(e, indent)
- if enums and types:
- print
- for t in types:
- output_type(t, indent)
- if enums or types:
- print
- for f in functions:
- output_function(f, indent)
- if f != functions[-1]:
- print
-
-def is_api_empty(api):
- return bool(not api.enums_by_name and
- not api.types_by_name and
- not api.functions_by_name)
-
-def show_usage(ops):
- print "Usage: %s [-k elts] <%s> <file1> <file2>" % (sys.argv[0], "|".join(ops))
- print " -k elts A comma separated string of types of elements to"
- print " skip. Possible types are enum, type, and function."
- sys.exit(1)
-
-def main():
- ops = ["union", "intersection", "difference"]
- elts = ["enum", "type", "function"]
-
- try:
- options, args = getopt.getopt(sys.argv[1:], "k:")
- except Exception, e:
- show_usage(ops)
-
- if len(args) != 3:
- show_usage(ops)
- op, file1, file2 = args
- if op not in ops:
- show_usage(ops)
-
- skips = []
- for opt, val in options:
- if opt == "-k":
- skips = val.split(",")
-
- for elt in skips:
- try:
- elts.remove(elt)
- except ValueError:
- show_usage(ops)
-
- api1 = gl_XML.parse_GL_API(file1, glX_XML.glx_item_factory())
- api2 = gl_XML.parse_GL_API(file2, glX_XML.glx_item_factory())
-
- set = ApiSet(api1, elts)
- func = getattr(set, op)
- result = func(api2)
-
- if not is_api_empty(result):
- cat_name = "%s_of_%s_and_%s" \
- % (op, os.path.basename(file1), os.path.basename(file2))
-
- print '<?xml version="1.0"?>'
- print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI
- print
- print '<OpenGLAPI>'
- print
- print '<category name="%s">' % (cat_name)
- output_category(result, 4)
- print '</category>'
- print
- print '</OpenGLAPI>'
-
-if __name__ == "__main__":
- main()
diff --git a/mesalib/src/mapi/glapi/gen-es/gl_parse_header.py b/mesalib/src/mapi/glapi/gen-es/gl_parse_header.py
deleted file mode 100644
index 5382eba35..000000000
--- a/mesalib/src/mapi/glapi/gen-es/gl_parse_header.py
+++ /dev/null
@@ -1,450 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# on the rights to use, copy, modify, merge, publish, distribute, sub
-# license, and/or sell copies of the Software, and to permit persons to whom
-# the Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-
-import sys
-import os.path
-import getopt
-import re
-
-GLAPI = "../../glapi/gen"
-sys.path.append(GLAPI)
-
-class HeaderParser(object):
- """Parser for GL header files."""
-
- def __init__(self, verbose=0):
- # match #if and #ifdef
- self.IFDEF = re.compile('#\s*if(n?def\s+(?P<ifdef>\w+)|\s+(?P<if>.+))')
- # match #endif
- self.ENDIF = re.compile('#\s*endif')
- # match typedef abc def;
- self.TYPEDEF = re.compile('typedef\s+(?P<from>[\w ]+)\s+(?P<to>\w+);')
- # match #define XYZ VAL
- self.DEFINE = re.compile('#\s*define\s+(?P<key>\w+)(?P<value>\s+[\w"]*)?')
- # match GLAPI
- self.GLAPI = re.compile('^GL_?API(CALL)?\s+(?P<return>[\w\s*]+[\w*])\s+(GL)?_?APIENTRY\s+(?P<name>\w+)\s*\((?P<params>[\w\s(,*\[\])]+)\)\s*;')
-
- self.split_params = re.compile('\s*,\s*')
- self.split_ctype = re.compile('(\W)')
- # ignore GL_VERSION_X_Y
- self.ignore_enum = re.compile('GL(_ES)?_VERSION(_ES_C[ML])?_\d_\d')
-
- self.verbose = verbose
- self._reset()
-
- def _reset(self):
- """Reset to initial state."""
- self.ifdef_levels = []
- self.need_char = False
-
- # use typeexpr?
- def _format_ctype(self, ctype, fix=True):
- """Format a ctype string, optionally fix it."""
- # split the type string
- tmp = self.split_ctype.split(ctype)
- tmp = [s for s in tmp if s and s != " "]
-
- pretty = ""
- for i in xrange(len(tmp)):
- # add missing GL prefix
- if (fix and tmp[i] != "const" and tmp[i] != "*" and
- not tmp[i].startswith("GL")):
- tmp[i] = "GL" + tmp[i]
-
- if i == 0:
- pretty = tmp[i]
- else:
- sep = " "
- if tmp[i - 1] == "*":
- sep = ""
- pretty += sep + tmp[i]
- return pretty
-
- # use typeexpr?
- def _get_ctype_attrs(self, ctype):
- """Get the attributes of a ctype."""
- is_float = (ctype.find("float") != -1 or ctype.find("double") != -1)
- is_signed = not (ctype.find("unsigned") != -1)
-
- size = 0
- if ctype.find("char") != -1:
- size = 1
- elif ctype.find("short") != -1:
- size = 2
- elif ctype.find("int") != -1:
- size = 4
- elif is_float:
- if ctype.find("float") != -1:
- size = 4
- else:
- size = 8
-
- return (size, is_float, is_signed)
-
- def _parse_define(self, line):
- """Parse a #define line for an <enum>."""
- m = self.DEFINE.search(line)
- if not m:
- if self.verbose and line.find("#define") >= 0:
- print "ignore %s" % (line)
- return None
-
- key = m.group("key").strip()
- val = m.group("value").strip()
-
- # enum must begin with GL_ and be all uppercase
- if ((not (key.startswith("GL_") and key.isupper())) or
- (self.ignore_enum.match(key) and val == "1")):
- if self.verbose:
- print "ignore enum %s" % (key)
- return None
-
- return (key, val)
-
- def _parse_typedef(self, line):
- """Parse a typedef line for a <type>."""
- m = self.TYPEDEF.search(line)
- if not m:
- if self.verbose and line.find("typedef") >= 0:
- print "ignore %s" % (line)
- return None
-
- f = m.group("from").strip()
- t = m.group("to").strip()
- if not t.startswith("GL"):
- if self.verbose:
- print "ignore type %s" % (t)
- return None
- attrs = self._get_ctype_attrs(f)
-
- return (f, t, attrs)
-
- def _parse_gl_api(self, line):
- """Parse a GLAPI line for a <function>."""
- m = self.GLAPI.search(line)
- if not m:
- if self.verbose and line.find("APIENTRY") >= 0:
- print "ignore %s" % (line)
- return None
-
- rettype = m.group("return")
- rettype = self._format_ctype(rettype)
- if rettype == "GLvoid":
- rettype = ""
-
- name = m.group("name")
-
- param_str = m.group("params")
- chunks = self.split_params.split(param_str)
- chunks = [s.strip() for s in chunks]
- if len(chunks) == 1 and (chunks[0] == "void" or chunks[0] == "GLvoid"):
- chunks = []
-
- params = []
- for c in chunks:
- # split type and variable name
- idx = c.rfind("*")
- if idx < 0:
- idx = c.rfind(" ")
- if idx >= 0:
- idx += 1
- ctype = c[:idx]
- var = c[idx:]
- else:
- ctype = c
- var = "unnamed"
-
- # convert array to pointer
- idx = var.find("[")
- if idx >= 0:
- var = var[:idx]
- ctype += "*"
-
- ctype = self._format_ctype(ctype)
- var = var.strip()
-
- if not self.need_char and ctype.find("GLchar") >= 0:
- self.need_char = True
-
- params.append((ctype, var))
-
- return (rettype, name, params)
-
- def _change_level(self, line):
- """Parse a #ifdef line and change level."""
- m = self.IFDEF.search(line)
- if m:
- ifdef = m.group("ifdef")
- if not ifdef:
- ifdef = m.group("if")
- self.ifdef_levels.append(ifdef)
- return True
- m = self.ENDIF.search(line)
- if m:
- self.ifdef_levels.pop()
- return True
- return False
-
- def _read_header(self, header):
- """Open a header file and read its contents."""
- lines = []
- try:
- fp = open(header, "rb")
- lines = fp.readlines()
- fp.close()
- except IOError, e:
- print "failed to read %s: %s" % (header, e)
- return lines
-
- def _cmp_enum(self, enum1, enum2):
- """Compare two enums."""
- # sort by length of the values as strings
- val1 = enum1[1]
- val2 = enum2[1]
- ret = len(val1) - len(val2)
- # sort by the values
- if not ret:
- val1 = int(val1, 16)
- val2 = int(val2, 16)
- ret = val1 - val2
- # in case int cannot hold the result
- if ret > 0:
- ret = 1
- elif ret < 0:
- ret = -1
- # sort by the names
- if not ret:
- if enum1[0] < enum2[0]:
- ret = -1
- elif enum1[0] > enum2[0]:
- ret = 1
- return ret
-
- def _cmp_type(self, type1, type2):
- """Compare two types."""
- attrs1 = type1[2]
- attrs2 = type2[2]
- # sort by type size
- ret = attrs1[0] - attrs2[0]
- # float is larger
- if not ret:
- ret = attrs1[1] - attrs2[1]
- # signed is larger
- if not ret:
- ret = attrs1[2] - attrs2[2]
- # reverse
- ret = -ret
- return ret
-
- def _cmp_function(self, func1, func2):
- """Compare two functions."""
- name1 = func1[1]
- name2 = func2[1]
- ret = 0
- # sort by the names
- if name1 < name2:
- ret = -1
- elif name1 > name2:
- ret = 1
- return ret
-
- def _postprocess_dict(self, hdict):
- """Post-process a header dict and return an ordered list."""
- hlist = []
- largest = 0
- for key, cat in hdict.iteritems():
- size = len(cat["enums"]) + len(cat["types"]) + len(cat["functions"])
- # ignore empty category
- if not size:
- continue
-
- cat["enums"].sort(self._cmp_enum)
- # remove duplicates
- dup = []
- for i in xrange(1, len(cat["enums"])):
- if cat["enums"][i] == cat["enums"][i - 1]:
- dup.insert(0, i)
- for i in dup:
- e = cat["enums"].pop(i)
- if self.verbose:
- print "remove duplicate enum %s" % e[0]
-
- cat["types"].sort(self._cmp_type)
- cat["functions"].sort(self._cmp_function)
-
- # largest category comes first
- if size > largest:
- hlist.insert(0, (key, cat))
- largest = size
- else:
- hlist.append((key, cat))
- return hlist
-
- def parse(self, header):
- """Parse a header file."""
- self._reset()
-
- if self.verbose:
- print "Parsing %s" % (header)
-
- hdict = {}
- lines = self._read_header(header)
- for line in lines:
- if self._change_level(line):
- continue
-
- # skip until the first ifdef (i.e. __gl_h_)
- if not self.ifdef_levels:
- continue
-
- cat_name = os.path.basename(header)
- # check if we are in an extension
- if (len(self.ifdef_levels) > 1 and
- self.ifdef_levels[-1].startswith("GL_")):
- cat_name = self.ifdef_levels[-1]
-
- try:
- cat = hdict[cat_name]
- except KeyError:
- cat = {
- "enums": [],
- "types": [],
- "functions": []
- }
- hdict[cat_name] = cat
-
- key = "enums"
- elem = self._parse_define(line)
- if not elem:
- key = "types"
- elem = self._parse_typedef(line)
- if not elem:
- key = "functions"
- elem = self._parse_gl_api(line)
-
- if elem:
- cat[key].append(elem)
-
- if self.need_char:
- if self.verbose:
- print "define GLchar"
- elem = self._parse_typedef("typedef char GLchar;")
- cat["types"].append(elem)
- return self._postprocess_dict(hdict)
-
-def spaces(n, str=""):
- spaces = n - len(str)
- if spaces < 1:
- spaces = 1
- return " " * spaces
-
-def output_xml(name, hlist):
- """Output a parsed header in OpenGLAPI XML."""
-
- for i in xrange(len(hlist)):
- cat_name, cat = hlist[i]
-
- print '<category name="%s">' % (cat_name)
- indent = 4
-
- for enum in cat["enums"]:
- name = enum[0][3:]
- value = enum[1]
- tab = spaces(41, name)
- attrs = 'name="%s"%svalue="%s"' % (name, tab, value)
- print '%s<enum %s/>' % (spaces(indent), attrs)
-
- if cat["enums"] and cat["types"]:
- print
-
- for type in cat["types"]:
- ctype = type[0]
- size, is_float, is_signed = type[2]
-
- attrs = 'name="%s"' % (type[1][2:])
- attrs += spaces(16, attrs) + 'size="%d"' % (size)
- if is_float:
- attrs += ' float="true"'
- elif not is_signed:
- attrs += ' unsigned="true"'
-
- print '%s<type %s/>' % (spaces(indent), attrs)
-
- for func in cat["functions"]:
- print
- ret = func[0]
- name = func[1][2:]
- params = func[2]
-
- attrs = 'name="%s" offset="assign"' % name
- print '%s<function %s>' % (spaces(indent), attrs)
-
- for param in params:
- attrs = 'name="%s" type="%s"' % (param[1], param[0])
- print '%s<param %s/>' % (spaces(indent * 2), attrs)
- if ret:
- attrs = 'type="%s"' % ret
- print '%s<return %s/>' % (spaces(indent * 2), attrs)
-
- print '%s</function>' % spaces(indent)
-
- print '</category>'
- print
-
-def show_usage():
- print "Usage: %s [-v] <header> ..." % sys.argv[0]
- sys.exit(1)
-
-def main():
- try:
- args, headers = getopt.getopt(sys.argv[1:], "v")
- except Exception, e:
- show_usage()
- if not headers:
- show_usage()
-
- verbose = 0
- for arg in args:
- if arg[0] == "-v":
- verbose += 1
-
- need_xml_header = True
- parser = HeaderParser(verbose)
- for h in headers:
- h = os.path.abspath(h)
- hlist = parser.parse(h)
-
- if need_xml_header:
- print '<?xml version="1.0"?>'
- print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI
- need_xml_header = False
-
- print
- print '<!-- %s -->' % (h)
- print '<OpenGLAPI>'
- print
- output_xml(h, hlist)
- print '</OpenGLAPI>'
-
-if __name__ == '__main__':
- main()
diff --git a/mesalib/src/mapi/glapi/gen/Makefile b/mesalib/src/mapi/glapi/gen/Makefile
index d0e97f3b2..14733f162 100644
--- a/mesalib/src/mapi/glapi/gen/Makefile
+++ b/mesalib/src/mapi/glapi/gen/Makefile
@@ -180,10 +180,8 @@ $(MESA_GLAPI_DIR)/glapi_sparc.S: gl_SPARC_asm.py $(COMMON)
######################################################################
-$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API)
- $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_API.xml \
- -f $(MESA_GLAPI_DIR)/gen-es/es1_API.xml \
- -f $(MESA_GLAPI_DIR)/gen-es/es2_API.xml > $@
+$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON_ES)
+ $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_and_es_API.xml > $@
$(MESA_DIR)/main/dispatch.h: gl_table.py $(COMMON)
$(PYTHON2) $(PYTHON_FLAGS) $< -m remap_table > $@
diff --git a/mesalib/src/mapi/glapi/gen/gl_XML.py b/mesalib/src/mapi/glapi/gen/gl_XML.py
index 4bf2d02ba..96bb039b7 100644
--- a/mesalib/src/mapi/glapi/gen/gl_XML.py
+++ b/mesalib/src/mapi/glapi/gen/gl_XML.py
@@ -618,7 +618,7 @@ class gl_function( gl_item ):
# for each entry-point. Otherwise, they may generate code
# that won't compile.
- self.parameter_strings = {}
+ self.entry_point_parameters = {}
self.process_element( element )
@@ -703,12 +703,34 @@ class gl_function( gl_item ):
if element.children:
self.initialized = 1
- self.parameter_strings[name] = create_parameter_string(parameters, 1)
+ self.entry_point_parameters[name] = parameters
else:
- self.parameter_strings[name] = None
+ self.entry_point_parameters[name] = []
return
+ def filter_entry_points(self, entry_point_list):
+ """Filter out entry points not in entry_point_list."""
+ if not self.initialized:
+ raise RuntimeError('%s is not initialized yet' % self.name)
+
+ entry_points = []
+ for ent in self.entry_points:
+ if ent not in entry_point_list:
+ if ent in self.static_entry_points:
+ self.static_entry_points.remove(ent)
+ self.entry_point_parameters.pop(ent)
+ else:
+ entry_points.append(ent)
+
+ if not entry_points:
+ raise RuntimeError('%s has no entry point after filtering' % self.name)
+
+ self.entry_points = entry_points
+ if self.name not in entry_points:
+ # use the first remaining entry point
+ self.name = entry_points[0]
+ self.parameters = self.entry_point_parameters[entry_points[0]]
def get_images(self):
"""Return potentially empty list of input images."""
@@ -721,11 +743,11 @@ class gl_function( gl_item ):
def get_parameter_string(self, entrypoint = None):
if entrypoint:
- s = self.parameter_strings[ entrypoint ]
- if s:
- return s
+ params = self.entry_point_parameters[ entrypoint ]
+ else:
+ params = self.parameters
- return create_parameter_string( self.parameters, 1 )
+ return create_parameter_string( params, 1 )
def get_called_parameter_string(self):
p_string = ""
@@ -791,6 +813,16 @@ class gl_api:
typeexpr.create_initial_types()
return
+ def filter_functions(self, entry_point_list):
+ """Filter out entry points not in entry_point_list."""
+ functions_by_name = {}
+ for func in self.functions_by_name.itervalues():
+ entry_points = [ent for ent in func.entry_points if ent in entry_point_list]
+ if entry_points:
+ func.filter_entry_points(entry_points)
+ functions_by_name[func.name] = func
+
+ self.functions_by_name = functions_by_name
def process_element(self, doc):
element = doc.children
diff --git a/mesalib/src/mapi/glapi/gen/gl_and_es_API.xml b/mesalib/src/mapi/glapi/gen/gl_and_es_API.xml
index ac7d43ced..1313da0f5 100644
--- a/mesalib/src/mapi/glapi/gen/gl_and_es_API.xml
+++ b/mesalib/src/mapi/glapi/gen/gl_and_es_API.xml
@@ -3,6 +3,11 @@
<!-- OpenGL + OpenGL ES -->
+<!-- IMPORTANT
+ Remember to update gles_api.py when new OpenGL ES specific entry points
+ are added. Otherwise, they will be filtered out.
+-->
+
<OpenGLAPI>
<xi:include href="gl_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
diff --git a/mesalib/src/mapi/glapi/gen/gl_apitemp.py b/mesalib/src/mapi/glapi/gen/gl_apitemp.py
index 41a40fbeb..72c2e46c3 100644
--- a/mesalib/src/mapi/glapi/gen/gl_apitemp.py
+++ b/mesalib/src/mapi/glapi/gen/gl_apitemp.py
@@ -64,6 +64,8 @@ class PrintGlOffsets(gl_XML.gl_print_base):
n = f.static_name(name)
+ silence = ''
+ space = ''
for p in f.parameterIterator():
if p.is_padding:
continue
@@ -78,6 +80,9 @@ class PrintGlOffsets(gl_XML.gl_print_base):
o_string = o_string + comma + cast + p.name
comma = ", "
+ silence += "%s(void) %s;" % (space, p.name);
+ space = ' '
+
if f.return_type != 'void':
dispatch = "RETURN_DISPATCH"
@@ -97,6 +102,8 @@ class PrintGlOffsets(gl_XML.gl_print_base):
print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name))
print '{'
+ if silence:
+ print ' %s' % (silence)
if p_string == "":
print ' %s(%s, (), (F, "gl%s();\\n"));' \
% (dispatch, f.name, name)
diff --git a/mesalib/src/mapi/glapi/gen/gl_table.py b/mesalib/src/mapi/glapi/gen/gl_table.py
index 210e75925..0361d6590 100644
--- a/mesalib/src/mapi/glapi/gen/gl_table.py
+++ b/mesalib/src/mapi/glapi/gen/gl_table.py
@@ -214,28 +214,28 @@ class PrintRemapTable(gl_XML.gl_print_base):
def show_usage():
- print "Usage: %s [-f input_file_name] [-m mode] [-c]" % sys.argv[0]
+ print "Usage: %s [-f input_file_name] [-m mode] [-c ver]" % sys.argv[0]
print " -m mode Mode can be 'table' or 'remap_table'."
- print " -c Enable compatibility with OpenGL ES."
+ print " -c ver Version can be 'es1' or 'es2'."
sys.exit(1)
if __name__ == '__main__':
file_name = "gl_API.xml"
try:
- (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c")
+ (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c:")
except Exception,e:
show_usage()
mode = "table"
- es = False
+ es = None
for (arg,val) in args:
if arg == "-f":
file_name = val
elif arg == "-m":
mode = val
elif arg == "-c":
- es = True
+ es = val
if mode == "table":
printer = PrintGlTable(es)
@@ -246,4 +246,14 @@ if __name__ == '__main__':
api = gl_XML.parse_GL_API( file_name )
+ if es is not None:
+ import gles_api
+
+ api_map = {
+ 'es1': gles_api.es1_api,
+ 'es2': gles_api.es2_api,
+ }
+
+ api.filter_functions(api_map[es])
+
printer.Print( api )
diff --git a/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py b/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py
index 11cd9af40..ef759bf7b 100644
--- a/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py
+++ b/mesalib/src/mapi/glapi/gen/gl_x86-64_asm.py
@@ -138,7 +138,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
print '# define GL_PREFIX(n) GLNAME(CONCAT(gl,n))'
print '# endif'
print ''
- print '#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)'
+ print '#if defined(PTHREADS) || defined(WIN32)'
print '# define THREADS'
print '#endif'
print ''
diff --git a/mesalib/src/mapi/glapi/gen/gl_x86_asm.py b/mesalib/src/mapi/glapi/gen/gl_x86_asm.py
index ede034e58..b43b65dd8 100644
--- a/mesalib/src/mapi/glapi/gen/gl_x86_asm.py
+++ b/mesalib/src/mapi/glapi/gen/gl_x86_asm.py
@@ -1,269 +1,269 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 2004, 2005
-# All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# on the rights to use, copy, modify, merge, publish, distribute, sub
-# license, and/or sell copies of the Software, and to permit persons to whom
-# the Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice (including the next
-# paragraph) shall be included in all copies or substantial portions of the
-# Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
-# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-# IN THE SOFTWARE.
-#
-# Authors:
-# Ian Romanick <idr@us.ibm.com>
-
-import license
-import gl_XML, glX_XML
-import sys, getopt
-
-class PrintGenericStubs(gl_XML.gl_print_base):
-
- def __init__(self):
- gl_XML.gl_print_base.__init__(self)
-
- self.name = "gl_x86_asm.py (from Mesa)"
- self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
-(C) Copyright IBM Corporation 2004, 2005""", "BRIAN PAUL, IBM")
- return
-
-
- def get_stack_size(self, f):
- size = 0
- for p in f.parameterIterator():
- if p.is_padding:
- continue
-
- size += p.get_stack_size()
-
- return size
-
-
- def printRealHeader(self):
- print '#include "x86/assyntax.h"'
- print ''
- print '#if defined(STDCALL_API)'
- print '# if defined(USE_MGL_NAMESPACE)'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))'
- print '# else'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))'
- print '# endif'
- print '#else'
- print '# if defined(USE_MGL_NAMESPACE)'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))'
- print '# define _glapi_Dispatch _mglapi_Dispatch'
- print '# else'
- print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))'
- print '# endif'
- print '#endif'
- print ''
- print '#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))'
- print ''
- print '#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)'
- print '#define GLOBL_FN(x) GLOBL x ; .type x, @function'
- print '#else'
- print '#define GLOBL_FN(x) GLOBL x'
- print '#endif'
- print ''
- print '#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)'
- print '# define THREADS'
- print '#endif'
- print ''
- print '#ifdef GLX_USE_TLS'
- print ''
- print '#ifdef GLX_X86_READONLY_TEXT'
- print '# define CTX_INSNS MOV_L(GS:(EAX), EAX)'
- print '#else'
- print '# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */'
- print '#endif'
- print ''
- print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
- print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
- print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
- print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
- print '\tCALL(_x86_get_dispatch) ;\t\t\t\\'
- print '\tCTX_INSNS ; \\'
- print '\tJMP(GL_OFFSET(off))'
- print ''
- print '#elif defined(PTHREADS)'
- print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
- print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
- print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
- print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
- print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
- print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
- print '\tJE(1f) ;\t\t\t\t\t\\'
- print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
- print '1:\tCALL(_x86_get_dispatch) ;\t\t\t\\'
- print '\tJMP(GL_OFFSET(off))'
- print '#elif defined(THREADS)'
- print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
- print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
- print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
- print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
- print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
- print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
- print '\tJE(1f) ;\t\t\t\t\t\\'
- print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
- print '1:\tCALL(_glapi_get_dispatch) ;\t\t\t\\'
- print '\tJMP(GL_OFFSET(off))'
- print '#else /* Non-threaded version. */'
- print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
- print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
- print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
- print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
- print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
- print '\tJMP(GL_OFFSET(off))'
- print '#endif'
- print ''
- print '#ifdef HAVE_ALIAS'
- print '# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
- print '\t.globl\tGL_PREFIX(fn, fn_alt) ;\t\t\t\\'
- print '\t.set\tGL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)'
- print '#else'
- print '# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
- print ' GL_STUB(fn, off, fn_alt)'
- print '#endif'
- print ''
- print 'SEG_TEXT'
- print ''
- print '#ifdef GLX_USE_TLS'
- print ''
- print '\tGLOBL\tGLNAME(_x86_get_dispatch)'
- print '\tHIDDEN(GLNAME(_x86_get_dispatch))'
- print 'ALIGNTEXT16'
- print 'GLNAME(_x86_get_dispatch):'
- print '\tcall 1f'
- print '1:\tpopl %eax'
- print '\taddl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax'
- print '\tmovl _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax'
- print '\tret'
- print ''
- print '#elif defined(PTHREADS)'
- print 'EXTERN GLNAME(_glapi_Dispatch)'
- print 'EXTERN GLNAME(_gl_DispatchTSD)'
- print 'EXTERN GLNAME(pthread_getspecific)'
- print ''
- print 'ALIGNTEXT16'
- print 'GLNAME(_x86_get_dispatch):'
- print '\tSUB_L(CONST(24), ESP)'
- print '\tPUSH_L(GLNAME(_gl_DispatchTSD))'
- print '\tCALL(GLNAME(pthread_getspecific))'
- print '\tADD_L(CONST(28), ESP)'
- print '\tRET'
- print '#elif defined(THREADS)'
- print 'EXTERN GLNAME(_glapi_get_dispatch)'
- print '#endif'
- print ''
-
- print '#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )'
- print '\t\t.section\twtext, "awx", @progbits'
- print '#endif /* defined( GLX_USE_TLS ) */'
-
- print ''
- print '\t\tALIGNTEXT16'
- print '\t\tGLOBL GLNAME(gl_dispatch_functions_start)'
- print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_start))'
- print 'GLNAME(gl_dispatch_functions_start):'
- print ''
- return
-
-
- def printRealFooter(self):
- print ''
- print '\t\tGLOBL\tGLNAME(gl_dispatch_functions_end)'
- print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_end))'
- print '\t\tALIGNTEXT16'
- print 'GLNAME(gl_dispatch_functions_end):'
- print ''
- print '#if defined(GLX_USE_TLS) && defined(__linux__)'
- print ' .section ".note.ABI-tag", "a"'
- print ' .p2align 2'
- print ' .long 1f - 0f /* name length */'
- print ' .long 3f - 2f /* data length */'
- print ' .long 1 /* note length */'
- print '0: .asciz "GNU" /* vendor name */'
- print '1: .p2align 2'
- print '2: .long 0 /* note data: the ABI tag */'
- print ' .long 2,4,20 /* Minimum kernel version w/TLS */'
- print '3: .p2align 2 /* pad out section */'
- print '#endif /* GLX_USE_TLS */'
- print ''
- print '#if defined (__ELF__) && defined (__linux__)'
- print ' .section .note.GNU-stack,"",%progbits'
- print '#endif'
- return
-
-
- def printBody(self, api):
- for f in api.functionIterateByOffset():
- name = f.dispatch_name()
- stack = self.get_stack_size(f)
- alt = "%s@%u" % (name, stack)
-
- print '\tGL_STUB(%s, %d, %s)' % (name, f.offset, alt)
-
- if not f.is_static_entry_point(f.name):
- print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
-
-
- for f in api.functionIterateByOffset():
- name = f.dispatch_name()
- stack = self.get_stack_size(f)
- alt = "%s@%u" % (name, stack)
-
- for n in f.entry_points:
- if f.is_static_entry_point(n):
- if n != f.name:
- alt2 = "%s@%u" % (n, stack)
- text = '\tGL_STUB_ALIAS(%s, %d, %s, %s, %s)' % (n, f.offset, alt2, name, alt)
-
- if f.has_different_protocol(n):
- print '#ifndef GLX_INDIRECT_RENDERING'
- print text
- print '#endif'
- else:
- print text
-
- return
-
-def show_usage():
- print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
- sys.exit(1)
-
-if __name__ == '__main__':
- file_name = "gl_API.xml"
- mode = "generic"
-
- try:
- (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
- except Exception,e:
- show_usage()
-
- for (arg,val) in args:
- if arg == '-m':
- mode = val
- elif arg == "-f":
- file_name = val
-
- if mode == "generic":
- printer = PrintGenericStubs()
- else:
- print "ERROR: Invalid mode \"%s\" specified." % mode
- show_usage()
-
- api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
- printer.Print(api)
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 2004, 2005
+# All Rights Reserved.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# on the rights to use, copy, modify, merge, publish, distribute, sub
+# license, and/or sell copies of the Software, and to permit persons to whom
+# the Software is furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+# IN THE SOFTWARE.
+#
+# Authors:
+# Ian Romanick <idr@us.ibm.com>
+
+import license
+import gl_XML, glX_XML
+import sys, getopt
+
+class PrintGenericStubs(gl_XML.gl_print_base):
+
+ def __init__(self):
+ gl_XML.gl_print_base.__init__(self)
+
+ self.name = "gl_x86_asm.py (from Mesa)"
+ self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
+(C) Copyright IBM Corporation 2004, 2005""", "BRIAN PAUL, IBM")
+ return
+
+
+ def get_stack_size(self, f):
+ size = 0
+ for p in f.parameterIterator():
+ if p.is_padding:
+ continue
+
+ size += p.get_stack_size()
+
+ return size
+
+
+ def printRealHeader(self):
+ print '#include "x86/assyntax.h"'
+ print ''
+ print '#if defined(STDCALL_API)'
+ print '# if defined(USE_MGL_NAMESPACE)'
+ print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))'
+ print '# else'
+ print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))'
+ print '# endif'
+ print '#else'
+ print '# if defined(USE_MGL_NAMESPACE)'
+ print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))'
+ print '# define _glapi_Dispatch _mglapi_Dispatch'
+ print '# else'
+ print '# define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))'
+ print '# endif'
+ print '#endif'
+ print ''
+ print '#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))'
+ print ''
+ print '#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)'
+ print '#define GLOBL_FN(x) GLOBL x ; .type x, @function'
+ print '#else'
+ print '#define GLOBL_FN(x) GLOBL x'
+ print '#endif'
+ print ''
+ print '#if defined(PTHREADS) || defined(WIN32)'
+ print '# define THREADS'
+ print '#endif'
+ print ''
+ print '#ifdef GLX_USE_TLS'
+ print ''
+ print '#ifdef GLX_X86_READONLY_TEXT'
+ print '# define CTX_INSNS MOV_L(GS:(EAX), EAX)'
+ print '#else'
+ print '# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */'
+ print '#endif'
+ print ''
+ print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+ print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+ print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+ print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+ print '\tCALL(_x86_get_dispatch) ;\t\t\t\\'
+ print '\tCTX_INSNS ; \\'
+ print '\tJMP(GL_OFFSET(off))'
+ print ''
+ print '#elif defined(PTHREADS)'
+ print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+ print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+ print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+ print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+ print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
+ print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
+ print '\tJE(1f) ;\t\t\t\t\t\\'
+ print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
+ print '1:\tCALL(_x86_get_dispatch) ;\t\t\t\\'
+ print '\tJMP(GL_OFFSET(off))'
+ print '#elif defined(THREADS)'
+ print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+ print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+ print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+ print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+ print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
+ print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
+ print '\tJE(1f) ;\t\t\t\t\t\\'
+ print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
+ print '1:\tCALL(_glapi_get_dispatch) ;\t\t\t\\'
+ print '\tJMP(GL_OFFSET(off))'
+ print '#else /* Non-threaded version. */'
+ print '# define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+ print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+ print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+ print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+ print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
+ print '\tJMP(GL_OFFSET(off))'
+ print '#endif'
+ print ''
+ print '#ifdef HAVE_ALIAS'
+ print '# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
+ print '\t.globl\tGL_PREFIX(fn, fn_alt) ;\t\t\t\\'
+ print '\t.set\tGL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)'
+ print '#else'
+ print '# define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
+ print ' GL_STUB(fn, off, fn_alt)'
+ print '#endif'
+ print ''
+ print 'SEG_TEXT'
+ print ''
+ print '#ifdef GLX_USE_TLS'
+ print ''
+ print '\tGLOBL\tGLNAME(_x86_get_dispatch)'
+ print '\tHIDDEN(GLNAME(_x86_get_dispatch))'
+ print 'ALIGNTEXT16'
+ print 'GLNAME(_x86_get_dispatch):'
+ print '\tcall 1f'
+ print '1:\tpopl %eax'
+ print '\taddl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax'
+ print '\tmovl _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax'
+ print '\tret'
+ print ''
+ print '#elif defined(PTHREADS)'
+ print 'EXTERN GLNAME(_glapi_Dispatch)'
+ print 'EXTERN GLNAME(_gl_DispatchTSD)'
+ print 'EXTERN GLNAME(pthread_getspecific)'
+ print ''
+ print 'ALIGNTEXT16'
+ print 'GLNAME(_x86_get_dispatch):'
+ print '\tSUB_L(CONST(24), ESP)'
+ print '\tPUSH_L(GLNAME(_gl_DispatchTSD))'
+ print '\tCALL(GLNAME(pthread_getspecific))'
+ print '\tADD_L(CONST(28), ESP)'
+ print '\tRET'
+ print '#elif defined(THREADS)'
+ print 'EXTERN GLNAME(_glapi_get_dispatch)'
+ print '#endif'
+ print ''
+
+ print '#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )'
+ print '\t\t.section\twtext, "awx", @progbits'
+ print '#endif /* defined( GLX_USE_TLS ) */'
+
+ print ''
+ print '\t\tALIGNTEXT16'
+ print '\t\tGLOBL GLNAME(gl_dispatch_functions_start)'
+ print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_start))'
+ print 'GLNAME(gl_dispatch_functions_start):'
+ print ''
+ return
+
+
+ def printRealFooter(self):
+ print ''
+ print '\t\tGLOBL\tGLNAME(gl_dispatch_functions_end)'
+ print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_end))'
+ print '\t\tALIGNTEXT16'
+ print 'GLNAME(gl_dispatch_functions_end):'
+ print ''
+ print '#if defined(GLX_USE_TLS) && defined(__linux__)'
+ print ' .section ".note.ABI-tag", "a"'
+ print ' .p2align 2'
+ print ' .long 1f - 0f /* name length */'
+ print ' .long 3f - 2f /* data length */'
+ print ' .long 1 /* note length */'
+ print '0: .asciz "GNU" /* vendor name */'
+ print '1: .p2align 2'
+ print '2: .long 0 /* note data: the ABI tag */'
+ print ' .long 2,4,20 /* Minimum kernel version w/TLS */'
+ print '3: .p2align 2 /* pad out section */'
+ print '#endif /* GLX_USE_TLS */'
+ print ''
+ print '#if defined (__ELF__) && defined (__linux__)'
+ print ' .section .note.GNU-stack,"",%progbits'
+ print '#endif'
+ return
+
+
+ def printBody(self, api):
+ for f in api.functionIterateByOffset():
+ name = f.dispatch_name()
+ stack = self.get_stack_size(f)
+ alt = "%s@%u" % (name, stack)
+
+ print '\tGL_STUB(%s, %d, %s)' % (name, f.offset, alt)
+
+ if not f.is_static_entry_point(f.name):
+ print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
+
+
+ for f in api.functionIterateByOffset():
+ name = f.dispatch_name()
+ stack = self.get_stack_size(f)
+ alt = "%s@%u" % (name, stack)
+
+ for n in f.entry_points:
+ if f.is_static_entry_point(n):
+ if n != f.name:
+ alt2 = "%s@%u" % (n, stack)
+ text = '\tGL_STUB_ALIAS(%s, %d, %s, %s, %s)' % (n, f.offset, alt2, name, alt)
+
+ if f.has_different_protocol(n):
+ print '#ifndef GLX_INDIRECT_RENDERING'
+ print text
+ print '#endif'
+ else:
+ print text
+
+ return
+
+def show_usage():
+ print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
+ sys.exit(1)
+
+if __name__ == '__main__':
+ file_name = "gl_API.xml"
+ mode = "generic"
+
+ try:
+ (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
+ except Exception,e:
+ show_usage()
+
+ for (arg,val) in args:
+ if arg == '-m':
+ mode = val
+ elif arg == "-f":
+ file_name = val
+
+ if mode == "generic":
+ printer = PrintGenericStubs()
+ else:
+ print "ERROR: Invalid mode \"%s\" specified." % mode
+ show_usage()
+
+ api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+ printer.Print(api)
diff --git a/mesalib/src/mapi/glapi/gen/glapi_gen.mk b/mesalib/src/mapi/glapi/gen/glapi_gen.mk
new file mode 100644
index 000000000..c7fa7c015
--- /dev/null
+++ b/mesalib/src/mapi/glapi/gen/glapi_gen.mk
@@ -0,0 +1,44 @@
+# Helpers for glapi header generation
+
+ifndef TOP
+$(error TOP must be defined.)
+endif
+
+glapi_gen_common_deps := \
+ $(wildcard $(TOP)/src/mapi/glapi/gen/*.xml) \
+ $(wildcard $(TOP)/src/mapi/glapi/gen/*.py)
+
+glapi_gen_mapi_script := $(TOP)/src/mapi/mapi/mapi_abi.py
+glapi_gen_mapi_deps := \
+ $(glapi_gen_mapi_script) \
+ $(glapi_gen_common_deps)
+
+# $(1): path to an XML file
+# $(2): name of the printer
+define glapi_gen_mapi
+@mkdir -p $(dir $@)
+$(PYTHON2) $(PYTHON_FLAGS) $(glapi_gen_mapi_script) \
+ --mode lib --printer $(2) $(1) > $@
+endef
+
+glapi_gen_dispatch_script := $(TOP)/src/mapi/glapi/gen/gl_table.py
+glapi_gen_dispatch_deps := $(glapi_gen_common_deps)
+
+# $(1): path to an XML file
+# $(2): empty, es1, or es2 for entry point filtering
+define glapi_gen_dispatch
+@mkdir -p $(dir $@)
+$(PYTHON2) $(PYTHON_FLAGS) $(glapi_gen_dispatch_script) \
+ -f $(1) -m remap_table $(if $(2),-c $(2),) > $@
+endef
+
+glapi_gen_remap_script := $(TOP)/src/mapi/glapi/gen/remap_helper.py
+glapi_gen_remap_deps := $(glapi_gen_common_deps)
+
+# $(1): path to an XML file
+# $(2): empty, es1, or es2 for entry point filtering
+define glapi_gen_remap
+@mkdir -p $(dir $@)
+$(PYTHON2) $(PYTHON_FLAGS) $(glapi_gen_remap_script) \
+ -f $(1) $(if $(2),-c $(2),) > $@
+endef
diff --git a/mesalib/src/mapi/glapi/gen/gles_api.py b/mesalib/src/mapi/glapi/gen/gles_api.py
new file mode 100644
index 000000000..4cde9e544
--- /dev/null
+++ b/mesalib/src/mapi/glapi/gen/gles_api.py
@@ -0,0 +1,452 @@
+#!/usr/bin/env python
+
+# Mesa 3-D graphics library
+# Version: 7.12
+#
+# Copyright (C) 2011 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>
+
+# These info should be part of GLAPI XML. Until that is possible, scripts have
+# to use tables here to filter gl_api.
+
+es1_core = (
+ # OpenGL ES 1.1
+ 'ActiveTexture',
+ 'AlphaFunc',
+ 'AlphaFuncx',
+ 'BindBuffer',
+ 'BindTexture',
+ 'BlendFunc',
+ 'BufferData',
+ 'BufferSubData',
+ 'Clear',
+ 'ClearColor',
+ 'ClearColorx',
+ 'ClearDepthf',
+ 'ClearDepthx',
+ 'ClearStencil',
+ 'ClientActiveTexture',
+ 'ClipPlanef',
+ 'ClipPlanex',
+ 'Color4f',
+ 'Color4ub',
+ 'Color4x',
+ 'ColorMask',
+ 'ColorPointer',
+ 'CompressedTexImage2D',
+ 'CompressedTexSubImage2D',
+ 'CopyTexImage2D',
+ 'CopyTexSubImage2D',
+ 'CullFace',
+ 'DeleteBuffers',
+ 'DeleteTextures',
+ 'DepthFunc',
+ 'DepthMask',
+ 'DepthRangef',
+ 'DepthRangex',
+ 'Disable',
+ 'DisableClientState',
+ 'DrawArrays',
+ 'DrawElements',
+ 'Enable',
+ 'EnableClientState',
+ 'Finish',
+ 'Flush',
+ 'Fogf',
+ 'Fogfv',
+ 'Fogx',
+ 'Fogxv',
+ 'FrontFace',
+ 'Frustumf',
+ 'Frustumx',
+ 'GenBuffers',
+ 'GenTextures',
+ 'GetBooleanv',
+ 'GetBufferParameteriv',
+ 'GetClipPlanef',
+ 'GetClipPlanex',
+ 'GetError',
+ 'GetFixedv',
+ 'GetFloatv',
+ 'GetIntegerv',
+ 'GetLightfv',
+ 'GetLightxv',
+ 'GetMaterialfv',
+ 'GetMaterialxv',
+ 'GetPointerv',
+ 'GetString',
+ 'GetTexEnvfv',
+ 'GetTexEnviv',
+ 'GetTexEnvxv',
+ 'GetTexParameterfv',
+ 'GetTexParameteriv',
+ 'GetTexParameterxv',
+ 'Hint',
+ 'IsBuffer',
+ 'IsEnabled',
+ 'IsTexture',
+ 'Lightf',
+ 'Lightfv',
+ 'LightModelf',
+ 'LightModelfv',
+ 'LightModelx',
+ 'LightModelxv',
+ 'Lightx',
+ 'Lightxv',
+ 'LineWidth',
+ 'LineWidthx',
+ 'LoadIdentity',
+ 'LoadMatrixf',
+ 'LoadMatrixx',
+ 'LogicOp',
+ 'Materialf',
+ 'Materialfv',
+ 'Materialx',
+ 'Materialxv',
+ 'MatrixMode',
+ 'MultiTexCoord4f',
+ 'MultiTexCoord4x',
+ 'MultMatrixf',
+ 'MultMatrixx',
+ 'Normal3f',
+ 'Normal3x',
+ 'NormalPointer',
+ 'Orthof',
+ 'Orthox',
+ 'PixelStorei',
+ 'PointParameterf',
+ 'PointParameterfv',
+ 'PointParameterx',
+ 'PointParameterxv',
+ 'PointSize',
+ 'PointSizex',
+ 'PolygonOffset',
+ 'PolygonOffsetx',
+ 'PopMatrix',
+ 'PushMatrix',
+ 'ReadPixels',
+ 'Rotatef',
+ 'Rotatex',
+ 'SampleCoverage',
+ 'SampleCoveragex',
+ 'Scalef',
+ 'Scalex',
+ 'Scissor',
+ 'ShadeModel',
+ 'StencilFunc',
+ 'StencilMask',
+ 'StencilOp',
+ 'TexCoordPointer',
+ 'TexEnvf',
+ 'TexEnvfv',
+ 'TexEnvi',
+ 'TexEnviv',
+ 'TexEnvx',
+ 'TexEnvxv',
+ 'TexImage2D',
+ 'TexParameterf',
+ 'TexParameterfv',
+ 'TexParameteri',
+ 'TexParameteriv',
+ 'TexParameterx',
+ 'TexParameterxv',
+ 'TexSubImage2D',
+ 'Translatef',
+ 'Translatex',
+ 'VertexPointer',
+ 'Viewport',
+)
+
+es1_api = es1_core + (
+ # GL_OES_EGL_image
+ 'EGLImageTargetTexture2DOES',
+ 'EGLImageTargetRenderbufferStorageOES',
+ # GL_OES_mapbuffer
+ 'GetBufferPointervOES',
+ 'MapBufferOES',
+ 'UnmapBufferOES',
+ # GL_EXT_multi_draw_arrays
+ 'MultiDrawArraysEXT',
+ 'MultiDrawElementsEXT',
+ # GL_OES_blend_equation_separate
+ 'BlendEquationSeparateOES',
+ # GL_OES_blend_func_separate
+ 'BlendFuncSeparateOES',
+ # GL_OES_blend_subtract
+ 'BlendEquationOES',
+ # GL_OES_draw_texture
+ 'DrawTexiOES',
+ 'DrawTexivOES',
+ 'DrawTexfOES',
+ 'DrawTexfvOES',
+ 'DrawTexsOES',
+ 'DrawTexsvOES',
+ 'DrawTexxOES',
+ 'DrawTexxvOES',
+ # GL_OES_fixed_point
+ 'AlphaFuncxOES',
+ 'ClearColorxOES',
+ 'ClearDepthxOES',
+ 'Color4xOES',
+ 'DepthRangexOES',
+ 'FogxOES',
+ 'FogxvOES',
+ 'FrustumxOES',
+ 'LightModelxOES',
+ 'LightModelxvOES',
+ 'LightxOES',
+ 'LightxvOES',
+ 'LineWidthxOES',
+ 'LoadMatrixxOES',
+ 'MaterialxOES',
+ 'MaterialxvOES',
+ 'MultiTexCoord4xOES',
+ 'MultMatrixxOES',
+ 'Normal3xOES',
+ 'OrthoxOES',
+ 'PointSizexOES',
+ 'PolygonOffsetxOES',
+ 'RotatexOES',
+ 'SampleCoveragexOES',
+ 'ScalexOES',
+ 'TexEnvxOES',
+ 'TexEnvxvOES',
+ 'TexParameterxOES',
+ 'TranslatexOES',
+ 'ClipPlanexOES',
+ 'GetClipPlanexOES',
+ 'GetFixedvOES',
+ 'GetLightxvOES',
+ 'GetMaterialxvOES',
+ 'GetTexEnvxvOES',
+ 'GetTexParameterxvOES',
+ 'PointParameterxOES',
+ 'PointParameterxvOES',
+ 'TexParameterxvOES',
+ # GL_OES_framebuffer_object
+ 'BindFramebufferOES',
+ 'BindRenderbufferOES',
+ 'CheckFramebufferStatusOES',
+ 'DeleteFramebuffersOES',
+ 'DeleteRenderbuffersOES',
+ 'FramebufferRenderbufferOES',
+ 'FramebufferTexture2DOES',
+ 'GenerateMipmapOES',
+ 'GenFramebuffersOES',
+ 'GenRenderbuffersOES',
+ 'GetFramebufferAttachmentParameterivOES',
+ 'GetRenderbufferParameterivOES',
+ 'IsFramebufferOES',
+ 'IsRenderbufferOES',
+ 'RenderbufferStorageOES',
+ # GL_OES_point_size_array
+ 'PointSizePointerOES',
+ # GL_OES_query_matrix
+ 'QueryMatrixxOES',
+ # GL_OES_single_precision
+ 'ClearDepthfOES',
+ 'DepthRangefOES',
+ 'FrustumfOES',
+ 'OrthofOES',
+ 'ClipPlanefOES',
+ 'GetClipPlanefOES',
+ # GL_OES_texture_cube_map
+ 'GetTexGenfvOES',
+ 'GetTexGenivOES',
+ 'GetTexGenxvOES',
+ 'TexGenfOES',
+ 'TexGenfvOES',
+ 'TexGeniOES',
+ 'TexGenivOES',
+ 'TexGenxOES',
+ 'TexGenxvOES',
+)
+
+es2_core = (
+ # OpenGL ES 2.0
+ "ActiveTexture",
+ "AttachShader",
+ "BindAttribLocation",
+ "BindBuffer",
+ "BindFramebuffer",
+ "BindRenderbuffer",
+ "BindTexture",
+ "BlendColor",
+ "BlendEquation",
+ "BlendEquationSeparate",
+ "BlendFunc",
+ "BlendFuncSeparate",
+ "BufferData",
+ "BufferSubData",
+ "CheckFramebufferStatus",
+ "Clear",
+ "ClearColor",
+ "ClearDepthf",
+ "ClearStencil",
+ "ColorMask",
+ "CompileShader",
+ "CompressedTexImage2D",
+ "CompressedTexSubImage2D",
+ "CopyTexImage2D",
+ "CopyTexSubImage2D",
+ "CreateProgram",
+ "CreateShader",
+ "CullFace",
+ "DeleteBuffers",
+ "DeleteFramebuffers",
+ "DeleteProgram",
+ "DeleteRenderbuffers",
+ "DeleteShader",
+ "DeleteTextures",
+ "DepthFunc",
+ "DepthMask",
+ "DepthRangef",
+ "DetachShader",
+ "Disable",
+ "DisableVertexAttribArray",
+ "DrawArrays",
+ "DrawElements",
+ "Enable",
+ "EnableVertexAttribArray",
+ "Finish",
+ "Flush",
+ "FramebufferRenderbuffer",
+ "FramebufferTexture2D",
+ "FrontFace",
+ "GenBuffers",
+ "GenerateMipmap",
+ "GenFramebuffers",
+ "GenRenderbuffers",
+ "GenTextures",
+ "GetActiveAttrib",
+ "GetActiveUniform",
+ "GetAttachedShaders",
+ "GetAttribLocation",
+ "GetBooleanv",
+ "GetBufferParameteriv",
+ "GetError",
+ "GetFloatv",
+ "GetFramebufferAttachmentParameteriv",
+ "GetIntegerv",
+ "GetProgramInfoLog",
+ "GetProgramiv",
+ "GetRenderbufferParameteriv",
+ "GetShaderInfoLog",
+ "GetShaderiv",
+ "GetShaderPrecisionFormat",
+ "GetShaderSource",
+ "GetString",
+ "GetTexParameterfv",
+ "GetTexParameteriv",
+ "GetUniformfv",
+ "GetUniformiv",
+ "GetUniformLocation",
+ "GetVertexAttribfv",
+ "GetVertexAttribiv",
+ "GetVertexAttribPointerv",
+ "Hint",
+ "IsBuffer",
+ "IsEnabled",
+ "IsFramebuffer",
+ "IsProgram",
+ "IsRenderbuffer",
+ "IsShader",
+ "IsTexture",
+ "LineWidth",
+ "LinkProgram",
+ "PixelStorei",
+ "PolygonOffset",
+ "ReadPixels",
+ "ReleaseShaderCompiler",
+ "RenderbufferStorage",
+ "SampleCoverage",
+ "Scissor",
+ "ShaderBinary",
+ "ShaderSource",
+ "StencilFunc",
+ "StencilFuncSeparate",
+ "StencilMask",
+ "StencilMaskSeparate",
+ "StencilOp",
+ "StencilOpSeparate",
+ "TexImage2D",
+ "TexParameterf",
+ "TexParameterfv",
+ "TexParameteri",
+ "TexParameteriv",
+ "TexSubImage2D",
+ "Uniform1f",
+ "Uniform1fv",
+ "Uniform1i",
+ "Uniform1iv",
+ "Uniform2f",
+ "Uniform2fv",
+ "Uniform2i",
+ "Uniform2iv",
+ "Uniform3f",
+ "Uniform3fv",
+ "Uniform3i",
+ "Uniform3iv",
+ "Uniform4f",
+ "Uniform4fv",
+ "Uniform4i",
+ "Uniform4iv",
+ "UniformMatrix2fv",
+ "UniformMatrix3fv",
+ "UniformMatrix4fv",
+ "UseProgram",
+ "ValidateProgram",
+ "VertexAttrib1f",
+ "VertexAttrib1fv",
+ "VertexAttrib2f",
+ "VertexAttrib2fv",
+ "VertexAttrib3f",
+ "VertexAttrib3fv",
+ "VertexAttrib4f",
+ "VertexAttrib4fv",
+ "VertexAttribPointer",
+ "Viewport",
+)
+
+es2_api = es2_core + (
+ # GL_OES_EGL_image
+ 'EGLImageTargetTexture2DOES',
+ 'EGLImageTargetRenderbufferStorageOES',
+ # GL_OES_mapbuffer
+ 'GetBufferPointervOES',
+ 'MapBufferOES',
+ 'UnmapBufferOES',
+ # GL_EXT_multi_draw_arrays
+ 'MultiDrawArraysEXT',
+ 'MultiDrawElementsEXT',
+ # GL_OES_texture_3D
+ 'CompressedTexImage3DOES',
+ 'CompressedTexSubImage3DOES',
+ 'CopyTexSubImage3DOES',
+ 'FramebufferTexture3DOES',
+ 'TexImage3DOES',
+ 'TexSubImage3DOES',
+ # GL_OES_get_program_binary
+ 'GetProgramBinaryOES',
+ 'ProgramBinaryOES',
+)
diff --git a/mesalib/src/mapi/glapi/gen/remap_helper.py b/mesalib/src/mapi/glapi/gen/remap_helper.py
index 69b8e5e9d..367ae24c7 100644
--- a/mesalib/src/mapi/glapi/gen/remap_helper.py
+++ b/mesalib/src/mapi/glapi/gen/remap_helper.py
@@ -197,22 +197,36 @@ class PrintGlRemap(gl_XML.gl_print_base):
def show_usage():
- print "Usage: %s [-f input_file_name]" % sys.argv[0]
+ print "Usage: %s [-f input_file_name] [-c ver]" % sys.argv[0]
+ print " -c ver Version can be 'es1' or 'es2'."
sys.exit(1)
if __name__ == '__main__':
file_name = "gl_API.xml"
try:
- (args, trail) = getopt.getopt(sys.argv[1:], "f:")
+ (args, trail) = getopt.getopt(sys.argv[1:], "f:c:")
except Exception,e:
show_usage()
+ es = None
for (arg,val) in args:
if arg == "-f":
file_name = val
+ elif arg == "-c":
+ es = val
api = gl_XML.parse_GL_API( file_name )
+ if es is not None:
+ import gles_api
+
+ api_map = {
+ 'es1': gles_api.es1_api,
+ 'es2': gles_api.es2_api,
+ }
+
+ api.filter_functions(api_map[es])
+
printer = PrintGlRemap()
printer.Print( api )
diff --git a/mesalib/src/mapi/glapi/glapi_gentable.c b/mesalib/src/mapi/glapi/glapi_gentable.c
index 6dd02a747..a2a28a710 100644
--- a/mesalib/src/mapi/glapi/glapi_gentable.c
+++ b/mesalib/src/mapi/glapi/glapi_gentable.c
@@ -8727,6 +8727,13 @@ _glapi_create_table_from_handle(void *handle, const char *symbol_prefix) {
if(!disp->FramebufferTextureLayerEXT) {
void ** procp = (void **) &disp->FramebufferTextureLayerEXT;
+ snprintf(symboln, sizeof(symboln), "%sFramebufferTextureLayerARB", symbol_prefix);
+ *procp = dlsym(handle, symboln);
+ }
+
+
+ if(!disp->FramebufferTextureLayerEXT) {
+ void ** procp = (void **) &disp->FramebufferTextureLayerEXT;
snprintf(symboln, sizeof(symboln), "%sFramebufferTextureLayerEXT", symbol_prefix);
*procp = dlsym(handle, symboln);
}
diff --git a/mesalib/src/mapi/glapi/glapi_mapi_tmp.h b/mesalib/src/mapi/glapi/glapi_mapi_tmp.h
index 84848711a..42f5d0cde 100644
--- a/mesalib/src/mapi/glapi/glapi_mapi_tmp.h
+++ b/mesalib/src/mapi/glapi/glapi_mapi_tmp.h
@@ -1287,6 +1287,7 @@ GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointerEXT)(GLuint index, GLint si
GLAPI void APIENTRY GLAPI_PREFIX(VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
+GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer);
GLAPI void APIENTRY GLAPI_PREFIX(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
GLAPI void APIENTRY GLAPI_PREFIX(ColorMaski)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
GLAPI void APIENTRY GLAPI_PREFIX(DisableIndexedEXT)(GLenum target, GLuint index);
@@ -9538,6 +9539,13 @@ GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayer)(GLenum target, GLenum
((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) _func)(target, attachment, texture, level, layer);
}
+GLAPI void APIENTRY GLAPI_PREFIX(FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+{
+ const struct mapi_table *_tbl = entry_current_get();
+ mapi_func _func = ((const mapi_func *) _tbl)[949];
+ ((void (APIENTRY *)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)) _func)(target, attachment, texture, level, layer);
+}
+
GLAPI void APIENTRY GLAPI_PREFIX(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
const struct mapi_table *_tbl = entry_current_get();
@@ -13412,6 +13420,9 @@ STUB_ASM_ENTRY(GLAPI_PREFIX_STR(FramebufferTextureLayerEXT))"\n"
".globl "GLAPI_PREFIX_STR(FramebufferTextureLayer)"\n"
".set "GLAPI_PREFIX_STR(FramebufferTextureLayer)", "GLAPI_PREFIX_STR(FramebufferTextureLayerEXT)"\n"
+".globl "GLAPI_PREFIX_STR(FramebufferTextureLayerARB)"\n"
+".set "GLAPI_PREFIX_STR(FramebufferTextureLayerARB)", "GLAPI_PREFIX_STR(FramebufferTextureLayerEXT)"\n"
+
STUB_ASM_ENTRY(GLAPI_PREFIX_STR(ColorMaskIndexedEXT))"\n"
"\t"STUB_ASM_CODE("950")"\n"
diff --git a/mesalib/src/mapi/glapi/glapi_sparc.S b/mesalib/src/mapi/glapi/glapi_sparc.S
index 06c616481..150551acb 100644
--- a/mesalib/src/mapi/glapi/glapi_sparc.S
+++ b/mesalib/src/mapi/glapi/glapi_sparc.S
@@ -1536,6 +1536,7 @@ gl_dispatch_functions_start:
GL_STUB_ALIAS(glVertexAttribI4usv, glVertexAttribI4usvEXT)
GL_STUB_ALIAS(glVertexAttribIPointer, glVertexAttribIPointerEXT)
GL_STUB_ALIAS(glFramebufferTextureLayer, glFramebufferTextureLayerEXT)
+ GL_STUB_ALIAS(glFramebufferTextureLayerARB, glFramebufferTextureLayerEXT)
GL_STUB_ALIAS(glColorMaski, glColorMaskIndexedEXT)
GL_STUB_ALIAS(glDisablei, glDisableIndexedEXT)
GL_STUB_ALIAS(glEnablei, glEnableIndexedEXT)
diff --git a/mesalib/src/mapi/glapi/glapi_x86-64.S b/mesalib/src/mapi/glapi/glapi_x86-64.S
index d26e49088..58b56b4d9 100644
--- a/mesalib/src/mapi/glapi/glapi_x86-64.S
+++ b/mesalib/src/mapi/glapi/glapi_x86-64.S
@@ -45,7 +45,7 @@
# define GL_PREFIX(n) GLNAME(CONCAT(gl,n))
# endif
-#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)
+#if defined(PTHREADS) || defined(WIN32)
# define THREADS
#endif
@@ -35662,6 +35662,7 @@ GL_PREFIX(EGLImageTargetTexture2DOES):
.globl GL_PREFIX(VertexAttribI4usv) ; .set GL_PREFIX(VertexAttribI4usv), GL_PREFIX(VertexAttribI4usvEXT)
.globl GL_PREFIX(VertexAttribIPointer) ; .set GL_PREFIX(VertexAttribIPointer), GL_PREFIX(VertexAttribIPointerEXT)
.globl GL_PREFIX(FramebufferTextureLayer) ; .set GL_PREFIX(FramebufferTextureLayer), GL_PREFIX(FramebufferTextureLayerEXT)
+ .globl GL_PREFIX(FramebufferTextureLayerARB) ; .set GL_PREFIX(FramebufferTextureLayerARB), GL_PREFIX(FramebufferTextureLayerEXT)
.globl GL_PREFIX(ColorMaski) ; .set GL_PREFIX(ColorMaski), GL_PREFIX(ColorMaskIndexedEXT)
.globl GL_PREFIX(Disablei) ; .set GL_PREFIX(Disablei), GL_PREFIX(DisableIndexedEXT)
.globl GL_PREFIX(Enablei) ; .set GL_PREFIX(Enablei), GL_PREFIX(EnableIndexedEXT)
diff --git a/mesalib/src/mapi/glapi/glapi_x86.S b/mesalib/src/mapi/glapi/glapi_x86.S
index 5bdcfb387..19a5a6a19 100644
--- a/mesalib/src/mapi/glapi/glapi_x86.S
+++ b/mesalib/src/mapi/glapi/glapi_x86.S
@@ -51,7 +51,7 @@
#define GLOBL_FN(x) GLOBL x
#endif
-#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)
+#if defined(PTHREADS) || defined(WIN32)
# define THREADS
#endif
@@ -1433,6 +1433,7 @@ GLNAME(gl_dispatch_functions_start):
GL_STUB_ALIAS(VertexAttribI4usv, 888, VertexAttribI4usv@8, VertexAttribI4usvEXT, VertexAttribI4usvEXT@8)
GL_STUB_ALIAS(VertexAttribIPointer, 889, VertexAttribIPointer@20, VertexAttribIPointerEXT, VertexAttribIPointerEXT@20)
GL_STUB_ALIAS(FramebufferTextureLayer, 890, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
+ GL_STUB_ALIAS(FramebufferTextureLayerARB, 890, FramebufferTextureLayerARB@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
GL_STUB_ALIAS(ColorMaski, 891, ColorMaski@20, ColorMaskIndexedEXT, ColorMaskIndexedEXT@20)
GL_STUB_ALIAS(Disablei, 892, Disablei@8, DisableIndexedEXT, DisableIndexedEXT@8)
GL_STUB_ALIAS(Enablei, 893, Enablei@8, EnableIndexedEXT, EnableIndexedEXT@8)
diff --git a/mesalib/src/mapi/glapi/glapitemp.h b/mesalib/src/mapi/glapi/glapitemp.h
index f1aba4055..9a1aa9c8c 100644
--- a/mesalib/src/mapi/glapi/glapitemp.h
+++ b/mesalib/src/mapi/glapi/glapitemp.h
@@ -84,6 +84,7 @@
KEYWORD1 void KEYWORD2 NAME(NewList)(GLuint list, GLenum mode)
{
+ (void) list; (void) mode;
DISPATCH(NewList, (list, mode), (F, "glNewList(%d, 0x%x);\n", list, mode));
}
@@ -94,206 +95,247 @@ KEYWORD1 void KEYWORD2 NAME(EndList)(void)
KEYWORD1 void KEYWORD2 NAME(CallList)(GLuint list)
{
+ (void) list;
DISPATCH(CallList, (list), (F, "glCallList(%d);\n", list));
}
KEYWORD1 void KEYWORD2 NAME(CallLists)(GLsizei n, GLenum type, const GLvoid * lists)
{
+ (void) n; (void) type; (void) lists;
DISPATCH(CallLists, (n, type, lists), (F, "glCallLists(%d, 0x%x, %p);\n", n, type, (const void *) lists));
}
KEYWORD1 void KEYWORD2 NAME(DeleteLists)(GLuint list, GLsizei range)
{
+ (void) list; (void) range;
DISPATCH(DeleteLists, (list, range), (F, "glDeleteLists(%d, %d);\n", list, range));
}
KEYWORD1 GLuint KEYWORD2 NAME(GenLists)(GLsizei range)
{
+ (void) range;
RETURN_DISPATCH(GenLists, (range), (F, "glGenLists(%d);\n", range));
}
KEYWORD1 void KEYWORD2 NAME(ListBase)(GLuint base)
{
+ (void) base;
DISPATCH(ListBase, (base), (F, "glListBase(%d);\n", base));
}
KEYWORD1 void KEYWORD2 NAME(Begin)(GLenum mode)
{
+ (void) mode;
DISPATCH(Begin, (mode), (F, "glBegin(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap)
{
+ (void) width; (void) height; (void) xorig; (void) yorig; (void) xmove; (void) ymove; (void) bitmap;
DISPATCH(Bitmap, (width, height, xorig, yorig, xmove, ymove, bitmap), (F, "glBitmap(%d, %d, %f, %f, %f, %f, %p);\n", width, height, xorig, yorig, xmove, ymove, (const void *) bitmap));
}
KEYWORD1 void KEYWORD2 NAME(Color3b)(GLbyte red, GLbyte green, GLbyte blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3b, (red, green, blue), (F, "glColor3b(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3bv)(const GLbyte * v)
{
+ (void) v;
DISPATCH(Color3bv, (v), (F, "glColor3bv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color3d)(GLdouble red, GLdouble green, GLdouble blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3d, (red, green, blue), (F, "glColor3d(%f, %f, %f);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(Color3dv, (v), (F, "glColor3dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color3f)(GLfloat red, GLfloat green, GLfloat blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3f, (red, green, blue), (F, "glColor3f(%f, %f, %f);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(Color3fv, (v), (F, "glColor3fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color3i)(GLint red, GLint green, GLint blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3i, (red, green, blue), (F, "glColor3i(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3iv)(const GLint * v)
{
+ (void) v;
DISPATCH(Color3iv, (v), (F, "glColor3iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color3s)(GLshort red, GLshort green, GLshort blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3s, (red, green, blue), (F, "glColor3s(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(Color3sv, (v), (F, "glColor3sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color3ub)(GLubyte red, GLubyte green, GLubyte blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3ub, (red, green, blue), (F, "glColor3ub(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3ubv)(const GLubyte * v)
{
+ (void) v;
DISPATCH(Color3ubv, (v), (F, "glColor3ubv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color3ui)(GLuint red, GLuint green, GLuint blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3ui, (red, green, blue), (F, "glColor3ui(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3uiv)(const GLuint * v)
{
+ (void) v;
DISPATCH(Color3uiv, (v), (F, "glColor3uiv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color3us)(GLushort red, GLushort green, GLushort blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(Color3us, (red, green, blue), (F, "glColor3us(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(Color3usv)(const GLushort * v)
{
+ (void) v;
DISPATCH(Color3usv, (v), (F, "glColor3usv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4b, (red, green, blue, alpha), (F, "glColor4b(%d, %d, %d, %d);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4bv)(const GLbyte * v)
{
+ (void) v;
DISPATCH(Color4bv, (v), (F, "glColor4bv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4d, (red, green, blue, alpha), (F, "glColor4d(%f, %f, %f, %f);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(Color4dv, (v), (F, "glColor4dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4f, (red, green, blue, alpha), (F, "glColor4f(%f, %f, %f, %f);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(Color4fv, (v), (F, "glColor4fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4i)(GLint red, GLint green, GLint blue, GLint alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4i, (red, green, blue, alpha), (F, "glColor4i(%d, %d, %d, %d);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4iv)(const GLint * v)
{
+ (void) v;
DISPATCH(Color4iv, (v), (F, "glColor4iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4s, (red, green, blue, alpha), (F, "glColor4s(%d, %d, %d, %d);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(Color4sv, (v), (F, "glColor4sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4ub, (red, green, blue, alpha), (F, "glColor4ub(%d, %d, %d, %d);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4ubv)(const GLubyte * v)
{
+ (void) v;
DISPATCH(Color4ubv, (v), (F, "glColor4ubv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4ui, (red, green, blue, alpha), (F, "glColor4ui(%d, %d, %d, %d);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4uiv)(const GLuint * v)
{
+ (void) v;
DISPATCH(Color4uiv, (v), (F, "glColor4uiv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(Color4us, (red, green, blue, alpha), (F, "glColor4us(%d, %d, %d, %d);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(Color4usv)(const GLushort * v)
{
+ (void) v;
DISPATCH(Color4usv, (v), (F, "glColor4usv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(EdgeFlag)(GLboolean flag)
{
+ (void) flag;
DISPATCH(EdgeFlag, (flag), (F, "glEdgeFlag(%d);\n", flag));
}
KEYWORD1 void KEYWORD2 NAME(EdgeFlagv)(const GLboolean * flag)
{
+ (void) flag;
DISPATCH(EdgeFlagv, (flag), (F, "glEdgeFlagv(%p);\n", (const void *) flag));
}
@@ -304,766 +346,919 @@ KEYWORD1 void KEYWORD2 NAME(End)(void)
KEYWORD1 void KEYWORD2 NAME(Indexd)(GLdouble c)
{
+ (void) c;
DISPATCH(Indexd, (c), (F, "glIndexd(%f);\n", c));
}
KEYWORD1 void KEYWORD2 NAME(Indexdv)(const GLdouble * c)
{
+ (void) c;
DISPATCH(Indexdv, (c), (F, "glIndexdv(%p);\n", (const void *) c));
}
KEYWORD1 void KEYWORD2 NAME(Indexf)(GLfloat c)
{
+ (void) c;
DISPATCH(Indexf, (c), (F, "glIndexf(%f);\n", c));
}
KEYWORD1 void KEYWORD2 NAME(Indexfv)(const GLfloat * c)
{
+ (void) c;
DISPATCH(Indexfv, (c), (F, "glIndexfv(%p);\n", (const void *) c));
}
KEYWORD1 void KEYWORD2 NAME(Indexi)(GLint c)
{
+ (void) c;
DISPATCH(Indexi, (c), (F, "glIndexi(%d);\n", c));
}
KEYWORD1 void KEYWORD2 NAME(Indexiv)(const GLint * c)
{
+ (void) c;
DISPATCH(Indexiv, (c), (F, "glIndexiv(%p);\n", (const void *) c));
}
KEYWORD1 void KEYWORD2 NAME(Indexs)(GLshort c)
{
+ (void) c;
DISPATCH(Indexs, (c), (F, "glIndexs(%d);\n", c));
}
KEYWORD1 void KEYWORD2 NAME(Indexsv)(const GLshort * c)
{
+ (void) c;
DISPATCH(Indexsv, (c), (F, "glIndexsv(%p);\n", (const void *) c));
}
KEYWORD1 void KEYWORD2 NAME(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz)
{
+ (void) nx; (void) ny; (void) nz;
DISPATCH(Normal3b, (nx, ny, nz), (F, "glNormal3b(%d, %d, %d);\n", nx, ny, nz));
}
KEYWORD1 void KEYWORD2 NAME(Normal3bv)(const GLbyte * v)
{
+ (void) v;
DISPATCH(Normal3bv, (v), (F, "glNormal3bv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz)
{
+ (void) nx; (void) ny; (void) nz;
DISPATCH(Normal3d, (nx, ny, nz), (F, "glNormal3d(%f, %f, %f);\n", nx, ny, nz));
}
KEYWORD1 void KEYWORD2 NAME(Normal3dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(Normal3dv, (v), (F, "glNormal3dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz)
{
+ (void) nx; (void) ny; (void) nz;
DISPATCH(Normal3f, (nx, ny, nz), (F, "glNormal3f(%f, %f, %f);\n", nx, ny, nz));
}
KEYWORD1 void KEYWORD2 NAME(Normal3fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(Normal3fv, (v), (F, "glNormal3fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Normal3i)(GLint nx, GLint ny, GLint nz)
{
+ (void) nx; (void) ny; (void) nz;
DISPATCH(Normal3i, (nx, ny, nz), (F, "glNormal3i(%d, %d, %d);\n", nx, ny, nz));
}
KEYWORD1 void KEYWORD2 NAME(Normal3iv)(const GLint * v)
{
+ (void) v;
DISPATCH(Normal3iv, (v), (F, "glNormal3iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Normal3s)(GLshort nx, GLshort ny, GLshort nz)
{
+ (void) nx; (void) ny; (void) nz;
DISPATCH(Normal3s, (nx, ny, nz), (F, "glNormal3s(%d, %d, %d);\n", nx, ny, nz));
}
KEYWORD1 void KEYWORD2 NAME(Normal3sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(Normal3sv, (v), (F, "glNormal3sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2d)(GLdouble x, GLdouble y)
{
+ (void) x; (void) y;
DISPATCH(RasterPos2d, (x, y), (F, "glRasterPos2d(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(RasterPos2dv, (v), (F, "glRasterPos2dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2f)(GLfloat x, GLfloat y)
{
+ (void) x; (void) y;
DISPATCH(RasterPos2f, (x, y), (F, "glRasterPos2f(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(RasterPos2fv, (v), (F, "glRasterPos2fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2i)(GLint x, GLint y)
{
+ (void) x; (void) y;
DISPATCH(RasterPos2i, (x, y), (F, "glRasterPos2i(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2iv)(const GLint * v)
{
+ (void) v;
DISPATCH(RasterPos2iv, (v), (F, "glRasterPos2iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2s)(GLshort x, GLshort y)
{
+ (void) x; (void) y;
DISPATCH(RasterPos2s, (x, y), (F, "glRasterPos2s(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos2sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(RasterPos2sv, (v), (F, "glRasterPos2sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3d)(GLdouble x, GLdouble y, GLdouble z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(RasterPos3d, (x, y, z), (F, "glRasterPos3d(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(RasterPos3dv, (v), (F, "glRasterPos3dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3f)(GLfloat x, GLfloat y, GLfloat z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(RasterPos3f, (x, y, z), (F, "glRasterPos3f(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(RasterPos3fv, (v), (F, "glRasterPos3fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3i)(GLint x, GLint y, GLint z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(RasterPos3i, (x, y, z), (F, "glRasterPos3i(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3iv)(const GLint * v)
{
+ (void) v;
DISPATCH(RasterPos3iv, (v), (F, "glRasterPos3iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3s)(GLshort x, GLshort y, GLshort z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(RasterPos3s, (x, y, z), (F, "glRasterPos3s(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos3sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(RasterPos3sv, (v), (F, "glRasterPos3sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(RasterPos4d, (x, y, z, w), (F, "glRasterPos4d(%f, %f, %f, %f);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(RasterPos4dv, (v), (F, "glRasterPos4dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(RasterPos4f, (x, y, z, w), (F, "glRasterPos4f(%f, %f, %f, %f);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(RasterPos4fv, (v), (F, "glRasterPos4fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4i)(GLint x, GLint y, GLint z, GLint w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(RasterPos4i, (x, y, z, w), (F, "glRasterPos4i(%d, %d, %d, %d);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4iv)(const GLint * v)
{
+ (void) v;
DISPATCH(RasterPos4iv, (v), (F, "glRasterPos4iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(RasterPos4s, (x, y, z, w), (F, "glRasterPos4s(%d, %d, %d, %d);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(RasterPos4sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(RasterPos4sv, (v), (F, "glRasterPos4sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
{
+ (void) x1; (void) y1; (void) x2; (void) y2;
DISPATCH(Rectd, (x1, y1, x2, y2), (F, "glRectd(%f, %f, %f, %f);\n", x1, y1, x2, y2));
}
KEYWORD1 void KEYWORD2 NAME(Rectdv)(const GLdouble * v1, const GLdouble * v2)
{
+ (void) v1; (void) v2;
DISPATCH(Rectdv, (v1, v2), (F, "glRectdv(%p, %p);\n", (const void *) v1, (const void *) v2));
}
KEYWORD1 void KEYWORD2 NAME(Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
{
+ (void) x1; (void) y1; (void) x2; (void) y2;
DISPATCH(Rectf, (x1, y1, x2, y2), (F, "glRectf(%f, %f, %f, %f);\n", x1, y1, x2, y2));
}
KEYWORD1 void KEYWORD2 NAME(Rectfv)(const GLfloat * v1, const GLfloat * v2)
{
+ (void) v1; (void) v2;
DISPATCH(Rectfv, (v1, v2), (F, "glRectfv(%p, %p);\n", (const void *) v1, (const void *) v2));
}
KEYWORD1 void KEYWORD2 NAME(Recti)(GLint x1, GLint y1, GLint x2, GLint y2)
{
+ (void) x1; (void) y1; (void) x2; (void) y2;
DISPATCH(Recti, (x1, y1, x2, y2), (F, "glRecti(%d, %d, %d, %d);\n", x1, y1, x2, y2));
}
KEYWORD1 void KEYWORD2 NAME(Rectiv)(const GLint * v1, const GLint * v2)
{
+ (void) v1; (void) v2;
DISPATCH(Rectiv, (v1, v2), (F, "glRectiv(%p, %p);\n", (const void *) v1, (const void *) v2));
}
KEYWORD1 void KEYWORD2 NAME(Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
{
+ (void) x1; (void) y1; (void) x2; (void) y2;
DISPATCH(Rects, (x1, y1, x2, y2), (F, "glRects(%d, %d, %d, %d);\n", x1, y1, x2, y2));
}
KEYWORD1 void KEYWORD2 NAME(Rectsv)(const GLshort * v1, const GLshort * v2)
{
+ (void) v1; (void) v2;
DISPATCH(Rectsv, (v1, v2), (F, "glRectsv(%p, %p);\n", (const void *) v1, (const void *) v2));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1d)(GLdouble s)
{
+ (void) s;
DISPATCH(TexCoord1d, (s), (F, "glTexCoord1d(%f);\n", s));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(TexCoord1dv, (v), (F, "glTexCoord1dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1f)(GLfloat s)
{
+ (void) s;
DISPATCH(TexCoord1f, (s), (F, "glTexCoord1f(%f);\n", s));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(TexCoord1fv, (v), (F, "glTexCoord1fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1i)(GLint s)
{
+ (void) s;
DISPATCH(TexCoord1i, (s), (F, "glTexCoord1i(%d);\n", s));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1iv)(const GLint * v)
{
+ (void) v;
DISPATCH(TexCoord1iv, (v), (F, "glTexCoord1iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1s)(GLshort s)
{
+ (void) s;
DISPATCH(TexCoord1s, (s), (F, "glTexCoord1s(%d);\n", s));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord1sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(TexCoord1sv, (v), (F, "glTexCoord1sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2d)(GLdouble s, GLdouble t)
{
+ (void) s; (void) t;
DISPATCH(TexCoord2d, (s, t), (F, "glTexCoord2d(%f, %f);\n", s, t));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(TexCoord2dv, (v), (F, "glTexCoord2dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2f)(GLfloat s, GLfloat t)
{
+ (void) s; (void) t;
DISPATCH(TexCoord2f, (s, t), (F, "glTexCoord2f(%f, %f);\n", s, t));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(TexCoord2fv, (v), (F, "glTexCoord2fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2i)(GLint s, GLint t)
{
+ (void) s; (void) t;
DISPATCH(TexCoord2i, (s, t), (F, "glTexCoord2i(%d, %d);\n", s, t));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2iv)(const GLint * v)
{
+ (void) v;
DISPATCH(TexCoord2iv, (v), (F, "glTexCoord2iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2s)(GLshort s, GLshort t)
{
+ (void) s; (void) t;
DISPATCH(TexCoord2s, (s, t), (F, "glTexCoord2s(%d, %d);\n", s, t));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord2sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(TexCoord2sv, (v), (F, "glTexCoord2sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r)
{
+ (void) s; (void) t; (void) r;
DISPATCH(TexCoord3d, (s, t, r), (F, "glTexCoord3d(%f, %f, %f);\n", s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(TexCoord3dv, (v), (F, "glTexCoord3dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3f)(GLfloat s, GLfloat t, GLfloat r)
{
+ (void) s; (void) t; (void) r;
DISPATCH(TexCoord3f, (s, t, r), (F, "glTexCoord3f(%f, %f, %f);\n", s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(TexCoord3fv, (v), (F, "glTexCoord3fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3i)(GLint s, GLint t, GLint r)
{
+ (void) s; (void) t; (void) r;
DISPATCH(TexCoord3i, (s, t, r), (F, "glTexCoord3i(%d, %d, %d);\n", s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3iv)(const GLint * v)
{
+ (void) v;
DISPATCH(TexCoord3iv, (v), (F, "glTexCoord3iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3s)(GLshort s, GLshort t, GLshort r)
{
+ (void) s; (void) t; (void) r;
DISPATCH(TexCoord3s, (s, t, r), (F, "glTexCoord3s(%d, %d, %d);\n", s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord3sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(TexCoord3sv, (v), (F, "glTexCoord3sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
+ (void) s; (void) t; (void) r; (void) q;
DISPATCH(TexCoord4d, (s, t, r, q), (F, "glTexCoord4d(%f, %f, %f, %f);\n", s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(TexCoord4dv, (v), (F, "glTexCoord4dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
+ (void) s; (void) t; (void) r; (void) q;
DISPATCH(TexCoord4f, (s, t, r, q), (F, "glTexCoord4f(%f, %f, %f, %f);\n", s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(TexCoord4fv, (v), (F, "glTexCoord4fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4i)(GLint s, GLint t, GLint r, GLint q)
{
+ (void) s; (void) t; (void) r; (void) q;
DISPATCH(TexCoord4i, (s, t, r, q), (F, "glTexCoord4i(%d, %d, %d, %d);\n", s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4iv)(const GLint * v)
{
+ (void) v;
DISPATCH(TexCoord4iv, (v), (F, "glTexCoord4iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q)
{
+ (void) s; (void) t; (void) r; (void) q;
DISPATCH(TexCoord4s, (s, t, r, q), (F, "glTexCoord4s(%d, %d, %d, %d);\n", s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(TexCoord4sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(TexCoord4sv, (v), (F, "glTexCoord4sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2d)(GLdouble x, GLdouble y)
{
+ (void) x; (void) y;
DISPATCH(Vertex2d, (x, y), (F, "glVertex2d(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(Vertex2dv, (v), (F, "glVertex2dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2f)(GLfloat x, GLfloat y)
{
+ (void) x; (void) y;
DISPATCH(Vertex2f, (x, y), (F, "glVertex2f(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(Vertex2fv, (v), (F, "glVertex2fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2i)(GLint x, GLint y)
{
+ (void) x; (void) y;
DISPATCH(Vertex2i, (x, y), (F, "glVertex2i(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2iv)(const GLint * v)
{
+ (void) v;
DISPATCH(Vertex2iv, (v), (F, "glVertex2iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2s)(GLshort x, GLshort y)
{
+ (void) x; (void) y;
DISPATCH(Vertex2s, (x, y), (F, "glVertex2s(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(Vertex2sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(Vertex2sv, (v), (F, "glVertex2sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3d)(GLdouble x, GLdouble y, GLdouble z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Vertex3d, (x, y, z), (F, "glVertex3d(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(Vertex3dv, (v), (F, "glVertex3dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3f)(GLfloat x, GLfloat y, GLfloat z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Vertex3f, (x, y, z), (F, "glVertex3f(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(Vertex3fv, (v), (F, "glVertex3fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3i)(GLint x, GLint y, GLint z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Vertex3i, (x, y, z), (F, "glVertex3i(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3iv)(const GLint * v)
{
+ (void) v;
DISPATCH(Vertex3iv, (v), (F, "glVertex3iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3s)(GLshort x, GLshort y, GLshort z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Vertex3s, (x, y, z), (F, "glVertex3s(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Vertex3sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(Vertex3sv, (v), (F, "glVertex3sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(Vertex4d, (x, y, z, w), (F, "glVertex4d(%f, %f, %f, %f);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(Vertex4dv, (v), (F, "glVertex4dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(Vertex4f, (x, y, z, w), (F, "glVertex4f(%f, %f, %f, %f);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(Vertex4fv, (v), (F, "glVertex4fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4i)(GLint x, GLint y, GLint z, GLint w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(Vertex4i, (x, y, z, w), (F, "glVertex4i(%d, %d, %d, %d);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4iv)(const GLint * v)
{
+ (void) v;
DISPATCH(Vertex4iv, (v), (F, "glVertex4iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(Vertex4s, (x, y, z, w), (F, "glVertex4s(%d, %d, %d, %d);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(Vertex4sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(Vertex4sv, (v), (F, "glVertex4sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(ClipPlane)(GLenum plane, const GLdouble * equation)
{
+ (void) plane; (void) equation;
DISPATCH(ClipPlane, (plane, equation), (F, "glClipPlane(0x%x, %p);\n", plane, (const void *) equation));
}
KEYWORD1 void KEYWORD2 NAME(ColorMaterial)(GLenum face, GLenum mode)
{
+ (void) face; (void) mode;
DISPATCH(ColorMaterial, (face, mode), (F, "glColorMaterial(0x%x, 0x%x);\n", face, mode));
}
KEYWORD1 void KEYWORD2 NAME(CullFace)(GLenum mode)
{
+ (void) mode;
DISPATCH(CullFace, (mode), (F, "glCullFace(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(Fogf)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(Fogf, (pname, param), (F, "glFogf(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(Fogfv)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(Fogfv, (pname, params), (F, "glFogfv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(Fogi)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(Fogi, (pname, param), (F, "glFogi(0x%x, %d);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(Fogiv)(GLenum pname, const GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(Fogiv, (pname, params), (F, "glFogiv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(FrontFace)(GLenum mode)
{
+ (void) mode;
DISPATCH(FrontFace, (mode), (F, "glFrontFace(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(Hint)(GLenum target, GLenum mode)
{
+ (void) target; (void) mode;
DISPATCH(Hint, (target, mode), (F, "glHint(0x%x, 0x%x);\n", target, mode));
}
KEYWORD1 void KEYWORD2 NAME(Lightf)(GLenum light, GLenum pname, GLfloat param)
{
+ (void) light; (void) pname; (void) param;
DISPATCH(Lightf, (light, pname, param), (F, "glLightf(0x%x, 0x%x, %f);\n", light, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(Lightfv)(GLenum light, GLenum pname, const GLfloat * params)
{
+ (void) light; (void) pname; (void) params;
DISPATCH(Lightfv, (light, pname, params), (F, "glLightfv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(Lighti)(GLenum light, GLenum pname, GLint param)
{
+ (void) light; (void) pname; (void) param;
DISPATCH(Lighti, (light, pname, param), (F, "glLighti(0x%x, 0x%x, %d);\n", light, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(Lightiv)(GLenum light, GLenum pname, const GLint * params)
{
+ (void) light; (void) pname; (void) params;
DISPATCH(Lightiv, (light, pname, params), (F, "glLightiv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(LightModelf)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(LightModelf, (pname, param), (F, "glLightModelf(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(LightModelfv)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(LightModelfv, (pname, params), (F, "glLightModelfv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(LightModeli)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(LightModeli, (pname, param), (F, "glLightModeli(0x%x, %d);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(LightModeliv)(GLenum pname, const GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(LightModeliv, (pname, params), (F, "glLightModeliv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(LineStipple)(GLint factor, GLushort pattern)
{
+ (void) factor; (void) pattern;
DISPATCH(LineStipple, (factor, pattern), (F, "glLineStipple(%d, %d);\n", factor, pattern));
}
KEYWORD1 void KEYWORD2 NAME(LineWidth)(GLfloat width)
{
+ (void) width;
DISPATCH(LineWidth, (width), (F, "glLineWidth(%f);\n", width));
}
KEYWORD1 void KEYWORD2 NAME(Materialf)(GLenum face, GLenum pname, GLfloat param)
{
+ (void) face; (void) pname; (void) param;
DISPATCH(Materialf, (face, pname, param), (F, "glMaterialf(0x%x, 0x%x, %f);\n", face, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(Materialfv)(GLenum face, GLenum pname, const GLfloat * params)
{
+ (void) face; (void) pname; (void) params;
DISPATCH(Materialfv, (face, pname, params), (F, "glMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(Materiali)(GLenum face, GLenum pname, GLint param)
{
+ (void) face; (void) pname; (void) param;
DISPATCH(Materiali, (face, pname, param), (F, "glMateriali(0x%x, 0x%x, %d);\n", face, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(Materialiv)(GLenum face, GLenum pname, const GLint * params)
{
+ (void) face; (void) pname; (void) params;
DISPATCH(Materialiv, (face, pname, params), (F, "glMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(PointSize)(GLfloat size)
{
+ (void) size;
DISPATCH(PointSize, (size), (F, "glPointSize(%f);\n", size));
}
KEYWORD1 void KEYWORD2 NAME(PolygonMode)(GLenum face, GLenum mode)
{
+ (void) face; (void) mode;
DISPATCH(PolygonMode, (face, mode), (F, "glPolygonMode(0x%x, 0x%x);\n", face, mode));
}
KEYWORD1 void KEYWORD2 NAME(PolygonStipple)(const GLubyte * mask)
{
+ (void) mask;
DISPATCH(PolygonStipple, (mask), (F, "glPolygonStipple(%p);\n", (const void *) mask));
}
KEYWORD1 void KEYWORD2 NAME(Scissor)(GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) x; (void) y; (void) width; (void) height;
DISPATCH(Scissor, (x, y, width, height), (F, "glScissor(%d, %d, %d, %d);\n", x, y, width, height));
}
KEYWORD1 void KEYWORD2 NAME(ShadeModel)(GLenum mode)
{
+ (void) mode;
DISPATCH(ShadeModel, (mode), (F, "glShadeModel(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(TexParameterf)(GLenum target, GLenum pname, GLfloat param)
{
+ (void) target; (void) pname; (void) param;
DISPATCH(TexParameterf, (target, pname, param), (F, "glTexParameterf(0x%x, 0x%x, %f);\n", target, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexParameterfv, (target, pname, params), (F, "glTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexParameteri)(GLenum target, GLenum pname, GLint param)
{
+ (void) target; (void) pname; (void) param;
DISPATCH(TexParameteri, (target, pname, param), (F, "glTexParameteri(0x%x, 0x%x, %d);\n", target, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(TexParameteriv)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexParameteriv, (target, pname, params), (F, "glTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) border; (void) format; (void) type; (void) pixels;
DISPATCH(TexImage1D, (target, level, internalformat, width, border, format, type, pixels), (F, "glTexImage1D(0x%x, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, border, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) border; (void) format; (void) type; (void) pixels;
DISPATCH(TexImage2D, (target, level, internalformat, width, height, border, format, type, pixels), (F, "glTexImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, border, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexEnvf)(GLenum target, GLenum pname, GLfloat param)
{
+ (void) target; (void) pname; (void) param;
DISPATCH(TexEnvf, (target, pname, param), (F, "glTexEnvf(0x%x, 0x%x, %f);\n", target, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(TexEnvfv)(GLenum target, GLenum pname, const GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexEnvfv, (target, pname, params), (F, "glTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexEnvi)(GLenum target, GLenum pname, GLint param)
{
+ (void) target; (void) pname; (void) param;
DISPATCH(TexEnvi, (target, pname, param), (F, "glTexEnvi(0x%x, 0x%x, %d);\n", target, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(TexEnviv)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexEnviv, (target, pname, params), (F, "glTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexGend)(GLenum coord, GLenum pname, GLdouble param)
{
+ (void) coord; (void) pname; (void) param;
DISPATCH(TexGend, (coord, pname, param), (F, "glTexGend(0x%x, 0x%x, %f);\n", coord, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(TexGendv)(GLenum coord, GLenum pname, const GLdouble * params)
{
+ (void) coord; (void) pname; (void) params;
DISPATCH(TexGendv, (coord, pname, params), (F, "glTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexGenf)(GLenum coord, GLenum pname, GLfloat param)
{
+ (void) coord; (void) pname; (void) param;
DISPATCH(TexGenf, (coord, pname, param), (F, "glTexGenf(0x%x, 0x%x, %f);\n", coord, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(TexGenfv)(GLenum coord, GLenum pname, const GLfloat * params)
{
+ (void) coord; (void) pname; (void) params;
DISPATCH(TexGenfv, (coord, pname, params), (F, "glTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexGeni)(GLenum coord, GLenum pname, GLint param)
{
+ (void) coord; (void) pname; (void) param;
DISPATCH(TexGeni, (coord, pname, param), (F, "glTexGeni(0x%x, 0x%x, %d);\n", coord, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(TexGeniv)(GLenum coord, GLenum pname, const GLint * params)
{
+ (void) coord; (void) pname; (void) params;
DISPATCH(TexGeniv, (coord, pname, params), (F, "glTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(FeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer)
{
+ (void) size; (void) type; (void) buffer;
DISPATCH(FeedbackBuffer, (size, type, buffer), (F, "glFeedbackBuffer(%d, 0x%x, %p);\n", size, type, (const void *) buffer));
}
KEYWORD1 void KEYWORD2 NAME(SelectBuffer)(GLsizei size, GLuint * buffer)
{
+ (void) size; (void) buffer;
DISPATCH(SelectBuffer, (size, buffer), (F, "glSelectBuffer(%d, %p);\n", size, (const void *) buffer));
}
KEYWORD1 GLint KEYWORD2 NAME(RenderMode)(GLenum mode)
{
+ (void) mode;
RETURN_DISPATCH(RenderMode, (mode), (F, "glRenderMode(0x%x);\n", mode));
}
@@ -1074,11 +1269,13 @@ KEYWORD1 void KEYWORD2 NAME(InitNames)(void)
KEYWORD1 void KEYWORD2 NAME(LoadName)(GLuint name)
{
+ (void) name;
DISPATCH(LoadName, (name), (F, "glLoadName(%d);\n", name));
}
KEYWORD1 void KEYWORD2 NAME(PassThrough)(GLfloat token)
{
+ (void) token;
DISPATCH(PassThrough, (token), (F, "glPassThrough(%f);\n", token));
}
@@ -1089,76 +1286,91 @@ KEYWORD1 void KEYWORD2 NAME(PopName)(void)
KEYWORD1 void KEYWORD2 NAME(PushName)(GLuint name)
{
+ (void) name;
DISPATCH(PushName, (name), (F, "glPushName(%d);\n", name));
}
KEYWORD1 void KEYWORD2 NAME(DrawBuffer)(GLenum mode)
{
+ (void) mode;
DISPATCH(DrawBuffer, (mode), (F, "glDrawBuffer(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(Clear)(GLbitfield mask)
{
+ (void) mask;
DISPATCH(Clear, (mask), (F, "glClear(%d);\n", mask));
}
KEYWORD1 void KEYWORD2 NAME(ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(ClearAccum, (red, green, blue, alpha), (F, "glClearAccum(%f, %f, %f, %f);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(ClearIndex)(GLfloat c)
{
+ (void) c;
DISPATCH(ClearIndex, (c), (F, "glClearIndex(%f);\n", c));
}
KEYWORD1 void KEYWORD2 NAME(ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(ClearColor, (red, green, blue, alpha), (F, "glClearColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(ClearStencil)(GLint s)
{
+ (void) s;
DISPATCH(ClearStencil, (s), (F, "glClearStencil(%d);\n", s));
}
KEYWORD1 void KEYWORD2 NAME(ClearDepth)(GLclampd depth)
{
+ (void) depth;
DISPATCH(ClearDepth, (depth), (F, "glClearDepth(%f);\n", depth));
}
KEYWORD1 void KEYWORD2 NAME(StencilMask)(GLuint mask)
{
+ (void) mask;
DISPATCH(StencilMask, (mask), (F, "glStencilMask(%d);\n", mask));
}
KEYWORD1 void KEYWORD2 NAME(ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(ColorMask, (red, green, blue, alpha), (F, "glColorMask(%d, %d, %d, %d);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(DepthMask)(GLboolean flag)
{
+ (void) flag;
DISPATCH(DepthMask, (flag), (F, "glDepthMask(%d);\n", flag));
}
KEYWORD1 void KEYWORD2 NAME(IndexMask)(GLuint mask)
{
+ (void) mask;
DISPATCH(IndexMask, (mask), (F, "glIndexMask(%d);\n", mask));
}
KEYWORD1 void KEYWORD2 NAME(Accum)(GLenum op, GLfloat value)
{
+ (void) op; (void) value;
DISPATCH(Accum, (op, value), (F, "glAccum(0x%x, %f);\n", op, value));
}
KEYWORD1 void KEYWORD2 NAME(Disable)(GLenum cap)
{
+ (void) cap;
DISPATCH(Disable, (cap), (F, "glDisable(0x%x);\n", cap));
}
KEYWORD1 void KEYWORD2 NAME(Enable)(GLenum cap)
{
+ (void) cap;
DISPATCH(Enable, (cap), (F, "glEnable(0x%x);\n", cap));
}
@@ -1179,211 +1391,253 @@ KEYWORD1 void KEYWORD2 NAME(PopAttrib)(void)
KEYWORD1 void KEYWORD2 NAME(PushAttrib)(GLbitfield mask)
{
+ (void) mask;
DISPATCH(PushAttrib, (mask), (F, "glPushAttrib(%d);\n", mask));
}
KEYWORD1 void KEYWORD2 NAME(Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points)
{
+ (void) target; (void) u1; (void) u2; (void) stride; (void) order; (void) points;
DISPATCH(Map1d, (target, u1, u2, stride, order, points), (F, "glMap1d(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (const void *) points));
}
KEYWORD1 void KEYWORD2 NAME(Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points)
{
+ (void) target; (void) u1; (void) u2; (void) stride; (void) order; (void) points;
DISPATCH(Map1f, (target, u1, u2, stride, order, points), (F, "glMap1f(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (const void *) points));
}
KEYWORD1 void KEYWORD2 NAME(Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points)
{
+ (void) target; (void) u1; (void) u2; (void) ustride; (void) uorder; (void) v1; (void) v2; (void) vstride; (void) vorder; (void) points;
DISPATCH(Map2d, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2d(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (const void *) points));
}
KEYWORD1 void KEYWORD2 NAME(Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points)
{
+ (void) target; (void) u1; (void) u2; (void) ustride; (void) uorder; (void) v1; (void) v2; (void) vstride; (void) vorder; (void) points;
DISPATCH(Map2f, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2f(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (const void *) points));
}
KEYWORD1 void KEYWORD2 NAME(MapGrid1d)(GLint un, GLdouble u1, GLdouble u2)
{
+ (void) un; (void) u1; (void) u2;
DISPATCH(MapGrid1d, (un, u1, u2), (F, "glMapGrid1d(%d, %f, %f);\n", un, u1, u2));
}
KEYWORD1 void KEYWORD2 NAME(MapGrid1f)(GLint un, GLfloat u1, GLfloat u2)
{
+ (void) un; (void) u1; (void) u2;
DISPATCH(MapGrid1f, (un, u1, u2), (F, "glMapGrid1f(%d, %f, %f);\n", un, u1, u2));
}
KEYWORD1 void KEYWORD2 NAME(MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
{
+ (void) un; (void) u1; (void) u2; (void) vn; (void) v1; (void) v2;
DISPATCH(MapGrid2d, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2d(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
}
KEYWORD1 void KEYWORD2 NAME(MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
{
+ (void) un; (void) u1; (void) u2; (void) vn; (void) v1; (void) v2;
DISPATCH(MapGrid2f, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2f(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord1d)(GLdouble u)
{
+ (void) u;
DISPATCH(EvalCoord1d, (u), (F, "glEvalCoord1d(%f);\n", u));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord1dv)(const GLdouble * u)
{
+ (void) u;
DISPATCH(EvalCoord1dv, (u), (F, "glEvalCoord1dv(%p);\n", (const void *) u));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord1f)(GLfloat u)
{
+ (void) u;
DISPATCH(EvalCoord1f, (u), (F, "glEvalCoord1f(%f);\n", u));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord1fv)(const GLfloat * u)
{
+ (void) u;
DISPATCH(EvalCoord1fv, (u), (F, "glEvalCoord1fv(%p);\n", (const void *) u));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord2d)(GLdouble u, GLdouble v)
{
+ (void) u; (void) v;
DISPATCH(EvalCoord2d, (u, v), (F, "glEvalCoord2d(%f, %f);\n", u, v));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord2dv)(const GLdouble * u)
{
+ (void) u;
DISPATCH(EvalCoord2dv, (u), (F, "glEvalCoord2dv(%p);\n", (const void *) u));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord2f)(GLfloat u, GLfloat v)
{
+ (void) u; (void) v;
DISPATCH(EvalCoord2f, (u, v), (F, "glEvalCoord2f(%f, %f);\n", u, v));
}
KEYWORD1 void KEYWORD2 NAME(EvalCoord2fv)(const GLfloat * u)
{
+ (void) u;
DISPATCH(EvalCoord2fv, (u), (F, "glEvalCoord2fv(%p);\n", (const void *) u));
}
KEYWORD1 void KEYWORD2 NAME(EvalMesh1)(GLenum mode, GLint i1, GLint i2)
{
+ (void) mode; (void) i1; (void) i2;
DISPATCH(EvalMesh1, (mode, i1, i2), (F, "glEvalMesh1(0x%x, %d, %d);\n", mode, i1, i2));
}
KEYWORD1 void KEYWORD2 NAME(EvalPoint1)(GLint i)
{
+ (void) i;
DISPATCH(EvalPoint1, (i), (F, "glEvalPoint1(%d);\n", i));
}
KEYWORD1 void KEYWORD2 NAME(EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
{
+ (void) mode; (void) i1; (void) i2; (void) j1; (void) j2;
DISPATCH(EvalMesh2, (mode, i1, i2, j1, j2), (F, "glEvalMesh2(0x%x, %d, %d, %d, %d);\n", mode, i1, i2, j1, j2));
}
KEYWORD1 void KEYWORD2 NAME(EvalPoint2)(GLint i, GLint j)
{
+ (void) i; (void) j;
DISPATCH(EvalPoint2, (i, j), (F, "glEvalPoint2(%d, %d);\n", i, j));
}
KEYWORD1 void KEYWORD2 NAME(AlphaFunc)(GLenum func, GLclampf ref)
{
+ (void) func; (void) ref;
DISPATCH(AlphaFunc, (func, ref), (F, "glAlphaFunc(0x%x, %f);\n", func, ref));
}
KEYWORD1 void KEYWORD2 NAME(BlendFunc)(GLenum sfactor, GLenum dfactor)
{
+ (void) sfactor; (void) dfactor;
DISPATCH(BlendFunc, (sfactor, dfactor), (F, "glBlendFunc(0x%x, 0x%x);\n", sfactor, dfactor));
}
KEYWORD1 void KEYWORD2 NAME(LogicOp)(GLenum opcode)
{
+ (void) opcode;
DISPATCH(LogicOp, (opcode), (F, "glLogicOp(0x%x);\n", opcode));
}
KEYWORD1 void KEYWORD2 NAME(StencilFunc)(GLenum func, GLint ref, GLuint mask)
{
+ (void) func; (void) ref; (void) mask;
DISPATCH(StencilFunc, (func, ref, mask), (F, "glStencilFunc(0x%x, %d, %d);\n", func, ref, mask));
}
KEYWORD1 void KEYWORD2 NAME(StencilOp)(GLenum fail, GLenum zfail, GLenum zpass)
{
+ (void) fail; (void) zfail; (void) zpass;
DISPATCH(StencilOp, (fail, zfail, zpass), (F, "glStencilOp(0x%x, 0x%x, 0x%x);\n", fail, zfail, zpass));
}
KEYWORD1 void KEYWORD2 NAME(DepthFunc)(GLenum func)
{
+ (void) func;
DISPATCH(DepthFunc, (func), (F, "glDepthFunc(0x%x);\n", func));
}
KEYWORD1 void KEYWORD2 NAME(PixelZoom)(GLfloat xfactor, GLfloat yfactor)
{
+ (void) xfactor; (void) yfactor;
DISPATCH(PixelZoom, (xfactor, yfactor), (F, "glPixelZoom(%f, %f);\n", xfactor, yfactor));
}
KEYWORD1 void KEYWORD2 NAME(PixelTransferf)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(PixelTransferf, (pname, param), (F, "glPixelTransferf(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PixelTransferi)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(PixelTransferi, (pname, param), (F, "glPixelTransferi(0x%x, %d);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PixelStoref)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(PixelStoref, (pname, param), (F, "glPixelStoref(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PixelStorei)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(PixelStorei, (pname, param), (F, "glPixelStorei(0x%x, %d);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values)
{
+ (void) map; (void) mapsize; (void) values;
DISPATCH(PixelMapfv, (map, mapsize, values), (F, "glPixelMapfv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values)
{
+ (void) map; (void) mapsize; (void) values;
DISPATCH(PixelMapuiv, (map, mapsize, values), (F, "glPixelMapuiv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values)
{
+ (void) map; (void) mapsize; (void) values;
DISPATCH(PixelMapusv, (map, mapsize, values), (F, "glPixelMapusv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(ReadBuffer)(GLenum mode)
{
+ (void) mode;
DISPATCH(ReadBuffer, (mode), (F, "glReadBuffer(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
{
+ (void) x; (void) y; (void) width; (void) height; (void) type;
DISPATCH(CopyPixels, (x, y, width, height, type), (F, "glCopyPixels(%d, %d, %d, %d, 0x%x);\n", x, y, width, height, type));
}
KEYWORD1 void KEYWORD2 NAME(ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels)
{
+ (void) x; (void) y; (void) width; (void) height; (void) format; (void) type; (void) pixels;
DISPATCH(ReadPixels, (x, y, width, height, format, type, pixels), (F, "glReadPixels(%d, %d, %d, %d, 0x%x, 0x%x, %p);\n", x, y, width, height, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) width; (void) height; (void) format; (void) type; (void) pixels;
DISPATCH(DrawPixels, (width, height, format, type, pixels), (F, "glDrawPixels(%d, %d, 0x%x, 0x%x, %p);\n", width, height, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(GetBooleanv)(GLenum pname, GLboolean * params)
{
+ (void) pname; (void) params;
DISPATCH(GetBooleanv, (pname, params), (F, "glGetBooleanv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetClipPlane)(GLenum plane, GLdouble * equation)
{
+ (void) plane; (void) equation;
DISPATCH(GetClipPlane, (plane, equation), (F, "glGetClipPlane(0x%x, %p);\n", plane, (const void *) equation));
}
KEYWORD1 void KEYWORD2 NAME(GetDoublev)(GLenum pname, GLdouble * params)
{
+ (void) pname; (void) params;
DISPATCH(GetDoublev, (pname, params), (F, "glGetDoublev(0x%x, %p);\n", pname, (const void *) params));
}
@@ -1394,141 +1648,169 @@ KEYWORD1 GLenum KEYWORD2 NAME(GetError)(void)
KEYWORD1 void KEYWORD2 NAME(GetFloatv)(GLenum pname, GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(GetFloatv, (pname, params), (F, "glGetFloatv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetIntegerv)(GLenum pname, GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(GetIntegerv, (pname, params), (F, "glGetIntegerv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetLightfv)(GLenum light, GLenum pname, GLfloat * params)
{
+ (void) light; (void) pname; (void) params;
DISPATCH(GetLightfv, (light, pname, params), (F, "glGetLightfv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetLightiv)(GLenum light, GLenum pname, GLint * params)
{
+ (void) light; (void) pname; (void) params;
DISPATCH(GetLightiv, (light, pname, params), (F, "glGetLightiv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetMapdv)(GLenum target, GLenum query, GLdouble * v)
{
+ (void) target; (void) query; (void) v;
DISPATCH(GetMapdv, (target, query, v), (F, "glGetMapdv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(GetMapfv)(GLenum target, GLenum query, GLfloat * v)
{
+ (void) target; (void) query; (void) v;
DISPATCH(GetMapfv, (target, query, v), (F, "glGetMapfv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(GetMapiv)(GLenum target, GLenum query, GLint * v)
{
+ (void) target; (void) query; (void) v;
DISPATCH(GetMapiv, (target, query, v), (F, "glGetMapiv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(GetMaterialfv)(GLenum face, GLenum pname, GLfloat * params)
{
+ (void) face; (void) pname; (void) params;
DISPATCH(GetMaterialfv, (face, pname, params), (F, "glGetMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetMaterialiv)(GLenum face, GLenum pname, GLint * params)
{
+ (void) face; (void) pname; (void) params;
DISPATCH(GetMaterialiv, (face, pname, params), (F, "glGetMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetPixelMapfv)(GLenum map, GLfloat * values)
{
+ (void) map; (void) values;
DISPATCH(GetPixelMapfv, (map, values), (F, "glGetPixelMapfv(0x%x, %p);\n", map, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetPixelMapuiv)(GLenum map, GLuint * values)
{
+ (void) map; (void) values;
DISPATCH(GetPixelMapuiv, (map, values), (F, "glGetPixelMapuiv(0x%x, %p);\n", map, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetPixelMapusv)(GLenum map, GLushort * values)
{
+ (void) map; (void) values;
DISPATCH(GetPixelMapusv, (map, values), (F, "glGetPixelMapusv(0x%x, %p);\n", map, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetPolygonStipple)(GLubyte * mask)
{
+ (void) mask;
DISPATCH(GetPolygonStipple, (mask), (F, "glGetPolygonStipple(%p);\n", (const void *) mask));
}
KEYWORD1 const GLubyte * KEYWORD2 NAME(GetString)(GLenum name)
{
+ (void) name;
RETURN_DISPATCH(GetString, (name), (F, "glGetString(0x%x);\n", name));
}
KEYWORD1 void KEYWORD2 NAME(GetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexEnvfv, (target, pname, params), (F, "glGetTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexEnviv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexEnviv, (target, pname, params), (F, "glGetTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexGendv)(GLenum coord, GLenum pname, GLdouble * params)
{
+ (void) coord; (void) pname; (void) params;
DISPATCH(GetTexGendv, (coord, pname, params), (F, "glGetTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params)
{
+ (void) coord; (void) pname; (void) params;
DISPATCH(GetTexGenfv, (coord, pname, params), (F, "glGetTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexGeniv)(GLenum coord, GLenum pname, GLint * params)
{
+ (void) coord; (void) pname; (void) params;
DISPATCH(GetTexGeniv, (coord, pname, params), (F, "glGetTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels)
{
+ (void) target; (void) level; (void) format; (void) type; (void) pixels;
DISPATCH(GetTexImage, (target, level, format, type, pixels), (F, "glGetTexImage(0x%x, %d, 0x%x, 0x%x, %p);\n", target, level, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexParameterfv, (target, pname, params), (F, "glGetTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexParameteriv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexParameteriv, (target, pname, params), (F, "glGetTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params)
{
+ (void) target; (void) level; (void) pname; (void) params;
DISPATCH(GetTexLevelParameterfv, (target, level, pname, params), (F, "glGetTexLevelParameterfv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params)
{
+ (void) target; (void) level; (void) pname; (void) params;
DISPATCH(GetTexLevelParameteriv, (target, level, pname, params), (F, "glGetTexLevelParameteriv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (const void *) params));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabled)(GLenum cap)
{
+ (void) cap;
RETURN_DISPATCH(IsEnabled, (cap), (F, "glIsEnabled(0x%x);\n", cap));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsList)(GLuint list)
{
+ (void) list;
RETURN_DISPATCH(IsList, (list), (F, "glIsList(%d);\n", list));
}
KEYWORD1 void KEYWORD2 NAME(DepthRange)(GLclampd zNear, GLclampd zFar)
{
+ (void) zNear; (void) zFar;
DISPATCH(DepthRange, (zNear, zFar), (F, "glDepthRange(%f, %f);\n", zNear, zFar));
}
KEYWORD1 void KEYWORD2 NAME(Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
+ (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
DISPATCH(Frustum, (left, right, bottom, top, zNear, zFar), (F, "glFrustum(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
}
@@ -1539,31 +1821,37 @@ KEYWORD1 void KEYWORD2 NAME(LoadIdentity)(void)
KEYWORD1 void KEYWORD2 NAME(LoadMatrixf)(const GLfloat * m)
{
+ (void) m;
DISPATCH(LoadMatrixf, (m), (F, "glLoadMatrixf(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(LoadMatrixd)(const GLdouble * m)
{
+ (void) m;
DISPATCH(LoadMatrixd, (m), (F, "glLoadMatrixd(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(MatrixMode)(GLenum mode)
{
+ (void) mode;
DISPATCH(MatrixMode, (mode), (F, "glMatrixMode(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(MultMatrixf)(const GLfloat * m)
{
+ (void) m;
DISPATCH(MultMatrixf, (m), (F, "glMultMatrixf(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(MultMatrixd)(const GLdouble * m)
{
+ (void) m;
DISPATCH(MultMatrixd, (m), (F, "glMultMatrixd(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
{
+ (void) left; (void) right; (void) bottom; (void) top; (void) zNear; (void) zFar;
DISPATCH(Ortho, (left, right, bottom, top, zNear, zFar), (F, "glOrtho(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
}
@@ -1579,231 +1867,277 @@ KEYWORD1 void KEYWORD2 NAME(PushMatrix)(void)
KEYWORD1 void KEYWORD2 NAME(Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
{
+ (void) angle; (void) x; (void) y; (void) z;
DISPATCH(Rotated, (angle, x, y, z), (F, "glRotated(%f, %f, %f, %f);\n", angle, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
{
+ (void) angle; (void) x; (void) y; (void) z;
DISPATCH(Rotatef, (angle, x, y, z), (F, "glRotatef(%f, %f, %f, %f);\n", angle, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Scaled)(GLdouble x, GLdouble y, GLdouble z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Scaled, (x, y, z), (F, "glScaled(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Scalef)(GLfloat x, GLfloat y, GLfloat z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Scalef, (x, y, z), (F, "glScalef(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Translated)(GLdouble x, GLdouble y, GLdouble z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Translated, (x, y, z), (F, "glTranslated(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Translatef)(GLfloat x, GLfloat y, GLfloat z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(Translatef, (x, y, z), (F, "glTranslatef(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Viewport)(GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) x; (void) y; (void) width; (void) height;
DISPATCH(Viewport, (x, y, width, height), (F, "glViewport(%d, %d, %d, %d);\n", x, y, width, height));
}
KEYWORD1 void KEYWORD2 NAME(ArrayElement)(GLint i)
{
+ (void) i;
DISPATCH(ArrayElement, (i), (F, "glArrayElement(%d);\n", i));
}
KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i)
{
+ (void) i;
DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i));
}
KEYWORD1 void KEYWORD2 NAME(BindTexture)(GLenum target, GLuint texture)
{
+ (void) target; (void) texture;
DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);\n", target, texture));
}
KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture)
{
+ (void) target; (void) texture;
DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture));
}
KEYWORD1 void KEYWORD2 NAME(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(ColorPointer, (size, type, stride, pointer), (F, "glColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(DisableClientState)(GLenum array)
{
+ (void) array;
DISPATCH(DisableClientState, (array), (F, "glDisableClientState(0x%x);\n", array));
}
KEYWORD1 void KEYWORD2 NAME(DrawArrays)(GLenum mode, GLint first, GLsizei count)
{
+ (void) mode; (void) first; (void) count;
DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArrays(0x%x, %d, %d);\n", mode, first, count));
}
KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count)
{
+ (void) mode; (void) first; (void) count;
DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %d);\n", mode, first, count));
}
KEYWORD1 void KEYWORD2 NAME(DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices)
{
+ (void) mode; (void) count; (void) type; (void) indices;
DISPATCH(DrawElements, (mode, count, type, indices), (F, "glDrawElements(0x%x, %d, 0x%x, %p);\n", mode, count, type, (const void *) indices));
}
KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointer)(GLsizei stride, const GLvoid * pointer)
{
+ (void) stride; (void) pointer;
DISPATCH(EdgeFlagPointer, (stride, pointer), (F, "glEdgeFlagPointer(%d, %p);\n", stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(EnableClientState)(GLenum array)
{
+ (void) array;
DISPATCH(EnableClientState, (array), (F, "glEnableClientState(0x%x);\n", array));
}
KEYWORD1 void KEYWORD2 NAME(IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) type; (void) stride; (void) pointer;
DISPATCH(IndexPointer, (type, stride, pointer), (F, "glIndexPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(Indexub)(GLubyte c)
{
+ (void) c;
DISPATCH(Indexub, (c), (F, "glIndexub(%d);\n", c));
}
KEYWORD1 void KEYWORD2 NAME(Indexubv)(const GLubyte * c)
{
+ (void) c;
DISPATCH(Indexubv, (c), (F, "glIndexubv(%p);\n", (const void *) c));
}
KEYWORD1 void KEYWORD2 NAME(InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer)
{
+ (void) format; (void) stride; (void) pointer;
DISPATCH(InterleavedArrays, (format, stride, pointer), (F, "glInterleavedArrays(0x%x, %d, %p);\n", format, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(NormalPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) type; (void) stride; (void) pointer;
DISPATCH(NormalPointer, (type, stride, pointer), (F, "glNormalPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(PolygonOffset)(GLfloat factor, GLfloat units)
{
+ (void) factor; (void) units;
DISPATCH(PolygonOffset, (factor, units), (F, "glPolygonOffset(%f, %f);\n", factor, units));
}
KEYWORD1 void KEYWORD2 NAME(TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(TexCoordPointer, (size, type, stride, pointer), (F, "glTexCoordPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(VertexPointer, (size, type, stride, pointer), (F, "glVertexPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
}
KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences)
{
+ (void) n; (void) textures; (void) residences;
RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResident(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
+ (void) target; (void) level; (void) internalformat; (void) x; (void) y; (void) width; (void) border;
DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
{
+ (void) target; (void) level; (void) internalformat; (void) x; (void) y; (void) width; (void) border;
DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
+ (void) target; (void) level; (void) internalformat; (void) x; (void) y; (void) width; (void) height; (void) border;
DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
{
+ (void) target; (void) level; (void) internalformat; (void) x; (void) y; (void) width; (void) height; (void) border;
DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) level; (void) xoffset; (void) x; (void) y; (void) width;
DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1D(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) level; (void) xoffset; (void) x; (void) y; (void) width;
DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) x; (void) y; (void) width; (void) height;
DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2D(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) x; (void) y; (void) width; (void) height;
DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
}
KEYWORD1 void KEYWORD2 NAME(DeleteTextures)(GLsizei n, const GLuint * textures)
{
+ (void) n; (void) textures;
DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTextures(%d, %p);\n", n, (const void *) textures));
}
KEYWORD1 void KEYWORD2 NAME(GenTextures)(GLsizei n, GLuint * textures)
{
+ (void) n; (void) textures;
DISPATCH(GenTextures, (n, textures), (F, "glGenTextures(%d, %p);\n", n, (const void *) textures));
}
KEYWORD1 void KEYWORD2 NAME(GetPointerv)(GLenum pname, GLvoid ** params)
{
+ (void) pname; (void) params;
DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params)
{
+ (void) pname; (void) params;
DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsTexture)(GLuint texture)
{
+ (void) texture;
RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTexture(%d);\n", texture));
}
KEYWORD1 void KEYWORD2 NAME(PrioritizeTextures)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
{
+ (void) n; (void) textures; (void) priorities;
DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTextures(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
}
KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
{
+ (void) n; (void) textures; (void) priorities;
DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
}
KEYWORD1 void KEYWORD2 NAME(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) xoffset; (void) width; (void) format; (void) type; (void) pixels;
DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1D(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) xoffset; (void) width; (void) format; (void) type; (void) pixels;
DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1DEXT(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) width; (void) height; (void) format; (void) type; (void) pixels;
DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) width; (void) height; (void) format; (void) type; (void) pixels;
DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
}
@@ -1814,46 +2148,55 @@ KEYWORD1 void KEYWORD2 NAME(PopClientAttrib)(void)
KEYWORD1 void KEYWORD2 NAME(PushClientAttrib)(GLbitfield mask)
{
+ (void) mask;
DISPATCH(PushClientAttrib, (mask), (F, "glPushClientAttrib(%d);\n", mask));
}
KEYWORD1 void KEYWORD2 NAME(BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
{
+ (void) red; (void) green; (void) blue; (void) alpha;
DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha));
}
KEYWORD1 void KEYWORD2 NAME(BlendEquation)(GLenum mode)
{
+ (void) mode;
DISPATCH(BlendEquation, (mode), (F, "glBlendEquation(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode)
{
+ (void) mode;
DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
{
+ (void) mode; (void) start; (void) end; (void) count; (void) type; (void) indices;
DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElements(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
}
KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
{
+ (void) mode; (void) start; (void) end; (void) count; (void) type; (void) indices;
DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElementsEXT(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
}
KEYWORD1 void KEYWORD2 NAME(ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
{
+ (void) target; (void) internalformat; (void) width; (void) format; (void) type; (void) table;
DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTable(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
}
KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
{
+ (void) target; (void) internalformat; (void) width; (void) format; (void) type; (void) table;
DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
}
@@ -1861,11 +2204,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_339)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_339)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
{
+ (void) target; (void) internalformat; (void) width; (void) format; (void) type; (void) table;
DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableSGI(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
}
KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -1873,11 +2218,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_340)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_340)(GLenum target, GLenum pname, const GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -1885,11 +2232,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_341)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_341)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) internalformat; (void) x; (void) y; (void) width;
DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTable(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
}
@@ -1897,26 +2246,31 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_342)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_342)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) internalformat; (void) x; (void) y; (void) width;
DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
}
KEYWORD1 void KEYWORD2 NAME(GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table)
{
+ (void) target; (void) format; (void) type; (void) table;
DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTable(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
}
KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
{
+ (void) target; (void) start; (void) count; (void) format; (void) type; (void) data;
DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTable(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
}
@@ -1924,11 +2278,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_346)(GLenum target, GLsizei start
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_346)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
{
+ (void) target; (void) start; (void) count; (void) format; (void) type; (void) data;
DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTableEXT(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) start; (void) x; (void) y; (void) width;
DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTable(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
}
@@ -1936,11 +2292,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_347)(GLenum target, GLsizei start
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_347)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) start; (void) x; (void) y; (void) width;
DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
}
KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
{
+ (void) target; (void) internalformat; (void) width; (void) format; (void) type; (void) image;
DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1D(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
}
@@ -1948,11 +2306,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_348)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_348)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
{
+ (void) target; (void) internalformat; (void) width; (void) format; (void) type; (void) image;
DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1DEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
}
KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
{
+ (void) target; (void) internalformat; (void) width; (void) height; (void) format; (void) type; (void) image;
DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
}
@@ -1960,11 +2320,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_349)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_349)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
{
+ (void) target; (void) internalformat; (void) width; (void) height; (void) format; (void) type; (void) image;
DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
}
KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterf(0x%x, 0x%x, %f);\n", target, pname, params));
}
@@ -1972,11 +2334,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_350)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_350)(GLenum target, GLenum pname, GLfloat params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params));
}
KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -1984,11 +2348,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_351)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_351)(GLenum target, GLenum pname, const GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteri)(GLenum target, GLenum pname, GLint params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteri(0x%x, 0x%x, %d);\n", target, pname, params));
}
@@ -1996,11 +2362,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_352)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_352)(GLenum target, GLenum pname, GLint params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params));
}
KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -2008,11 +2376,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_353)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_353)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) internalformat; (void) x; (void) y; (void) width;
DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1D(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
}
@@ -2020,11 +2390,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_354)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_354)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
{
+ (void) target; (void) internalformat; (void) x; (void) y; (void) width;
DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
}
KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) target; (void) internalformat; (void) x; (void) y; (void) width; (void) height;
DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2D(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
}
@@ -2032,31 +2404,37 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_355)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_355)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) target; (void) internalformat; (void) x; (void) y; (void) width; (void) height;
DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
}
KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image)
{
+ (void) target; (void) format; (void) type; (void) image;
DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilter(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image));
}
KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
{
+ (void) target; (void) format; (void) type; (void) row; (void) column; (void) span;
DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilter(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (const void *) row, (const void *) column, (const void *) span));
}
KEYWORD1 void KEYWORD2 NAME(SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
{
+ (void) target; (void) internalformat; (void) width; (void) height; (void) format; (void) type; (void) row; (void) column;
DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
}
@@ -2064,41 +2442,49 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_360)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_360)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
{
+ (void) target; (void) internalformat; (void) width; (void) height; (void) format; (void) type; (void) row; (void) column;
DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
}
KEYWORD1 void KEYWORD2 NAME(GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
{
+ (void) target; (void) reset; (void) format; (void) type; (void) values;
DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogram(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
{
+ (void) target; (void) reset; (void) format; (void) type; (void) values;
DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmax(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
{
+ (void) target; (void) width; (void) internalformat; (void) sink;
DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogram(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
}
@@ -2106,11 +2492,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_367)(GLenum target, GLsizei width
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_367)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
{
+ (void) target; (void) width; (void) internalformat; (void) sink;
DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
}
KEYWORD1 void KEYWORD2 NAME(Minmax)(GLenum target, GLenum internalformat, GLboolean sink)
{
+ (void) target; (void) internalformat; (void) sink;
DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmax(0x%x, 0x%x, %d);\n", target, internalformat, sink));
}
@@ -2118,11 +2506,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_368)(GLenum target, GLenum intern
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_368)(GLenum target, GLenum internalformat, GLboolean sink)
{
+ (void) target; (void) internalformat; (void) sink;
DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink));
}
KEYWORD1 void KEYWORD2 NAME(ResetHistogram)(GLenum target)
{
+ (void) target;
DISPATCH(ResetHistogram, (target), (F, "glResetHistogram(0x%x);\n", target));
}
@@ -2130,11 +2520,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_369)(GLenum target);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_369)(GLenum target)
{
+ (void) target;
DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(ResetMinmax)(GLenum target)
{
+ (void) target;
DISPATCH(ResetMinmax, (target), (F, "glResetMinmax(0x%x);\n", target));
}
@@ -2142,381 +2534,457 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_370)(GLenum target);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_370)(GLenum target)
{
+ (void) target;
DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) depth; (void) border; (void) format; (void) type; (void) pixels;
DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) depth; (void) border; (void) format; (void) type; (void) pixels;
DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) width; (void) height; (void) depth; (void) format; (void) type; (void) pixels;
DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) width; (void) height; (void) depth; (void) format; (void) type; (void) pixels;
DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) x; (void) y; (void) width; (void) height;
DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
}
KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) x; (void) y; (void) width; (void) height;
DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
}
KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture)
{
+ (void) texture;
DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture));
}
KEYWORD1 void KEYWORD2 NAME(ActiveTextureARB)(GLenum texture)
{
+ (void) texture;
DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTextureARB(0x%x);\n", texture));
}
KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture)
{
+ (void) texture;
DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture));
}
KEYWORD1 void KEYWORD2 NAME(ClientActiveTextureARB)(GLenum texture)
{
+ (void) texture;
DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTextureARB(0x%x);\n", texture));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dARB)(GLenum target, GLdouble s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1dARB(0x%x, %f);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dvARB)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fARB)(GLenum target, GLfloat s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1fARB(0x%x, %f);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iARB)(GLenum target, GLint s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1iARB(0x%x, %d);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1ivARB)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1ivARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sARB)(GLenum target, GLshort s)
{
+ (void) target; (void) s;
DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1sARB(0x%x, %d);\n", target, s));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1svARB)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1svARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2dARB(0x%x, %f, %f);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dvARB)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2fARB(0x%x, %f, %f);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2iARB(0x%x, %d, %d);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2ivARB)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2ivARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t)
{
+ (void) target; (void) s; (void) t;
DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2sARB(0x%x, %d, %d);\n", target, s, t));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2svARB)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2svARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3dARB(0x%x, %f, %f, %f);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dvARB)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3fARB(0x%x, %f, %f, %f);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3iARB(0x%x, %d, %d, %d);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3ivARB)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3ivARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r)
{
+ (void) target; (void) s; (void) t; (void) r;
DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3sARB(0x%x, %d, %d, %d);\n", target, s, t, r));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3svARB)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3svARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4dARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dvARB)(GLenum target, const GLdouble * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4fARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4iARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4ivARB)(GLenum target, const GLint * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4ivARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
{
+ (void) target; (void) s; (void) t; (void) r; (void) q;
DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4sARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sv)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4svARB)(GLenum target, const GLshort * v)
{
+ (void) target; (void) v;
DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4svARB(0x%x, %p);\n", target, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(AttachShader)(GLuint program, GLuint shader)
{
+ (void) program; (void) shader;
DISPATCH(AttachShader, (program, shader), (F, "glAttachShader(%d, %d);\n", program, shader));
}
@@ -2527,71 +2995,85 @@ KEYWORD1 GLuint KEYWORD2 NAME(CreateProgram)(void)
KEYWORD1 GLuint KEYWORD2 NAME(CreateShader)(GLenum type)
{
+ (void) type;
RETURN_DISPATCH(CreateShader, (type), (F, "glCreateShader(0x%x);\n", type));
}
KEYWORD1 void KEYWORD2 NAME(DeleteProgram)(GLuint program)
{
+ (void) program;
DISPATCH(DeleteProgram, (program), (F, "glDeleteProgram(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(DeleteShader)(GLuint program)
{
+ (void) program;
DISPATCH(DeleteShader, (program), (F, "glDeleteShader(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(DetachShader)(GLuint program, GLuint shader)
{
+ (void) program; (void) shader;
DISPATCH(DetachShader, (program, shader), (F, "glDetachShader(%d, %d);\n", program, shader));
}
KEYWORD1 void KEYWORD2 NAME(GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj)
{
+ (void) program; (void) maxCount; (void) count; (void) obj;
DISPATCH(GetAttachedShaders, (program, maxCount, count, obj), (F, "glGetAttachedShaders(%d, %d, %p, %p);\n", program, maxCount, (const void *) count, (const void *) obj));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)
{
+ (void) program; (void) bufSize; (void) length; (void) infoLog;
DISPATCH(GetProgramInfoLog, (program, bufSize, length, infoLog), (F, "glGetProgramInfoLog(%d, %d, %p, %p);\n", program, bufSize, (const void *) length, (const void *) infoLog));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramiv)(GLuint program, GLenum pname, GLint * params)
{
+ (void) program; (void) pname; (void) params;
DISPATCH(GetProgramiv, (program, pname, params), (F, "glGetProgramiv(%d, 0x%x, %p);\n", program, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)
{
+ (void) shader; (void) bufSize; (void) length; (void) infoLog;
DISPATCH(GetShaderInfoLog, (shader, bufSize, length, infoLog), (F, "glGetShaderInfoLog(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) infoLog));
}
KEYWORD1 void KEYWORD2 NAME(GetShaderiv)(GLuint shader, GLenum pname, GLint * params)
{
+ (void) shader; (void) pname; (void) params;
DISPATCH(GetShaderiv, (shader, pname, params), (F, "glGetShaderiv(%d, 0x%x, %p);\n", shader, pname, (const void *) params));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsProgram)(GLuint program)
{
+ (void) program;
RETURN_DISPATCH(IsProgram, (program), (F, "glIsProgram(%d);\n", program));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsShader)(GLuint shader)
{
+ (void) shader;
RETURN_DISPATCH(IsShader, (shader), (F, "glIsShader(%d);\n", shader));
}
KEYWORD1 void KEYWORD2 NAME(StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask)
{
+ (void) face; (void) func; (void) ref; (void) mask;
DISPATCH(StencilFuncSeparate, (face, func, ref, mask), (F, "glStencilFuncSeparate(0x%x, 0x%x, %d, %d);\n", face, func, ref, mask));
}
KEYWORD1 void KEYWORD2 NAME(StencilMaskSeparate)(GLenum face, GLuint mask)
{
+ (void) face; (void) mask;
DISPATCH(StencilMaskSeparate, (face, mask), (F, "glStencilMaskSeparate(0x%x, %d);\n", face, mask));
}
KEYWORD1 void KEYWORD2 NAME(StencilOpSeparate)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
{
+ (void) face; (void) sfail; (void) zfail; (void) zpass;
DISPATCH(StencilOpSeparate, (face, sfail, zfail, zpass), (F, "glStencilOpSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", face, sfail, zfail, zpass));
}
@@ -2599,931 +3081,1117 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_423)(GLenum face, GLenum sfail, G
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_423)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
{
+ (void) face; (void) sfail; (void) zfail; (void) zpass;
DISPATCH(StencilOpSeparate, (face, sfail, zfail, zpass), (F, "glStencilOpSeparateATI(0x%x, 0x%x, 0x%x, 0x%x);\n", face, sfail, zfail, zpass));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix2x3fv, (location, count, transpose, value), (F, "glUniformMatrix2x3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix2x4fv, (location, count, transpose, value), (F, "glUniformMatrix2x4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix3x2fv, (location, count, transpose, value), (F, "glUniformMatrix3x2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix3x4fv, (location, count, transpose, value), (F, "glUniformMatrix3x4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix4x2fv, (location, count, transpose, value), (F, "glUniformMatrix4x2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix4x3fv, (location, count, transpose, value), (F, "glUniformMatrix4x3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(ClampColor)(GLenum target, GLenum clamp)
{
+ (void) target; (void) clamp;
DISPATCH(ClampColor, (target, clamp), (F, "glClampColor(0x%x, 0x%x);\n", target, clamp));
}
KEYWORD1 void KEYWORD2 NAME(ClearBufferfi)(GLenum buffer, GLint drawbuffer, GLfloat depth, GLint stencil)
{
+ (void) buffer; (void) drawbuffer; (void) depth; (void) stencil;
DISPATCH(ClearBufferfi, (buffer, drawbuffer, depth, stencil), (F, "glClearBufferfi(0x%x, %d, %f, %d);\n", buffer, drawbuffer, depth, stencil));
}
KEYWORD1 void KEYWORD2 NAME(ClearBufferfv)(GLenum buffer, GLint drawbuffer, const GLfloat * value)
{
+ (void) buffer; (void) drawbuffer; (void) value;
DISPATCH(ClearBufferfv, (buffer, drawbuffer, value), (F, "glClearBufferfv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(ClearBufferiv)(GLenum buffer, GLint drawbuffer, const GLint * value)
{
+ (void) buffer; (void) drawbuffer; (void) value;
DISPATCH(ClearBufferiv, (buffer, drawbuffer, value), (F, "glClearBufferiv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(ClearBufferuiv)(GLenum buffer, GLint drawbuffer, const GLuint * value)
{
+ (void) buffer; (void) drawbuffer; (void) value;
DISPATCH(ClearBufferuiv, (buffer, drawbuffer, value), (F, "glClearBufferuiv(0x%x, %d, %p);\n", buffer, drawbuffer, (const void *) value));
}
KEYWORD1 const GLubyte * KEYWORD2 NAME(GetStringi)(GLenum name, GLuint index)
{
+ (void) name; (void) index;
RETURN_DISPATCH(GetStringi, (name, index), (F, "glGetStringi(0x%x, %d);\n", name, index));
}
KEYWORD1 void KEYWORD2 NAME(TexBuffer)(GLenum target, GLenum internalFormat, GLuint buffer)
{
+ (void) target; (void) internalFormat; (void) buffer;
DISPATCH(TexBuffer, (target, internalFormat, buffer), (F, "glTexBuffer(0x%x, 0x%x, %d);\n", target, internalFormat, buffer));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTexture)(GLenum target, GLenum attachment, GLuint texture, GLint level)
{
+ (void) target; (void) attachment; (void) texture; (void) level;
DISPATCH(FramebufferTexture, (target, attachment, texture, level), (F, "glFramebufferTexture(0x%x, 0x%x, %d, %d);\n", target, attachment, texture, level));
}
KEYWORD1 void KEYWORD2 NAME(GetBufferParameteri64v)(GLenum target, GLenum pname, GLint64 * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetBufferParameteri64v, (target, pname, params), (F, "glGetBufferParameteri64v(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetInteger64i_v)(GLenum cap, GLuint index, GLint64 * data)
{
+ (void) cap; (void) index; (void) data;
DISPATCH(GetInteger64i_v, (cap, index, data), (F, "glGetInteger64i_v(0x%x, %d, %p);\n", cap, index, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribDivisor)(GLuint index, GLuint divisor)
{
+ (void) index; (void) divisor;
DISPATCH(VertexAttribDivisor, (index, divisor), (F, "glVertexAttribDivisor(%d, %d);\n", index, divisor));
}
KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m)
{
+ (void) m;
DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixdARB)(const GLdouble * m)
{
+ (void) m;
DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixdARB(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m)
{
+ (void) m;
DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixfARB)(const GLfloat * m)
{
+ (void) m;
DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixfARB(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m)
{
+ (void) m;
DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixdARB)(const GLdouble * m)
{
+ (void) m;
DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixdARB(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m)
{
+ (void) m;
DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixfARB)(const GLfloat * m)
{
+ (void) m;
DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixfARB(%p);\n", (const void *) m));
}
KEYWORD1 void KEYWORD2 NAME(SampleCoverage)(GLclampf value, GLboolean invert)
{
+ (void) value; (void) invert;
DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverage(%f, %d);\n", value, invert));
}
KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert)
{
+ (void) value; (void) invert;
DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);\n", value, invert));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) border; (void) imageSize; (void) data;
DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) border; (void) imageSize; (void) data;
DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1DARB(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) border; (void) imageSize; (void) data;
DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) border; (void) imageSize; (void) data;
DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) depth; (void) border; (void) imageSize; (void) data;
DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) internalformat; (void) width; (void) height; (void) depth; (void) border; (void) imageSize; (void) data;
DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) xoffset; (void) width; (void) format; (void) imageSize; (void) data;
DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1D(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) xoffset; (void) width; (void) format; (void) imageSize; (void) data;
DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1DARB(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) width; (void) height; (void) format; (void) imageSize; (void) data;
DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) width; (void) height; (void) format; (void) imageSize; (void) data;
DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2DARB(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) width; (void) height; (void) depth; (void) format; (void) imageSize; (void) data;
DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
{
+ (void) target; (void) level; (void) xoffset; (void) yoffset; (void) zoffset; (void) width; (void) height; (void) depth; (void) format; (void) imageSize; (void) data;
DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3DARB(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img)
{
+ (void) target; (void) level; (void) img;
DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (const void *) img));
}
KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img)
{
+ (void) target; (void) level; (void) img;
DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (const void *) img));
}
KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArray)(GLuint index)
{
+ (void) index;
DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArray(%d);\n", index));
}
KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArrayARB)(GLuint index)
{
+ (void) index;
DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArrayARB(%d);\n", index));
}
KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArray)(GLuint index)
{
+ (void) index;
DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArray(%d);\n", index));
}
KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArrayARB)(GLuint index)
{
+ (void) index;
DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArrayARB(%d);\n", index));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(GetProgramEnvParameterdvARB, (target, index, params), (F, "glGetProgramEnvParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(GetProgramEnvParameterfvARB, (target, index, params), (F, "glGetProgramEnvParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(GetProgramLocalParameterdvARB, (target, index, params), (F, "glGetProgramLocalParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(GetProgramLocalParameterfvARB, (target, index, params), (F, "glGetProgramLocalParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string)
{
+ (void) target; (void) pname; (void) string;
DISPATCH(GetProgramStringARB, (target, pname, string), (F, "glGetProgramStringARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) string));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramivARB)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetProgramivARB, (target, pname, params), (F, "glGetProgramivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribiv)(GLuint index, GLenum pname, GLint * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribiv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribivARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramParameter4dNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramEnvParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramParameter4fNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramEnvParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramLocalParameter4dARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(ProgramLocalParameter4dvARB, (target, index, params), (F, "glProgramLocalParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) target; (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramLocalParameter4fARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
{
+ (void) target; (void) index; (void) params;
DISPATCH(ProgramLocalParameter4fvARB, (target, index, params), (F, "glProgramLocalParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string)
{
+ (void) target; (void) format; (void) len; (void) string;
DISPATCH(ProgramStringARB, (target, format, len, string), (F, "glProgramStringARB(0x%x, 0x%x, %d, %p);\n", target, format, len, (const void *) string));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1d)(GLuint index, GLdouble x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1d(%d, %f);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dARB)(GLuint index, GLdouble x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1dARB(%d, %f);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dv)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvARB)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1f)(GLuint index, GLfloat x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1f(%d, %f);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fARB)(GLuint index, GLfloat x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1fARB(%d, %f);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fv)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvARB)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1s)(GLuint index, GLshort x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1s(%d, %d);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sARB)(GLuint index, GLshort x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1sARB(%d, %d);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sv)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1sv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svARB)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1svARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2d(%d, %f, %f);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2dARB(%d, %f, %f);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dv)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvARB)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2f(%d, %f, %f);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2fARB(%d, %f, %f);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fv)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvARB)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2s)(GLuint index, GLshort x, GLshort y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2s(%d, %d, %d);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2sARB(%d, %d, %d);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sv)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2sv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svARB)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2svARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3d(%d, %f, %f, %f);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3dARB(%d, %f, %f, %f);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dv)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvARB)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3f(%d, %f, %f, %f);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3fARB(%d, %f, %f, %f);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fv)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvARB)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3s(%d, %d, %d, %d);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3sARB(%d, %d, %d, %d);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sv)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3sv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svARB)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3svARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nbv)(GLuint index, const GLbyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4Nbv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NbvARB)(GLuint index, const GLbyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4NbvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Niv)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4Niv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NivARB)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4NivARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nsv)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4Nsv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NsvARB)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4NsvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4Nub(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4NubARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nubv)(GLuint index, const GLubyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4Nubv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubvARB)(GLuint index, const GLubyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4NubvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nuiv)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4Nuiv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NuivARB)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4NuivARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nusv)(GLuint index, const GLushort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4Nusv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NusvARB)(GLuint index, const GLushort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4NusvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bv)(GLuint index, const GLbyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bvARB)(GLuint index, const GLbyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4d(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4dARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dv)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvARB)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4f(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4fARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fv)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvARB)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4iv)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4iv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ivARB)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4ivARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4s(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4sARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sv)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4sv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svARB)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4svARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubv)(GLuint index, const GLubyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvARB)(GLuint index, const GLubyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uiv)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uiv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uivARB)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uivARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usv)(GLuint index, const GLushort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usvARB)(GLuint index, const GLushort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usvARB(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
{
+ (void) index; (void) size; (void) type; (void) normalized; (void) stride; (void) pointer;
DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointer(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
{
+ (void) index; (void) size; (void) type; (void) normalized; (void) stride; (void) pointer;
DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointerARB(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(BindBuffer)(GLenum target, GLuint buffer)
{
+ (void) target; (void) buffer;
DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBuffer(0x%x, %d);\n", target, buffer));
}
KEYWORD1 void KEYWORD2 NAME(BindBufferARB)(GLenum target, GLuint buffer)
{
+ (void) target; (void) buffer;
DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer));
}
KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage)
{
+ (void) target; (void) size; (void) data; (void) usage;
DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
}
KEYWORD1 void KEYWORD2 NAME(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)
{
+ (void) target; (void) size; (void) data; (void) usage;
DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
}
KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data)
{
+ (void) target; (void) offset; (void) size; (void) data;
DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)
{
+ (void) target; (void) offset; (void) size; (void) data;
DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(DeleteBuffers)(GLsizei n, const GLuint * buffer)
{
+ (void) n; (void) buffer;
DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffers(%d, %p);\n", n, (const void *) buffer));
}
KEYWORD1 void KEYWORD2 NAME(DeleteBuffersARB)(GLsizei n, const GLuint * buffer)
{
+ (void) n; (void) buffer;
DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffersARB(%d, %p);\n", n, (const void *) buffer));
}
KEYWORD1 void KEYWORD2 NAME(GenBuffers)(GLsizei n, GLuint * buffer)
{
+ (void) n; (void) buffer;
DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffers(%d, %p);\n", n, (const void *) buffer));
}
KEYWORD1 void KEYWORD2 NAME(GenBuffersARB)(GLsizei n, GLuint * buffer)
{
+ (void) n; (void) buffer;
DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffersARB(%d, %p);\n", n, (const void *) buffer));
}
KEYWORD1 void KEYWORD2 NAME(GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameterivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointerv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data)
{
+ (void) target; (void) offset; (void) size; (void) data;
DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)
{
+ (void) target; (void) offset; (void) size; (void) data;
DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsBuffer)(GLuint buffer)
{
+ (void) buffer;
RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBuffer(%d);\n", buffer));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsBufferARB)(GLuint buffer)
{
+ (void) buffer;
RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBufferARB(%d);\n", buffer));
}
KEYWORD1 GLvoid * KEYWORD2 NAME(MapBuffer)(GLenum target, GLenum access)
{
+ (void) target; (void) access;
RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBuffer(0x%x, 0x%x);\n", target, access));
}
KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferARB)(GLenum target, GLenum access)
{
+ (void) target; (void) access;
RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBufferARB(0x%x, 0x%x);\n", target, access));
}
KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBuffer)(GLenum target)
{
+ (void) target;
RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBuffer(0x%x);\n", target));
}
KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBufferARB)(GLenum target)
{
+ (void) target;
RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBufferARB(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(BeginQuery)(GLenum target, GLuint id)
{
+ (void) target; (void) id;
DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQuery(0x%x, %d);\n", target, id));
}
KEYWORD1 void KEYWORD2 NAME(BeginQueryARB)(GLenum target, GLuint id)
{
+ (void) target; (void) id;
DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQueryARB(0x%x, %d);\n", target, id));
}
KEYWORD1 void KEYWORD2 NAME(DeleteQueries)(GLsizei n, const GLuint * ids)
{
+ (void) n; (void) ids;
DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueries(%d, %p);\n", n, (const void *) ids));
}
KEYWORD1 void KEYWORD2 NAME(DeleteQueriesARB)(GLsizei n, const GLuint * ids)
{
+ (void) n; (void) ids;
DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueriesARB(%d, %p);\n", n, (const void *) ids));
}
KEYWORD1 void KEYWORD2 NAME(EndQuery)(GLenum target)
{
+ (void) target;
DISPATCH(EndQueryARB, (target), (F, "glEndQuery(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(EndQueryARB)(GLenum target)
{
+ (void) target;
DISPATCH(EndQueryARB, (target), (F, "glEndQueryARB(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(GenQueries)(GLsizei n, GLuint * ids)
{
+ (void) n; (void) ids;
DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueries(%d, %p);\n", n, (const void *) ids));
}
KEYWORD1 void KEYWORD2 NAME(GenQueriesARB)(GLsizei n, GLuint * ids)
{
+ (void) n; (void) ids;
DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueriesARB(%d, %p);\n", n, (const void *) ids));
}
KEYWORD1 void KEYWORD2 NAME(GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params)
{
+ (void) id; (void) pname; (void) params;
DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params)
{
+ (void) id; (void) pname; (void) params;
DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params)
{
+ (void) id; (void) pname; (void) params;
DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params)
{
+ (void) id; (void) pname; (void) params;
DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetQueryiv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetQueryivARB)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsQuery)(GLuint id)
{
+ (void) id;
RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQuery(%d);\n", id));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsQueryARB)(GLuint id)
{
+ (void) id;
RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQueryARB(%d);\n", id));
}
KEYWORD1 void KEYWORD2 NAME(AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj)
{
+ (void) containerObj; (void) obj;
DISPATCH(AttachObjectARB, (containerObj, obj), (F, "glAttachObjectARB(%d, %d);\n", containerObj, obj));
}
KEYWORD1 void KEYWORD2 NAME(CompileShader)(GLuint shader)
{
+ (void) shader;
DISPATCH(CompileShaderARB, (shader), (F, "glCompileShader(%d);\n", shader));
}
KEYWORD1 void KEYWORD2 NAME(CompileShaderARB)(GLhandleARB shader)
{
+ (void) shader;
DISPATCH(CompileShaderARB, (shader), (F, "glCompileShaderARB(%d);\n", shader));
}
@@ -3534,651 +4202,781 @@ KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateProgramObjectARB)(void)
KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateShaderObjectARB)(GLenum shaderType)
{
+ (void) shaderType;
RETURN_DISPATCH(CreateShaderObjectARB, (shaderType), (F, "glCreateShaderObjectARB(0x%x);\n", shaderType));
}
KEYWORD1 void KEYWORD2 NAME(DeleteObjectARB)(GLhandleARB obj)
{
+ (void) obj;
DISPATCH(DeleteObjectARB, (obj), (F, "glDeleteObjectARB(%d);\n", obj));
}
KEYWORD1 void KEYWORD2 NAME(DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj)
{
+ (void) containerObj; (void) attachedObj;
DISPATCH(DetachObjectARB, (containerObj, attachedObj), (F, "glDetachObjectARB(%d, %d);\n", containerObj, attachedObj));
}
KEYWORD1 void KEYWORD2 NAME(GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)
{
+ (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
DISPATCH(GetActiveUniformARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveUniform(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
{
+ (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
DISPATCH(GetActiveUniformARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveUniformARB(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog)
{
+ (void) containerObj; (void) maxLength; (void) length; (void) infoLog;
DISPATCH(GetAttachedObjectsARB, (containerObj, maxLength, length, infoLog), (F, "glGetAttachedObjectsARB(%d, %d, %p, %p);\n", containerObj, maxLength, (const void *) length, (const void *) infoLog));
}
KEYWORD1 GLhandleARB KEYWORD2 NAME(GetHandleARB)(GLenum pname)
{
+ (void) pname;
RETURN_DISPATCH(GetHandleARB, (pname), (F, "glGetHandleARB(0x%x);\n", pname));
}
KEYWORD1 void KEYWORD2 NAME(GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
{
+ (void) obj; (void) maxLength; (void) length; (void) infoLog;
DISPATCH(GetInfoLogARB, (obj, maxLength, length, infoLog), (F, "glGetInfoLogARB(%d, %d, %p, %p);\n", obj, maxLength, (const void *) length, (const void *) infoLog));
}
KEYWORD1 void KEYWORD2 NAME(GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params)
{
+ (void) obj; (void) pname; (void) params;
DISPATCH(GetObjectParameterfvARB, (obj, pname, params), (F, "glGetObjectParameterfvARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params)
{
+ (void) obj; (void) pname; (void) params;
DISPATCH(GetObjectParameterivARB, (obj, pname, params), (F, "glGetObjectParameterivARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source)
{
+ (void) shader; (void) bufSize; (void) length; (void) source;
DISPATCH(GetShaderSourceARB, (shader, bufSize, length, source), (F, "glGetShaderSource(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) source));
}
KEYWORD1 void KEYWORD2 NAME(GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source)
{
+ (void) shader; (void) bufSize; (void) length; (void) source;
DISPATCH(GetShaderSourceARB, (shader, bufSize, length, source), (F, "glGetShaderSourceARB(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) source));
}
KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocation)(GLuint program, const GLchar * name)
{
+ (void) program; (void) name;
RETURN_DISPATCH(GetUniformLocationARB, (program, name), (F, "glGetUniformLocation(%d, %p);\n", program, (const void *) name));
}
KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name)
{
+ (void) program; (void) name;
RETURN_DISPATCH(GetUniformLocationARB, (program, name), (F, "glGetUniformLocationARB(%d, %p);\n", program, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(GetUniformfv)(GLuint program, GLint location, GLfloat * params)
{
+ (void) program; (void) location; (void) params;
DISPATCH(GetUniformfvARB, (program, location, params), (F, "glGetUniformfv(%d, %d, %p);\n", program, location, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params)
{
+ (void) program; (void) location; (void) params;
DISPATCH(GetUniformfvARB, (program, location, params), (F, "glGetUniformfvARB(%d, %d, %p);\n", program, location, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetUniformiv)(GLuint program, GLint location, GLint * params)
{
+ (void) program; (void) location; (void) params;
DISPATCH(GetUniformivARB, (program, location, params), (F, "glGetUniformiv(%d, %d, %p);\n", program, location, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetUniformivARB)(GLhandleARB program, GLint location, GLint * params)
{
+ (void) program; (void) location; (void) params;
DISPATCH(GetUniformivARB, (program, location, params), (F, "glGetUniformivARB(%d, %d, %p);\n", program, location, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(LinkProgram)(GLuint program)
{
+ (void) program;
DISPATCH(LinkProgramARB, (program), (F, "glLinkProgram(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(LinkProgramARB)(GLhandleARB program)
{
+ (void) program;
DISPATCH(LinkProgramARB, (program), (F, "glLinkProgramARB(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(ShaderSource)(GLuint shader, GLsizei count, const GLchar ** string, const GLint * length)
{
+ (void) shader; (void) count; (void) string; (void) length;
DISPATCH(ShaderSourceARB, (shader, count, string, length), (F, "glShaderSource(%d, %d, %p, %p);\n", shader, count, (const void *) string, (const void *) length));
}
KEYWORD1 void KEYWORD2 NAME(ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length)
{
+ (void) shader; (void) count; (void) string; (void) length;
DISPATCH(ShaderSourceARB, (shader, count, string, length), (F, "glShaderSourceARB(%d, %d, %p, %p);\n", shader, count, (const void *) string, (const void *) length));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1f)(GLint location, GLfloat v0)
{
+ (void) location; (void) v0;
DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1f(%d, %f);\n", location, v0));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1fARB)(GLint location, GLfloat v0)
{
+ (void) location; (void) v0;
DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1fARB(%d, %f);\n", location, v0));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1fv)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fvARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1i)(GLint location, GLint v0)
{
+ (void) location; (void) v0;
DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1i(%d, %d);\n", location, v0));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1iARB)(GLint location, GLint v0)
{
+ (void) location; (void) v0;
DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1iARB(%d, %d);\n", location, v0));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1iv)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1iv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1ivARB)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1ivARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2f)(GLint location, GLfloat v0, GLfloat v1)
{
+ (void) location; (void) v0; (void) v1;
DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2f(%d, %f, %f);\n", location, v0, v1));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1)
{
+ (void) location; (void) v0; (void) v1;
DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2fARB(%d, %f, %f);\n", location, v0, v1));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2fv)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fvARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2i)(GLint location, GLint v0, GLint v1)
{
+ (void) location; (void) v0; (void) v1;
DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2i(%d, %d, %d);\n", location, v0, v1));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2iARB)(GLint location, GLint v0, GLint v1)
{
+ (void) location; (void) v0; (void) v1;
DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2iARB(%d, %d, %d);\n", location, v0, v1));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2iv)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2iv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2ivARB)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2ivARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
+ (void) location; (void) v0; (void) v1; (void) v2;
DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3f(%d, %f, %f, %f);\n", location, v0, v1, v2));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
{
+ (void) location; (void) v0; (void) v1; (void) v2;
DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3fARB(%d, %f, %f, %f);\n", location, v0, v1, v2));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3fv)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fvARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2)
{
+ (void) location; (void) v0; (void) v1; (void) v2;
DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3i(%d, %d, %d, %d);\n", location, v0, v1, v2));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2)
{
+ (void) location; (void) v0; (void) v1; (void) v2;
DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3iARB(%d, %d, %d, %d);\n", location, v0, v1, v2));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3iv)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3iv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3ivARB)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3ivARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
+ (void) location; (void) v0; (void) v1; (void) v2; (void) v3;
DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4f(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
{
+ (void) location; (void) v0; (void) v1; (void) v2; (void) v3;
DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4fARB(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4fv)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fvARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
+ (void) location; (void) v0; (void) v1; (void) v2; (void) v3;
DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4i(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
{
+ (void) location; (void) v0; (void) v1; (void) v2; (void) v3;
DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4iARB(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4iv)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4iv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4ivARB)(GLint location, GLsizei count, const GLint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4ivARB(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
{
+ (void) location; (void) count; (void) transpose; (void) value;
DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(UseProgram)(GLuint program)
{
+ (void) program;
DISPATCH(UseProgramObjectARB, (program), (F, "glUseProgram(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(UseProgramObjectARB)(GLhandleARB program)
{
+ (void) program;
DISPATCH(UseProgramObjectARB, (program), (F, "glUseProgramObjectARB(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(ValidateProgram)(GLuint program)
{
+ (void) program;
DISPATCH(ValidateProgramARB, (program), (F, "glValidateProgram(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(ValidateProgramARB)(GLhandleARB program)
{
+ (void) program;
DISPATCH(ValidateProgramARB, (program), (F, "glValidateProgramARB(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(BindAttribLocation)(GLuint program, GLuint index, const GLchar * name)
{
+ (void) program; (void) index; (void) name;
DISPATCH(BindAttribLocationARB, (program, index, name), (F, "glBindAttribLocation(%d, %d, %p);\n", program, index, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name)
{
+ (void) program; (void) index; (void) name;
DISPATCH(BindAttribLocationARB, (program, index, name), (F, "glBindAttribLocationARB(%d, %d, %p);\n", program, index, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(GetActiveAttrib)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)
{
+ (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
DISPATCH(GetActiveAttribARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveAttrib(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
{
+ (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
DISPATCH(GetActiveAttribARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveAttribARB(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
}
KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocation)(GLuint program, const GLchar * name)
{
+ (void) program; (void) name;
RETURN_DISPATCH(GetAttribLocationARB, (program, name), (F, "glGetAttribLocation(%d, %p);\n", program, (const void *) name));
}
KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name)
{
+ (void) program; (void) name;
RETURN_DISPATCH(GetAttribLocationARB, (program, name), (F, "glGetAttribLocationARB(%d, %p);\n", program, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(DrawBuffers)(GLsizei n, const GLenum * bufs)
{
+ (void) n; (void) bufs;
DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffers(%d, %p);\n", n, (const void *) bufs));
}
KEYWORD1 void KEYWORD2 NAME(DrawBuffersARB)(GLsizei n, const GLenum * bufs)
{
+ (void) n; (void) bufs;
DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersARB(%d, %p);\n", n, (const void *) bufs));
}
KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs)
{
+ (void) n; (void) bufs;
DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs));
}
KEYWORD1 void KEYWORD2 NAME(ClampColorARB)(GLenum target, GLenum clamp)
{
+ (void) target; (void) clamp;
DISPATCH(ClampColorARB, (target, clamp), (F, "glClampColorARB(0x%x, 0x%x);\n", target, clamp));
}
KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
{
+ (void) mode; (void) first; (void) count; (void) primcount;
DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstancedARB(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
}
KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
{
+ (void) mode; (void) first; (void) count; (void) primcount;
DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstancedEXT(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
}
KEYWORD1 void KEYWORD2 NAME(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
{
+ (void) mode; (void) first; (void) count; (void) primcount;
DISPATCH(DrawArraysInstancedARB, (mode, first, count, primcount), (F, "glDrawArraysInstanced(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
}
KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount;
DISPATCH(DrawElementsInstancedARB, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedARB(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
}
KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount;
DISPATCH(DrawElementsInstancedARB, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedEXT(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
}
KEYWORD1 void KEYWORD2 NAME(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount;
DISPATCH(DrawElementsInstancedARB, (mode, count, type, indices, primcount), (F, "glDrawElementsInstanced(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
}
KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
+ (void) target; (void) samples; (void) internalformat; (void) width; (void) height;
DISPATCH(RenderbufferStorageMultisample, (target, samples, internalformat, width, height), (F, "glRenderbufferStorageMultisample(0x%x, %d, 0x%x, %d, %d);\n", target, samples, internalformat, width, height));
}
KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
{
+ (void) target; (void) samples; (void) internalformat; (void) width; (void) height;
DISPATCH(RenderbufferStorageMultisample, (target, samples, internalformat, width, height), (F, "glRenderbufferStorageMultisampleEXT(0x%x, %d, 0x%x, %d, %d);\n", target, samples, internalformat, width, height));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTextureARB)(GLenum target, GLenum attachment, GLuint texture, GLint level)
{
+ (void) target; (void) attachment; (void) texture; (void) level;
DISPATCH(FramebufferTextureARB, (target, attachment, texture, level), (F, "glFramebufferTextureARB(0x%x, 0x%x, %d, %d);\n", target, attachment, texture, level));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTextureFaceARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLenum face)
{
+ (void) target; (void) attachment; (void) texture; (void) level; (void) face;
DISPATCH(FramebufferTextureFaceARB, (target, attachment, texture, level, face), (F, "glFramebufferTextureFaceARB(0x%x, 0x%x, %d, %d, 0x%x);\n", target, attachment, texture, level, face));
}
KEYWORD1 void KEYWORD2 NAME(ProgramParameteriARB)(GLuint program, GLenum pname, GLint value)
{
+ (void) program; (void) pname; (void) value;
DISPATCH(ProgramParameteriARB, (program, pname, value), (F, "glProgramParameteriARB(%d, 0x%x, %d);\n", program, pname, value));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribDivisorARB)(GLuint index, GLuint divisor)
{
+ (void) index; (void) divisor;
DISPATCH(VertexAttribDivisorARB, (index, divisor), (F, "glVertexAttribDivisorARB(%d, %d);\n", index, divisor));
}
KEYWORD1 void KEYWORD2 NAME(FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length)
{
+ (void) target; (void) offset; (void) length;
DISPATCH(FlushMappedBufferRange, (target, offset, length), (F, "glFlushMappedBufferRange(0x%x, %d, %d);\n", target, offset, length));
}
KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
{
+ (void) target; (void) offset; (void) length; (void) access;
RETURN_DISPATCH(MapBufferRange, (target, offset, length, access), (F, "glMapBufferRange(0x%x, %d, %d, %d);\n", target, offset, length, access));
}
KEYWORD1 void KEYWORD2 NAME(TexBufferARB)(GLenum target, GLenum internalFormat, GLuint buffer)
{
+ (void) target; (void) internalFormat; (void) buffer;
DISPATCH(TexBufferARB, (target, internalFormat, buffer), (F, "glTexBufferARB(0x%x, 0x%x, %d);\n", target, internalFormat, buffer));
}
KEYWORD1 void KEYWORD2 NAME(BindVertexArray)(GLuint array)
{
+ (void) array;
DISPATCH(BindVertexArray, (array), (F, "glBindVertexArray(%d);\n", array));
}
KEYWORD1 void KEYWORD2 NAME(GenVertexArrays)(GLsizei n, GLuint * arrays)
{
+ (void) n; (void) arrays;
DISPATCH(GenVertexArrays, (n, arrays), (F, "glGenVertexArrays(%d, %p);\n", n, (const void *) arrays));
}
KEYWORD1 void KEYWORD2 NAME(CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
{
+ (void) readTarget; (void) writeTarget; (void) readOffset; (void) writeOffset; (void) size;
DISPATCH(CopyBufferSubData, (readTarget, writeTarget, readOffset, writeOffset, size), (F, "glCopyBufferSubData(0x%x, 0x%x, %d, %d, %d);\n", readTarget, writeTarget, readOffset, writeOffset, size));
}
KEYWORD1 GLenum KEYWORD2 NAME(ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
{
+ (void) sync; (void) flags; (void) timeout;
RETURN_DISPATCH(ClientWaitSync, (sync, flags, timeout), (F, "glClientWaitSync(%d, %d, %d);\n", sync, flags, timeout));
}
KEYWORD1 void KEYWORD2 NAME(DeleteSync)(GLsync sync)
{
+ (void) sync;
DISPATCH(DeleteSync, (sync), (F, "glDeleteSync(%d);\n", sync));
}
KEYWORD1 GLsync KEYWORD2 NAME(FenceSync)(GLenum condition, GLbitfield flags)
{
+ (void) condition; (void) flags;
RETURN_DISPATCH(FenceSync, (condition, flags), (F, "glFenceSync(0x%x, %d);\n", condition, flags));
}
KEYWORD1 void KEYWORD2 NAME(GetInteger64v)(GLenum pname, GLint64 * params)
{
+ (void) pname; (void) params;
DISPATCH(GetInteger64v, (pname, params), (F, "glGetInteger64v(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values)
{
+ (void) sync; (void) pname; (void) bufSize; (void) length; (void) values;
DISPATCH(GetSynciv, (sync, pname, bufSize, length, values), (F, "glGetSynciv(%d, 0x%x, %d, %p, %p);\n", sync, pname, bufSize, (const void *) length, (const void *) values));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsSync)(GLsync sync)
{
+ (void) sync;
RETURN_DISPATCH(IsSync, (sync), (F, "glIsSync(%d);\n", sync));
}
KEYWORD1 void KEYWORD2 NAME(WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
{
+ (void) sync; (void) flags; (void) timeout;
DISPATCH(WaitSync, (sync, flags, timeout), (F, "glWaitSync(%d, %d, %d);\n", sync, flags, timeout));
}
KEYWORD1 void KEYWORD2 NAME(DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) basevertex;
DISPATCH(DrawElementsBaseVertex, (mode, count, type, indices, basevertex), (F, "glDrawElementsBaseVertex(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, basevertex));
}
KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount, GLint basevertex)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) basevertex;
DISPATCH(DrawElementsInstancedBaseVertex, (mode, count, type, indices, primcount, basevertex), (F, "glDrawElementsInstancedBaseVertex(0x%x, %d, 0x%x, %p, %d, %d);\n", mode, count, type, (const void *) indices, primcount, basevertex));
}
KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex)
{
+ (void) mode; (void) start; (void) end; (void) count; (void) type; (void) indices; (void) basevertex;
DISPATCH(DrawRangeElementsBaseVertex, (mode, start, end, count, type, indices, basevertex), (F, "glDrawRangeElementsBaseVertex(0x%x, %d, %d, %d, 0x%x, %p, %d);\n", mode, start, end, count, type, (const void *) indices, basevertex));
}
KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) basevertex;
DISPATCH(MultiDrawElementsBaseVertex, (mode, count, type, indices, primcount, basevertex), (F, "glMultiDrawElementsBaseVertex(0x%x, %p, 0x%x, %p, %d, %p);\n", mode, (const void *) count, type, (const void *) indices, primcount, (const void *) basevertex));
}
KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateiARB)(GLuint buf, GLenum modeRGB, GLenum modeA)
{
+ (void) buf; (void) modeRGB; (void) modeA;
DISPATCH(BlendEquationSeparateiARB, (buf, modeRGB, modeA), (F, "glBlendEquationSeparateiARB(%d, 0x%x, 0x%x);\n", buf, modeRGB, modeA));
}
KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparateIndexedAMD)(GLuint buf, GLenum modeRGB, GLenum modeA)
{
+ (void) buf; (void) modeRGB; (void) modeA;
DISPATCH(BlendEquationSeparateiARB, (buf, modeRGB, modeA), (F, "glBlendEquationSeparateIndexedAMD(%d, 0x%x, 0x%x);\n", buf, modeRGB, modeA));
}
KEYWORD1 void KEYWORD2 NAME(BlendEquationiARB)(GLuint buf, GLenum mode)
{
+ (void) buf; (void) mode;
DISPATCH(BlendEquationiARB, (buf, mode), (F, "glBlendEquationiARB(%d, 0x%x);\n", buf, mode));
}
KEYWORD1 void KEYWORD2 NAME(BlendEquationIndexedAMD)(GLuint buf, GLenum mode)
{
+ (void) buf; (void) mode;
DISPATCH(BlendEquationiARB, (buf, mode), (F, "glBlendEquationIndexedAMD(%d, 0x%x);\n", buf, mode));
}
KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateiARB)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)
{
+ (void) buf; (void) srcRGB; (void) dstRGB; (void) srcA; (void) dstA;
DISPATCH(BlendFuncSeparateiARB, (buf, srcRGB, dstRGB, srcA, dstA), (F, "glBlendFuncSeparateiARB(%d, 0x%x, 0x%x, 0x%x, 0x%x);\n", buf, srcRGB, dstRGB, srcA, dstA));
}
KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateIndexedAMD)(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcA, GLenum dstA)
{
+ (void) buf; (void) srcRGB; (void) dstRGB; (void) srcA; (void) dstA;
DISPATCH(BlendFuncSeparateiARB, (buf, srcRGB, dstRGB, srcA, dstA), (F, "glBlendFuncSeparateIndexedAMD(%d, 0x%x, 0x%x, 0x%x, 0x%x);\n", buf, srcRGB, dstRGB, srcA, dstA));
}
KEYWORD1 void KEYWORD2 NAME(BlendFunciARB)(GLuint buf, GLenum src, GLenum dst)
{
+ (void) buf; (void) src; (void) dst;
DISPATCH(BlendFunciARB, (buf, src, dst), (F, "glBlendFunciARB(%d, 0x%x, 0x%x);\n", buf, src, dst));
}
KEYWORD1 void KEYWORD2 NAME(BlendFuncIndexedAMD)(GLuint buf, GLenum src, GLenum dst)
{
+ (void) buf; (void) src; (void) dst;
DISPATCH(BlendFunciARB, (buf, src, dst), (F, "glBlendFuncIndexedAMD(%d, 0x%x, 0x%x);\n", buf, src, dst));
}
KEYWORD1 void KEYWORD2 NAME(BindSampler)(GLuint unit, GLuint sampler)
{
+ (void) unit; (void) sampler;
DISPATCH(BindSampler, (unit, sampler), (F, "glBindSampler(%d, %d);\n", unit, sampler));
}
KEYWORD1 void KEYWORD2 NAME(DeleteSamplers)(GLsizei count, const GLuint * samplers)
{
+ (void) count; (void) samplers;
DISPATCH(DeleteSamplers, (count, samplers), (F, "glDeleteSamplers(%d, %p);\n", count, (const void *) samplers));
}
KEYWORD1 void KEYWORD2 NAME(GenSamplers)(GLsizei count, GLuint * samplers)
{
+ (void) count; (void) samplers;
DISPATCH(GenSamplers, (count, samplers), (F, "glGenSamplers(%d, %p);\n", count, (const void *) samplers));
}
KEYWORD1 void KEYWORD2 NAME(GetSamplerParameterIiv)(GLuint sampler, GLenum pname, GLint * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(GetSamplerParameterIiv, (sampler, pname, params), (F, "glGetSamplerParameterIiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetSamplerParameterIuiv)(GLuint sampler, GLenum pname, GLuint * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(GetSamplerParameterIuiv, (sampler, pname, params), (F, "glGetSamplerParameterIuiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetSamplerParameterfv)(GLuint sampler, GLenum pname, GLfloat * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(GetSamplerParameterfv, (sampler, pname, params), (F, "glGetSamplerParameterfv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetSamplerParameteriv)(GLuint sampler, GLenum pname, GLint * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(GetSamplerParameteriv, (sampler, pname, params), (F, "glGetSamplerParameteriv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsSampler)(GLuint sampler)
{
+ (void) sampler;
RETURN_DISPATCH(IsSampler, (sampler), (F, "glIsSampler(%d);\n", sampler));
}
KEYWORD1 void KEYWORD2 NAME(SamplerParameterIiv)(GLuint sampler, GLenum pname, const GLint * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(SamplerParameterIiv, (sampler, pname, params), (F, "glSamplerParameterIiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(SamplerParameterIuiv)(GLuint sampler, GLenum pname, const GLuint * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(SamplerParameterIuiv, (sampler, pname, params), (F, "glSamplerParameterIuiv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(SamplerParameterf)(GLuint sampler, GLenum pname, GLfloat param)
{
+ (void) sampler; (void) pname; (void) param;
DISPATCH(SamplerParameterf, (sampler, pname, param), (F, "glSamplerParameterf(%d, 0x%x, %f);\n", sampler, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(SamplerParameterfv)(GLuint sampler, GLenum pname, const GLfloat * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(SamplerParameterfv, (sampler, pname, params), (F, "glSamplerParameterfv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(SamplerParameteri)(GLuint sampler, GLenum pname, GLint param)
{
+ (void) sampler; (void) pname; (void) param;
DISPATCH(SamplerParameteri, (sampler, pname, param), (F, "glSamplerParameteri(%d, 0x%x, %d);\n", sampler, pname, param));
}
KEYWORD1 void KEYWORD2 NAME(SamplerParameteriv)(GLuint sampler, GLenum pname, const GLint * params)
{
+ (void) sampler; (void) pname; (void) params;
DISPATCH(SamplerParameteriv, (sampler, pname, params), (F, "glSamplerParameteriv(%d, 0x%x, %p);\n", sampler, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(BindTransformFeedback)(GLenum target, GLuint id)
{
+ (void) target; (void) id;
DISPATCH(BindTransformFeedback, (target, id), (F, "glBindTransformFeedback(0x%x, %d);\n", target, id));
}
KEYWORD1 void KEYWORD2 NAME(DeleteTransformFeedbacks)(GLsizei n, const GLuint * ids)
{
+ (void) n; (void) ids;
DISPATCH(DeleteTransformFeedbacks, (n, ids), (F, "glDeleteTransformFeedbacks(%d, %p);\n", n, (const void *) ids));
}
KEYWORD1 void KEYWORD2 NAME(DrawTransformFeedback)(GLenum mode, GLuint id)
{
+ (void) mode; (void) id;
DISPATCH(DrawTransformFeedback, (mode, id), (F, "glDrawTransformFeedback(0x%x, %d);\n", mode, id));
}
KEYWORD1 void KEYWORD2 NAME(GenTransformFeedbacks)(GLsizei n, GLuint * ids)
{
+ (void) n; (void) ids;
DISPATCH(GenTransformFeedbacks, (n, ids), (F, "glGenTransformFeedbacks(%d, %p);\n", n, (const void *) ids));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsTransformFeedback)(GLuint id)
{
+ (void) id;
RETURN_DISPATCH(IsTransformFeedback, (id), (F, "glIsTransformFeedback(%d);\n", id));
}
@@ -4194,16 +4992,19 @@ KEYWORD1 void KEYWORD2 NAME(ResumeTransformFeedback)(void)
KEYWORD1 void KEYWORD2 NAME(ClearDepthf)(GLclampf depth)
{
+ (void) depth;
DISPATCH(ClearDepthf, (depth), (F, "glClearDepthf(%f);\n", depth));
}
KEYWORD1 void KEYWORD2 NAME(DepthRangef)(GLclampf zNear, GLclampf zFar)
{
+ (void) zNear; (void) zFar;
DISPATCH(DepthRangef, (zNear, zFar), (F, "glDepthRangef(%f, %f);\n", zNear, zFar));
}
KEYWORD1 void KEYWORD2 NAME(GetShaderPrecisionFormat)(GLenum shadertype, GLenum precisiontype, GLint * range, GLint * precision)
{
+ (void) shadertype; (void) precisiontype; (void) range; (void) precision;
DISPATCH(GetShaderPrecisionFormat, (shadertype, precisiontype, range, precision), (F, "glGetShaderPrecisionFormat(0x%x, 0x%x, %p, %p);\n", shadertype, precisiontype, (const void *) range, (const void *) precision));
}
@@ -4214,6 +5015,7 @@ KEYWORD1 void KEYWORD2 NAME(ReleaseShaderCompiler)(void)
KEYWORD1 void KEYWORD2 NAME(ShaderBinary)(GLsizei n, const GLuint * shaders, GLenum binaryformat, const GLvoid * binary, GLsizei length)
{
+ (void) n; (void) shaders; (void) binaryformat; (void) binary; (void) length;
DISPATCH(ShaderBinary, (n, shaders, binaryformat, binary, length), (F, "glShaderBinary(%d, %p, 0x%x, %p, %d);\n", n, (const void *) shaders, binaryformat, (const void *) binary, length));
}
@@ -4224,101 +5026,121 @@ KEYWORD1 GLenum KEYWORD2 NAME(GetGraphicsResetStatusARB)(void)
KEYWORD1 void KEYWORD2 NAME(GetnColorTableARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * table)
{
+ (void) target; (void) format; (void) type; (void) bufSize; (void) table;
DISPATCH(GetnColorTableARB, (target, format, type, bufSize, table), (F, "glGetnColorTableARB(0x%x, 0x%x, 0x%x, %d, %p);\n", target, format, type, bufSize, (const void *) table));
}
KEYWORD1 void KEYWORD2 NAME(GetnCompressedTexImageARB)(GLenum target, GLint lod, GLsizei bufSize, GLvoid * img)
{
+ (void) target; (void) lod; (void) bufSize; (void) img;
DISPATCH(GetnCompressedTexImageARB, (target, lod, bufSize, img), (F, "glGetnCompressedTexImageARB(0x%x, %d, %d, %p);\n", target, lod, bufSize, (const void *) img));
}
KEYWORD1 void KEYWORD2 NAME(GetnConvolutionFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei bufSize, GLvoid * image)
{
+ (void) target; (void) format; (void) type; (void) bufSize; (void) image;
DISPATCH(GetnConvolutionFilterARB, (target, format, type, bufSize, image), (F, "glGetnConvolutionFilterARB(0x%x, 0x%x, 0x%x, %d, %p);\n", target, format, type, bufSize, (const void *) image));
}
KEYWORD1 void KEYWORD2 NAME(GetnHistogramARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values)
{
+ (void) target; (void) reset; (void) format; (void) type; (void) bufSize; (void) values;
DISPATCH(GetnHistogramARB, (target, reset, format, type, bufSize, values), (F, "glGetnHistogramARB(0x%x, %d, 0x%x, 0x%x, %d, %p);\n", target, reset, format, type, bufSize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetnMapdvARB)(GLenum target, GLenum query, GLsizei bufSize, GLdouble * v)
{
+ (void) target; (void) query; (void) bufSize; (void) v;
DISPATCH(GetnMapdvARB, (target, query, bufSize, v), (F, "glGetnMapdvARB(0x%x, 0x%x, %d, %p);\n", target, query, bufSize, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(GetnMapfvARB)(GLenum target, GLenum query, GLsizei bufSize, GLfloat * v)
{
+ (void) target; (void) query; (void) bufSize; (void) v;
DISPATCH(GetnMapfvARB, (target, query, bufSize, v), (F, "glGetnMapfvARB(0x%x, 0x%x, %d, %p);\n", target, query, bufSize, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(GetnMapivARB)(GLenum target, GLenum query, GLsizei bufSize, GLint * v)
{
+ (void) target; (void) query; (void) bufSize; (void) v;
DISPATCH(GetnMapivARB, (target, query, bufSize, v), (F, "glGetnMapivARB(0x%x, 0x%x, %d, %p);\n", target, query, bufSize, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(GetnMinmaxARB)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLsizei bufSize, GLvoid * values)
{
+ (void) target; (void) reset; (void) format; (void) type; (void) bufSize; (void) values;
DISPATCH(GetnMinmaxARB, (target, reset, format, type, bufSize, values), (F, "glGetnMinmaxARB(0x%x, %d, 0x%x, 0x%x, %d, %p);\n", target, reset, format, type, bufSize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetnPixelMapfvARB)(GLenum map, GLsizei bufSize, GLfloat * values)
{
+ (void) map; (void) bufSize; (void) values;
DISPATCH(GetnPixelMapfvARB, (map, bufSize, values), (F, "glGetnPixelMapfvARB(0x%x, %d, %p);\n", map, bufSize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetnPixelMapuivARB)(GLenum map, GLsizei bufSize, GLuint * values)
{
+ (void) map; (void) bufSize; (void) values;
DISPATCH(GetnPixelMapuivARB, (map, bufSize, values), (F, "glGetnPixelMapuivARB(0x%x, %d, %p);\n", map, bufSize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetnPixelMapusvARB)(GLenum map, GLsizei bufSize, GLushort * values)
{
+ (void) map; (void) bufSize; (void) values;
DISPATCH(GetnPixelMapusvARB, (map, bufSize, values), (F, "glGetnPixelMapusvARB(0x%x, %d, %p);\n", map, bufSize, (const void *) values));
}
KEYWORD1 void KEYWORD2 NAME(GetnPolygonStippleARB)(GLsizei bufSize, GLubyte * pattern)
{
+ (void) bufSize; (void) pattern;
DISPATCH(GetnPolygonStippleARB, (bufSize, pattern), (F, "glGetnPolygonStippleARB(%d, %p);\n", bufSize, (const void *) pattern));
}
KEYWORD1 void KEYWORD2 NAME(GetnSeparableFilterARB)(GLenum target, GLenum format, GLenum type, GLsizei rowBufSize, GLvoid * row, GLsizei columnBufSize, GLvoid * column, GLvoid * span)
{
+ (void) target; (void) format; (void) type; (void) rowBufSize; (void) row; (void) columnBufSize; (void) column; (void) span;
DISPATCH(GetnSeparableFilterARB, (target, format, type, rowBufSize, row, columnBufSize, column, span), (F, "glGetnSeparableFilterARB(0x%x, 0x%x, 0x%x, %d, %p, %d, %p, %p);\n", target, format, type, rowBufSize, (const void *) row, columnBufSize, (const void *) column, (const void *) span));
}
KEYWORD1 void KEYWORD2 NAME(GetnTexImageARB)(GLenum target, GLint level, GLenum format, GLenum type, GLsizei bufSize, GLvoid * img)
{
+ (void) target; (void) level; (void) format; (void) type; (void) bufSize; (void) img;
DISPATCH(GetnTexImageARB, (target, level, format, type, bufSize, img), (F, "glGetnTexImageARB(0x%x, %d, 0x%x, 0x%x, %d, %p);\n", target, level, format, type, bufSize, (const void *) img));
}
KEYWORD1 void KEYWORD2 NAME(GetnUniformdvARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLdouble * params)
{
+ (void) program; (void) location; (void) bufSize; (void) params;
DISPATCH(GetnUniformdvARB, (program, location, bufSize, params), (F, "glGetnUniformdvARB(%d, %d, %d, %p);\n", program, location, bufSize, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetnUniformfvARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLfloat * params)
{
+ (void) program; (void) location; (void) bufSize; (void) params;
DISPATCH(GetnUniformfvARB, (program, location, bufSize, params), (F, "glGetnUniformfvARB(%d, %d, %d, %p);\n", program, location, bufSize, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetnUniformivARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLint * params)
{
+ (void) program; (void) location; (void) bufSize; (void) params;
DISPATCH(GetnUniformivARB, (program, location, bufSize, params), (F, "glGetnUniformivARB(%d, %d, %d, %p);\n", program, location, bufSize, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetnUniformuivARB)(GLhandleARB program, GLint location, GLsizei bufSize, GLuint * params)
{
+ (void) program; (void) location; (void) bufSize; (void) params;
DISPATCH(GetnUniformuivARB, (program, location, bufSize, params), (F, "glGetnUniformuivARB(%d, %d, %d, %p);\n", program, location, bufSize, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ReadnPixelsARB)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, GLvoid * data)
{
+ (void) x; (void) y; (void) width; (void) height; (void) format; (void) type; (void) bufSize; (void) data;
DISPATCH(ReadnPixelsARB, (x, y, width, height, format, type, bufSize, data), (F, "glReadnPixelsARB(%d, %d, %d, %d, 0x%x, 0x%x, %d, %p);\n", x, y, width, height, format, type, bufSize, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias)
{
+ (void) factor; (void) bias;
DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias));
}
@@ -4326,6 +5148,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_648)(GLenum pname, GLfloat * para
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_648)(GLenum pname, GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
}
@@ -4333,6 +5156,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_649)(GLenum pname, GLint * params
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_649)(GLenum pname, GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params));
}
@@ -4340,6 +5164,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_650)(GLenum pname, GLfloat param)
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_650)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param));
}
@@ -4347,6 +5172,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_651)(GLenum pname, const GLfloat
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_651)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
}
@@ -4354,6 +5180,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_652)(GLenum pname, GLint param);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_652)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param));
}
@@ -4361,6 +5188,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_653)(GLenum pname, const GLint *
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_653)(GLenum pname, const GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params));
}
@@ -4368,6 +5196,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_654)(GLclampf value, GLboolean in
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_654)(GLclampf value, GLboolean invert)
{
+ (void) value; (void) invert;
DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert));
}
@@ -4375,51 +5204,61 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_655)(GLenum pattern);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_655)(GLenum pattern)
{
+ (void) pattern;
DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern));
}
KEYWORD1 void KEYWORD2 NAME(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) count; (void) pointer;
DISPATCH(ColorPointerEXT, (size, type, stride, count, pointer), (F, "glColorPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer)
{
+ (void) stride; (void) count; (void) pointer;
DISPATCH(EdgeFlagPointerEXT, (stride, count, pointer), (F, "glEdgeFlagPointerEXT(%d, %d, %p);\n", stride, count, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
{
+ (void) type; (void) stride; (void) count; (void) pointer;
DISPATCH(IndexPointerEXT, (type, stride, count, pointer), (F, "glIndexPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
{
+ (void) type; (void) stride; (void) count; (void) pointer;
DISPATCH(NormalPointerEXT, (type, stride, count, pointer), (F, "glNormalPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) count; (void) pointer;
DISPATCH(TexCoordPointerEXT, (size, type, stride, count, pointer), (F, "glTexCoordPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) count; (void) pointer;
DISPATCH(VertexPointerEXT, (size, type, stride, count, pointer), (F, "glVertexPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(PointParameterf)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterf(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param));
}
@@ -4427,21 +5266,25 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_662)(GLenum pname, GLfloat param)
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_662)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PointParameterfv)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
}
@@ -4449,11 +5292,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_663)(GLenum pname, const GLfloat
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_663)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count)
{
+ (void) first; (void) count;
DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %d);\n", first, count));
}
@@ -4464,241 +5309,289 @@ KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void)
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3b(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bv)(const GLbyte * v)
{
+ (void) v;
DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v)
{
+ (void) v;
DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3d(%f, %f, %f);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v)
{
+ (void) v;
DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3f(%f, %f, %f);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v)
{
+ (void) v;
DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3i)(GLint red, GLint green, GLint blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3i(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iv)(const GLint * v)
{
+ (void) v;
DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v)
{
+ (void) v;
DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3s(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v)
{
+ (void) v;
DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ub(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubv)(const GLubyte * v)
{
+ (void) v;
DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v)
{
+ (void) v;
DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3ui(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiv)(const GLuint * v)
{
+ (void) v;
DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uiv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v)
{
+ (void) v;
DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3us(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue)
{
+ (void) red; (void) green; (void) blue;
DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usv)(const GLushort * v)
{
+ (void) v;
DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v)
{
+ (void) v;
DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(MultiDrawArrays)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount)
{
+ (void) mode; (void) first; (void) count; (void) primcount;
DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArrays(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
}
KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, const GLint * first, const GLsizei * count, GLsizei primcount)
{
+ (void) mode; (void) first; (void) count; (void) primcount;
DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArraysEXT(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
}
KEYWORD1 void KEYWORD2 NAME(MultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount;
DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElements(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
}
KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount;
DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElementsEXT(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
}
KEYWORD1 void KEYWORD2 NAME(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) type; (void) stride; (void) pointer;
DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) type; (void) stride; (void) pointer;
DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(FogCoordd)(GLdouble coord)
{
+ (void) coord;
DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoordd(%f);\n", coord));
}
KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord)
{
+ (void) coord;
DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord));
}
KEYWORD1 void KEYWORD2 NAME(FogCoorddv)(const GLdouble * coord)
{
+ (void) coord;
DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddv(%p);\n", (const void *) coord));
}
KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord)
{
+ (void) coord;
DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (const void *) coord));
}
KEYWORD1 void KEYWORD2 NAME(FogCoordf)(GLfloat coord)
{
+ (void) coord;
DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordf(%f);\n", coord));
}
KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
{
+ (void) coord;
DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
}
KEYWORD1 void KEYWORD2 NAME(FogCoordfv)(const GLfloat * coord)
{
+ (void) coord;
DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfv(%p);\n", (const void *) coord));
}
KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord)
{
+ (void) coord;
DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord));
}
@@ -4706,16 +5599,19 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_690)(GLenum mode);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_690)(GLenum mode)
{
+ (void) mode;
DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
+ (void) sfactorRGB; (void) dfactorRGB; (void) sfactorAlpha; (void) dfactorAlpha;
DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
}
KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
+ (void) sfactorRGB; (void) dfactorRGB; (void) sfactorAlpha; (void) dfactorAlpha;
DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
}
@@ -4723,6 +5619,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_691)(GLenum sfactorRGB, GLenum df
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_691)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
+ (void) sfactorRGB; (void) dfactorRGB; (void) sfactorAlpha; (void) dfactorAlpha;
DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
}
@@ -4733,71 +5630,85 @@ KEYWORD1 void KEYWORD2 NAME(FlushVertexArrayRangeNV)(void)
KEYWORD1 void KEYWORD2 NAME(VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer)
{
+ (void) length; (void) pointer;
DISPATCH(VertexArrayRangeNV, (length, pointer), (F, "glVertexArrayRangeNV(%d, %p);\n", length, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
{
+ (void) stage; (void) portion; (void) variable; (void) input; (void) mapping; (void) componentUsage;
DISPATCH(CombinerInputNV, (stage, portion, variable, input, mapping, componentUsage), (F, "glCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x);\n", stage, portion, variable, input, mapping, componentUsage));
}
KEYWORD1 void KEYWORD2 NAME(CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)
{
+ (void) stage; (void) portion; (void) abOutput; (void) cdOutput; (void) sumOutput; (void) scale; (void) bias; (void) abDotProduct; (void) cdDotProduct; (void) muxSum;
DISPATCH(CombinerOutputNV, (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), (F, "glCombinerOutputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, %d, %d, %d);\n", stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum));
}
KEYWORD1 void KEYWORD2 NAME(CombinerParameterfNV)(GLenum pname, GLfloat param)
{
+ (void) pname; (void) param;
DISPATCH(CombinerParameterfNV, (pname, param), (F, "glCombinerParameterfNV(0x%x, %f);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(CombinerParameterfvNV)(GLenum pname, const GLfloat * params)
{
+ (void) pname; (void) params;
DISPATCH(CombinerParameterfvNV, (pname, params), (F, "glCombinerParameterfvNV(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(CombinerParameteriNV)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(CombinerParameteriNV, (pname, param), (F, "glCombinerParameteriNV(0x%x, %d);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(CombinerParameterivNV)(GLenum pname, const GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(CombinerParameterivNV, (pname, params), (F, "glCombinerParameterivNV(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
{
+ (void) variable; (void) input; (void) mapping; (void) componentUsage;
DISPATCH(FinalCombinerInputNV, (variable, input, mapping, componentUsage), (F, "glFinalCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x);\n", variable, input, mapping, componentUsage));
}
KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params)
{
+ (void) stage; (void) portion; (void) variable; (void) pname; (void) params;
DISPATCH(GetCombinerInputParameterfvNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterfvNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params)
{
+ (void) stage; (void) portion; (void) variable; (void) pname; (void) params;
DISPATCH(GetCombinerInputParameterivNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterivNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params)
{
+ (void) stage; (void) portion; (void) pname; (void) params;
DISPATCH(GetCombinerOutputParameterfvNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterfvNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params)
{
+ (void) stage; (void) portion; (void) pname; (void) params;
DISPATCH(GetCombinerOutputParameterivNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterivNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params)
{
+ (void) variable; (void) pname; (void) params;
DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterfvNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params)
{
+ (void) variable; (void) pname; (void) params;
DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterivNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params));
}
@@ -4808,281 +5719,337 @@ KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void)
KEYWORD1 void KEYWORD2 NAME(WindowPos2d)(GLdouble x, GLdouble y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2d(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2dMESA)(GLdouble x, GLdouble y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * v)
{
+ (void) v;
DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v)
{
+ (void) v;
DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2f)(GLfloat x, GLfloat y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2f(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * v)
{
+ (void) v;
DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v)
{
+ (void) v;
DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2i)(GLint x, GLint y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2i(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2iv)(const GLint * v)
{
+ (void) v;
DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * v)
{
+ (void) v;
DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v)
{
+ (void) v;
DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2s)(GLshort x, GLshort y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2s(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y)
{
+ (void) x; (void) y;
DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * v)
{
+ (void) v;
DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v)
{
+ (void) v;
DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3d(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3dv)(const GLdouble * v)
{
+ (void) v;
DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * v)
{
+ (void) v;
DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v)
{
+ (void) v;
DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3f(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3fv)(const GLfloat * v)
{
+ (void) v;
DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * v)
{
+ (void) v;
DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v)
{
+ (void) v;
DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3i)(GLint x, GLint y, GLint z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3i(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3iv)(const GLint * v)
{
+ (void) v;
DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3iv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * v)
{
+ (void) v;
DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v)
{
+ (void) v;
DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3s)(GLshort x, GLshort y, GLshort z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3s(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z)
{
+ (void) x; (void) y; (void) z;
DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3sv)(const GLshort * v)
{
+ (void) v;
DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3sv(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * v)
{
+ (void) v;
DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svARB(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v)
{
+ (void) v;
DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v)
{
+ (void) v;
DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4fvMESA)(const GLfloat * v)
{
+ (void) v;
DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v)
{
+ (void) v;
DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w)
{
+ (void) x; (void) y; (void) z; (void) w;
DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v)
{
+ (void) v;
DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v));
}
@@ -5090,6 +6057,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_732)(const GLenum * mode, const G
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_732)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)
{
+ (void) mode; (void) first; (void) count; (void) primcount; (void) modestride;
DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride));
}
@@ -5097,6 +6065,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_733)(const GLenum * mode, const G
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_733)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride)
{
+ (void) mode; (void) count; (void) type; (void) indices; (void) primcount; (void) modestride;
DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride));
}
@@ -5104,6 +6073,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_734)(GLsizei n, const GLuint * fe
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_734)(GLsizei n, const GLuint * fences)
{
+ (void) n; (void) fences;
DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences));
}
@@ -5111,6 +6081,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_735)(GLuint fence);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_735)(GLuint fence)
{
+ (void) fence;
DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence));
}
@@ -5118,6 +6089,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_736)(GLsizei n, GLuint * fences);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_736)(GLsizei n, GLuint * fences)
{
+ (void) n; (void) fences;
DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences));
}
@@ -5125,6 +6097,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_737)(GLuint fence, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_737)(GLuint fence, GLenum pname, GLint * params)
{
+ (void) fence; (void) pname; (void) params;
DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params));
}
@@ -5132,6 +6105,7 @@ KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_738)(GLuint fence);
KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_738)(GLuint fence)
{
+ (void) fence;
RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence));
}
@@ -5139,6 +6113,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_739)(GLuint fence, GLenum conditi
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_739)(GLuint fence, GLenum condition)
{
+ (void) fence; (void) condition;
DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition));
}
@@ -5146,371 +6121,445 @@ KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_740)(GLuint fence);
KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_740)(GLuint fence)
{
+ (void) fence;
RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence));
}
KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences)
{
+ (void) n; (void) ids; (void) residences;
RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences));
}
KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint program)
{
+ (void) target; (void) program;
DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramARB(0x%x, %d);\n", target, program));
}
KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint program)
{
+ (void) target; (void) program;
DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramNV(0x%x, %d);\n", target, program));
}
KEYWORD1 void KEYWORD2 NAME(DeleteProgramsARB)(GLsizei n, const GLuint * programs)
{
+ (void) n; (void) programs;
DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsARB(%d, %p);\n", n, (const void *) programs));
}
KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * programs)
{
+ (void) n; (void) programs;
DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) programs));
}
KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params)
{
+ (void) target; (void) id; (void) params;
DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GenProgramsARB)(GLsizei n, GLuint * programs)
{
+ (void) n; (void) programs;
DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsARB(%d, %p);\n", n, (const void *) programs));
}
KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * programs)
{
+ (void) n; (void) programs;
DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) programs));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params)
{
+ (void) target; (void) index; (void) pname; (void) params;
DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params)
{
+ (void) target; (void) index; (void) pname; (void) params;
DISPATCH(GetProgramParameterfvNV, (target, index, pname, params), (F, "glGetProgramParameterfvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program)
{
+ (void) id; (void) pname; (void) program;
DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);\n", id, pname, (const void *) program));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params)
{
+ (void) id; (void) pname; (void) params;
DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params)
{
+ (void) target; (void) address; (void) pname; (void) params;
DISPATCH(GetTrackMatrixivNV, (target, address, pname, params), (F, "glGetTrackMatrixivNV(0x%x, %d, 0x%x, %p);\n", target, address, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid ** pointer)
{
+ (void) index; (void) pname; (void) pointer;
DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointerv(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid ** pointer)
{
+ (void) index; (void) pname; (void) pointer;
DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer)
{
+ (void) index; (void) pname; (void) pointer;
DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramARB)(GLuint program)
{
+ (void) program;
RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramARB(%d);\n", program));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint program)
{
+ (void) program;
RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramNV(%d);\n", program));
}
KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
{
+ (void) target; (void) id; (void) len; (void) program;
DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program));
}
KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLsizei num, const GLdouble * params)
{
+ (void) target; (void) index; (void) num; (void) params;
DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLsizei num, const GLfloat * params)
{
+ (void) target; (void) index; (void) num; (void) params;
DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids)
{
+ (void) n; (void) ids;
DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%d, %p);\n", n, (const void *) ids));
}
KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform)
{
+ (void) target; (void) address; (void) matrix; (void) transform;
DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);\n", target, address, matrix, transform));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) index; (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(VertexAttribPointerNV, (index, size, type, stride, pointer), (F, "glVertexAttribPointerNV(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v)
{
+ (void) index; (void) n; (void) v;
DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param)
{
+ (void) pname; (void) param;
DISPATCH(GetTexBumpParameterfvATI, (pname, param), (F, "glGetTexBumpParameterfvATI(0x%x, %p);\n", pname, (const void *) param));
}
KEYWORD1 void KEYWORD2 NAME(GetTexBumpParameterivATI)(GLenum pname, GLint * param)
{
+ (void) pname; (void) param;
DISPATCH(GetTexBumpParameterivATI, (pname, param), (F, "glGetTexBumpParameterivATI(0x%x, %p);\n", pname, (const void *) param));
}
KEYWORD1 void KEYWORD2 NAME(TexBumpParameterfvATI)(GLenum pname, const GLfloat * param)
{
+ (void) pname; (void) param;
DISPATCH(TexBumpParameterfvATI, (pname, param), (F, "glTexBumpParameterfvATI(0x%x, %p);\n", pname, (const void *) param));
}
KEYWORD1 void KEYWORD2 NAME(TexBumpParameterivATI)(GLenum pname, const GLint * param)
{
+ (void) pname; (void) param;
DISPATCH(TexBumpParameterivATI, (pname, param), (F, "glTexBumpParameterivATI(0x%x, %p);\n", pname, (const void *) param));
}
KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
{
+ (void) op; (void) dst; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod;
DISPATCH(AlphaFragmentOp1ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod), (F, "glAlphaFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod));
}
KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
{
+ (void) op; (void) dst; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod;
DISPATCH(AlphaFragmentOp2ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glAlphaFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
}
KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
{
+ (void) op; (void) dst; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod; (void) arg3; (void) arg3Rep; (void) arg3Mod;
DISPATCH(AlphaFragmentOp3ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glAlphaFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
}
@@ -5521,26 +6570,31 @@ KEYWORD1 void KEYWORD2 NAME(BeginFragmentShaderATI)(void)
KEYWORD1 void KEYWORD2 NAME(BindFragmentShaderATI)(GLuint id)
{
+ (void) id;
DISPATCH(BindFragmentShaderATI, (id), (F, "glBindFragmentShaderATI(%d);\n", id));
}
KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
{
+ (void) op; (void) dst; (void) dstMask; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod;
DISPATCH(ColorFragmentOp1ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), (F, "glColorFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod));
}
KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
{
+ (void) op; (void) dst; (void) dstMask; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod;
DISPATCH(ColorFragmentOp2ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glColorFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
}
KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
{
+ (void) op; (void) dst; (void) dstMask; (void) dstMod; (void) arg1; (void) arg1Rep; (void) arg1Mod; (void) arg2; (void) arg2Rep; (void) arg2Mod; (void) arg3; (void) arg3Rep; (void) arg3Mod;
DISPATCH(ColorFragmentOp3ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glColorFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
}
KEYWORD1 void KEYWORD2 NAME(DeleteFragmentShaderATI)(GLuint id)
{
+ (void) id;
DISPATCH(DeleteFragmentShaderATI, (id), (F, "glDeleteFragmentShaderATI(%d);\n", id));
}
@@ -5551,41 +6605,49 @@ KEYWORD1 void KEYWORD2 NAME(EndFragmentShaderATI)(void)
KEYWORD1 GLuint KEYWORD2 NAME(GenFragmentShadersATI)(GLuint range)
{
+ (void) range;
RETURN_DISPATCH(GenFragmentShadersATI, (range), (F, "glGenFragmentShadersATI(%d);\n", range));
}
KEYWORD1 void KEYWORD2 NAME(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle)
{
+ (void) dst; (void) coord; (void) swizzle;
DISPATCH(PassTexCoordATI, (dst, coord, swizzle), (F, "glPassTexCoordATI(%d, %d, 0x%x);\n", dst, coord, swizzle));
}
KEYWORD1 void KEYWORD2 NAME(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle)
{
+ (void) dst; (void) interp; (void) swizzle;
DISPATCH(SampleMapATI, (dst, interp, swizzle), (F, "glSampleMapATI(%d, %d, 0x%x);\n", dst, interp, swizzle));
}
KEYWORD1 void KEYWORD2 NAME(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value)
{
+ (void) dst; (void) value;
DISPATCH(SetFragmentShaderConstantATI, (dst, value), (F, "glSetFragmentShaderConstantATI(%d, %p);\n", dst, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(PointParameteri)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteri(0x%x, %d);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint param)
{
+ (void) pname; (void) param;
DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteriNV(0x%x, %d);\n", pname, param));
}
KEYWORD1 void KEYWORD2 NAME(PointParameteriv)(GLenum pname, const GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameteriv(0x%x, %p);\n", pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * params)
{
+ (void) pname; (void) params;
DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params));
}
@@ -5593,6 +6655,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLenum face);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_821)(GLenum face)
{
+ (void) face;
DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face));
}
@@ -5600,11 +6663,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_822)(GLuint array);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_822)(GLuint array)
{
+ (void) array;
DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array));
}
KEYWORD1 void KEYWORD2 NAME(DeleteVertexArrays)(GLsizei n, const GLuint * arrays)
{
+ (void) n; (void) arrays;
DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArrays(%d, %p);\n", n, (const void *) arrays));
}
@@ -5612,6 +6677,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLsizei n, const GLuint * ar
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_823)(GLsizei n, const GLuint * arrays)
{
+ (void) n; (void) arrays;
DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
}
@@ -5619,11 +6685,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLsizei n, GLuint * arrays);
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_824)(GLsizei n, GLuint * arrays)
{
+ (void) n; (void) arrays;
DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArray)(GLuint array)
{
+ (void) array;
RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArray(%d);\n", array));
}
@@ -5631,46 +6699,55 @@ KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_825)(GLuint array);
KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_825)(GLuint array)
{
+ (void) array;
RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params)
{
+ (void) id; (void) len; (void) name; (void) params;
DISPATCH(GetProgramNamedParameterdvNV, (id, len, name, params), (F, "glGetProgramNamedParameterdvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params)
{
+ (void) id; (void) len; (void) name; (void) params;
DISPATCH(GetProgramNamedParameterfvNV, (id, len, name, params), (F, "glGetProgramNamedParameterfvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
{
+ (void) id; (void) len; (void) name; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramNamedParameter4dNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4dNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)
{
+ (void) id; (void) len; (void) name; (void) v;
DISPATCH(ProgramNamedParameter4dvNV, (id, len, name, v), (F, "glProgramNamedParameter4dvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
{
+ (void) id; (void) len; (void) name; (void) x; (void) y; (void) z; (void) w;
DISPATCH(ProgramNamedParameter4fNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4fNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)
{
+ (void) id; (void) len; (void) name; (void) v;
DISPATCH(ProgramNamedParameter4fvNV, (id, len, name, v), (F, "glProgramNamedParameter4fvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartIndexNV)(GLuint index)
{
+ (void) index;
DISPATCH(PrimitiveRestartIndexNV, (index), (F, "glPrimitiveRestartIndexNV(%d);\n", index));
}
KEYWORD1 void KEYWORD2 NAME(PrimitiveRestartIndex)(GLuint index)
{
+ (void) index;
DISPATCH(PrimitiveRestartIndexNV, (index), (F, "glPrimitiveRestartIndex(%d);\n", index));
}
@@ -5683,11 +6760,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_834)(GLclampd zmin, GLclampd zmax
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_834)(GLclampd zmin, GLclampd zmax)
{
+ (void) zmin; (void) zmax;
DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax));
}
KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA)
{
+ (void) modeRGB; (void) modeA;
DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparate(0x%x, 0x%x);\n", modeRGB, modeA));
}
@@ -5695,181 +6774,217 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_835)(GLenum modeRGB, GLenum modeA
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_835)(GLenum modeRGB, GLenum modeA)
{
+ (void) modeRGB; (void) modeA;
DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA));
}
KEYWORD1 void KEYWORD2 NAME(BindFramebuffer)(GLenum target, GLuint framebuffer)
{
+ (void) target; (void) framebuffer;
DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebuffer(0x%x, %d);\n", target, framebuffer));
}
KEYWORD1 void KEYWORD2 NAME(BindFramebufferEXT)(GLenum target, GLuint framebuffer)
{
+ (void) target; (void) framebuffer;
DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebufferEXT(0x%x, %d);\n", target, framebuffer));
}
KEYWORD1 void KEYWORD2 NAME(BindRenderbuffer)(GLenum target, GLuint renderbuffer)
{
+ (void) target; (void) renderbuffer;
DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbuffer(0x%x, %d);\n", target, renderbuffer));
}
KEYWORD1 void KEYWORD2 NAME(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer)
{
+ (void) target; (void) renderbuffer;
DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbufferEXT(0x%x, %d);\n", target, renderbuffer));
}
KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatus)(GLenum target)
{
+ (void) target;
RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatus(0x%x);\n", target));
}
KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatusEXT)(GLenum target)
{
+ (void) target;
RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatusEXT(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffers)(GLsizei n, const GLuint * framebuffers)
{
+ (void) n; (void) framebuffers;
DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffers(%d, %p);\n", n, (const void *) framebuffers));
}
KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers)
{
+ (void) n; (void) framebuffers;
DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
}
KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffers)(GLsizei n, const GLuint * renderbuffers)
{
+ (void) n; (void) renderbuffers;
DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffers(%d, %p);\n", n, (const void *) renderbuffers));
}
KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers)
{
+ (void) n; (void) renderbuffers;
DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
+ (void) target; (void) attachment; (void) renderbuffertarget; (void) renderbuffer;
DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbuffer(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
{
+ (void) target; (void) attachment; (void) renderbuffertarget; (void) renderbuffer;
DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbufferEXT(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
+ (void) target; (void) attachment; (void) textarget; (void) texture; (void) level;
DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1D(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
+ (void) target; (void) attachment; (void) textarget; (void) texture; (void) level;
DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
+ (void) target; (void) attachment; (void) textarget; (void) texture; (void) level;
DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2D(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
{
+ (void) target; (void) attachment; (void) textarget; (void) texture; (void) level;
DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
{
+ (void) target; (void) attachment; (void) textarget; (void) texture; (void) level; (void) zoffset;
DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3D(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
{
+ (void) target; (void) attachment; (void) textarget; (void) texture; (void) level; (void) zoffset;
DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3DEXT(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
}
KEYWORD1 void KEYWORD2 NAME(GenFramebuffers)(GLsizei n, GLuint * framebuffers)
{
+ (void) n; (void) framebuffers;
DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffers(%d, %p);\n", n, (const void *) framebuffers));
}
KEYWORD1 void KEYWORD2 NAME(GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers)
{
+ (void) n; (void) framebuffers;
DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
}
KEYWORD1 void KEYWORD2 NAME(GenRenderbuffers)(GLsizei n, GLuint * renderbuffers)
{
+ (void) n; (void) renderbuffers;
DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffers(%d, %p);\n", n, (const void *) renderbuffers));
}
KEYWORD1 void KEYWORD2 NAME(GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers)
{
+ (void) n; (void) renderbuffers;
DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
}
KEYWORD1 void KEYWORD2 NAME(GenerateMipmap)(GLenum target)
{
+ (void) target;
DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmap(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(GenerateMipmapEXT)(GLenum target)
{
+ (void) target;
DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmapEXT(0x%x);\n", target));
}
KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
{
+ (void) target; (void) attachment; (void) pname; (void) params;
DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameteriv(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
{
+ (void) target; (void) attachment; (void) pname; (void) params;
DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameterivEXT(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebuffer)(GLuint framebuffer)
{
+ (void) framebuffer;
RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebuffer(%d);\n", framebuffer));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebufferEXT)(GLuint framebuffer)
{
+ (void) framebuffer;
RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebufferEXT(%d);\n", framebuffer));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbuffer)(GLuint renderbuffer)
{
+ (void) renderbuffer;
RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbuffer(%d);\n", renderbuffer));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbufferEXT)(GLuint renderbuffer)
{
+ (void) renderbuffer;
RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbufferEXT(%d);\n", renderbuffer));
}
KEYWORD1 void KEYWORD2 NAME(RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
+ (void) target; (void) internalformat; (void) width; (void) height;
DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorage(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
}
KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
{
+ (void) target; (void) internalformat; (void) width; (void) height;
DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorageEXT(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
}
KEYWORD1 void KEYWORD2 NAME(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
+ (void) srcX0; (void) srcY0; (void) srcX1; (void) srcY1; (void) dstX0; (void) dstY0; (void) dstX1; (void) dstY1; (void) mask; (void) filter;
DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebuffer(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
}
@@ -5877,6 +6992,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_853)(GLint srcX0, GLint srcY0, GL
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_853)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
{
+ (void) srcX0; (void) srcY0; (void) srcX1; (void) srcY1; (void) dstX0; (void) dstY0; (void) dstX1; (void) dstY1; (void) mask; (void) filter;
DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
}
@@ -5884,6 +7000,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_854)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_854)(GLenum target, GLenum pname, GLint param)
{
+ (void) target; (void) pname; (void) param;
DISPATCH(BufferParameteriAPPLE, (target, pname, param), (F, "glBufferParameteriAPPLE(0x%x, 0x%x, %d);\n", target, pname, param));
}
@@ -5891,476 +7008,577 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_855)(GLenum target, GLintptr offs
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_855)(GLenum target, GLintptr offset, GLsizeiptr size)
{
+ (void) target; (void) offset; (void) size;
DISPATCH(FlushMappedBufferRangeAPPLE, (target, offset, size), (F, "glFlushMappedBufferRangeAPPLE(0x%x, %d, %d);\n", target, offset, size));
}
KEYWORD1 void KEYWORD2 NAME(BindFragDataLocationEXT)(GLuint program, GLuint colorNumber, const GLchar * name)
{
+ (void) program; (void) colorNumber; (void) name;
DISPATCH(BindFragDataLocationEXT, (program, colorNumber, name), (F, "glBindFragDataLocationEXT(%d, %d, %p);\n", program, colorNumber, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(BindFragDataLocation)(GLuint program, GLuint colorNumber, const GLchar * name)
{
+ (void) program; (void) colorNumber; (void) name;
DISPATCH(BindFragDataLocationEXT, (program, colorNumber, name), (F, "glBindFragDataLocation(%d, %d, %p);\n", program, colorNumber, (const void *) name));
}
KEYWORD1 GLint KEYWORD2 NAME(GetFragDataLocationEXT)(GLuint program, const GLchar * name)
{
+ (void) program; (void) name;
RETURN_DISPATCH(GetFragDataLocationEXT, (program, name), (F, "glGetFragDataLocationEXT(%d, %p);\n", program, (const void *) name));
}
KEYWORD1 GLint KEYWORD2 NAME(GetFragDataLocation)(GLuint program, const GLchar * name)
{
+ (void) program; (void) name;
RETURN_DISPATCH(GetFragDataLocationEXT, (program, name), (F, "glGetFragDataLocation(%d, %p);\n", program, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(GetUniformuivEXT)(GLuint program, GLint location, GLuint * params)
{
+ (void) program; (void) location; (void) params;
DISPATCH(GetUniformuivEXT, (program, location, params), (F, "glGetUniformuivEXT(%d, %d, %p);\n", program, location, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetUniformuiv)(GLuint program, GLint location, GLuint * params)
{
+ (void) program; (void) location; (void) params;
DISPATCH(GetUniformuivEXT, (program, location, params), (F, "glGetUniformuiv(%d, %d, %p);\n", program, location, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIivEXT)(GLuint index, GLenum pname, GLint * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribIivEXT, (index, pname, params), (F, "glGetVertexAttribIivEXT(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIiv)(GLuint index, GLenum pname, GLint * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribIivEXT, (index, pname, params), (F, "glGetVertexAttribIiv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIuivEXT)(GLuint index, GLenum pname, GLuint * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribIuivEXT, (index, pname, params), (F, "glGetVertexAttribIuivEXT(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetVertexAttribIuiv)(GLuint index, GLenum pname, GLuint * params)
{
+ (void) index; (void) pname; (void) params;
DISPATCH(GetVertexAttribIuivEXT, (index, pname, params), (F, "glGetVertexAttribIuiv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1uiEXT)(GLint location, GLuint x)
{
+ (void) location; (void) x;
DISPATCH(Uniform1uiEXT, (location, x), (F, "glUniform1uiEXT(%d, %d);\n", location, x));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1ui)(GLint location, GLuint x)
{
+ (void) location; (void) x;
DISPATCH(Uniform1uiEXT, (location, x), (F, "glUniform1ui(%d, %d);\n", location, x));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1uivEXT)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform1uivEXT, (location, count, value), (F, "glUniform1uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform1uiv)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform1uivEXT, (location, count, value), (F, "glUniform1uiv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2uiEXT)(GLint location, GLuint x, GLuint y)
{
+ (void) location; (void) x; (void) y;
DISPATCH(Uniform2uiEXT, (location, x, y), (F, "glUniform2uiEXT(%d, %d, %d);\n", location, x, y));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2ui)(GLint location, GLuint x, GLuint y)
{
+ (void) location; (void) x; (void) y;
DISPATCH(Uniform2uiEXT, (location, x, y), (F, "glUniform2ui(%d, %d, %d);\n", location, x, y));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2uivEXT)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform2uivEXT, (location, count, value), (F, "glUniform2uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform2uiv)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform2uivEXT, (location, count, value), (F, "glUniform2uiv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3uiEXT)(GLint location, GLuint x, GLuint y, GLuint z)
{
+ (void) location; (void) x; (void) y; (void) z;
DISPATCH(Uniform3uiEXT, (location, x, y, z), (F, "glUniform3uiEXT(%d, %d, %d, %d);\n", location, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3ui)(GLint location, GLuint x, GLuint y, GLuint z)
{
+ (void) location; (void) x; (void) y; (void) z;
DISPATCH(Uniform3uiEXT, (location, x, y, z), (F, "glUniform3ui(%d, %d, %d, %d);\n", location, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3uivEXT)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform3uivEXT, (location, count, value), (F, "glUniform3uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform3uiv)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform3uivEXT, (location, count, value), (F, "glUniform3uiv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4uiEXT)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
{
+ (void) location; (void) x; (void) y; (void) z; (void) w;
DISPATCH(Uniform4uiEXT, (location, x, y, z, w), (F, "glUniform4uiEXT(%d, %d, %d, %d, %d);\n", location, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4ui)(GLint location, GLuint x, GLuint y, GLuint z, GLuint w)
{
+ (void) location; (void) x; (void) y; (void) z; (void) w;
DISPATCH(Uniform4uiEXT, (location, x, y, z, w), (F, "glUniform4ui(%d, %d, %d, %d, %d);\n", location, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4uivEXT)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform4uivEXT, (location, count, value), (F, "glUniform4uivEXT(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(Uniform4uiv)(GLint location, GLsizei count, const GLuint * value)
{
+ (void) location; (void) count; (void) value;
DISPATCH(Uniform4uivEXT, (location, count, value), (F, "glUniform4uiv(%d, %d, %p);\n", location, count, (const void *) value));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1iEXT)(GLuint index, GLint x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttribI1iEXT, (index, x), (F, "glVertexAttribI1iEXT(%d, %d);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1i)(GLuint index, GLint x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttribI1iEXT, (index, x), (F, "glVertexAttribI1i(%d, %d);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1ivEXT)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI1ivEXT, (index, v), (F, "glVertexAttribI1ivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1iv)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI1ivEXT, (index, v), (F, "glVertexAttribI1iv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uiEXT)(GLuint index, GLuint x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttribI1uiEXT, (index, x), (F, "glVertexAttribI1uiEXT(%d, %d);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1ui)(GLuint index, GLuint x)
{
+ (void) index; (void) x;
DISPATCH(VertexAttribI1uiEXT, (index, x), (F, "glVertexAttribI1ui(%d, %d);\n", index, x));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uivEXT)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI1uivEXT, (index, v), (F, "glVertexAttribI1uivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI1uiv)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI1uivEXT, (index, v), (F, "glVertexAttribI1uiv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2iEXT)(GLuint index, GLint x, GLint y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttribI2iEXT, (index, x, y), (F, "glVertexAttribI2iEXT(%d, %d, %d);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2i)(GLuint index, GLint x, GLint y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttribI2iEXT, (index, x, y), (F, "glVertexAttribI2i(%d, %d, %d);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2ivEXT)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI2ivEXT, (index, v), (F, "glVertexAttribI2ivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2iv)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI2ivEXT, (index, v), (F, "glVertexAttribI2iv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uiEXT)(GLuint index, GLuint x, GLuint y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttribI2uiEXT, (index, x, y), (F, "glVertexAttribI2uiEXT(%d, %d, %d);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2ui)(GLuint index, GLuint x, GLuint y)
{
+ (void) index; (void) x; (void) y;
DISPATCH(VertexAttribI2uiEXT, (index, x, y), (F, "glVertexAttribI2ui(%d, %d, %d);\n", index, x, y));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uivEXT)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI2uivEXT, (index, v), (F, "glVertexAttribI2uivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI2uiv)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI2uivEXT, (index, v), (F, "glVertexAttribI2uiv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3iEXT)(GLuint index, GLint x, GLint y, GLint z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttribI3iEXT, (index, x, y, z), (F, "glVertexAttribI3iEXT(%d, %d, %d, %d);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3i)(GLuint index, GLint x, GLint y, GLint z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttribI3iEXT, (index, x, y, z), (F, "glVertexAttribI3i(%d, %d, %d, %d);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3ivEXT)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI3ivEXT, (index, v), (F, "glVertexAttribI3ivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3iv)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI3ivEXT, (index, v), (F, "glVertexAttribI3iv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttribI3uiEXT, (index, x, y, z), (F, "glVertexAttribI3uiEXT(%d, %d, %d, %d);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3ui)(GLuint index, GLuint x, GLuint y, GLuint z)
{
+ (void) index; (void) x; (void) y; (void) z;
DISPATCH(VertexAttribI3uiEXT, (index, x, y, z), (F, "glVertexAttribI3ui(%d, %d, %d, %d);\n", index, x, y, z));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uivEXT)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI3uivEXT, (index, v), (F, "glVertexAttribI3uivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI3uiv)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI3uivEXT, (index, v), (F, "glVertexAttribI3uiv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4bvEXT)(GLuint index, const GLbyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4bvEXT, (index, v), (F, "glVertexAttribI4bvEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4bv)(GLuint index, const GLbyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4bvEXT, (index, v), (F, "glVertexAttribI4bv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4iEXT)(GLuint index, GLint x, GLint y, GLint z, GLint w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttribI4iEXT, (index, x, y, z, w), (F, "glVertexAttribI4iEXT(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4i)(GLuint index, GLint x, GLint y, GLint z, GLint w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttribI4iEXT, (index, x, y, z, w), (F, "glVertexAttribI4i(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ivEXT)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4ivEXT, (index, v), (F, "glVertexAttribI4ivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4iv)(GLuint index, const GLint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4ivEXT, (index, v), (F, "glVertexAttribI4iv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4svEXT)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4svEXT, (index, v), (F, "glVertexAttribI4svEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4sv)(GLuint index, const GLshort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4svEXT, (index, v), (F, "glVertexAttribI4sv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ubvEXT)(GLuint index, const GLubyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4ubvEXT, (index, v), (F, "glVertexAttribI4ubvEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ubv)(GLuint index, const GLubyte * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4ubvEXT, (index, v), (F, "glVertexAttribI4ubv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uiEXT)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttribI4uiEXT, (index, x, y, z, w), (F, "glVertexAttribI4uiEXT(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4ui)(GLuint index, GLuint x, GLuint y, GLuint z, GLuint w)
{
+ (void) index; (void) x; (void) y; (void) z; (void) w;
DISPATCH(VertexAttribI4uiEXT, (index, x, y, z, w), (F, "glVertexAttribI4ui(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uivEXT)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4uivEXT, (index, v), (F, "glVertexAttribI4uivEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4uiv)(GLuint index, const GLuint * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4uivEXT, (index, v), (F, "glVertexAttribI4uiv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4usvEXT)(GLuint index, const GLushort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4usvEXT, (index, v), (F, "glVertexAttribI4usvEXT(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribI4usv)(GLuint index, const GLushort * v)
{
+ (void) index; (void) v;
DISPATCH(VertexAttribI4usvEXT, (index, v), (F, "glVertexAttribI4usv(%d, %p);\n", index, (const void *) v));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribIPointerEXT)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) index; (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(VertexAttribIPointerEXT, (index, size, type, stride, pointer), (F, "glVertexAttribIPointerEXT(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(VertexAttribIPointer)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
{
+ (void) index; (void) size; (void) type; (void) stride; (void) pointer;
DISPATCH(VertexAttribIPointerEXT, (index, size, type, stride, pointer), (F, "glVertexAttribIPointer(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
+ (void) target; (void) attachment; (void) texture; (void) level; (void) layer;
DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayer(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
}
+KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayerARB)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+{
+ (void) target; (void) attachment; (void) texture; (void) level; (void) layer;
+ DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayerARB(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
+}
+
KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
{
+ (void) target; (void) attachment; (void) texture; (void) level; (void) layer;
DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayerEXT(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
}
KEYWORD1 void KEYWORD2 NAME(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
+ (void) buf; (void) r; (void) g; (void) b; (void) a;
DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaskIndexedEXT(%d, %d, %d, %d, %d);\n", buf, r, g, b, a));
}
KEYWORD1 void KEYWORD2 NAME(ColorMaski)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
+ (void) buf; (void) r; (void) g; (void) b; (void) a;
DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaski(%d, %d, %d, %d, %d);\n", buf, r, g, b, a));
}
KEYWORD1 void KEYWORD2 NAME(DisableIndexedEXT)(GLenum target, GLuint index)
{
+ (void) target; (void) index;
DISPATCH(DisableIndexedEXT, (target, index), (F, "glDisableIndexedEXT(0x%x, %d);\n", target, index));
}
KEYWORD1 void KEYWORD2 NAME(Disablei)(GLenum target, GLuint index)
{
+ (void) target; (void) index;
DISPATCH(DisableIndexedEXT, (target, index), (F, "glDisablei(0x%x, %d);\n", target, index));
}
KEYWORD1 void KEYWORD2 NAME(EnableIndexedEXT)(GLenum target, GLuint index)
{
+ (void) target; (void) index;
DISPATCH(EnableIndexedEXT, (target, index), (F, "glEnableIndexedEXT(0x%x, %d);\n", target, index));
}
KEYWORD1 void KEYWORD2 NAME(Enablei)(GLenum target, GLuint index)
{
+ (void) target; (void) index;
DISPATCH(EnableIndexedEXT, (target, index), (F, "glEnablei(0x%x, %d);\n", target, index));
}
KEYWORD1 void KEYWORD2 NAME(GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data)
{
+ (void) value; (void) index; (void) data;
DISPATCH(GetBooleanIndexedvEXT, (value, index, data), (F, "glGetBooleanIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(GetBooleani_v)(GLenum value, GLuint index, GLboolean * data)
{
+ (void) value; (void) index; (void) data;
DISPATCH(GetBooleanIndexedvEXT, (value, index, data), (F, "glGetBooleani_v(0x%x, %d, %p);\n", value, index, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data)
{
+ (void) value; (void) index; (void) data;
DISPATCH(GetIntegerIndexedvEXT, (value, index, data), (F, "glGetIntegerIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data));
}
KEYWORD1 void KEYWORD2 NAME(GetIntegeri_v)(GLenum value, GLuint index, GLint * data)
{
+ (void) value; (void) index; (void) data;
DISPATCH(GetIntegerIndexedvEXT, (value, index, data), (F, "glGetIntegeri_v(0x%x, %d, %p);\n", value, index, (const void *) data));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabledIndexedEXT)(GLenum target, GLuint index)
{
+ (void) target; (void) index;
RETURN_DISPATCH(IsEnabledIndexedEXT, (target, index), (F, "glIsEnabledIndexedEXT(0x%x, %d);\n", target, index));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabledi)(GLenum target, GLuint index)
{
+ (void) target; (void) index;
RETURN_DISPATCH(IsEnabledIndexedEXT, (target, index), (F, "glIsEnabledi(0x%x, %d);\n", target, index));
}
KEYWORD1 void KEYWORD2 NAME(ClearColorIiEXT)(GLint r, GLint g, GLint b, GLint a)
{
+ (void) r; (void) g; (void) b; (void) a;
DISPATCH(ClearColorIiEXT, (r, g, b, a), (F, "glClearColorIiEXT(%d, %d, %d, %d);\n", r, g, b, a));
}
KEYWORD1 void KEYWORD2 NAME(ClearColorIuiEXT)(GLuint r, GLuint g, GLuint b, GLuint a)
{
+ (void) r; (void) g; (void) b; (void) a;
DISPATCH(ClearColorIuiEXT, (r, g, b, a), (F, "glClearColorIuiEXT(%d, %d, %d, %d);\n", r, g, b, a));
}
KEYWORD1 void KEYWORD2 NAME(GetTexParameterIivEXT)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexParameterIivEXT, (target, pname, params), (F, "glGetTexParameterIivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexParameterIiv)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexParameterIivEXT, (target, pname, params), (F, "glGetTexParameterIiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexParameterIuivEXT)(GLenum target, GLenum pname, GLuint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexParameterIuivEXT, (target, pname, params), (F, "glGetTexParameterIuivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetTexParameterIuiv)(GLenum target, GLenum pname, GLuint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexParameterIuivEXT, (target, pname, params), (F, "glGetTexParameterIuiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexParameterIivEXT)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexParameterIivEXT, (target, pname, params), (F, "glTexParameterIivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexParameterIiv)(GLenum target, GLenum pname, const GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexParameterIivEXT, (target, pname, params), (F, "glTexParameterIiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexParameterIuivEXT)(GLenum target, GLenum pname, const GLuint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexParameterIuivEXT, (target, pname, params), (F, "glTexParameterIuivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(TexParameterIuiv)(GLenum target, GLenum pname, const GLuint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(TexParameterIuivEXT, (target, pname, params), (F, "glTexParameterIuiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(BeginConditionalRenderNV)(GLuint query, GLenum mode)
{
+ (void) query; (void) mode;
DISPATCH(BeginConditionalRenderNV, (query, mode), (F, "glBeginConditionalRenderNV(%d, 0x%x);\n", query, mode));
}
KEYWORD1 void KEYWORD2 NAME(BeginConditionalRender)(GLuint query, GLenum mode)
{
+ (void) query; (void) mode;
DISPATCH(BeginConditionalRenderNV, (query, mode), (F, "glBeginConditionalRender(%d, 0x%x);\n", query, mode));
}
@@ -6376,36 +7594,43 @@ KEYWORD1 void KEYWORD2 NAME(EndConditionalRender)(void)
KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedbackEXT)(GLenum mode)
{
+ (void) mode;
DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedbackEXT(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedback)(GLenum mode)
{
+ (void) mode;
DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedback(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer)
{
+ (void) target; (void) index; (void) buffer;
DISPATCH(BindBufferBaseEXT, (target, index, buffer), (F, "glBindBufferBaseEXT(0x%x, %d, %d);\n", target, index, buffer));
}
KEYWORD1 void KEYWORD2 NAME(BindBufferBase)(GLenum target, GLuint index, GLuint buffer)
{
+ (void) target; (void) index; (void) buffer;
DISPATCH(BindBufferBaseEXT, (target, index, buffer), (F, "glBindBufferBase(0x%x, %d, %d);\n", target, index, buffer));
}
KEYWORD1 void KEYWORD2 NAME(BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)
{
+ (void) target; (void) index; (void) buffer; (void) offset;
DISPATCH(BindBufferOffsetEXT, (target, index, buffer, offset), (F, "glBindBufferOffsetEXT(0x%x, %d, %d, %d);\n", target, index, buffer, offset));
}
KEYWORD1 void KEYWORD2 NAME(BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
+ (void) target; (void) index; (void) buffer; (void) offset; (void) size;
DISPATCH(BindBufferRangeEXT, (target, index, buffer, offset, size), (F, "glBindBufferRangeEXT(0x%x, %d, %d, %d, %d);\n", target, index, buffer, offset, size));
}
KEYWORD1 void KEYWORD2 NAME(BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
{
+ (void) target; (void) index; (void) buffer; (void) offset; (void) size;
DISPATCH(BindBufferRangeEXT, (target, index, buffer, offset, size), (F, "glBindBufferRange(0x%x, %d, %d, %d, %d);\n", target, index, buffer, offset, size));
}
@@ -6421,31 +7646,37 @@ KEYWORD1 void KEYWORD2 NAME(EndTransformFeedback)(void)
KEYWORD1 void KEYWORD2 NAME(GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)
{
+ (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
DISPATCH(GetTransformFeedbackVaryingEXT, (program, index, bufSize, length, size, type, name), (F, "glGetTransformFeedbackVaryingEXT(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)
{
+ (void) program; (void) index; (void) bufSize; (void) length; (void) size; (void) type; (void) name;
DISPATCH(GetTransformFeedbackVaryingEXT, (program, index, bufSize, length, size, type, name), (F, "glGetTransformFeedbackVarying(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
}
KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode)
{
+ (void) program; (void) count; (void) varyings; (void) bufferMode;
DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryingsEXT(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode));
}
KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryings)(GLuint program, GLsizei count, const GLchar* * varyings, GLenum bufferMode)
{
+ (void) program; (void) count; (void) varyings; (void) bufferMode;
DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryings(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode));
}
KEYWORD1 void KEYWORD2 NAME(ProvokingVertexEXT)(GLenum mode)
{
+ (void) mode;
DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertexEXT(0x%x);\n", mode));
}
KEYWORD1 void KEYWORD2 NAME(ProvokingVertex)(GLenum mode)
{
+ (void) mode;
DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertex(0x%x);\n", mode));
}
@@ -6453,6 +7684,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_913)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_913)(GLenum target, GLenum pname, GLvoid ** params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetTexParameterPointervAPPLE, (target, pname, params), (F, "glGetTexParameterPointervAPPLE(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6460,36 +7692,43 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_914)(GLenum target, GLsizei lengt
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_914)(GLenum target, GLsizei length, GLvoid * pointer)
{
+ (void) target; (void) length; (void) pointer;
DISPATCH(TextureRangeAPPLE, (target, length, pointer), (F, "glTextureRangeAPPLE(0x%x, %d, %p);\n", target, length, (const void *) pointer));
}
KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value)
{
+ (void) objectType; (void) name; (void) pname; (void) value;
DISPATCH(GetObjectParameterivAPPLE, (objectType, name, pname, value), (F, "glGetObjectParameterivAPPLE(0x%x, %d, 0x%x, %p);\n", objectType, name, pname, (const void *) value));
}
KEYWORD1 GLenum KEYWORD2 NAME(ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
{
+ (void) objectType; (void) name; (void) option;
RETURN_DISPATCH(ObjectPurgeableAPPLE, (objectType, name, option), (F, "glObjectPurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option));
}
KEYWORD1 GLenum KEYWORD2 NAME(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
{
+ (void) objectType; (void) name; (void) option;
RETURN_DISPATCH(ObjectUnpurgeableAPPLE, (objectType, name, option), (F, "glObjectUnpurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option));
}
KEYWORD1 void KEYWORD2 NAME(ActiveProgramEXT)(GLuint program)
{
+ (void) program;
DISPATCH(ActiveProgramEXT, (program), (F, "glActiveProgramEXT(%d);\n", program));
}
KEYWORD1 GLuint KEYWORD2 NAME(CreateShaderProgramEXT)(GLenum type, const GLchar * string)
{
+ (void) type; (void) string;
RETURN_DISPATCH(CreateShaderProgramEXT, (type, string), (F, "glCreateShaderProgramEXT(0x%x, %p);\n", type, (const void *) string));
}
KEYWORD1 void KEYWORD2 NAME(UseShaderProgramEXT)(GLenum type, GLuint program)
{
+ (void) type; (void) program;
DISPATCH(UseShaderProgramEXT, (type, program), (F, "glUseShaderProgramEXT(0x%x, %d);\n", type, program));
}
@@ -6502,6 +7741,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_922)(GLenum frontfunc, GLenum bac
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_922)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
{
+ (void) frontfunc; (void) backfunc; (void) ref; (void) mask;
DISPATCH(StencilFuncSeparateATI, (frontfunc, backfunc, ref, mask), (F, "glStencilFuncSeparateATI(0x%x, 0x%x, %d, %d);\n", frontfunc, backfunc, ref, mask));
}
@@ -6509,6 +7749,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_923)(GLenum target, GLuint index,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_923)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
{
+ (void) target; (void) index; (void) count; (void) params;
DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
}
@@ -6516,6 +7757,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_924)(GLenum target, GLuint index,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_924)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
{
+ (void) target; (void) index; (void) count; (void) params;
DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
}
@@ -6523,6 +7765,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_925)(GLuint id, GLenum pname, GLi
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_925)(GLuint id, GLenum pname, GLint64EXT * params)
{
+ (void) id; (void) pname; (void) params;
DISPATCH(GetQueryObjecti64vEXT, (id, pname, params), (F, "glGetQueryObjecti64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
@@ -6530,16 +7773,19 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_926)(GLuint id, GLenum pname, GLu
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_926)(GLuint id, GLenum pname, GLuint64EXT * params)
{
+ (void) id; (void) pname; (void) params;
DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset)
{
+ (void) target; (void) writeOffset;
DISPATCH(EGLImageTargetRenderbufferStorageOES, (target, writeOffset), (F, "glEGLImageTargetRenderbufferStorageOES(0x%x, %p);\n", target, (const void *) writeOffset));
}
KEYWORD1 void KEYWORD2 NAME(EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset)
{
+ (void) target; (void) writeOffset;
DISPATCH(EGLImageTargetTexture2DOES, (target, writeOffset), (F, "glEGLImageTargetTexture2DOES(0x%x, %p);\n", target, (const void *) writeOffset));
}
@@ -6551,26 +7797,31 @@ KEYWORD1 void KEYWORD2 NAME(EGLImageTargetTexture2DOES)(GLenum target, GLvoid *
KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResidentEXT)(GLsizei n, const GLuint * textures, GLboolean * residences)
{
+ (void) n; (void) textures; (void) residences;
RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResidentEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences));
}
KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures)
{
+ (void) n; (void) textures;
DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%d, %p);\n", n, (const void *) textures));
}
KEYWORD1 void KEYWORD2 NAME(GenTexturesEXT)(GLsizei n, GLuint * textures)
{
+ (void) n; (void) textures;
DISPATCH(GenTextures, (n, textures), (F, "glGenTexturesEXT(%d, %p);\n", n, (const void *) textures));
}
KEYWORD1 GLboolean KEYWORD2 NAME(IsTextureEXT)(GLuint texture)
{
+ (void) texture;
RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTextureEXT(%d);\n", texture));
}
KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * table)
{
+ (void) target; (void) format; (void) type; (void) table;
DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
}
@@ -6578,11 +7829,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_343)(GLenum target, GLenum format
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_343)(GLenum target, GLenum format, GLenum type, GLvoid * table)
{
+ (void) target; (void) format; (void) type; (void) table;
DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTableSGI(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
}
KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6590,11 +7843,13 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_344)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_344)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6602,6 +7857,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_345)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_345)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6609,6 +7865,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_356)(GLenum target, GLenum format
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_356)(GLenum target, GLenum format, GLenum type, GLvoid * image)
{
+ (void) target; (void) format; (void) type; (void) image;
DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilterEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image));
}
@@ -6616,6 +7873,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_357)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_357)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6623,6 +7881,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_358)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_358)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6630,6 +7889,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_359)(GLenum target, GLenum format
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_359)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
{
+ (void) target; (void) format; (void) type; (void) row; (void) column; (void) span;
DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilterEXT(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (const void *) row, (const void *) column, (const void *) span));
}
@@ -6637,6 +7897,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_361)(GLenum target, GLboolean res
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_361)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
{
+ (void) target; (void) reset; (void) format; (void) type; (void) values;
DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogramEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
}
@@ -6644,6 +7905,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_362)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_362)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6651,6 +7913,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_363)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_363)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6658,6 +7921,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_364)(GLenum target, GLboolean res
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_364)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
{
+ (void) target; (void) reset; (void) format; (void) type; (void) values;
DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmaxEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
}
@@ -6665,6 +7929,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_365)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_365)(GLenum target, GLenum pname, GLfloat * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -6672,6 +7937,7 @@ KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_366)(GLenum target, GLenum pname,
KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_366)(GLenum target, GLenum pname, GLint * params)
{
+ (void) target; (void) pname; (void) params;
DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
}
@@ -8060,6 +9326,7 @@ _glapi_proc UNUSED_TABLE_NAME[] = {
TABLE_ENTRY(VertexAttribI4usv),
TABLE_ENTRY(VertexAttribIPointer),
TABLE_ENTRY(FramebufferTextureLayer),
+ TABLE_ENTRY(FramebufferTextureLayerARB),
TABLE_ENTRY(ColorMaski),
TABLE_ENTRY(Disablei),
TABLE_ENTRY(Enablei),
diff --git a/mesalib/src/mapi/mapi/mapi_abi.py b/mesalib/src/mapi/mapi/mapi_abi.py
index cb9fc0ef8..c18dd82d6 100644
--- a/mesalib/src/mapi/mapi/mapi_abi.py
+++ b/mesalib/src/mapi/mapi/mapi_abi.py
@@ -27,6 +27,11 @@
# Chia-I Wu <olv@lunarg.com>
import sys
+# make it possible to import glapi
+import os
+GLAPI = "./%s/../glapi/gen" % (os.path.dirname(sys.argv[0]))
+sys.path.append(GLAPI)
+
import re
from optparse import OptionParser
@@ -128,9 +133,6 @@ class ABIEntry(object):
def abi_parse_xml(xml):
"""Parse a GLAPI XML file for ABI entries."""
- import os
- GLAPI = "./%s/../glapi/gen" % (os.path.dirname(sys.argv[0]))
- sys.path.append(GLAPI)
import gl_XML, glX_XML
api = gl_XML.parse_GL_API(xml, glX_XML.glx_item_factory())
@@ -501,7 +503,16 @@ class ABIPrinter(object):
proto = self._c_decl(ent, prefix, False, 'static')
- stmt1 = self.indent + '%s(%s);' % (self.noop_warn,
+ stmt1 = self.indent;
+ space = ''
+ for t, n, a in ent.params:
+ stmt1 += "%s(void) %s;" % (space, n)
+ space = ' '
+
+ if ent.params:
+ stmt1 += '\n';
+
+ stmt1 += self.indent + '%s(%s);' % (self.noop_warn,
self._c_function(ent, warn_prefix, False, True))
if ent.ret:
@@ -749,255 +760,7 @@ class ES1APIPrinter(GLAPIPrinter):
"""OpenGL ES 1.x API Printer"""
def __init__(self, entries):
- es1_api = [
- # OpenGL ES 1.1
- 'ActiveTexture',
- 'AlphaFunc',
- 'AlphaFuncx',
- 'BindBuffer',
- 'BindTexture',
- 'BlendFunc',
- 'BufferData',
- 'BufferSubData',
- 'Clear',
- 'ClearColor',
- 'ClearColorx',
- 'ClearDepthf',
- 'ClearDepthx',
- 'ClearStencil',
- 'ClientActiveTexture',
- 'ClipPlanef',
- 'ClipPlanex',
- 'Color4f',
- 'Color4ub',
- 'Color4x',
- 'ColorMask',
- 'ColorPointer',
- 'CompressedTexImage2D',
- 'CompressedTexSubImage2D',
- 'CopyTexImage2D',
- 'CopyTexSubImage2D',
- 'CullFace',
- 'DeleteBuffers',
- 'DeleteTextures',
- 'DepthFunc',
- 'DepthMask',
- 'DepthRangef',
- 'DepthRangex',
- 'Disable',
- 'DisableClientState',
- 'DrawArrays',
- 'DrawElements',
- 'Enable',
- 'EnableClientState',
- 'Finish',
- 'Flush',
- 'Fogf',
- 'Fogfv',
- 'Fogx',
- 'Fogxv',
- 'FrontFace',
- 'Frustumf',
- 'Frustumx',
- 'GenBuffers',
- 'GenTextures',
- 'GetBooleanv',
- 'GetBufferParameteriv',
- 'GetClipPlanef',
- 'GetClipPlanex',
- 'GetError',
- 'GetFixedv',
- 'GetFloatv',
- 'GetIntegerv',
- 'GetLightfv',
- 'GetLightxv',
- 'GetMaterialfv',
- 'GetMaterialxv',
- 'GetPointerv',
- 'GetString',
- 'GetTexEnvfv',
- 'GetTexEnviv',
- 'GetTexEnvxv',
- 'GetTexParameterfv',
- 'GetTexParameteriv',
- 'GetTexParameterxv',
- 'Hint',
- 'IsBuffer',
- 'IsEnabled',
- 'IsTexture',
- 'Lightf',
- 'Lightfv',
- 'LightModelf',
- 'LightModelfv',
- 'LightModelx',
- 'LightModelxv',
- 'Lightx',
- 'Lightxv',
- 'LineWidth',
- 'LineWidthx',
- 'LoadIdentity',
- 'LoadMatrixf',
- 'LoadMatrixx',
- 'LogicOp',
- 'Materialf',
- 'Materialfv',
- 'Materialx',
- 'Materialxv',
- 'MatrixMode',
- 'MultiTexCoord4f',
- 'MultiTexCoord4x',
- 'MultMatrixf',
- 'MultMatrixx',
- 'Normal3f',
- 'Normal3x',
- 'NormalPointer',
- 'Orthof',
- 'Orthox',
- 'PixelStorei',
- 'PointParameterf',
- 'PointParameterfv',
- 'PointParameterx',
- 'PointParameterxv',
- 'PointSize',
- 'PointSizex',
- 'PolygonOffset',
- 'PolygonOffsetx',
- 'PopMatrix',
- 'PushMatrix',
- 'ReadPixels',
- 'Rotatef',
- 'Rotatex',
- 'SampleCoverage',
- 'SampleCoveragex',
- 'Scalef',
- 'Scalex',
- 'Scissor',
- 'ShadeModel',
- 'StencilFunc',
- 'StencilMask',
- 'StencilOp',
- 'TexCoordPointer',
- 'TexEnvf',
- 'TexEnvfv',
- 'TexEnvi',
- 'TexEnviv',
- 'TexEnvx',
- 'TexEnvxv',
- 'TexImage2D',
- 'TexParameterf',
- 'TexParameterfv',
- 'TexParameteri',
- 'TexParameteriv',
- 'TexParameterx',
- 'TexParameterxv',
- 'TexSubImage2D',
- 'Translatef',
- 'Translatex',
- 'VertexPointer',
- 'Viewport',
- # GL_OES_EGL_image
- 'EGLImageTargetTexture2DOES',
- 'EGLImageTargetRenderbufferStorageOES',
- # GL_OES_mapbuffer
- 'GetBufferPointervOES',
- 'MapBufferOES',
- 'UnmapBufferOES',
- # GL_EXT_multi_draw_arrays
- 'MultiDrawArraysEXT',
- 'MultiDrawElementsEXT',
- # GL_OES_blend_equation_separate
- 'BlendEquationSeparateOES',
- # GL_OES_blend_func_separate
- 'BlendFuncSeparateOES',
- # GL_OES_blend_subtract
- 'BlendEquationOES',
- # GL_OES_draw_texture
- 'DrawTexiOES',
- 'DrawTexivOES',
- 'DrawTexfOES',
- 'DrawTexfvOES',
- 'DrawTexsOES',
- 'DrawTexsvOES',
- 'DrawTexxOES',
- 'DrawTexxvOES',
- # GL_OES_fixed_point
- 'AlphaFuncxOES',
- 'ClearColorxOES',
- 'ClearDepthxOES',
- 'Color4xOES',
- 'DepthRangexOES',
- 'FogxOES',
- 'FogxvOES',
- 'FrustumxOES',
- 'LightModelxOES',
- 'LightModelxvOES',
- 'LightxOES',
- 'LightxvOES',
- 'LineWidthxOES',
- 'LoadMatrixxOES',
- 'MaterialxOES',
- 'MaterialxvOES',
- 'MultiTexCoord4xOES',
- 'MultMatrixxOES',
- 'Normal3xOES',
- 'OrthoxOES',
- 'PointSizexOES',
- 'PolygonOffsetxOES',
- 'RotatexOES',
- 'SampleCoveragexOES',
- 'ScalexOES',
- 'TexEnvxOES',
- 'TexEnvxvOES',
- 'TexParameterxOES',
- 'TranslatexOES',
- 'ClipPlanexOES',
- 'GetClipPlanexOES',
- 'GetFixedvOES',
- 'GetLightxvOES',
- 'GetMaterialxvOES',
- 'GetTexEnvxvOES',
- 'GetTexParameterxvOES',
- 'PointParameterxOES',
- 'PointParameterxvOES',
- 'TexParameterxvOES',
- # GL_OES_framebuffer_object
- 'BindFramebufferOES',
- 'BindRenderbufferOES',
- 'CheckFramebufferStatusOES',
- 'DeleteFramebuffersOES',
- 'DeleteRenderbuffersOES',
- 'FramebufferRenderbufferOES',
- 'FramebufferTexture2DOES',
- 'GenerateMipmapOES',
- 'GenFramebuffersOES',
- 'GenRenderbuffersOES',
- 'GetFramebufferAttachmentParameterivOES',
- 'GetRenderbufferParameterivOES',
- 'IsFramebufferOES',
- 'IsRenderbufferOES',
- 'RenderbufferStorageOES',
- # GL_OES_point_size_array
- 'PointSizePointerOES',
- # GL_OES_query_matrix
- 'QueryMatrixxOES',
- # GL_OES_single_precision
- 'ClearDepthfOES',
- 'DepthRangefOES',
- 'FrustumfOES',
- 'OrthofOES',
- 'ClipPlanefOES',
- 'GetClipPlanefOES',
- # GL_OES_texture_cube_map
- 'GetTexGenfvOES',
- 'GetTexGenivOES',
- 'GetTexGenxvOES',
- 'TexGenfOES',
- 'TexGenfvOES',
- 'TexGeniOES',
- 'TexGenivOES',
- 'TexGenxOES',
- 'TexGenxvOES',
- ]
+ from gles_api import es1_api
super(ES1APIPrinter, self).__init__(entries, es1_api)
self.prefix_lib = 'gl'
@@ -1016,171 +779,7 @@ class ES2APIPrinter(GLAPIPrinter):
"""OpenGL ES 2.x API Printer"""
def __init__(self, entries):
- es2_api = [
- # OpenGL ES 2.0
- "ActiveTexture",
- "AttachShader",
- "BindAttribLocation",
- "BindBuffer",
- "BindFramebuffer",
- "BindRenderbuffer",
- "BindTexture",
- "BlendColor",
- "BlendEquation",
- "BlendEquationSeparate",
- "BlendFunc",
- "BlendFuncSeparate",
- "BufferData",
- "BufferSubData",
- "CheckFramebufferStatus",
- "Clear",
- "ClearColor",
- "ClearDepthf",
- "ClearStencil",
- "ColorMask",
- "CompileShader",
- "CompressedTexImage2D",
- "CompressedTexSubImage2D",
- "CopyTexImage2D",
- "CopyTexSubImage2D",
- "CreateProgram",
- "CreateShader",
- "CullFace",
- "DeleteBuffers",
- "DeleteFramebuffers",
- "DeleteProgram",
- "DeleteRenderbuffers",
- "DeleteShader",
- "DeleteTextures",
- "DepthFunc",
- "DepthMask",
- "DepthRangef",
- "DetachShader",
- "Disable",
- "DisableVertexAttribArray",
- "DrawArrays",
- "DrawElements",
- "Enable",
- "EnableVertexAttribArray",
- "Finish",
- "Flush",
- "FramebufferRenderbuffer",
- "FramebufferTexture2D",
- "FrontFace",
- "GenBuffers",
- "GenerateMipmap",
- "GenFramebuffers",
- "GenRenderbuffers",
- "GenTextures",
- "GetActiveAttrib",
- "GetActiveUniform",
- "GetAttachedShaders",
- "GetAttribLocation",
- "GetBooleanv",
- "GetBufferParameteriv",
- "GetError",
- "GetFloatv",
- "GetFramebufferAttachmentParameteriv",
- "GetIntegerv",
- "GetProgramInfoLog",
- "GetProgramiv",
- "GetRenderbufferParameteriv",
- "GetShaderInfoLog",
- "GetShaderiv",
- "GetShaderPrecisionFormat",
- "GetShaderSource",
- "GetString",
- "GetTexParameterfv",
- "GetTexParameteriv",
- "GetUniformfv",
- "GetUniformiv",
- "GetUniformLocation",
- "GetVertexAttribfv",
- "GetVertexAttribiv",
- "GetVertexAttribPointerv",
- "Hint",
- "IsBuffer",
- "IsEnabled",
- "IsFramebuffer",
- "IsProgram",
- "IsRenderbuffer",
- "IsShader",
- "IsTexture",
- "LineWidth",
- "LinkProgram",
- "PixelStorei",
- "PolygonOffset",
- "ReadPixels",
- "ReleaseShaderCompiler",
- "RenderbufferStorage",
- "SampleCoverage",
- "Scissor",
- "ShaderBinary",
- "ShaderSource",
- "StencilFunc",
- "StencilFuncSeparate",
- "StencilMask",
- "StencilMaskSeparate",
- "StencilOp",
- "StencilOpSeparate",
- "TexImage2D",
- "TexParameterf",
- "TexParameterfv",
- "TexParameteri",
- "TexParameteriv",
- "TexSubImage2D",
- "Uniform1f",
- "Uniform1fv",
- "Uniform1i",
- "Uniform1iv",
- "Uniform2f",
- "Uniform2fv",
- "Uniform2i",
- "Uniform2iv",
- "Uniform3f",
- "Uniform3fv",
- "Uniform3i",
- "Uniform3iv",
- "Uniform4f",
- "Uniform4fv",
- "Uniform4i",
- "Uniform4iv",
- "UniformMatrix2fv",
- "UniformMatrix3fv",
- "UniformMatrix4fv",
- "UseProgram",
- "ValidateProgram",
- "VertexAttrib1f",
- "VertexAttrib1fv",
- "VertexAttrib2f",
- "VertexAttrib2fv",
- "VertexAttrib3f",
- "VertexAttrib3fv",
- "VertexAttrib4f",
- "VertexAttrib4fv",
- "VertexAttribPointer",
- "Viewport",
- # GL_OES_EGL_image
- 'EGLImageTargetTexture2DOES',
- 'EGLImageTargetRenderbufferStorageOES',
- # GL_OES_mapbuffer
- 'GetBufferPointervOES',
- 'MapBufferOES',
- 'UnmapBufferOES',
- # GL_EXT_multi_draw_arrays
- 'MultiDrawArraysEXT',
- 'MultiDrawElementsEXT',
- # GL_OES_texture_3D
- 'CompressedTexImage3DOES',
- 'CompressedTexSubImage3DOES',
- 'CopyTexSubImage3DOES',
- 'FramebufferTexture3DOES',
- 'TexImage3DOES',
- 'TexSubImage3DOES',
- # GL_OES_get_program_binary
- 'GetProgramBinaryOES',
- 'ProgramBinaryOES',
- ]
+ from gles_api import es2_api
super(ES2APIPrinter, self).__init__(entries, es2_api)
self.prefix_lib = 'gl'
diff --git a/mesalib/src/mapi/mapi/u_thread.c b/mesalib/src/mapi/mapi/u_thread.c
index 3154b89de..ce49c3dfb 100644
--- a/mesalib/src/mapi/mapi/u_thread.c
+++ b/mesalib/src/mapi/mapi/u_thread.c
@@ -169,45 +169,6 @@ u_tsd_set(struct u_tsd *tsd, void *ptr)
#endif /* WIN32 */
-/*
- * BeOS threads
- */
-#ifdef BEOS_THREADS
-
-unsigned long
-u_thread_self(void)
-{
- return (unsigned long) find_thread(NULL);
-}
-
-void
-u_tsd_init(struct u_tsd *tsd)
-{
- tsd->key = tls_allocate();
- tsd->initMagic = INIT_MAGIC;
-}
-
-void *
-u_tsd_get(struct u_tsd *tsd)
-{
- if (tsd->initMagic != (int) INIT_MAGIC) {
- u_tsd_init(tsd);
- }
- return tls_get(tsd->key);
-}
-
-void
-u_tsd_set(struct u_tsd *tsd, void *ptr)
-{
- if (tsd->initMagic != (int) INIT_MAGIC) {
- u_tsd_init(tsd);
- }
- tls_set(tsd->key, ptr);
-}
-
-#endif /* BEOS_THREADS */
-
-
#else /* THREADS */
diff --git a/mesalib/src/mapi/mapi/u_thread.h b/mesalib/src/mapi/mapi/u_thread.h
index 290066d16..fd419723f 100644
--- a/mesalib/src/mapi/mapi/u_thread.h
+++ b/mesalib/src/mapi/mapi/u_thread.h
@@ -44,7 +44,7 @@
#include "u_compiler.h"
-#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)
+#if defined(PTHREADS) || defined(WIN32)
#ifndef THREADS
#define THREADS
#endif
@@ -108,62 +108,6 @@ typedef CRITICAL_SECTION u_mutex;
/*
- * BeOS threads. R5.x required.
- */
-#ifdef BEOS_THREADS
-
-/* Problem with OS.h and this file on haiku */
-#ifndef __HAIKU__
-#include <kernel/OS.h>
-#endif
-
-#include <support/TLS.h>
-
-/* The only two typedefs required here
- * this is cause of the OS.h problem
- */
-#ifdef __HAIKU__
-typedef int32 thread_id;
-typedef int32 sem_id;
-#endif
-
-struct u_tsd {
- int32 key;
- int initMagic;
-};
-
-/* Use Benaphore, aka speeder semaphore */
-typedef struct {
- int32 lock;
- sem_id sem;
-} benaphore;
-typedef benaphore u_mutex;
-
-#define u_mutex_declare_static(name) \
- static u_mutex name = { 0, 0 }
-
-#define u_mutex_init(name) \
- name.sem = create_sem(0, #name"_benaphore"), \
- name.lock = 0
-
-#define u_mutex_destroy(name) \
- delete_sem(name.sem), \
- name.lock = 0
-
-#define u_mutex_lock(name) \
- if (name.sem == 0) \
- u_mutex_init(name); \
- if (atomic_add(&(name.lock), 1) >= 1) \
- acquire_sem(name.sem)
-
-#define u_mutex_unlock(name) \
- if (atomic_add(&(name.lock), -1) > 1) \
- release_sem(name.sem)
-
-#endif /* BEOS_THREADS */
-
-
-/*
* THREADS not defined
*/
#ifndef THREADS
diff --git a/mesalib/src/mesa/Android.gen.mk b/mesalib/src/mesa/Android.gen.mk
new file mode 100644
index 000000000..2a08184ae
--- /dev/null
+++ b/mesalib/src/mesa/Android.gen.mk
@@ -0,0 +1,131 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 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.
+
+# included by core mesa Android.mk for source generation
+
+ifeq ($(LOCAL_MODULE_CLASS),)
+LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+endif
+
+intermediates := $(call local-intermediates-dir)
+
+sources := \
+ main/api_exec_es1.c \
+ main/api_exec_es1_dispatch.h \
+ main/api_exec_es1_remap_helper.h \
+ main/api_exec_es2.c \
+ main/api_exec_es2_dispatch.h \
+ main/api_exec_es2_remap_helper.h \
+ program/lex.yy.c \
+ program/program_parse.tab.c
+
+LOCAL_SRC_FILES := $(filter-out $(sources), $(LOCAL_SRC_FILES))
+
+LOCAL_C_INCLUDES += $(intermediates)/main
+
+ifeq ($(strip $(MESA_ENABLE_ASM)),true)
+ifeq ($(TARGET_ARCH),x86)
+sources += x86/matypes.h
+LOCAL_C_INCLUDES += $(intermediates)/x86
+endif
+endif
+
+sources += main/git_sha1.h
+
+sources := $(addprefix $(intermediates)/, $(sources))
+LOCAL_GENERATED_SOURCES += $(sources)
+
+glapi := $(MESA_TOP)/src/mapi/glapi/gen
+
+es_src_deps := \
+ $(LOCAL_PATH)/main/APIspec.xml \
+ $(LOCAL_PATH)/main/es_generator.py \
+ $(LOCAL_PATH)/main/APIspecutil.py \
+ $(LOCAL_PATH)/main/APIspec.py
+
+es_hdr_deps := \
+ $(wildcard $(glapi)/*.py) \
+ $(wildcard $(glapi)/*.xml)
+
+define es-gen
+ @mkdir -p $(dir $@)
+ @echo "Gen ES: $(PRIVATE_MODULE) <= $(notdir $(@))"
+ $(hide) $(PRIVATE_SCRIPT) $(1) $(PRIVATE_XML) > $@
+endef
+
+define local-l-to-c
+ @mkdir -p $(dir $@)
+ @echo "Mesa Lex: $(PRIVATE_MODULE) <= $<"
+ $(hide) $(LEX) -o$@ $<
+endef
+
+define local-y-to-c-and-h
+ @mkdir -p $(dir $@)
+ @echo "Mesa Yacc: $(PRIVATE_MODULE) <= $<"
+ $(hide) $(YACC) -o $@ $<
+endef
+
+$(intermediates)/main/api_exec_%.c: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(LOCAL_PATH)/main/es_generator.py
+$(intermediates)/main/api_exec_%.c: PRIVATE_XML := -S $(LOCAL_PATH)/main/APIspec.xml
+$(intermediates)/main/api_exec_%_dispatch.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(glapi)/gl_table.py
+$(intermediates)/main/api_exec_%_dispatch.h: PRIVATE_XML := -f $(glapi)/gl_and_es_API.xml
+$(intermediates)/main/api_exec_%_remap_helper.h: PRIVATE_SCRIPT := $(MESA_PYTHON2) $(glapi)/remap_helper.py
+$(intermediates)/main/api_exec_%_remap_helper.h: PRIVATE_XML := -f $(glapi)/gl_and_es_API.xml
+
+$(intermediates)/main/api_exec_es1.c: $(es_src_deps)
+ $(call es-gen,-V GLES1.1)
+
+$(intermediates)/main/api_exec_es2.c: $(es_src_deps)
+ $(call es-gen,-V GLES2.0)
+
+$(intermediates)/main/api_exec_%_dispatch.h: $(es_hdr_deps)
+ $(call es-gen, -c $* -m remap_table)
+
+$(intermediates)/main/api_exec_%_remap_helper.h: $(es_hdr_deps)
+ $(call es-gen, -c $*)
+
+$(intermediates)/program/program_parse.tab.c: $(LOCAL_PATH)/program/program_parse.y
+ $(local-y-to-c-and-h)
+
+$(intermediates)/program/lex.yy.c: $(LOCAL_PATH)/program/program_lexer.l
+ $(local-l-to-c)
+
+$(intermediates)/main/git_sha1.h:
+ @mkdir -p $(dir $@)
+ @echo "GIT-SHA1: $(PRIVATE_MODULE) <= git"
+ $(hide) touch $@
+ $(hide) if which git > /dev/null; then \
+ git --git-dir $(PRIVATE_PATH)/../../.git log -n 1 --oneline | \
+ sed 's/^\([^ ]*\) .*/#define MESA_GIT_SHA1 "git-\1"/' \
+ > $@; \
+ fi
+
+matypes_deps := \
+ $(BUILD_OUT_EXECUTABLES)/mesa_gen_matypes$(BUILD_EXECUTABLE_SUFFIX) \
+ $(LOCAL_PATH)/main/mtypes.h \
+ $(LOCAL_PATH)/tnl/t_context.h
+
+$(intermediates)/x86/matypes.h: $(matypes_deps)
+ @mkdir -p $(dir $@)
+ @echo "MATYPES: $(PRIVATE_MODULE) <= $(notdir $@)"
+ $(hide) $< > $@
diff --git a/mesalib/src/mesa/Android.mk b/mesalib/src/mesa/Android.mk
new file mode 100644
index 000000000..67808d491
--- /dev/null
+++ b/mesalib/src/mesa/Android.mk
@@ -0,0 +1,115 @@
+# Mesa 3-D graphics library
+#
+# Copyright (C) 2010-2011 Chia-I Wu <olvaffe@gmail.com>
+# Copyright (C) 2010-2011 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.
+
+# Android.mk for core mesa
+
+LOCAL_PATH := $(call my-dir)
+
+include $(LOCAL_PATH)/sources.mak
+
+common_CFLAGS := \
+ -DFEATURE_ES1=1 \
+ -DFEATURE_ES2=1
+
+common_C_INCLUDES := \
+ $(MESA_TOP)/src/mapi \
+ $(MESA_TOP)/src/glsl
+
+common_ASM :=
+
+# ---------------------------------------
+# Build mesa_gen_matypes for host
+# ---------------------------------------
+
+ifeq ($(strip $(MESA_ENABLE_ASM)),true)
+ifeq ($(TARGET_ARCH),x86)
+common_ASM += $(X86_SOURCES)
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := x86/gen_matypes.c
+LOCAL_CFLAGS := $(common_CFLAGS)
+LOCAL_C_INCLUDES := $(common_C_INCLUDES)
+LOCAL_MODULE := mesa_gen_matypes
+include $(MESA_COMMON_MK)
+include $(BUILD_HOST_EXECUTABLE)
+
+endif # x86
+endif # MESA_ENABLE_ASM
+
+# ---------------------------------------
+# Build libmesa_st_mesa
+# ---------------------------------------
+
+ifeq ($(strip $(MESA_BUILD_GALLIUM)),true)
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ $(MESA_GALLIUM_SOURCES) \
+ $(MESA_GALLIUM_CXX_SOURCES) \
+ $(common_ASM)
+
+LOCAL_CFLAGS := $(common_CFLAGS)
+
+LOCAL_C_INCLUDES := \
+ $(common_C_INCLUDES) \
+ $(MESA_TOP)/src/gallium/include \
+ $(MESA_TOP)/src/gallium/auxiliary
+
+LOCAL_MODULE := libmesa_st_mesa
+
+include $(LOCAL_PATH)/Android.gen.mk
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif # MESA_BUILD_GALLIUM
+
+# ---------------------------------------
+# Build libmesa_glsl_utils
+#
+# It is used to avoid circular dependency between core mesa and glsl.
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ program/hash_table.c \
+ program/symbol_table.c
+
+LOCAL_MODULE := libmesa_glsl_utils
+
+include $(MESA_COMMON_MK)
+include $(BUILD_STATIC_LIBRARY)
+
+# ---------------------------------------
+# Build libmesa_glsl_utils for host
+# ---------------------------------------
+
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+ program/hash_table.c \
+ program/symbol_table.c
+
+LOCAL_MODULE := libmesa_glsl_utils
+
+include $(MESA_COMMON_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/mesalib/src/mesa/Makefile b/mesalib/src/mesa/Makefile
index 88f31b686..0e15d61bd 100644
--- a/mesalib/src/mesa/Makefile
+++ b/mesalib/src/mesa/Makefile
@@ -67,6 +67,26 @@ $(DRICORE_OBJ_DIR)/%.o: %.S
# then convenience libs (.a) and finally the device drivers:
default: $(DEPENDS) asm_subdirs $(MESA_LIBS) $(DRICORE_LIBS) driver_subdirs
+# include glapi_gen.mk for generating glapi headers for GLES
+GLAPI := $(TOP)/src/mapi/glapi/gen
+include $(GLAPI)/glapi_gen.mk
+
+main/api_exec_es1_dispatch.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_dispatch_deps)
+ $(call glapi_gen_dispatch,$<,es1)
+
+main/api_exec_es1_remap_helper.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_remap_deps)
+ $(call glapi_gen_remap,$<,es1)
+
+main/api_exec_es1.o: main/api_exec_es1_dispatch.h main/api_exec_es1_remap_helper.h
+
+main/api_exec_es2_dispatch.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_dispatch_deps)
+ $(call glapi_gen_dispatch,$<,es2)
+
+main/api_exec_es2_remap_helper.h: $(GLAPI)/gl_and_es_API.xml $(glapi_gen_remap_deps)
+ $(call glapi_gen_remap,$<,es2)
+
+main/api_exec_es2.o: main/api_exec_es2_dispatch.h main/api_exec_es2_remap_helper.h
+
main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
$(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@
diff --git a/mesalib/src/mesa/Makefile.mgw b/mesalib/src/mesa/Makefile.mgw
index fc0ff28d6..23ceaca01 100644
--- a/mesalib/src/mesa/Makefile.mgw
+++ b/mesalib/src/mesa/Makefile.mgw
@@ -50,9 +50,6 @@
# As a consequence, you'll need the Win32 Glide3
# library to build any application.
# default = no
-# ICD=1 build the installable client driver interface
-# (windows opengl driver interface)
-# default = no
# X86=1 optimize for x86 (if possible, use MMX, SSE, 3DNow).
# default = no
#
@@ -69,11 +66,7 @@
# Set this to the prefix of your build tools, i.e. mingw32-
TOOLS_PREFIX = mingw32-
-ifeq ($(ICD),1)
- LIB_NAME = mesa32
-else
- LIB_NAME = opengl32
-endif
+LIB_NAME = opengl32
DLL_EXT = .dll
IMP_EXT = .a
@@ -106,12 +99,7 @@ ifeq ($(FX),1)
GL_DEF = drivers/windows/fx/fxopengl.def
GL_RES = drivers/windows/fx/fx.rc
else
- ifeq ($(ICD),1)
- CFLAGS += -DUSE_MGL_NAMESPACE
- GL_DEF = drivers/windows/icd/mesa.def
- else
- GL_DEF = $(LIB_NAME).def
- endif
+ GL_DEF = $(LIB_NAME).def
endif
@@ -143,16 +131,10 @@ DRIVER_SOURCES = \
$(GLIDE_DRIVER_SOURCES) \
drivers/windows/fx/fxwgl.c
else
-ifeq ($(ICD),1)
-DRIVER_SOURCES = \
- drivers/windows/gdi/wmesa.c \
- drivers/windows/icd/icd.c
-else
DRIVER_SOURCES = \
drivers/windows/gdi/wmesa.c \
drivers/windows/gdi/wgl.c
endif
-endif
SOURCES = $(MESA_SOURCES) $(GLAPI_SOURCES) $(X86_SOURCES) $(DRIVER_SOURCES)
diff --git a/mesalib/src/mesa/SConscript b/mesalib/src/mesa/SConscript
index 951bc599d..56c8dbfe1 100644
--- a/mesalib/src/mesa/SConscript
+++ b/mesalib/src/mesa/SConscript
@@ -293,6 +293,7 @@ program_sources = [
'program/prog_instruction.c',
'program/prog_noise.c',
'program/prog_optimize.c',
+ 'program/prog_opt_constant_fold.c',
'program/prog_parameter.c',
'program/prog_parameter_layout.c',
'program/prog_print.c',
@@ -347,28 +348,28 @@ if env['gles']:
GLAPI = '#src/mapi/glapi/'
gles_headers = []
gles_headers += env.CodeGenerate(
- target = 'es1api/main/dispatch.h',
+ target = 'main/api_exec_es1_dispatch.h',
script = GLAPI + 'gen/gl_table.py',
- source = GLAPI + 'gen-es/es1_API.xml',
- command = python_cmd + ' $SCRIPT -c -m remap_table -f $SOURCE > $TARGET',
+ source = GLAPI + 'gen/gl_and_es_API.xml',
+ command = python_cmd + ' $SCRIPT -c es1 -m remap_table -f $SOURCE > $TARGET',
)
gles_headers += env.CodeGenerate(
- target = 'es1api/main/remap_helper.h',
+ target = 'main/api_exec_es1_remap_helper.h',
script = GLAPI + 'gen/remap_helper.py',
- source = GLAPI + 'gen-es/es1_API.xml',
- command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET',
+ source = GLAPI + 'gen/gl_and_es_API.xml',
+ command = python_cmd + ' $SCRIPT -c es1 -f $SOURCE > $TARGET',
)
gles_headers += env.CodeGenerate(
- target = 'es2api/main/dispatch.h',
+ target = 'main/api_exec_es2_dispatch.h',
script = GLAPI + 'gen/gl_table.py',
- source = GLAPI + 'gen-es/es2_API.xml',
- command = python_cmd + ' $SCRIPT -c -m remap_table -f $SOURCE > $TARGET',
+ source = GLAPI + 'gen/gl_and_es_API.xml',
+ command = python_cmd + ' $SCRIPT -c es2 -m remap_table -f $SOURCE > $TARGET',
)
gles_headers += env.CodeGenerate(
- target = 'es2api/main/remap_helper.h',
+ target = 'main/api_exec_es2_remap_helper.h',
script = GLAPI + 'gen/remap_helper.py',
- source = GLAPI + 'gen-es/es2_API.xml',
- command = python_cmd + ' $SCRIPT -f $SOURCE > $TARGET',
+ source = GLAPI + 'gen/gl_and_es_API.xml',
+ command = python_cmd + ' $SCRIPT -c es2 -f $SOURCE > $TARGET',
)
env.Depends(gles_sources, gles_headers)
diff --git a/mesalib/src/mesa/drivers/common/driverfuncs.c b/mesalib/src/mesa/drivers/common/driverfuncs.c
index a2687d7c3..fe8b6a269 100644
--- a/mesalib/src/mesa/drivers/common/driverfuncs.c
+++ b/mesalib/src/mesa/drivers/common/driverfuncs.c
@@ -248,10 +248,10 @@ _mesa_init_driver_state(struct gl_context *ctx)
GLuint i;
for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
ctx->Driver.ColorMaskIndexed(ctx, i,
- ctx->Color.ColorMask[0][RCOMP],
- ctx->Color.ColorMask[0][GCOMP],
- ctx->Color.ColorMask[0][BCOMP],
- ctx->Color.ColorMask[0][ACOMP]);
+ ctx->Color.ColorMask[i][RCOMP],
+ ctx->Color.ColorMask[i][GCOMP],
+ ctx->Color.ColorMask[i][BCOMP],
+ ctx->Color.ColorMask[i][ACOMP]);
}
}
else {
@@ -286,7 +286,10 @@ _mesa_init_driver_state(struct gl_context *ctx)
ctx->Driver.Enable(ctx, GL_TEXTURE_CUBE_MAP, GL_FALSE);
ctx->Driver.Fogfv(ctx, GL_FOG_COLOR, ctx->Fog.Color);
- ctx->Driver.Fogfv(ctx, GL_FOG_MODE, 0);
+ {
+ GLfloat mode = (GLfloat) ctx->Fog.Mode;
+ ctx->Driver.Fogfv(ctx, GL_FOG_MODE, &mode);
+ }
ctx->Driver.Fogfv(ctx, GL_FOG_DENSITY, &ctx->Fog.Density);
ctx->Driver.Fogfv(ctx, GL_FOG_START, &ctx->Fog.Start);
ctx->Driver.Fogfv(ctx, GL_FOG_END, &ctx->Fog.End);
diff --git a/mesalib/src/mesa/drivers/common/meta.c b/mesalib/src/mesa/drivers/common/meta.c
index f9b475598..291d91212 100644
--- a/mesalib/src/mesa/drivers/common/meta.c
+++ b/mesalib/src/mesa/drivers/common/meta.c
@@ -73,64 +73,36 @@
/** Return offset in bytes of the field within a vertex struct */
#define OFFSET(FIELD) ((void *) offsetof(struct vertex, FIELD))
-
-/**
- * Flags passed to _mesa_meta_begin().
- */
-/*@{*/
-#define META_ALL ~0x0
-#define META_ALPHA_TEST 0x1
-#define META_BLEND 0x2 /**< includes logicop */
-#define META_COLOR_MASK 0x4
-#define META_DEPTH_TEST 0x8
-#define META_FOG 0x10
-#define META_PIXEL_STORE 0x20
-#define META_PIXEL_TRANSFER 0x40
-#define META_RASTERIZATION 0x80
-#define META_SCISSOR 0x100
-#define META_SHADER 0x200
-#define META_STENCIL_TEST 0x400
-#define META_TRANSFORM 0x800 /**< modelview/projection matrix state */
-#define META_TEXTURE 0x1000
-#define META_VERTEX 0x2000
-#define META_VIEWPORT 0x4000
-#define META_CLAMP_FRAGMENT_COLOR 0x8000
-#define META_CLAMP_VERTEX_COLOR 0x10000
-#define META_CONDITIONAL_RENDER 0x20000
-#define META_CLIP 0x40000
-/*@}*/
-
-
/**
* State which we may save/restore across meta ops.
* XXX this may be incomplete...
*/
struct save_state
{
- GLbitfield SavedState; /**< bitmask of META_* flags */
+ GLbitfield SavedState; /**< bitmask of MESA_META_* flags */
- /** META_ALPHA_TEST */
+ /** MESA_META_ALPHA_TEST */
GLboolean AlphaEnabled;
GLenum AlphaFunc;
GLclampf AlphaRef;
- /** META_BLEND */
+ /** MESA_META_BLEND */
GLbitfield BlendEnabled;
GLboolean ColorLogicOpEnabled;
- /** META_COLOR_MASK */
+ /** MESA_META_COLOR_MASK */
GLubyte ColorMask[MAX_DRAW_BUFFERS][4];
- /** META_DEPTH_TEST */
+ /** MESA_META_DEPTH_TEST */
struct gl_depthbuffer_attrib Depth;
- /** META_FOG */
+ /** MESA_META_FOG */
GLboolean Fog;
- /** META_PIXEL_STORE */
+ /** MESA_META_PIXEL_STORE */
struct gl_pixelstore_attrib Pack, Unpack;
- /** META_PIXEL_TRANSFER */
+ /** MESA_META_PIXEL_TRANSFER */
GLfloat RedBias, RedScale;
GLfloat GreenBias, GreenScale;
GLfloat BlueBias, BlueScale;
@@ -138,17 +110,17 @@ struct save_state
GLfloat DepthBias, DepthScale;
GLboolean MapColorFlag;
- /** META_RASTERIZATION */
+ /** MESA_META_RASTERIZATION */
GLenum FrontPolygonMode, BackPolygonMode;
GLboolean PolygonOffset;
GLboolean PolygonSmooth;
GLboolean PolygonStipple;
GLboolean PolygonCull;
- /** META_SCISSOR */
+ /** MESA_META_SCISSOR */
struct gl_scissor_attrib Scissor;
- /** META_SHADER */
+ /** MESA_META_SHADER */
GLboolean VertexProgramEnabled;
struct gl_vertex_program *VertexProgram;
GLboolean FragmentProgramEnabled;
@@ -158,19 +130,19 @@ struct save_state
struct gl_shader_program *FragmentShader;
struct gl_shader_program *ActiveShader;
- /** META_STENCIL_TEST */
+ /** MESA_META_STENCIL_TEST */
struct gl_stencil_attrib Stencil;
- /** META_TRANSFORM */
+ /** MESA_META_TRANSFORM */
GLenum MatrixMode;
GLfloat ModelviewMatrix[16];
GLfloat ProjectionMatrix[16];
GLfloat TextureMatrix[16];
- /** META_CLIP */
+ /** MESA_META_CLIP */
GLbitfield ClipPlanesEnabled;
- /** META_TEXTURE */
+ /** MESA_META_TEXTURE */
GLuint ActiveUnit;
GLuint ClientActiveUnit;
/** for unit[0] only */
@@ -180,21 +152,21 @@ struct save_state
GLbitfield TexGenEnabled[MAX_TEXTURE_UNITS];
GLuint EnvMode; /* unit[0] only */
- /** META_VERTEX */
+ /** MESA_META_VERTEX */
struct gl_array_object *ArrayObj;
struct gl_buffer_object *ArrayBufferObj;
- /** META_VIEWPORT */
+ /** MESA_META_VIEWPORT */
GLint ViewportX, ViewportY, ViewportW, ViewportH;
GLclampd DepthNear, DepthFar;
- /** META_CLAMP_FRAGMENT_COLOR */
+ /** MESA_META_CLAMP_FRAGMENT_COLOR */
GLenum ClampFragmentColor;
- /** META_CLAMP_VERTEX_COLOR */
+ /** MESA_META_CLAMP_VERTEX_COLOR */
GLenum ClampVertexColor;
- /** META_CONDITIONAL_RENDER */
+ /** MESA_META_CONDITIONAL_RENDER */
struct gl_query_object *CondRenderQuery;
GLenum CondRenderMode;
@@ -342,10 +314,10 @@ _mesa_meta_free(struct gl_context *ctx)
* Enter meta state. This is like a light-weight version of glPushAttrib
* but it also resets most GL state back to default values.
*
- * \param state bitmask of META_* flags indicating which attribute groups
+ * \param state bitmask of MESA_META_* flags indicating which attribute groups
* to save and reset to their defaults
*/
-static void
+void
_mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
{
struct save_state *save;
@@ -357,7 +329,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
memset(save, 0, sizeof(*save));
save->SavedState = state;
- if (state & META_ALPHA_TEST) {
+ if (state & MESA_META_ALPHA_TEST) {
save->AlphaEnabled = ctx->Color.AlphaEnabled;
save->AlphaFunc = ctx->Color.AlphaFunc;
save->AlphaRef = ctx->Color.AlphaRef;
@@ -365,7 +337,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_set_enable(ctx, GL_ALPHA_TEST, GL_FALSE);
}
- if (state & META_BLEND) {
+ if (state & MESA_META_BLEND) {
save->BlendEnabled = ctx->Color.BlendEnabled;
if (ctx->Color.BlendEnabled) {
if (ctx->Extensions.EXT_draw_buffers2) {
@@ -383,7 +355,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, GL_FALSE);
}
- if (state & META_COLOR_MASK) {
+ if (state & MESA_META_COLOR_MASK) {
memcpy(save->ColorMask, ctx->Color.ColorMask,
sizeof(ctx->Color.ColorMask));
if (!ctx->Color.ColorMask[0][0] ||
@@ -393,26 +365,26 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_ColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE);
}
- if (state & META_DEPTH_TEST) {
+ if (state & MESA_META_DEPTH_TEST) {
save->Depth = ctx->Depth; /* struct copy */
if (ctx->Depth.Test)
_mesa_set_enable(ctx, GL_DEPTH_TEST, GL_FALSE);
}
- if (state & META_FOG) {
+ if (state & MESA_META_FOG) {
save->Fog = ctx->Fog.Enabled;
if (ctx->Fog.Enabled)
_mesa_set_enable(ctx, GL_FOG, GL_FALSE);
}
- if (state & META_PIXEL_STORE) {
+ if (state & MESA_META_PIXEL_STORE) {
save->Pack = ctx->Pack;
save->Unpack = ctx->Unpack;
ctx->Pack = ctx->DefaultPacking;
ctx->Unpack = ctx->DefaultPacking;
}
- if (state & META_PIXEL_TRANSFER) {
+ if (state & MESA_META_PIXEL_TRANSFER) {
save->RedScale = ctx->Pixel.RedScale;
save->RedBias = ctx->Pixel.RedBias;
save->GreenScale = ctx->Pixel.GreenScale;
@@ -435,7 +407,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
ctx->NewState |=_NEW_PIXEL;
}
- if (state & META_RASTERIZATION) {
+ if (state & MESA_META_RASTERIZATION) {
save->FrontPolygonMode = ctx->Polygon.FrontMode;
save->BackPolygonMode = ctx->Polygon.BackMode;
save->PolygonOffset = ctx->Polygon.OffsetFill;
@@ -449,12 +421,12 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_set_enable(ctx, GL_CULL_FACE, GL_FALSE);
}
- if (state & META_SCISSOR) {
+ if (state & MESA_META_SCISSOR) {
save->Scissor = ctx->Scissor; /* struct copy */
_mesa_set_enable(ctx, GL_SCISSOR_TEST, GL_FALSE);
}
- if (state & META_SHADER) {
+ if (state & MESA_META_SHADER) {
if (ctx->Extensions.ARB_vertex_program) {
save->VertexProgramEnabled = ctx->VertexProgram.Enabled;
_mesa_reference_vertprog(ctx, &save->VertexProgram,
@@ -483,14 +455,14 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
}
}
- if (state & META_STENCIL_TEST) {
+ if (state & MESA_META_STENCIL_TEST) {
save->Stencil = ctx->Stencil; /* struct copy */
if (ctx->Stencil.Enabled)
_mesa_set_enable(ctx, GL_STENCIL_TEST, GL_FALSE);
/* NOTE: other stencil state not reset */
}
- if (state & META_TEXTURE) {
+ if (state & MESA_META_TEXTURE) {
GLuint u, tgt;
save->ActiveUnit = ctx->Texture.CurrentUnit;
@@ -529,7 +501,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_TexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
}
- if (state & META_TRANSFORM) {
+ if (state & MESA_META_TRANSFORM) {
GLuint activeTexture = ctx->Texture.CurrentUnit;
memcpy(save->ModelviewMatrix, ctx->ModelviewMatrixStack.Top->m,
16 * sizeof(GLfloat));
@@ -552,7 +524,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
-1.0, 1.0);
}
- if (state & META_CLIP) {
+ if (state & MESA_META_CLIP) {
save->ClipPlanesEnabled = ctx->Transform.ClipPlanesEnabled;
if (ctx->Transform.ClipPlanesEnabled) {
GLuint i;
@@ -562,7 +534,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
}
}
- if (state & META_VERTEX) {
+ if (state & MESA_META_VERTEX) {
/* save vertex array object state */
_mesa_reference_array_object(ctx, &save->ArrayObj,
ctx->Array.ArrayObj);
@@ -571,7 +543,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
/* set some default state? */
}
- if (state & META_VIEWPORT) {
+ if (state & MESA_META_VIEWPORT) {
/* save viewport state */
save->ViewportX = ctx->Viewport.X;
save->ViewportY = ctx->Viewport.Y;
@@ -592,7 +564,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_DepthRange(0.0, 1.0);
}
- if (state & META_CLAMP_FRAGMENT_COLOR) {
+ if (state & MESA_META_CLAMP_FRAGMENT_COLOR) {
save->ClampFragmentColor = ctx->Color.ClampFragmentColor;
/* Generally in here we want to do clamping according to whether
@@ -603,7 +575,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE);
}
- if (state & META_CLAMP_VERTEX_COLOR) {
+ if (state & MESA_META_CLAMP_VERTEX_COLOR) {
save->ClampVertexColor = ctx->Light.ClampVertexColor;
/* Generally in here we never want vertex color clamping --
@@ -612,7 +584,7 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
_mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, GL_FALSE);
}
- if (state & META_CONDITIONAL_RENDER) {
+ if (state & MESA_META_CONDITIONAL_RENDER) {
save->CondRenderQuery = ctx->Query.CondRenderQuery;
save->CondRenderMode = ctx->Query.CondRenderMode;
@@ -632,19 +604,19 @@ _mesa_meta_begin(struct gl_context *ctx, GLbitfield state)
/**
* Leave meta state. This is like a light-weight version of glPopAttrib().
*/
-static void
+void
_mesa_meta_end(struct gl_context *ctx)
{
struct save_state *save = &ctx->Meta->Save[--ctx->Meta->SaveStackDepth];
const GLbitfield state = save->SavedState;
- if (state & META_ALPHA_TEST) {
+ if (state & MESA_META_ALPHA_TEST) {
if (ctx->Color.AlphaEnabled != save->AlphaEnabled)
_mesa_set_enable(ctx, GL_ALPHA_TEST, save->AlphaEnabled);
_mesa_AlphaFunc(save->AlphaFunc, save->AlphaRef);
}
- if (state & META_BLEND) {
+ if (state & MESA_META_BLEND) {
if (ctx->Color.BlendEnabled != save->BlendEnabled) {
if (ctx->Extensions.EXT_draw_buffers2) {
GLuint i;
@@ -660,7 +632,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_set_enable(ctx, GL_COLOR_LOGIC_OP, save->ColorLogicOpEnabled);
}
- if (state & META_COLOR_MASK) {
+ if (state & MESA_META_COLOR_MASK) {
GLuint i;
for (i = 0; i < ctx->Const.MaxDrawBuffers; i++) {
if (!TEST_EQ_4V(ctx->Color.ColorMask[i], save->ColorMask[i])) {
@@ -679,23 +651,23 @@ _mesa_meta_end(struct gl_context *ctx)
}
}
- if (state & META_DEPTH_TEST) {
+ if (state & MESA_META_DEPTH_TEST) {
if (ctx->Depth.Test != save->Depth.Test)
_mesa_set_enable(ctx, GL_DEPTH_TEST, save->Depth.Test);
_mesa_DepthFunc(save->Depth.Func);
_mesa_DepthMask(save->Depth.Mask);
}
- if (state & META_FOG) {
+ if (state & MESA_META_FOG) {
_mesa_set_enable(ctx, GL_FOG, save->Fog);
}
- if (state & META_PIXEL_STORE) {
+ if (state & MESA_META_PIXEL_STORE) {
ctx->Pack = save->Pack;
ctx->Unpack = save->Unpack;
}
- if (state & META_PIXEL_TRANSFER) {
+ if (state & MESA_META_PIXEL_TRANSFER) {
ctx->Pixel.RedScale = save->RedScale;
ctx->Pixel.RedBias = save->RedBias;
ctx->Pixel.GreenScale = save->GreenScale;
@@ -709,7 +681,7 @@ _mesa_meta_end(struct gl_context *ctx)
ctx->NewState |=_NEW_PIXEL;
}
- if (state & META_RASTERIZATION) {
+ if (state & MESA_META_RASTERIZATION) {
_mesa_PolygonMode(GL_FRONT, save->FrontPolygonMode);
_mesa_PolygonMode(GL_BACK, save->BackPolygonMode);
_mesa_set_enable(ctx, GL_POLYGON_STIPPLE, save->PolygonStipple);
@@ -718,13 +690,13 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_set_enable(ctx, GL_CULL_FACE, save->PolygonCull);
}
- if (state & META_SCISSOR) {
+ if (state & MESA_META_SCISSOR) {
_mesa_set_enable(ctx, GL_SCISSOR_TEST, save->Scissor.Enabled);
_mesa_Scissor(save->Scissor.X, save->Scissor.Y,
save->Scissor.Width, save->Scissor.Height);
}
- if (state & META_SHADER) {
+ if (state & MESA_META_SHADER) {
if (ctx->Extensions.ARB_vertex_program) {
_mesa_set_enable(ctx, GL_VERTEX_PROGRAM_ARB,
save->VertexProgramEnabled);
@@ -756,7 +728,7 @@ _mesa_meta_end(struct gl_context *ctx)
save->ActiveShader);
}
- if (state & META_STENCIL_TEST) {
+ if (state & MESA_META_STENCIL_TEST) {
const struct gl_stencil_attrib *stencil = &save->Stencil;
_mesa_set_enable(ctx, GL_STENCIL_TEST, stencil->Enabled);
@@ -787,7 +759,7 @@ _mesa_meta_end(struct gl_context *ctx)
stencil->ZPassFunc[1]);
}
- if (state & META_TEXTURE) {
+ if (state & MESA_META_TEXTURE) {
GLuint u, tgt;
ASSERT(ctx->Texture.CurrentUnit == 0);
@@ -838,7 +810,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_ClientActiveTextureARB(GL_TEXTURE0 + save->ClientActiveUnit);
}
- if (state & META_TRANSFORM) {
+ if (state & MESA_META_TRANSFORM) {
GLuint activeTexture = ctx->Texture.CurrentUnit;
_mesa_ActiveTextureARB(GL_TEXTURE0);
_mesa_MatrixMode(GL_TEXTURE);
@@ -854,7 +826,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_MatrixMode(save->MatrixMode);
}
- if (state & META_CLIP) {
+ if (state & MESA_META_CLIP) {
if (save->ClipPlanesEnabled) {
GLuint i;
for (i = 0; i < ctx->Const.MaxClipPlanes; i++) {
@@ -865,7 +837,7 @@ _mesa_meta_end(struct gl_context *ctx)
}
}
- if (state & META_VERTEX) {
+ if (state & MESA_META_VERTEX) {
/* restore vertex buffer object */
_mesa_BindBufferARB(GL_ARRAY_BUFFER_ARB, save->ArrayBufferObj->Name);
_mesa_reference_buffer_object(ctx, &save->ArrayBufferObj, NULL);
@@ -875,7 +847,7 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_reference_array_object(ctx, &save->ArrayObj, NULL);
}
- if (state & META_VIEWPORT) {
+ if (state & MESA_META_VIEWPORT) {
if (save->ViewportX != ctx->Viewport.X ||
save->ViewportY != ctx->Viewport.Y ||
save->ViewportW != ctx->Viewport.Width ||
@@ -886,15 +858,15 @@ _mesa_meta_end(struct gl_context *ctx)
_mesa_DepthRange(save->DepthNear, save->DepthFar);
}
- if (state & META_CLAMP_FRAGMENT_COLOR) {
+ if (state & MESA_META_CLAMP_FRAGMENT_COLOR) {
_mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, save->ClampFragmentColor);
}
- if (state & META_CLAMP_VERTEX_COLOR) {
+ if (state & MESA_META_CLAMP_VERTEX_COLOR) {
_mesa_ClampColorARB(GL_CLAMP_VERTEX_COLOR, save->ClampVertexColor);
}
- if (state & META_CONDITIONAL_RENDER) {
+ if (state & MESA_META_CONDITIONAL_RENDER) {
if (save->CondRenderQuery)
_mesa_BeginConditionalRender(save->CondRenderQuery->Id,
save->CondRenderMode);
@@ -1360,7 +1332,7 @@ _mesa_meta_BlitFramebuffer(struct gl_context *ctx,
}
/* only scissor effects blit so save/clear all other relevant state */
- _mesa_meta_begin(ctx, ~META_SCISSOR);
+ _mesa_meta_begin(ctx, ~MESA_META_SCISSOR);
if (blit->ArrayObj == 0) {
/* one-time setup */
@@ -1489,15 +1461,15 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
};
struct vertex verts[4];
/* save all state but scissor, pixel pack/unpack */
- GLbitfield metaSave = (META_ALL -
- META_SCISSOR -
- META_PIXEL_STORE -
- META_CONDITIONAL_RENDER);
+ GLbitfield metaSave = (MESA_META_ALL -
+ MESA_META_SCISSOR -
+ MESA_META_PIXEL_STORE -
+ MESA_META_CONDITIONAL_RENDER);
const GLuint stencilMax = (1 << ctx->DrawBuffer->Visual.stencilBits) - 1;
if (buffers & BUFFER_BITS_COLOR) {
/* if clearing color buffers, don't save/restore colormask */
- metaSave -= META_COLOR_MASK;
+ metaSave -= MESA_META_COLOR_MASK;
}
_mesa_meta_begin(ctx, metaSave);
@@ -1532,7 +1504,7 @@ _mesa_meta_Clear(struct gl_context *ctx, GLbitfield buffers)
_mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE);
}
else {
- ASSERT(metaSave & META_COLOR_MASK);
+ ASSERT(metaSave & MESA_META_COLOR_MASK);
_mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
}
@@ -1669,22 +1641,22 @@ _mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers)
GLfloat x, y, z;
} verts[4];
- metaSave = (META_ALPHA_TEST |
- META_BLEND |
- META_DEPTH_TEST |
- META_RASTERIZATION |
- META_SHADER |
- META_STENCIL_TEST |
- META_VERTEX |
- META_VIEWPORT |
- META_CLIP |
- META_CLAMP_FRAGMENT_COLOR);
+ metaSave = (MESA_META_ALPHA_TEST |
+ MESA_META_BLEND |
+ MESA_META_DEPTH_TEST |
+ MESA_META_RASTERIZATION |
+ MESA_META_SHADER |
+ MESA_META_STENCIL_TEST |
+ MESA_META_VERTEX |
+ MESA_META_VIEWPORT |
+ MESA_META_CLIP |
+ MESA_META_CLAMP_FRAGMENT_COLOR);
if (!(buffers & BUFFER_BITS_COLOR)) {
/* We'll use colormask to disable color writes. Otherwise,
* respect color mask
*/
- metaSave |= META_COLOR_MASK;
+ metaSave |= MESA_META_COLOR_MASK;
}
_mesa_meta_begin(ctx, metaSave);
@@ -1706,7 +1678,7 @@ _mesa_meta_glsl_Clear(struct gl_context *ctx, GLbitfield buffers)
_mesa_ClampColorARB(GL_CLAMP_FRAGMENT_COLOR, GL_FALSE);
}
else {
- ASSERT(metaSave & META_COLOR_MASK);
+ ASSERT(metaSave & MESA_META_COLOR_MASK);
_mesa_ColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE);
}
@@ -1788,13 +1760,13 @@ _mesa_meta_CopyPixels(struct gl_context *ctx, GLint srcX, GLint srcY,
/* Most GL state applies to glCopyPixels, but a there's a few things
* we need to override:
*/
- _mesa_meta_begin(ctx, (META_RASTERIZATION |
- META_SHADER |
- META_TEXTURE |
- META_TRANSFORM |
- META_CLIP |
- META_VERTEX |
- META_VIEWPORT));
+ _mesa_meta_begin(ctx, (MESA_META_RASTERIZATION |
+ MESA_META_SHADER |
+ MESA_META_TEXTURE |
+ MESA_META_TRANSFORM |
+ MESA_META_CLIP |
+ MESA_META_VERTEX |
+ MESA_META_VIEWPORT));
if (copypix->ArrayObj == 0) {
/* one-time setup */
@@ -2069,10 +2041,10 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
* in [0,1].
*/
texIntFormat = GL_ALPHA;
- metaExtraSave = (META_COLOR_MASK |
- META_DEPTH_TEST |
- META_SHADER |
- META_STENCIL_TEST);
+ metaExtraSave = (MESA_META_COLOR_MASK |
+ MESA_META_DEPTH_TEST |
+ MESA_META_SHADER |
+ MESA_META_STENCIL_TEST);
}
else {
fallback = GL_TRUE;
@@ -2082,7 +2054,7 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
if (ctx->Extensions.ARB_depth_texture &&
ctx->Extensions.ARB_fragment_program) {
texIntFormat = GL_DEPTH_COMPONENT;
- metaExtraSave = (META_SHADER);
+ metaExtraSave = (MESA_META_SHADER);
}
else {
fallback = GL_TRUE;
@@ -2110,14 +2082,14 @@ _mesa_meta_DrawPixels(struct gl_context *ctx,
/* Most GL state applies to glDrawPixels (like blending, stencil, etc),
* but a there's a few things we need to override:
*/
- _mesa_meta_begin(ctx, (META_RASTERIZATION |
- META_SHADER |
- META_TEXTURE |
- META_TRANSFORM |
- META_CLIP |
- META_VERTEX |
- META_VIEWPORT |
- META_CLAMP_FRAGMENT_COLOR |
+ _mesa_meta_begin(ctx, (MESA_META_RASTERIZATION |
+ MESA_META_SHADER |
+ MESA_META_TEXTURE |
+ MESA_META_TRANSFORM |
+ MESA_META_CLIP |
+ MESA_META_VERTEX |
+ MESA_META_VIEWPORT |
+ MESA_META_CLAMP_FRAGMENT_COLOR |
metaExtraSave));
newTex = alloc_texture(tex, width, height, texIntFormat);
@@ -2318,15 +2290,15 @@ _mesa_meta_Bitmap(struct gl_context *ctx,
/* Most GL state applies to glBitmap (like blending, stencil, etc),
* but a there's a few things we need to override:
*/
- _mesa_meta_begin(ctx, (META_ALPHA_TEST |
- META_PIXEL_STORE |
- META_RASTERIZATION |
- META_SHADER |
- META_TEXTURE |
- META_TRANSFORM |
- META_CLIP |
- META_VERTEX |
- META_VIEWPORT));
+ _mesa_meta_begin(ctx, (MESA_META_ALPHA_TEST |
+ MESA_META_PIXEL_STORE |
+ MESA_META_RASTERIZATION |
+ MESA_META_SHADER |
+ MESA_META_TEXTURE |
+ MESA_META_TRANSFORM |
+ MESA_META_CLIP |
+ MESA_META_VERTEX |
+ MESA_META_VIEWPORT));
if (bitmap->ArrayObj == 0) {
/* one-time setup */
@@ -2452,7 +2424,9 @@ _mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target,
/* check for fallbacks */
if (!ctx->Extensions.EXT_framebuffer_object ||
- target == GL_TEXTURE_3D) {
+ target == GL_TEXTURE_3D ||
+ target == GL_TEXTURE_1D_ARRAY ||
+ target == GL_TEXTURE_2D_ARRAY) {
return GL_TRUE;
}
@@ -2504,7 +2478,8 @@ _mesa_meta_check_generate_mipmap_fallback(struct gl_context *ctx, GLenum target,
/**
* Called via ctx->Driver.GenerateMipmap()
- * Note: texture borders and 3D texture support not yet complete.
+ * Note: We don't yet support 3D textures, 1D/2D array textures or texture
+ * borders.
*/
void
_mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
@@ -2544,7 +2519,7 @@ _mesa_meta_GenerateMipmap(struct gl_context *ctx, GLenum target,
faceTarget = target;
}
- _mesa_meta_begin(ctx, META_ALL);
+ _mesa_meta_begin(ctx, MESA_META_ALL);
if (original_active_unit != 0)
_mesa_BindTexture(target, texObj->Name);
@@ -2900,7 +2875,7 @@ copy_tex_sub_image(struct gl_context *ctx,
/*
* Read image from framebuffer (disable pixel transfer ops)
*/
- _mesa_meta_begin(ctx, META_PIXEL_STORE | META_PIXEL_TRANSFER);
+ _mesa_meta_begin(ctx, MESA_META_PIXEL_STORE | MESA_META_PIXEL_TRANSFER);
ctx->Driver.ReadPixels(ctx, x, y, width, height,
format, type, &ctx->Pack, buf);
_mesa_meta_end(ctx);
@@ -2910,7 +2885,7 @@ copy_tex_sub_image(struct gl_context *ctx,
/*
* Store texture data (with pixel transfer ops)
*/
- _mesa_meta_begin(ctx, META_PIXEL_STORE);
+ _mesa_meta_begin(ctx, MESA_META_PIXEL_STORE);
if (target == GL_TEXTURE_1D) {
ctx->Driver.TexSubImage1D(ctx, target, level, xoffset,
width, format, type, buf,
@@ -2982,7 +2957,7 @@ _mesa_meta_CopyColorTable(struct gl_context *ctx,
/*
* Read image from framebuffer (disable pixel transfer ops)
*/
- _mesa_meta_begin(ctx, META_PIXEL_STORE | META_PIXEL_TRANSFER);
+ _mesa_meta_begin(ctx, MESA_META_PIXEL_STORE | MESA_META_PIXEL_TRANSFER);
ctx->Driver.ReadPixels(ctx, x, y, width, 1,
GL_RGBA, GL_FLOAT, &ctx->Pack, buf);
@@ -3009,7 +2984,7 @@ _mesa_meta_CopyColorSubTable(struct gl_context *ctx,GLenum target, GLsizei start
/*
* Read image from framebuffer (disable pixel transfer ops)
*/
- _mesa_meta_begin(ctx, META_PIXEL_STORE | META_PIXEL_TRANSFER);
+ _mesa_meta_begin(ctx, MESA_META_PIXEL_STORE | MESA_META_PIXEL_TRANSFER);
ctx->Driver.ReadPixels(ctx, x, y, width, 1,
GL_RGBA, GL_FLOAT, &ctx->Pack, buf);
diff --git a/mesalib/src/mesa/drivers/common/meta.h b/mesalib/src/mesa/drivers/common/meta.h
index 95b4b5579..ac20e370e 100644
--- a/mesalib/src/mesa/drivers/common/meta.h
+++ b/mesalib/src/mesa/drivers/common/meta.h
@@ -26,6 +26,33 @@
#ifndef META_H
#define META_H
+/**
+ * \name Flags for meta operations
+ * \{
+ *
+ * These flags are passed to _mesa_meta_begin().
+ */
+#define MESA_META_ALL ~0x0
+#define MESA_META_ALPHA_TEST 0x1
+#define MESA_META_BLEND 0x2 /**< includes logicop */
+#define MESA_META_COLOR_MASK 0x4
+#define MESA_META_DEPTH_TEST 0x8
+#define MESA_META_FOG 0x10
+#define MESA_META_PIXEL_STORE 0x20
+#define MESA_META_PIXEL_TRANSFER 0x40
+#define MESA_META_RASTERIZATION 0x80
+#define MESA_META_SCISSOR 0x100
+#define MESA_META_SHADER 0x200
+#define MESA_META_STENCIL_TEST 0x400
+#define MESA_META_TRANSFORM 0x800 /**< modelview/projection matrix state */
+#define MESA_META_TEXTURE 0x1000
+#define MESA_META_VERTEX 0x2000
+#define MESA_META_VIEWPORT 0x4000
+#define MESA_META_CLAMP_FRAGMENT_COLOR 0x8000
+#define MESA_META_CLAMP_VERTEX_COLOR 0x10000
+#define MESA_META_CONDITIONAL_RENDER 0x20000
+#define MESA_META_CLIP 0x40000
+/**\}*/
extern void
_mesa_meta_init(struct gl_context *ctx);
@@ -34,6 +61,12 @@ extern void
_mesa_meta_free(struct gl_context *ctx);
extern void
+_mesa_meta_begin(struct gl_context *ctx, GLbitfield state);
+
+extern void
+_mesa_meta_end(struct gl_context *ctx);
+
+extern void
_mesa_meta_BlitFramebuffer(struct gl_context *ctx,
GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
diff --git a/mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h b/mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h
index 6c11d350d..b9065b2dd 100644
--- a/mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h
+++ b/mesalib/src/mesa/drivers/dri/common/drirenderbuffer.h
@@ -1,79 +1,71 @@
-
-/**
- * A driRenderbuffer is dervied from gl_renderbuffer.
- * It describes a color buffer (front or back), a depth buffer, or stencil
- * buffer etc.
- * Specific to DRI drivers are the offset and pitch fields.
- */
-
-
-#ifndef DRIRENDERBUFFER_H
-#define DRIRENDERBUFFER_H
-
-#include "main/mtypes.h"
-#include "main/formats.h"
-#include "dri_util.h"
-
-
-typedef struct {
- struct gl_renderbuffer Base;
-
- /* Chars or bytes per pixel. If Z and Stencil are stored together this
- * will typically be 32 whether this a depth or stencil renderbuffer.
- */
- GLint cpp;
-
- /* Buffer position and pitch (row stride). Recall that for today's DRI
- * drivers, we have statically allocated color/depth/stencil buffers.
- * So this information describes the whole screen, not just a window.
- * To address pixels in a window, we need to know the window's position
- * and size with respect to the screen.
- */
- GLint offset; /* in bytes */
- GLint pitch; /* in pixels */
-
- /* If the driver can do page flipping (full-screen double buffering)
- * the current front/back buffers may get swapped.
- * If page flipping is disabled, these fields will be identical to
- * the offset/pitch/Data above.
- * If page flipping is enabled, and this is the front(back) renderbuffer,
- * flippedOffset/Pitch/Data will have the back(front) renderbuffer's values.
- */
- GLint flippedOffset;
- GLint flippedPitch;
- GLvoid *flippedData; /* mmap'd address of buffer memory, if used */
-
- /* Pointer to corresponding __DRIdrawable. This is used to compute
- * the window's position within the framebuffer.
- */
- __DRIdrawable *dPriv;
-
- /* XXX this is for radeon/r200 only. We should really create a new
- * r200Renderbuffer class, derived from this class... not a huge deal.
- */
- GLboolean depthHasSurface;
-
- /**
- * A handy flag to know if this is the back color buffer.
- *
- * \note
- * This is currently only used by tdfx.
- */
- GLboolean backBuffer;
-} driRenderbuffer;
-
-
-extern driRenderbuffer *
-driNewRenderbuffer(gl_format format, GLvoid *addr,
- GLint cpp, GLint offset, GLint pitch,
- __DRIdrawable *dPriv);
-
-extern void
-driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped);
-
-
-extern void
-driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv);
-
-
-#endif /* DRIRENDERBUFFER_H */
+
+/**
+ * A driRenderbuffer is dervied from gl_renderbuffer.
+ * It describes a color buffer (front or back), a depth buffer, or stencil
+ * buffer etc.
+ * Specific to DRI drivers are the offset and pitch fields.
+ */
+
+
+#ifndef DRIRENDERBUFFER_H
+#define DRIRENDERBUFFER_H
+
+#include "main/mtypes.h"
+#include "main/formats.h"
+#include "dri_util.h"
+
+
+typedef struct {
+ struct gl_renderbuffer Base;
+
+ /* Chars or bytes per pixel. If Z and Stencil are stored together this
+ * will typically be 32 whether this a depth or stencil renderbuffer.
+ */
+ GLint cpp;
+
+ /* Buffer position and pitch (row stride). Recall that for today's DRI
+ * drivers, we have statically allocated color/depth/stencil buffers.
+ * So this information describes the whole screen, not just a window.
+ * To address pixels in a window, we need to know the window's position
+ * and size with respect to the screen.
+ */
+ GLint offset; /* in bytes */
+ GLint pitch; /* in pixels */
+
+ /* If the driver can do page flipping (full-screen double buffering)
+ * the current front/back buffers may get swapped.
+ * If page flipping is disabled, these fields will be identical to
+ * the offset/pitch/Data above.
+ * If page flipping is enabled, and this is the front(back) renderbuffer,
+ * flippedOffset/Pitch/Data will have the back(front) renderbuffer's values.
+ */
+ GLint flippedOffset;
+ GLint flippedPitch;
+ GLvoid *flippedData; /* mmap'd address of buffer memory, if used */
+
+ /* Pointer to corresponding __DRIdrawable. This is used to compute
+ * the window's position within the framebuffer.
+ */
+ __DRIdrawable *dPriv;
+
+ /* XXX this is for radeon/r200 only. We should really create a new
+ * r200Renderbuffer class, derived from this class... not a huge deal.
+ */
+ GLboolean depthHasSurface;
+} driRenderbuffer;
+
+
+extern driRenderbuffer *
+driNewRenderbuffer(gl_format format, GLvoid *addr,
+ GLint cpp, GLint offset, GLint pitch,
+ __DRIdrawable *dPriv);
+
+extern void
+driFlipRenderbuffers(struct gl_framebuffer *fb, GLboolean flipped);
+
+
+extern void
+driUpdateFramebufferSize(struct gl_context *ctx, const __DRIdrawable *dPriv);
+
+
+#endif /* DRIRENDERBUFFER_H */
diff --git a/mesalib/src/mesa/drivers/dri/common/mmx.h b/mesalib/src/mesa/drivers/dri/common/mmx.h
deleted file mode 100644
index 49ce7e3e3..000000000
--- a/mesalib/src/mesa/drivers/dri/common/mmx.h
+++ /dev/null
@@ -1,560 +0,0 @@
-/* mmx.h
-
- MultiMedia eXtensions GCC interface library for IA32.
-
- To use this library, simply include this header file
- and compile with GCC. You MUST have inlining enabled
- in order for mmx_ok() to work; this can be done by
- simply using -O on the GCC command line.
-
- Compiling with -DMMX_TRACE will cause detailed trace
- output to be sent to stderr for each mmx operation.
- This adds lots of code, and obviously slows execution to
- a crawl, but can be very useful for debugging.
-
- THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY
- EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
- LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS FOR ANY PARTICULAR PURPOSE.
-
- 1997-98 by H. Dietz and R. Fisher
-
- History:
- 97-98* R.Fisher Early versions
- 980501 R.Fisher Original Release
- 980611* H.Dietz Rewrite, correctly implementing inlines, and
- R.Fisher including direct register accesses.
- 980616 R.Fisher Release of 980611 as 980616.
- 980714 R.Fisher Minor corrections to Makefile, etc.
- 980715 R.Fisher mmx_ok() now prevents optimizer from using
- clobbered values.
- mmx_ok() now checks if cpuid instruction is
- available before trying to use it.
- 980726* R.Fisher mm_support() searches for AMD 3DNow, Cyrix
- Extended MMX, and standard MMX. It returns a
- value which is positive if any of these are
- supported, and can be masked with constants to
- see which. mmx_ok() is now a call to this
- 980726* R.Fisher Added i2r support for shift functions
- 980919 R.Fisher Fixed AMD extended feature recognition bug.
- 980921 R.Fisher Added definition/check for _MMX_H.
- Added "float s[2]" to mmx_t for use with
- 3DNow and EMMX. So same mmx_t can be used.
- 981013 R.Fisher Fixed cpuid function 1 bug (looked at wrong reg)
- Fixed psllq_i2r error in mmxtest.c
-
- * Unreleased (internal or interim) versions
-
- Notes:
- It appears that the latest gas has the pand problem fixed, therefore
- I'll undefine BROKEN_PAND by default.
- String compares may be quicker than the multiple test/jumps in vendor
- test sequence in mmx_ok(), but I'm not concerned with that right now.
-
- Acknowledgments:
- Jussi Laako for pointing out the errors ultimately found to be
- connected to the failure to notify the optimizer of clobbered values.
- Roger Hardiman for reminding us that CPUID isn't everywhere, and that
- someone may actually try to use this on a machine without CPUID.
- Also for suggesting code for checking this.
- Robert Dale for pointing out the AMD recognition bug.
- Jimmy Mayfield and Carl Witty for pointing out the Intel recognition
- bug.
- Carl Witty for pointing out the psllq_i2r test bug.
-*/
-
-#ifndef _MMX_H
-#define _MMX_H
-
-//#define MMX_TRACE
-
-/* Warning: at this writing, the version of GAS packaged
- with most Linux distributions does not handle the
- parallel AND operation mnemonic correctly. If the
- symbol BROKEN_PAND is defined, a slower alternative
- coding will be used. If execution of mmxtest results
- in an illegal instruction fault, define this symbol.
-*/
-#undef BROKEN_PAND
-
-
-/* The type of an value that fits in an MMX register
- (note that long long constant values MUST be suffixed
- by LL and unsigned long long values by ULL, lest
- they be truncated by the compiler)
-*/
-typedef union {
- long long q; /* Quadword (64-bit) value */
- unsigned long long uq; /* Unsigned Quadword */
- int d[2]; /* 2 Doubleword (32-bit) values */
- unsigned int ud[2]; /* 2 Unsigned Doubleword */
- short w[4]; /* 4 Word (16-bit) values */
- unsigned short uw[4]; /* 4 Unsigned Word */
- char b[8]; /* 8 Byte (8-bit) values */
- unsigned char ub[8]; /* 8 Unsigned Byte */
- float s[2]; /* Single-precision (32-bit) value */
-} mmx_t;
-
-/* Helper functions for the instruction macros that follow...
- (note that memory-to-register, m2r, instructions are nearly
- as efficient as register-to-register, r2r, instructions;
- however, memory-to-memory instructions are really simulated
- as a convenience, and are only 1/3 as efficient)
-*/
-#ifdef MMX_TRACE
-
-/* Include the stuff for printing a trace to stderr...
-*/
-
-#include <stdio.h>
-
-#define mmx_i2r(op, imm, reg) \
- { \
- mmx_t mmx_trace; \
- mmx_trace = (imm); \
- fprintf(stderr, #op "_i2r(" #imm "=0x%016llx, ", mmx_trace.q); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #reg "=0x%016llx) => ", mmx_trace.q); \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
- : "X" (imm)); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #reg "=0x%016llx\n", mmx_trace.q); \
- }
-
-#define mmx_m2r(op, mem, reg) \
- { \
- mmx_t mmx_trace; \
- mmx_trace = (mem); \
- fprintf(stderr, #op "_m2r(" #mem "=0x%016llx, ", mmx_trace.q); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #reg "=0x%016llx) => ", mmx_trace.q); \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
- : "X" (mem)); \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #reg "=0x%016llx\n", mmx_trace.q); \
- }
-
-#define mmx_r2m(op, reg, mem) \
- { \
- mmx_t mmx_trace; \
- __asm__ __volatile__ ("movq %%" #reg ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #op "_r2m(" #reg "=0x%016llx, ", mmx_trace.q); \
- mmx_trace = (mem); \
- fprintf(stderr, #mem "=0x%016llx) => ", mmx_trace.q); \
- __asm__ __volatile__ (#op " %%" #reg ", %0" \
- : "=X" (mem) \
- : /* nothing */ ); \
- mmx_trace = (mem); \
- fprintf(stderr, #mem "=0x%016llx\n", mmx_trace.q); \
- }
-
-#define mmx_r2r(op, regs, regd) \
- { \
- mmx_t mmx_trace; \
- __asm__ __volatile__ ("movq %%" #regs ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #op "_r2r(" #regs "=0x%016llx, ", mmx_trace.q); \
- __asm__ __volatile__ ("movq %%" #regd ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #regd "=0x%016llx) => ", mmx_trace.q); \
- __asm__ __volatile__ (#op " %" #regs ", %" #regd); \
- __asm__ __volatile__ ("movq %%" #regd ", %0" \
- : "=X" (mmx_trace) \
- : /* nothing */ ); \
- fprintf(stderr, #regd "=0x%016llx\n", mmx_trace.q); \
- }
-
-#define mmx_m2m(op, mems, memd) \
- { \
- mmx_t mmx_trace; \
- mmx_trace = (mems); \
- fprintf(stderr, #op "_m2m(" #mems "=0x%016llx, ", mmx_trace.q); \
- mmx_trace = (memd); \
- fprintf(stderr, #memd "=0x%016llx) => ", mmx_trace.q); \
- __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
- #op " %1, %%mm0\n\t" \
- "movq %%mm0, %0" \
- : "=X" (memd) \
- : "X" (mems)); \
- mmx_trace = (memd); \
- fprintf(stderr, #memd "=0x%016llx\n", mmx_trace.q); \
- }
-
-#else
-
-/* These macros are a lot simpler without the tracing...
-*/
-
-#define mmx_i2r(op, imm, reg) \
- __asm__ __volatile__ (#op " $" #imm ", %%" #reg \
- : /* nothing */ \
- : /* nothing */);
-
-#define mmx_m2r(op, mem, reg) \
- __asm__ __volatile__ (#op " %0, %%" #reg \
- : /* nothing */ \
- : "X" (mem))
-
-#define mmx_r2m(op, reg, mem) \
- __asm__ __volatile__ (#op " %%" #reg ", %0" \
- : "=X" (mem) \
- : /* nothing */ )
-
-#define mmx_r2r(op, regs, regd) \
- __asm__ __volatile__ (#op " %" #regs ", %" #regd)
-
-#define mmx_m2m(op, mems, memd) \
- __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
- #op " %1, %%mm0\n\t" \
- "movq %%mm0, %0" \
- : "=X" (memd) \
- : "X" (mems))
-
-#endif
-
-
-/* 1x64 MOVe Quadword
- (this is both a load and a store...
- in fact, it is the only way to store)
-*/
-#define movq_m2r(var, reg) mmx_m2r(movq, var, reg)
-#define movq_r2m(reg, var) mmx_r2m(movq, reg, var)
-#define movq_r2r(regs, regd) mmx_r2r(movq, regs, regd)
-#define movq(vars, vard) \
- __asm__ __volatile__ ("movq %1, %%mm0\n\t" \
- "movq %%mm0, %0" \
- : "=X" (vard) \
- : "X" (vars))
-
-
-/* 1x32 MOVe Doubleword
- (like movq, this is both load and store...
- but is most useful for moving things between
- mmx registers and ordinary registers)
-*/
-#define movd_m2r(var, reg) mmx_m2r(movd, var, reg)
-#define movd_r2m(reg, var) mmx_r2m(movd, reg, var)
-#define movd_r2r(regs, regd) mmx_r2r(movd, regs, regd)
-#define movd(vars, vard) \
- __asm__ __volatile__ ("movd %1, %%mm0\n\t" \
- "movd %%mm0, %0" \
- : "=X" (vard) \
- : "X" (vars))
-
-
-/* 2x32, 4x16, and 8x8 Parallel ADDs
-*/
-#define paddd_m2r(var, reg) mmx_m2r(paddd, var, reg)
-#define paddd_r2r(regs, regd) mmx_r2r(paddd, regs, regd)
-#define paddd(vars, vard) mmx_m2m(paddd, vars, vard)
-
-#define paddw_m2r(var, reg) mmx_m2r(paddw, var, reg)
-#define paddw_r2r(regs, regd) mmx_r2r(paddw, regs, regd)
-#define paddw(vars, vard) mmx_m2m(paddw, vars, vard)
-
-#define paddb_m2r(var, reg) mmx_m2r(paddb, var, reg)
-#define paddb_r2r(regs, regd) mmx_r2r(paddb, regs, regd)
-#define paddb(vars, vard) mmx_m2m(paddb, vars, vard)
-
-
-/* 4x16 and 8x8 Parallel ADDs using Saturation arithmetic
-*/
-#define paddsw_m2r(var, reg) mmx_m2r(paddsw, var, reg)
-#define paddsw_r2r(regs, regd) mmx_r2r(paddsw, regs, regd)
-#define paddsw(vars, vard) mmx_m2m(paddsw, vars, vard)
-
-#define paddsb_m2r(var, reg) mmx_m2r(paddsb, var, reg)
-#define paddsb_r2r(regs, regd) mmx_r2r(paddsb, regs, regd)
-#define paddsb(vars, vard) mmx_m2m(paddsb, vars, vard)
-
-
-/* 4x16 and 8x8 Parallel ADDs using Unsigned Saturation arithmetic
-*/
-#define paddusw_m2r(var, reg) mmx_m2r(paddusw, var, reg)
-#define paddusw_r2r(regs, regd) mmx_r2r(paddusw, regs, regd)
-#define paddusw(vars, vard) mmx_m2m(paddusw, vars, vard)
-
-#define paddusb_m2r(var, reg) mmx_m2r(paddusb, var, reg)
-#define paddusb_r2r(regs, regd) mmx_r2r(paddusb, regs, regd)
-#define paddusb(vars, vard) mmx_m2m(paddusb, vars, vard)
-
-
-/* 2x32, 4x16, and 8x8 Parallel SUBs
-*/
-#define psubd_m2r(var, reg) mmx_m2r(psubd, var, reg)
-#define psubd_r2r(regs, regd) mmx_r2r(psubd, regs, regd)
-#define psubd(vars, vard) mmx_m2m(psubd, vars, vard)
-
-#define psubw_m2r(var, reg) mmx_m2r(psubw, var, reg)
-#define psubw_r2r(regs, regd) mmx_r2r(psubw, regs, regd)
-#define psubw(vars, vard) mmx_m2m(psubw, vars, vard)
-
-#define psubb_m2r(var, reg) mmx_m2r(psubb, var, reg)
-#define psubb_r2r(regs, regd) mmx_r2r(psubb, regs, regd)
-#define psubb(vars, vard) mmx_m2m(psubb, vars, vard)
-
-
-/* 4x16 and 8x8 Parallel SUBs using Saturation arithmetic
-*/
-#define psubsw_m2r(var, reg) mmx_m2r(psubsw, var, reg)
-#define psubsw_r2r(regs, regd) mmx_r2r(psubsw, regs, regd)
-#define psubsw(vars, vard) mmx_m2m(psubsw, vars, vard)
-
-#define psubsb_m2r(var, reg) mmx_m2r(psubsb, var, reg)
-#define psubsb_r2r(regs, regd) mmx_r2r(psubsb, regs, regd)
-#define psubsb(vars, vard) mmx_m2m(psubsb, vars, vard)
-
-
-/* 4x16 and 8x8 Parallel SUBs using Unsigned Saturation arithmetic
-*/
-#define psubusw_m2r(var, reg) mmx_m2r(psubusw, var, reg)
-#define psubusw_r2r(regs, regd) mmx_r2r(psubusw, regs, regd)
-#define psubusw(vars, vard) mmx_m2m(psubusw, vars, vard)
-
-#define psubusb_m2r(var, reg) mmx_m2r(psubusb, var, reg)
-#define psubusb_r2r(regs, regd) mmx_r2r(psubusb, regs, regd)
-#define psubusb(vars, vard) mmx_m2m(psubusb, vars, vard)
-
-
-/* 4x16 Parallel MULs giving Low 4x16 portions of results
-*/
-#define pmullw_m2r(var, reg) mmx_m2r(pmullw, var, reg)
-#define pmullw_r2r(regs, regd) mmx_r2r(pmullw, regs, regd)
-#define pmullw(vars, vard) mmx_m2m(pmullw, vars, vard)
-
-
-/* 4x16 Parallel MULs giving High 4x16 portions of results
-*/
-#define pmulhw_m2r(var, reg) mmx_m2r(pmulhw, var, reg)
-#define pmulhw_r2r(regs, regd) mmx_r2r(pmulhw, regs, regd)
-#define pmulhw(vars, vard) mmx_m2m(pmulhw, vars, vard)
-
-
-/* 4x16->2x32 Parallel Mul-ADD
- (muls like pmullw, then adds adjacent 16-bit fields
- in the multiply result to make the final 2x32 result)
-*/
-#define pmaddwd_m2r(var, reg) mmx_m2r(pmaddwd, var, reg)
-#define pmaddwd_r2r(regs, regd) mmx_r2r(pmaddwd, regs, regd)
-#define pmaddwd(vars, vard) mmx_m2m(pmaddwd, vars, vard)
-
-
-/* 1x64 bitwise AND
-*/
-#ifdef BROKEN_PAND
-#define pand_m2r(var, reg) \
- { \
- mmx_m2r(pandn, (mmx_t) -1LL, reg); \
- mmx_m2r(pandn, var, reg); \
- }
-#define pand_r2r(regs, regd) \
- { \
- mmx_m2r(pandn, (mmx_t) -1LL, regd); \
- mmx_r2r(pandn, regs, regd) \
- }
-#define pand(vars, vard) \
- { \
- movq_m2r(vard, mm0); \
- mmx_m2r(pandn, (mmx_t) -1LL, mm0); \
- mmx_m2r(pandn, vars, mm0); \
- movq_r2m(mm0, vard); \
- }
-#else
-#define pand_m2r(var, reg) mmx_m2r(pand, var, reg)
-#define pand_r2r(regs, regd) mmx_r2r(pand, regs, regd)
-#define pand(vars, vard) mmx_m2m(pand, vars, vard)
-#endif
-
-
-/* 1x64 bitwise AND with Not the destination
-*/
-#define pandn_m2r(var, reg) mmx_m2r(pandn, var, reg)
-#define pandn_r2r(regs, regd) mmx_r2r(pandn, regs, regd)
-#define pandn(vars, vard) mmx_m2m(pandn, vars, vard)
-
-
-/* 1x64 bitwise OR
-*/
-#define por_m2r(var, reg) mmx_m2r(por, var, reg)
-#define por_r2r(regs, regd) mmx_r2r(por, regs, regd)
-#define por(vars, vard) mmx_m2m(por, vars, vard)
-
-
-/* 1x64 bitwise eXclusive OR
-*/
-#define pxor_m2r(var, reg) mmx_m2r(pxor, var, reg)
-#define pxor_r2r(regs, regd) mmx_r2r(pxor, regs, regd)
-#define pxor(vars, vard) mmx_m2m(pxor, vars, vard)
-
-
-/* 2x32, 4x16, and 8x8 Parallel CoMPare for EQuality
- (resulting fields are either 0 or -1)
-*/
-#define pcmpeqd_m2r(var, reg) mmx_m2r(pcmpeqd, var, reg)
-#define pcmpeqd_r2r(regs, regd) mmx_r2r(pcmpeqd, regs, regd)
-#define pcmpeqd(vars, vard) mmx_m2m(pcmpeqd, vars, vard)
-
-#define pcmpeqw_m2r(var, reg) mmx_m2r(pcmpeqw, var, reg)
-#define pcmpeqw_r2r(regs, regd) mmx_r2r(pcmpeqw, regs, regd)
-#define pcmpeqw(vars, vard) mmx_m2m(pcmpeqw, vars, vard)
-
-#define pcmpeqb_m2r(var, reg) mmx_m2r(pcmpeqb, var, reg)
-#define pcmpeqb_r2r(regs, regd) mmx_r2r(pcmpeqb, regs, regd)
-#define pcmpeqb(vars, vard) mmx_m2m(pcmpeqb, vars, vard)
-
-
-/* 2x32, 4x16, and 8x8 Parallel CoMPare for Greater Than
- (resulting fields are either 0 or -1)
-*/
-#define pcmpgtd_m2r(var, reg) mmx_m2r(pcmpgtd, var, reg)
-#define pcmpgtd_r2r(regs, regd) mmx_r2r(pcmpgtd, regs, regd)
-#define pcmpgtd(vars, vard) mmx_m2m(pcmpgtd, vars, vard)
-
-#define pcmpgtw_m2r(var, reg) mmx_m2r(pcmpgtw, var, reg)
-#define pcmpgtw_r2r(regs, regd) mmx_r2r(pcmpgtw, regs, regd)
-#define pcmpgtw(vars, vard) mmx_m2m(pcmpgtw, vars, vard)
-
-#define pcmpgtb_m2r(var, reg) mmx_m2r(pcmpgtb, var, reg)
-#define pcmpgtb_r2r(regs, regd) mmx_r2r(pcmpgtb, regs, regd)
-#define pcmpgtb(vars, vard) mmx_m2m(pcmpgtb, vars, vard)
-
-
-/* 1x64, 2x32, and 4x16 Parallel Shift Left Logical
-*/
-#define psllq_i2r(imm, reg) mmx_i2r(psllq, imm, reg)
-#define psllq_m2r(var, reg) mmx_m2r(psllq, var, reg)
-#define psllq_r2r(regs, regd) mmx_r2r(psllq, regs, regd)
-#define psllq(vars, vard) mmx_m2m(psllq, vars, vard)
-
-#define pslld_i2r(imm, reg) mmx_i2r(pslld, imm, reg)
-#define pslld_m2r(var, reg) mmx_m2r(pslld, var, reg)
-#define pslld_r2r(regs, regd) mmx_r2r(pslld, regs, regd)
-#define pslld(vars, vard) mmx_m2m(pslld, vars, vard)
-
-#define psllw_i2r(imm, reg) mmx_i2r(psllw, imm, reg)
-#define psllw_m2r(var, reg) mmx_m2r(psllw, var, reg)
-#define psllw_r2r(regs, regd) mmx_r2r(psllw, regs, regd)
-#define psllw(vars, vard) mmx_m2m(psllw, vars, vard)
-
-
-/* 1x64, 2x32, and 4x16 Parallel Shift Right Logical
-*/
-#define psrlq_i2r(imm, reg) mmx_i2r(psrlq, imm, reg)
-#define psrlq_m2r(var, reg) mmx_m2r(psrlq, var, reg)
-#define psrlq_r2r(regs, regd) mmx_r2r(psrlq, regs, regd)
-#define psrlq(vars, vard) mmx_m2m(psrlq, vars, vard)
-
-#define psrld_i2r(imm, reg) mmx_i2r(psrld, imm, reg)
-#define psrld_m2r(var, reg) mmx_m2r(psrld, var, reg)
-#define psrld_r2r(regs, regd) mmx_r2r(psrld, regs, regd)
-#define psrld(vars, vard) mmx_m2m(psrld, vars, vard)
-
-#define psrlw_i2r(imm, reg) mmx_i2r(psrlw, imm, reg)
-#define psrlw_m2r(var, reg) mmx_m2r(psrlw, var, reg)
-#define psrlw_r2r(regs, regd) mmx_r2r(psrlw, regs, regd)
-#define psrlw(vars, vard) mmx_m2m(psrlw, vars, vard)
-
-
-/* 2x32 and 4x16 Parallel Shift Right Arithmetic
-*/
-#define psrad_i2r(imm, reg) mmx_i2r(psrad, imm, reg)
-#define psrad_m2r(var, reg) mmx_m2r(psrad, var, reg)
-#define psrad_r2r(regs, regd) mmx_r2r(psrad, regs, regd)
-#define psrad(vars, vard) mmx_m2m(psrad, vars, vard)
-
-#define psraw_i2r(imm, reg) mmx_i2r(psraw, imm, reg)
-#define psraw_m2r(var, reg) mmx_m2r(psraw, var, reg)
-#define psraw_r2r(regs, regd) mmx_r2r(psraw, regs, regd)
-#define psraw(vars, vard) mmx_m2m(psraw, vars, vard)
-
-
-/* 2x32->4x16 and 4x16->8x8 PACK and Signed Saturate
- (packs source and dest fields into dest in that order)
-*/
-#define packssdw_m2r(var, reg) mmx_m2r(packssdw, var, reg)
-#define packssdw_r2r(regs, regd) mmx_r2r(packssdw, regs, regd)
-#define packssdw(vars, vard) mmx_m2m(packssdw, vars, vard)
-
-#define packsswb_m2r(var, reg) mmx_m2r(packsswb, var, reg)
-#define packsswb_r2r(regs, regd) mmx_r2r(packsswb, regs, regd)
-#define packsswb(vars, vard) mmx_m2m(packsswb, vars, vard)
-
-
-/* 4x16->8x8 PACK and Unsigned Saturate
- (packs source and dest fields into dest in that order)
-*/
-#define packuswb_m2r(var, reg) mmx_m2r(packuswb, var, reg)
-#define packuswb_r2r(regs, regd) mmx_r2r(packuswb, regs, regd)
-#define packuswb(vars, vard) mmx_m2m(packuswb, vars, vard)
-
-
-/* 2x32->1x64, 4x16->2x32, and 8x8->4x16 UNPaCK Low
- (interleaves low half of dest with low half of source
- as padding in each result field)
-*/
-#define punpckldq_m2r(var, reg) mmx_m2r(punpckldq, var, reg)
-#define punpckldq_r2r(regs, regd) mmx_r2r(punpckldq, regs, regd)
-#define punpckldq(vars, vard) mmx_m2m(punpckldq, vars, vard)
-
-#define punpcklwd_m2r(var, reg) mmx_m2r(punpcklwd, var, reg)
-#define punpcklwd_r2r(regs, regd) mmx_r2r(punpcklwd, regs, regd)
-#define punpcklwd(vars, vard) mmx_m2m(punpcklwd, vars, vard)
-
-#define punpcklbw_m2r(var, reg) mmx_m2r(punpcklbw, var, reg)
-#define punpcklbw_r2r(regs, regd) mmx_r2r(punpcklbw, regs, regd)
-#define punpcklbw(vars, vard) mmx_m2m(punpcklbw, vars, vard)
-
-
-/* 2x32->1x64, 4x16->2x32, and 8x8->4x16 UNPaCK High
- (interleaves high half of dest with high half of source
- as padding in each result field)
-*/
-#define punpckhdq_m2r(var, reg) mmx_m2r(punpckhdq, var, reg)
-#define punpckhdq_r2r(regs, regd) mmx_r2r(punpckhdq, regs, regd)
-#define punpckhdq(vars, vard) mmx_m2m(punpckhdq, vars, vard)
-
-#define punpckhwd_m2r(var, reg) mmx_m2r(punpckhwd, var, reg)
-#define punpckhwd_r2r(regs, regd) mmx_r2r(punpckhwd, regs, regd)
-#define punpckhwd(vars, vard) mmx_m2m(punpckhwd, vars, vard)
-
-#define punpckhbw_m2r(var, reg) mmx_m2r(punpckhbw, var, reg)
-#define punpckhbw_r2r(regs, regd) mmx_r2r(punpckhbw, regs, regd)
-#define punpckhbw(vars, vard) mmx_m2m(punpckhbw, vars, vard)
-
-
-/* Empty MMx State
- (used to clean-up when going from mmx to float use
- of the registers that are shared by both; note that
- there is no float-to-mmx operation needed, because
- only the float tag word info is corruptible)
-*/
-#ifdef MMX_TRACE
-
-#define emms() \
- { \
- fprintf(stderr, "emms()\n"); \
- __asm__ __volatile__ ("emms"); \
- }
-
-#else
-
-#define emms() __asm__ __volatile__ ("emms")
-
-#endif
-
-#endif
-
diff --git a/mesalib/src/mesa/drivers/dri/common/spantmp.h b/mesalib/src/mesa/drivers/dri/common/spantmp.h
deleted file mode 100644
index 9aea3660c..000000000
--- a/mesalib/src/mesa/drivers/dri/common/spantmp.h
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Copyright 2000-2001 VA Linux Systems, Inc.
- * (C) Copyright IBM Corporation 2002, 2003
- * All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * on the rights to use, copy, modify, merge, publish, distribute, sub
- * license, and/or sell copies of the Software, and to permit persons to whom
- * the Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
- * VA LINUX SYSTEM, 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.
- *
- * Authors:
- * Keith Whitwell <keithw@tungstengraphics.com>
- * Gareth Hughes <gareth@nvidia.com>
- */
-
-#include "spantmp_common.h"
-
-#ifndef DBG
-#define DBG 0
-#endif
-
-#ifndef HW_READ_CLIPLOOP
-#define HW_READ_CLIPLOOP() HW_CLIPLOOP()
-#endif
-
-#ifndef HW_WRITE_CLIPLOOP
-#define HW_WRITE_CLIPLOOP() HW_CLIPLOOP()
-#endif
-
-
-static void TAG(WriteRGBASpan)( struct gl_context *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- const void *values, const GLubyte mask[] )
-{
- HW_WRITE_LOCK()
- {
- const GLubyte (*rgba)[4] = (const GLubyte (*)[4]) values;
- GLint x1;
- GLint n1;
- LOCAL_VARS;
-
- y = Y_FLIP(y);
-
- HW_WRITE_CLIPLOOP()
- {
- GLint i = 0;
- CLIPSPAN(x,y,n,x1,n1,i);
-
- if (DBG) fprintf(stderr, "WriteRGBASpan %d..%d (x1 %d)\n",
- (int)i, (int)n1, (int)x1);
-
- if (mask)
- {
- for (;n1>0;i++,x1++,n1--)
- if (mask[i])
- WRITE_RGBA( x1, y,
- rgba[i][0], rgba[i][1],
- rgba[i][2], rgba[i][3] );
- }
- else
- {
- for (;n1>0;i++,x1++,n1--)
- WRITE_RGBA( x1, y,
- rgba[i][0], rgba[i][1],
- rgba[i][2], rgba[i][3] );
- }
- }
- HW_ENDCLIPLOOP();
- }
- HW_WRITE_UNLOCK();
-}
-
-static void TAG(WriteRGBSpan)( struct gl_context *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- const void *values, const GLubyte mask[] )
-{
- HW_WRITE_LOCK()
- {
- const GLubyte (*rgb)[3] = (const GLubyte (*)[3]) values;
- GLint x1;
- GLint n1;
- LOCAL_VARS;
-
- y = Y_FLIP(y);
-
- HW_WRITE_CLIPLOOP()
- {
- GLint i = 0;
- CLIPSPAN(x,y,n,x1,n1,i);
-
- if (DBG) fprintf(stderr, "WriteRGBSpan %d..%d (x1 %d)\n",
- (int)i, (int)n1, (int)x1);
-
- if (mask)
- {
- for (;n1>0;i++,x1++,n1--)
- if (mask[i])
- WRITE_RGBA( x1, y, rgb[i][0], rgb[i][1], rgb[i][2], 255 );
- }
- else
- {
- for (;n1>0;i++,x1++,n1--)
- WRITE_RGBA( x1, y, rgb[i][0], rgb[i][1], rgb[i][2], 255 );
- }
- }
- HW_ENDCLIPLOOP();
- }
- HW_WRITE_UNLOCK();
-}
-
-static void TAG(WriteRGBAPixels)( struct gl_context *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, const GLint x[], const GLint y[],
- const void *values, const GLubyte mask[] )
-{
- HW_WRITE_LOCK()
- {
- const GLubyte (*rgba)[4] = (const GLubyte (*)[4]) values;
- GLuint i;
- LOCAL_VARS;
-
- if (DBG) fprintf(stderr, "WriteRGBAPixels\n");
-
- HW_WRITE_CLIPLOOP()
- {
- if (mask)
- {
- for (i=0;i<n;i++)
- {
- if (mask[i]) {
- const int fy = Y_FLIP(y[i]);
- if (CLIPPIXEL(x[i],fy))
- WRITE_RGBA( x[i], fy,
- rgba[i][0], rgba[i][1],
- rgba[i][2], rgba[i][3] );
- }
- }
- }
- else
- {
- for (i=0;i<n;i++)
- {
- const int fy = Y_FLIP(y[i]);
- if (CLIPPIXEL(x[i],fy))
- WRITE_RGBA( x[i], fy,
- rgba[i][0], rgba[i][1],
- rgba[i][2], rgba[i][3] );
- }
- }
- }
- HW_ENDCLIPLOOP();
- }
- HW_WRITE_UNLOCK();
-}
-
-
-static void TAG(WriteMonoRGBASpan)( struct gl_context *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- const void *value,
- const GLubyte mask[] )
-{
- HW_WRITE_LOCK()
- {
- const GLubyte *color = (const GLubyte *) value;
- GLint x1;
- GLint n1;
- LOCAL_VARS;
- INIT_MONO_PIXEL(p, color);
-
- y = Y_FLIP( y );
-
- if (DBG) fprintf(stderr, "WriteMonoRGBASpan\n");
-
- HW_WRITE_CLIPLOOP()
- {
- GLint i = 0;
- CLIPSPAN(x,y,n,x1,n1,i);
- if (mask)
- {
- for (;n1>0;i++,x1++,n1--)
- if (mask[i])
- WRITE_PIXEL( x1, y, p );
- }
- else
- {
- for (;n1>0;i++,x1++,n1--)
- WRITE_PIXEL( x1, y, p );
- }
- }
- HW_ENDCLIPLOOP();
- }
- HW_WRITE_UNLOCK();
-}
-
-
-static void TAG(WriteMonoRGBAPixels)( struct gl_context *ctx,
- struct gl_renderbuffer *rb,
- GLuint n,
- const GLint x[], const GLint y[],
- const void *value,
- const GLubyte mask[] )
-{
- HW_WRITE_LOCK()
- {
- const GLubyte *color = (const GLubyte *) value;
- GLuint i;
- LOCAL_VARS;
- INIT_MONO_PIXEL(p, color);
-
- if (DBG) fprintf(stderr, "WriteMonoRGBAPixels\n");
-
- HW_WRITE_CLIPLOOP()
- {
- if (mask)
- {
- for (i=0;i<n;i++)
- if (mask[i]) {
- int fy = Y_FLIP(y[i]);
- if (CLIPPIXEL( x[i], fy ))
- WRITE_PIXEL( x[i], fy, p );
- }
- }
- else
- {
- for (i=0;i<n;i++) {
- int fy = Y_FLIP(y[i]);
- if (CLIPPIXEL( x[i], fy ))
- WRITE_PIXEL( x[i], fy, p );
- }
- }
- }
- HW_ENDCLIPLOOP();
- }
- HW_WRITE_UNLOCK();
-}
-
-
-static void TAG(ReadRGBASpan)( struct gl_context *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, GLint x, GLint y,
- void *values)
-{
- HW_READ_LOCK()
- {
- GLubyte (*rgba)[4] = (GLubyte (*)[4]) values;
- GLint x1,n1;
- LOCAL_VARS;
-
- y = Y_FLIP(y);
-
- if (DBG) fprintf(stderr, "ReadRGBASpan\n");
-
- HW_READ_CLIPLOOP()
- {
- GLint i = 0;
- CLIPSPAN(x,y,n,x1,n1,i);
- for (;n1>0;i++,x1++,n1--)
- READ_RGBA( rgba[i], x1, y );
- }
- HW_ENDCLIPLOOP();
- }
- HW_READ_UNLOCK();
-}
-
-
-static void TAG(ReadRGBAPixels)( struct gl_context *ctx,
- struct gl_renderbuffer *rb,
- GLuint n, const GLint x[], const GLint y[],
- void *values )
-{
- HW_READ_LOCK()
- {
- GLubyte (*rgba)[4] = (GLubyte (*)[4]) values;
- GLuint i;
- LOCAL_VARS;
-
- if (DBG) fprintf(stderr, "ReadRGBAPixels\n");
-
- HW_READ_CLIPLOOP()
- {
- for (i=0;i<n;i++) {
- int fy = Y_FLIP( y[i] );
- if (CLIPPIXEL( x[i], fy ))
- READ_RGBA( rgba[i], x[i], fy );
- }
- }
- HW_ENDCLIPLOOP();
- }
- HW_READ_UNLOCK();
-}
-
-
-static void TAG(InitPointers)(struct gl_renderbuffer *rb)
-{
- rb->PutRow = TAG(WriteRGBASpan);
- rb->PutRowRGB = TAG(WriteRGBSpan);
- rb->PutMonoRow = TAG(WriteMonoRGBASpan);
- rb->PutValues = TAG(WriteRGBAPixels);
- rb->PutMonoValues = TAG(WriteMonoRGBAPixels);
- rb->GetValues = TAG(ReadRGBAPixels);
- rb->GetRow = TAG(ReadRGBASpan);
-}
-
-
-#undef WRITE_PIXEL
-#undef WRITE_RGBA
-#undef READ_RGBA
-#undef TAG
diff --git a/mesalib/src/mesa/drivers/dri/common/xmlconfig.c b/mesalib/src/mesa/drivers/dri/common/xmlconfig.c
index 77967ac2a..12dd31bb1 100644
--- a/mesalib/src/mesa/drivers/dri/common/xmlconfig.c
+++ b/mesalib/src/mesa/drivers/dri/common/xmlconfig.c
@@ -567,7 +567,7 @@ static void parseOptInfoAttr (struct OptInfoData *data, const XML_Char **attr) {
} else
defaultVal = attrVal[OA_DEFAULT];
if (!parseValue (&cache->values[opt], cache->info[opt].type, defaultVal))
- XML_FATAL ("illegal default value: %s.", defaultVal);
+ XML_FATAL ("illegal default value for %s: %s.", cache->info[opt].name, defaultVal);
if (attrVal[OA_VALID]) {
if (cache->info[opt].type == DRI_BOOL)
diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool.h b/mesalib/src/mesa/drivers/dri/common/xmlpool.h
index 587517ea1..ffea43002 100644
--- a/mesalib/src/mesa/drivers/dri/common/xmlpool.h
+++ b/mesalib/src/mesa/drivers/dri/common/xmlpool.h
@@ -60,7 +60,7 @@
#define DRI_CONF_OPT_BEGIN(name,type,def) \
"<option name=\""#name"\" type=\""#type"\" default=\""#def"\">\n"
-/** \brief Begin an option definition with qouted default value */
+/** \brief Begin an option definition with quoted default value */
#define DRI_CONF_OPT_BEGIN_Q(name,type,def) \
"<option name=\""#name"\" type=\""#type"\" default="#def">\n"
diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/options.h b/mesalib/src/mesa/drivers/dri/common/xmlpool/options.h
index d76595578..1e584ba08 100644
--- a/mesalib/src/mesa/drivers/dri/common/xmlpool/options.h
+++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/options.h
@@ -425,6 +425,66 @@ DRI_CONF_OPT_BEGIN(hyperz,bool,def) \
DRI_CONF_DESC(sv,"Använd HyperZ för att maximera prestandan") \
DRI_CONF_OPT_END
+#define DRI_CONF_PP_CELSHADE(def) \
+DRI_CONF_OPT_BEGIN_V(pp_celshade,enum,def,"0:1") \
+ DRI_CONF_DESC(en,"A post-processing filter to cel-shade the output") \
+ DRI_CONF_DESC(de,"A post-processing filter to cel-shade the output") \
+ DRI_CONF_DESC(es,"A post-processing filter to cel-shade the output") \
+ DRI_CONF_DESC(nl,"A post-processing filter to cel-shade the output") \
+ DRI_CONF_DESC(fr,"A post-processing filter to cel-shade the output") \
+ DRI_CONF_DESC(sv,"A post-processing filter to cel-shade the output") \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_NORED(def) \
+DRI_CONF_OPT_BEGIN_V(pp_nored,enum,def,"0:1") \
+ DRI_CONF_DESC(en,"A post-processing filter to remove the red channel") \
+ DRI_CONF_DESC(de,"A post-processing filter to remove the red channel") \
+ DRI_CONF_DESC(es,"A post-processing filter to remove the red channel") \
+ DRI_CONF_DESC(nl,"A post-processing filter to remove the red channel") \
+ DRI_CONF_DESC(fr,"A post-processing filter to remove the red channel") \
+ DRI_CONF_DESC(sv,"A post-processing filter to remove the red channel") \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_NOGREEN(def) \
+DRI_CONF_OPT_BEGIN_V(pp_nogreen,enum,def,"0:1") \
+ DRI_CONF_DESC(en,"A post-processing filter to remove the green channel") \
+ DRI_CONF_DESC(de,"A post-processing filter to remove the green channel") \
+ DRI_CONF_DESC(es,"A post-processing filter to remove the green channel") \
+ DRI_CONF_DESC(nl,"A post-processing filter to remove the green channel") \
+ DRI_CONF_DESC(fr,"A post-processing filter to remove the green channel") \
+ DRI_CONF_DESC(sv,"A post-processing filter to remove the green channel") \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_NOBLUE(def) \
+DRI_CONF_OPT_BEGIN_V(pp_noblue,enum,def,"0:1") \
+ DRI_CONF_DESC(en,"A post-processing filter to remove the blue channel") \
+ DRI_CONF_DESC(de,"A post-processing filter to remove the blue channel") \
+ DRI_CONF_DESC(es,"A post-processing filter to remove the blue channel") \
+ DRI_CONF_DESC(nl,"A post-processing filter to remove the blue channel") \
+ DRI_CONF_DESC(fr,"A post-processing filter to remove the blue channel") \
+ DRI_CONF_DESC(sv,"A post-processing filter to remove the blue channel") \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_JIMENEZMLAA(def,min,max) \
+DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa,int,def, # min ":" # max ) \
+ DRI_CONF_DESC(en,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \
+ DRI_CONF_DESC(de,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \
+ DRI_CONF_DESC(es,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \
+ DRI_CONF_DESC(nl,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \
+ DRI_CONF_DESC(fr,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \
+ DRI_CONF_DESC(sv,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality") \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_JIMENEZMLAA_COLOR(def,min,max) \
+DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa_color,int,def, # min ":" # max ) \
+ DRI_CONF_DESC(en,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \
+ DRI_CONF_DESC(de,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \
+ DRI_CONF_DESC(es,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \
+ DRI_CONF_DESC(nl,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \
+ DRI_CONF_DESC(fr,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \
+ DRI_CONF_DESC(sv,"Morphological anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps") \
+DRI_CONF_OPT_END
+
#define DRI_CONF_MAX_TEXTURE_UNITS(def,min,max) \
DRI_CONF_OPT_BEGIN_V(texture_units,int,def, # min ":" # max ) \
DRI_CONF_DESC(en,"Number of texture units used") \
diff --git a/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h b/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h
index 5fd6ec65b..2427aa77f 100644
--- a/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h
+++ b/mesalib/src/mesa/drivers/dri/common/xmlpool/t_options.h
@@ -191,6 +191,36 @@ DRI_CONF_OPT_BEGIN(hyperz,bool,def) \
DRI_CONF_DESC(en,gettext("Use HyperZ to boost performance")) \
DRI_CONF_OPT_END
+#define DRI_CONF_PP_CELSHADE(def) \
+DRI_CONF_OPT_BEGIN_V(pp_celshade,enum,def,"0:1") \
+ DRI_CONF_DESC(en,gettext("A post-processing filter to cel-shade the output")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_NORED(def) \
+DRI_CONF_OPT_BEGIN_V(pp_nored,enum,def,"0:1") \
+ DRI_CONF_DESC(en,gettext("A post-processing filter to remove the red channel")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_NOGREEN(def) \
+DRI_CONF_OPT_BEGIN_V(pp_nogreen,enum,def,"0:1") \
+ DRI_CONF_DESC(en,gettext("A post-processing filter to remove the green channel")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_NOBLUE(def) \
+DRI_CONF_OPT_BEGIN_V(pp_noblue,enum,def,"0:1") \
+ DRI_CONF_DESC(en,gettext("A post-processing filter to remove the blue channel")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_JIMENEZMLAA(def,min,max) \
+DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa,int,def, # min ":" # max ) \
+ DRI_CONF_DESC(en,gettext("Morphological anti-aliasing based on Jimenez\\\' MLAA. 0 to disable, 8 for default quality")) \
+DRI_CONF_OPT_END
+
+#define DRI_CONF_PP_JIMENEZMLAA_COLOR(def,min,max) \
+DRI_CONF_OPT_BEGIN_V(pp_jimenezmlaa_color,int,def, # min ":" # max ) \
+ DRI_CONF_DESC(en,gettext("Morphological anti-aliasing based on Jimenez\\\' MLAA. 0 to disable, 8 for default quality. Color version, usable with 2d GL apps")) \
+DRI_CONF_OPT_END
+
#define DRI_CONF_MAX_TEXTURE_UNITS(def,min,max) \
DRI_CONF_OPT_BEGIN_V(texture_units,int,def, # min ":" # max ) \
DRI_CONF_DESC(en,gettext("Number of texture units used")) \
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/ddlog.c b/mesalib/src/mesa/drivers/windows/gldirect/ddlog.c
deleted file mode 100644
index 4ae79e2fd..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/ddlog.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Logging functions.
-*
-****************************************************************************/
-
-#define STRICT
-#include <windows.h>
-
-#include "ddlog.h"
-#include "gld_driver.h"
-
-// ***********************************************************************
-
-static char ddlogbuf[256];
-static FILE* fpDDLog = NULL; // Log file pointer
-static char szDDLogName[_MAX_PATH] = {"gldirect.log"}; // Filename of the log
-static DDLOG_loggingMethodType ddlogLoggingMethod = DDLOG_NONE; // Default to No Logging
-static DDLOG_severityType ddlogDebugLevel;
-static BOOL bUIWarning = FALSE; // MessageBox warning ?
-
-// ***********************************************************************
-
-void ddlogOpen(
- DDLOG_loggingMethodType LoggingMethod,
- DDLOG_severityType Severity)
-{
- if (fpDDLog != NULL) {
- // Tried to re-open the log
- ddlogMessage(DDLOG_WARN, "Tried to re-open the log file\n");
- return;
- }
-
- ddlogLoggingMethod = LoggingMethod;
- ddlogDebugLevel = Severity;
-
- if (ddlogLoggingMethod == DDLOG_NORMAL) {
- fpDDLog = fopen(szDDLogName, "wt");
- if (fpDDLog == NULL)
- return;
- }
-
- ddlogMessage(DDLOG_SYSTEM, "\n");
- ddlogMessage(DDLOG_SYSTEM, "-> Logging Started\n");
-}
-
-// ***********************************************************************
-
-void ddlogClose()
-{
- // Determine whether the log is already closed
- if (fpDDLog == NULL && ddlogLoggingMethod == DDLOG_NORMAL)
- return; // Nothing to do.
-
- ddlogMessage(DDLOG_SYSTEM, "<- Logging Ended\n");
-
- if (ddlogLoggingMethod == DDLOG_NORMAL) {
- fclose(fpDDLog);
- fpDDLog = NULL;
- }
-}
-
-// ***********************************************************************
-
-void ddlogMessage(
- DDLOG_severityType severity,
- LPSTR message)
-{
- char buf[256];
-
- // Bail if logging is disabled
- if (ddlogLoggingMethod == DDLOG_NONE)
- return;
-
- if (ddlogLoggingMethod == DDLOG_CRASHPROOF)
- fpDDLog = fopen(szDDLogName, "at");
-
- if (fpDDLog == NULL)
- return;
-
- if (severity >= ddlogDebugLevel) {
- sprintf(buf, "DDLog: (%s) %s", ddlogSeverityMessages[severity], message);
- fputs(buf, fpDDLog); // Write string to file
- OutputDebugString(buf); // Echo to debugger
- }
-
- if (ddlogLoggingMethod == DDLOG_CRASHPROOF) {
- fflush(fpDDLog); // Write info to disk
- fclose(fpDDLog);
- fpDDLog = NULL;
- }
-
- // Popup message box if critical error
- if (bUIWarning && severity == DDLOG_CRITICAL) {
- MessageBox(NULL, buf, "GLDirect", MB_OK | MB_ICONWARNING | MB_TASKMODAL);
- }
-}
-
-// ***********************************************************************
-
-// Write a string value to the log file
-void ddlogError(
- DDLOG_severityType severity,
- LPSTR message,
- HRESULT hResult)
-{
-#ifdef _USE_GLD3_WGL
- char dxErrStr[1024];
- _gldDriver.GetDXErrorString(hResult, &dxErrStr[0], sizeof(dxErrStr));
- if (FAILED(hResult)) {
- sprintf(ddlogbuf, "DDLog: %s %8x:[ %s ]\n", message, hResult, dxErrStr);
- } else
- sprintf(ddlogbuf, "DDLog: %s\n", message);
-#else
- if (FAILED(hResult)) {
- sprintf(ddlogbuf, "DDLog: %s %8x:[ %s ]\n", message, hResult, DDErrorToString(hResult));
- } else
- sprintf(ddlogbuf, "DDLog: %s\n", message);
-#endif
- ddlogMessage(severity, ddlogbuf);
-}
-
-// ***********************************************************************
-
-void ddlogPrintf(
- DDLOG_severityType severity,
- LPSTR message,
- ...)
-{
- va_list args;
-
- va_start(args, message);
- vsprintf(ddlogbuf, message, args);
- va_end(args);
-
- lstrcat(ddlogbuf, "\n");
-
- ddlogMessage(severity, ddlogbuf);
-}
-
-// ***********************************************************************
-
-void ddlogWarnOption(
- BOOL bWarnOption)
-{
- bUIWarning = bWarnOption;
-}
-
-// ***********************************************************************
-
-void ddlogPathOption(
- LPSTR szPath)
-{
- char szPathName[_MAX_PATH];
-
- strcpy(szPathName, szPath);
- strcat(szPathName, "\\");
- strcat(szPathName, szDDLogName);
- strcpy(szDDLogName, szPathName);
-}
-
-// ***********************************************************************
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/ddlog.h b/mesalib/src/mesa/drivers/windows/gldirect/ddlog.h
deleted file mode 100644
index d64067e22..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/ddlog.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Logging functions.
-*
-****************************************************************************/
-
-#ifndef __DDLOG_H
-#define __DDLOG_H
-
-#include <stdio.h>
-
-#ifndef _USE_GLD3_WGL
-#include "dderrstr.h" // ddraw/d3d error string
-#endif
-
-/*---------------------- Macros and type definitions ----------------------*/
-
-typedef enum {
- DDLOG_NONE = 0, // No log output
- DDLOG_NORMAL = 1, // Log is kept open
- DDLOG_CRASHPROOF = 2, // Log is closed and flushed
- DDLOG_METHOD_FORCE_DWORD = 0x7fffffff,
-} DDLOG_loggingMethodType;
-
-// Denotes type of message sent to the logging functions
-typedef enum {
- DDLOG_INFO = 0, // Information only
- DDLOG_WARN = 1, // Warning only
- DDLOG_ERROR = 2, // Notify user of an error
- DDLOG_CRITICAL = 3, // Exceptionally severe error
- DDLOG_SYSTEM = 4, // System message. Not an error
- // but must always be printed.
- DDLOG_SEVERITY_FORCE_DWORD = 0x7fffffff, // Make enum dword
-} DDLOG_severityType;
-
-#ifdef _USE_GLD3_WGL
-// Synomyms
-#define GLDLOG_INFO DDLOG_INFO
-#define GLDLOG_WARN DDLOG_WARN
-#define GLDLOG_ERROR DDLOG_ERROR
-#define GLDLOG_CRITICAL DDLOG_CRITICAL
-#define GLDLOG_SYSTEM DDLOG_SYSTEM
-#endif
-
-// The message that will be output to the log
-static const char *ddlogSeverityMessages[] = {
- "INFO",
- "WARN",
- "ERROR",
- "*CRITICAL*",
- "System",
-};
-
-/*------------------------- Function Prototypes ---------------------------*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void ddlogOpen(DDLOG_loggingMethodType LoggingMethod, DDLOG_severityType Severity);
-void ddlogClose();
-void ddlogMessage(DDLOG_severityType severity, LPSTR message);
-void ddlogError(DDLOG_severityType severity, LPSTR message, HRESULT hResult);
-void ddlogPrintf(DDLOG_severityType severity, LPSTR message, ...);
-void ddlogWarnOption(BOOL bWarnOption);
-void ddlogPathOption(LPSTR szPath);
-
-#ifdef _USE_GLD3_WGL
-// Synomyms
-#define gldLogMessage ddlogMessage
-#define gldLogError ddlogError
-#define gldLogPrintf ddlogPrintf
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.c b/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.c
deleted file mode 100644
index bc4839cfe..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.c
+++ /dev/null
@@ -1,2212 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Context handling.
-*
-****************************************************************************/
-
-#include "dglcontext.h"
-
-// Get compile errors without this. KeithH
-//#include "scitech.h" // ibool, etc.
-
-#ifdef _USE_GLD3_WGL
-#include "gld_driver.h"
-
-extern void _gld_mesa_warning(struct gl_context *, char *);
-extern void _gld_mesa_fatal(struct gl_context *, char *);
-#endif // _USE_GLD3_WGL
-
-// TODO: Clean out old DX6-specific code from GLD 2.x CAD driver
-// if it is no longer being built as part of GLDirect. (DaveM)
-
-// ***********************************************************************
-
-#define GLDERR_NONE 0
-#define GLDERR_MEM 1
-#define GLDERR_DDRAW 2
-#define GLDERR_D3D 3
-#define GLDERR_BPP 4
-
-char szResourceWarning[] =
-"GLDirect does not have enough video memory resources\n"
-"to support the requested OpenGL rendering context.\n\n"
-"You may have to reduce the current display resolution\n"
-"to obtain satisfactory OpenGL performance.\n";
-
-char szDDrawWarning[] =
-"GLDirect is unable to initialize DirectDraw for the\n"
-"requested OpenGL rendering context.\n\n"
-"You will have to check the DirectX control panel\n"
-"for further information.\n";
-
-char szD3DWarning[] =
-"GLDirect is unable to initialize Direct3D for the\n"
-"requested OpenGL rendering context.\n\n"
-"You may have to change the display mode resolution\n"
-"color depth or check the DirectX control panel for\n"
-"further information.\n";
-
-char szBPPWarning[] =
-"GLDirect is unable to use the selected color depth for\n"
-"the requested OpenGL rendering context.\n\n"
-"You will have to change the display mode resolution\n"
-"color depth with the Display Settings control panel.\n";
-
-int nContextError = GLDERR_NONE;
-
-// ***********************************************************************
-
-#define VENDORID_ATI 0x1002
-
-static DWORD devATIRagePro[] = {
- 0x4742, // 3D RAGE PRO BGA AGP 1X/2X
- 0x4744, // 3D RAGE PRO BGA AGP 1X only
- 0x4749, // 3D RAGE PRO BGA PCI 33 MHz
- 0x4750, // 3D RAGE PRO PQFP PCI 33 MHz
- 0x4751, // 3D RAGE PRO PQFP PCI 33 MHz limited 3D
- 0x4C42, // 3D RAGE LT PRO BGA-312 AGP 133 MHz
- 0x4C44, // 3D RAGE LT PRO BGA-312 AGP 66 MHz
- 0x4C49, // 3D RAGE LT PRO BGA-312 PCI 33 MHz
- 0x4C50, // 3D RAGE LT PRO BGA-256 PCI 33 MHz
- 0x4C51, // 3D RAGE LT PRO BGA-256 PCI 33 MHz limited 3D
-};
-
-static DWORD devATIRageIIplus[] = {
- 0x4755, // 3D RAGE II+
- 0x4756, // 3D RAGE IIC PQFP PCI
- 0x4757, // 3D RAGE IIC BGA AGP
- 0x475A, // 3D RAGE IIC PQFP AGP
- 0x4C47, // 3D RAGE LT-G
-};
-
-// ***********************************************************************
-
-#ifndef _USE_GLD3_WGL
-extern DGL_mesaFuncs mesaFuncs;
-#endif
-
-extern DWORD dwLogging;
-
-#ifdef GLD_THREADS
-#pragma message("compiling DGLCONTEXT.C vars for multi-threaded support")
-CRITICAL_SECTION CriticalSection; // for serialized access
-DWORD dwTLSCurrentContext = 0xFFFFFFFF; // TLS index for current context
-DWORD dwTLSPixelFormat = 0xFFFFFFFF; // TLS index for current pixel format
-#endif
-HGLRC iCurrentContext = 0; // Index of current context (static)
-BOOL bContextReady = FALSE; // Context state ready ?
-
-DGL_ctx ctxlist[DGL_MAX_CONTEXTS]; // Context list
-
-// ***********************************************************************
-
-static BOOL bHaveWin95 = FALSE;
-static BOOL bHaveWinNT = FALSE;
-static BOOL bHaveWin2K = FALSE;
-
-/****************************************************************************
-REMARKS:
-Detect the installed OS type.
-****************************************************************************/
-static void DetectOS(void)
-{
- OSVERSIONINFO VersionInformation;
- LPOSVERSIONINFO lpVersionInformation = &VersionInformation;
-
- VersionInformation.dwOSVersionInfoSize = sizeof(VersionInformation);
-
- GetVersionEx(lpVersionInformation);
-
- switch (VersionInformation.dwPlatformId) {
- case VER_PLATFORM_WIN32_WINDOWS:
- bHaveWin95 = TRUE;
- bHaveWinNT = FALSE;
- bHaveWin2K = FALSE;
- break;
- case VER_PLATFORM_WIN32_NT:
- bHaveWin95 = FALSE;
- if (VersionInformation.dwMajorVersion <= 4) {
- bHaveWinNT = TRUE;
- bHaveWin2K = FALSE;
- }
- else {
- bHaveWinNT = FALSE;
- bHaveWin2K = TRUE;
- }
- break;
- case VER_PLATFORM_WIN32s:
- bHaveWin95 = FALSE;
- bHaveWinNT = FALSE;
- bHaveWin2K = FALSE;
- break;
- }
-}
-
-// ***********************************************************************
-
-HWND hWndEvent = NULL; // event monitor window
-HWND hWndLastActive = NULL; // last active client window
-LONG __stdcall GLD_EventWndProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam);
-
-// ***********************************************************************
-
-// Checks if the HGLRC is valid in range of context list.
-BOOL dglIsValidContext(
- HGLRC a)
-{
- return ((int)a > 0 && (int)a <= DGL_MAX_CONTEXTS);
-}
-
-// ***********************************************************************
-
-// Convert a HGLRC to a pointer into the context list.
-DGL_ctx* dglGetContextAddress(
- const HGLRC a)
-{
- if (dglIsValidContext(a))
- return &ctxlist[(int)a-1];
- return NULL;
-}
-
-// ***********************************************************************
-
-// Return the current HGLRC (however it may be stored for multi-threading).
-HGLRC dglGetCurrentContext(void)
-{
-#ifdef GLD_THREADS
- HGLRC hGLRC;
- // load from thread-specific instance
- if (glb.bMultiThreaded) {
- // protect against calls from arbitrary threads
- __try {
- hGLRC = (HGLRC)TlsGetValue(dwTLSCurrentContext);
- }
- __except(EXCEPTION_EXECUTE_HANDLER) {
- hGLRC = iCurrentContext;
- }
- }
- // load from global static var
- else {
- hGLRC = iCurrentContext;
- }
- return hGLRC;
-#else
- return iCurrentContext;
-#endif
-}
-
-// ***********************************************************************
-
-// Set the current HGLRC (however it may be stored for multi-threading).
-void dglSetCurrentContext(HGLRC hGLRC)
-{
-#ifdef GLD_THREADS
- // store in thread-specific instance
- if (glb.bMultiThreaded) {
- // protect against calls from arbitrary threads
- __try {
- TlsSetValue(dwTLSCurrentContext, (LPVOID)hGLRC);
- }
- __except(EXCEPTION_EXECUTE_HANDLER) {
- iCurrentContext = hGLRC;
- }
- }
- // store in global static var
- else {
- iCurrentContext = hGLRC;
- }
-#else
- iCurrentContext = hGLRC;
-#endif
-}
-
-// ***********************************************************************
-
-// Return the current HDC only for a currently active HGLRC.
-HDC dglGetCurrentDC(void)
-{
- HGLRC hGLRC;
- DGL_ctx* lpCtx;
-
- hGLRC = dglGetCurrentContext();
- if (hGLRC) {
- lpCtx = dglGetContextAddress(hGLRC);
- return lpCtx->hDC;
- }
- return 0;
-}
-
-// ***********************************************************************
-
-void dglInitContextState()
-{
- int i;
- WNDCLASS wc;
-
-#ifdef GLD_THREADS
- // Allocate thread local storage indexes for current context and pixel format
- dwTLSCurrentContext = TlsAlloc();
- dwTLSPixelFormat = TlsAlloc();
-#endif
-
- dglSetCurrentContext(NULL); // No current rendering context
-
- // Clear all context data
- ZeroMemory(ctxlist, sizeof(ctxlist[0]) * DGL_MAX_CONTEXTS);
-
- for (i=0; i<DGL_MAX_CONTEXTS; i++)
- ctxlist[i].bAllocated = FALSE; // Flag context as unused
-
- // This section of code crashes the dll in circumstances where the app
- // creates and destroys contexts.
-/*
- // Register the class for our event monitor window
- wc.style = 0;
- wc.lpfnWndProc = GLD_EventWndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = GetModuleHandle(NULL);
- wc.hIcon = LoadIcon(GetModuleHandle(NULL), IDI_APPLICATION);
- wc.hCursor = LoadCursor(NULL, IDC_ARROW);
- wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
- wc.lpszMenuName = NULL;
- wc.lpszClassName = "GLDIRECT";
- RegisterClass(&wc);
-
- // Create the non-visible window to monitor all broadcast messages
- hWndEvent = CreateWindowEx(
- WS_EX_TOOLWINDOW,"GLDIRECT","GLDIRECT",WS_POPUP,
- 0,0,0,0,
- NULL,NULL,GetModuleHandle(NULL),NULL);
-*/
-
-#ifdef GLD_THREADS
- // Create a critical section object for serializing access to
- // DirectDraw and DDStereo create/destroy functions in multiple threads
- if (glb.bMultiThreaded)
- InitializeCriticalSection(&CriticalSection);
-#endif
-
- // Context state is now initialized and ready
- bContextReady = TRUE;
-}
-
-// ***********************************************************************
-
-void dglDeleteContextState()
-{
- int i;
- static BOOL bOnceIsEnough = FALSE;
-
- // Only call once, from either DGL_exitDriver(), or DLL_PROCESS_DETACH
- if (bOnceIsEnough)
- return;
- bOnceIsEnough = TRUE;
-
- for (i=0; i<DGL_MAX_CONTEXTS; i++) {
- if (ctxlist[i].bAllocated == TRUE) {
- ddlogPrintf(DDLOG_WARN, "** Context %i not deleted - cleaning up.", (i+1));
- dglDeleteContext((HGLRC)(i+1));
- }
- }
-
- // Context state is no longer ready
- bContextReady = FALSE;
-
- // If executed when DLL unloads, DDraw objects may be invalid.
- // So catch any page faults with this exception handler.
-__try {
-
- // Release final DirectDraw interfaces
- if (glb.bDirectDrawPersistant) {
-// RELEASE(glb.lpGlobalPalette);
-// RELEASE(glb.lpDepth4);
-// RELEASE(glb.lpBack4);
-// RELEASE(glb.lpPrimary4);
-// RELEASE(glb.lpDD4);
- }
-}
-__except(EXCEPTION_EXECUTE_HANDLER) {
- ddlogPrintf(DDLOG_WARN, "Exception raised in dglDeleteContextState.");
-}
-
- // Destroy our event monitor window
- if (hWndEvent) {
- DestroyWindow(hWndEvent);
- hWndEvent = hWndLastActive = NULL;
- }
-
-#ifdef GLD_THREADS
- // Destroy the critical section object
- if (glb.bMultiThreaded)
- DeleteCriticalSection(&CriticalSection);
-
- // Release thread local storage indexes for current HGLRC and pixel format
- TlsFree(dwTLSPixelFormat);
- TlsFree(dwTLSCurrentContext);
-#endif
-}
-
-// ***********************************************************************
-
-// Application Window message handler interception
-static LONG __stdcall dglWndProc(
- HWND hwnd,
- UINT msg,
- WPARAM wParam,
- LPARAM lParam)
-{
- DGL_ctx* lpCtx = NULL;
- LONG lpfnWndProc = 0L;
- int i;
- HGLRC hGLRC;
- RECT rect;
- PAINTSTRUCT ps;
- BOOL bQuit = FALSE;
- BOOL bMain = FALSE;
- LONG rc;
-
- // Get the window's message handler *before* it is unhooked in WM_DESTROY
-
- // Is this the main window?
- if (hwnd == glb.hWndActive) {
- bMain = TRUE;
- lpfnWndProc = glb.lpfnWndProc;
- }
- // Search for DGL context matching window handle
- for (i=0; i<DGL_MAX_CONTEXTS; i++) {
- if (ctxlist[i].hWnd == hwnd) {
- lpCtx = &ctxlist[i];
- lpfnWndProc = lpCtx->lpfnWndProc;
- break;
- }
- }
- // Not one of ours...
- if (!lpfnWndProc)
- return DefWindowProc(hwnd, msg, wParam, lParam);
-
- // Intercept messages amd process *before* passing on to window
- switch (msg) {
-#ifdef _USE_GLD3_WGL
- case WM_DISPLAYCHANGE:
- glb.bPixelformatsDirty = TRUE;
- break;
-#endif
- case WM_ACTIVATEAPP:
- glb.bAppActive = (BOOL)wParam;
- ddlogPrintf(DDLOG_INFO, "Calling app has been %s", glb.bAppActive ? "activated" : "de-activated");
- break;
- case WM_ERASEBKGND:
- // Eat the GDI erase event for the GL window
- if (!lpCtx || !lpCtx->bHasBeenCurrent)
- break;
- lpCtx->bGDIEraseBkgnd = TRUE;
- return TRUE;
- case WM_PAINT:
- // Eat the invalidated update region if render scene is in progress
- if (!lpCtx || !lpCtx->bHasBeenCurrent)
- break;
- if (lpCtx->bFrameStarted) {
- if (GetUpdateRect(hwnd, &rect, FALSE)) {
- BeginPaint(hwnd, &ps);
- EndPaint(hwnd, &ps);
- ValidateRect(hwnd, &rect);
- return TRUE;
- }
- }
- break;
- }
- // Call the appropriate window message handler
- rc = CallWindowProc((WNDPROC)lpfnWndProc, hwnd, msg, wParam, lParam);
-
- // Intercept messages and process *after* passing on to window
- switch (msg) {
- case WM_QUIT:
- case WM_DESTROY:
- bQuit = TRUE;
- if (lpCtx && lpCtx->bAllocated) {
- ddlogPrintf(DDLOG_WARN, "WM_DESTROY detected for HWND=%X, HDC=%X, HGLRC=%d", hwnd, lpCtx->hDC, i+1);
- dglDeleteContext((HGLRC)(i+1));
- }
- break;
-#if 0
- case WM_SIZE:
- // Resize surfaces to fit window but not viewport (in case app did not bother)
- if (!lpCtx || !lpCtx->bHasBeenCurrent)
- break;
- w = LOWORD(lParam);
- h = HIWORD(lParam);
- if (lpCtx->dwWidth < w || lpCtx->dwHeight < h) {
- if (!dglWglResizeBuffers(lpCtx->glCtx, TRUE))
- dglWglResizeBuffers(lpCtx->glCtx, FALSE);
- }
- break;
-#endif
- }
-
- // If the main window is quitting, then so should we...
- if (bMain && bQuit) {
- ddlogPrintf(DDLOG_SYSTEM, "shutting down after WM_DESTROY detected for main HWND=%X", hwnd);
- dglDeleteContextState();
- dglExitDriver();
- }
-
- return rc;
-}
-
-// ***********************************************************************
-
-// Driver Window message handler
-static LONG __stdcall GLD_EventWndProc(
- HWND hwnd,
- UINT msg,
- WPARAM wParam,
- LPARAM lParam)
-{
- switch (msg) {
- // May be sent by splash screen dialog on exit
- case WM_ACTIVATE:
- if (LOWORD(wParam) == WA_ACTIVE && glb.hWndActive) {
- SetForegroundWindow(glb.hWndActive);
- return 0;
- }
- break;
- }
- return DefWindowProc(hwnd, msg, wParam, lParam);
-}
-
-// ***********************************************************************
-
-// Intercepted Keyboard handler for detecting hot keys.
-LRESULT CALLBACK dglKeyProc(
- int code,
- WPARAM wParam,
- LPARAM lParam)
-{
- HWND hWnd, hWndFrame;
- HGLRC hGLRC = NULL;
- DGL_ctx* lpCtx = NULL;
- int cmd = 0, dx1 = 0, dx2 = 0, i;
- static BOOL bAltPressed = FALSE;
- static BOOL bCtrlPressed = FALSE;
- static BOOL bShiftPressed = FALSE;
- RECT r, rf, rc;
- POINT pt;
- BOOL bForceReshape = FALSE;
-
- return CallNextHookEx(hKeyHook, code, wParam, lParam);
-}
-
-// ***********************************************************************
-
-HWND hWndMatch;
-
-// Window handle enumeration procedure.
-BOOL CALLBACK dglEnumChildProc(
- HWND hWnd,
- LPARAM lParam)
-{
- RECT rect;
-
- // Find window handle with matching client rect.
- GetClientRect(hWnd, &rect);
- if (EqualRect(&rect, (RECT*)lParam)) {
- hWndMatch = hWnd;
- return FALSE;
- }
- // Continue with next child window.
- return TRUE;
-}
-
-// ***********************************************************************
-
-// Find window handle with matching client rect.
-HWND dglFindWindowRect(
- RECT* pRect)
-{
- hWndMatch = NULL;
- EnumChildWindows(GetForegroundWindow(), dglEnumChildProc, (LPARAM)pRect);
- return hWndMatch;
-}
-
-// ***********************************************************************
-#ifndef _USE_GLD3_WGL
-void dglChooseDisplayMode(
- DGL_ctx *lpCtx)
-{
- // Note: Choose an exact match if possible.
-
- int i;
- DWORD area;
- DWORD bestarea;
- DDSURFACEDESC2 *lpDDSD = NULL; // Mode list pointer
- DDSURFACEDESC2 *lpBestDDSD = NULL; // Pointer to best
-
- lpDDSD = glb.lpDisplayModes;
- for (i=0; i<glb.nDisplayModeCount; i++, lpDDSD++) {
- if ((lpDDSD->dwWidth == lpCtx->dwWidth) &&
- (lpDDSD->dwHeight == lpCtx->dwHeight))
- goto matched; // Mode has been exactly matched
- // Choose modes that are larger in both dimensions than
- // the window, but smaller in area than the current best.
- if ( (lpDDSD->dwWidth >= lpCtx->dwWidth) &&
- (lpDDSD->dwHeight >= lpCtx->dwHeight))
- {
- if (lpBestDDSD == NULL) {
- lpBestDDSD = lpDDSD;
- bestarea = lpDDSD->dwWidth * lpDDSD->dwHeight;
- continue;
- }
- area = lpDDSD->dwWidth * lpDDSD->dwHeight;
- if (area < bestarea) {
- lpBestDDSD = lpDDSD;
- bestarea = area;
- }
- }
- }
-
- // Safety check
- if (lpBestDDSD == NULL) {
- ddlogMessage(DDLOG_CRITICAL, "dglChooseDisplayMode");
- return;
- }
-
- lpCtx->dwModeWidth = lpBestDDSD->dwWidth;
- lpCtx->dwModeHeight = lpBestDDSD->dwHeight;
-matched:
- ddlogPrintf(DDLOG_INFO, "Matched (%ldx%ld) to (%ldx%ld)",
- lpCtx->dwWidth, lpCtx->dwHeight, lpCtx->dwModeWidth, lpCtx->dwModeHeight);
-}
-#endif // _USE_GLD3_WGL
-// ***********************************************************************
-
-static BOOL IsDevice(
- DWORD *lpDeviceIdList,
- DWORD dwDeviceId,
- int count)
-{
- int i;
-
- for (i=0; i<count; i++)
- if (dwDeviceId == lpDeviceIdList[i])
- return TRUE;
-
- return FALSE;
-}
-
-// ***********************************************************************
-
-void dglTestForBrokenCards(
- DGL_ctx *lpCtx)
-{
-#ifndef _GLD3
- DDDEVICEIDENTIFIER dddi; // DX6 device identifier
-
- // Sanity check.
- if (lpCtx == NULL) {
- // Testing for broken cards is sensitive area, so we don't want
- // anything saying "broken cards" in the error message. ;)
- ddlogMessage(DDLOG_ERROR, "Null context passed to TFBC\n");
- return;
- }
-
- if (lpCtx->lpDD4 == NULL) {
- // Testing for broken cards is sensitive area, so we don't want
- // anything saying "broken cards" in the error message. ;)
- ddlogMessage(DDLOG_ERROR, "Null DD4 passed to TFBC\n");
- return;
- }
-
- // Microsoft really fucked up with the GetDeviceIdentifier function
- // on Windows 2000, since it locks up on stock driers on the CD. Updated
- // drivers from vendors appear to work, but we can't identify the drivers
- // without this function!!! For now we skip these tests on Windows 2000.
- if ((GetVersion() & 0x80000000UL) == 0)
- return;
-
- // Obtain device info
- if (FAILED(IDirectDraw4_GetDeviceIdentifier(lpCtx->lpDD4, &dddi, 0)))
- return;
-
- // Useful info. Log it.
- ddlogPrintf(DDLOG_INFO, "DirectDraw: VendorId=0x%x, DeviceId=0x%x", dddi.dwVendorId, dddi.dwDeviceId);
-
- // Vendor 1: ATI
- if (dddi.dwVendorId == VENDORID_ATI) {
- // Test A: ATI Rage PRO
- if (IsDevice(devATIRagePro, dddi.dwDeviceId, sizeof(devATIRagePro)))
- glb.bUseMipmaps = FALSE;
- // Test B: ATI Rage II+
- if (IsDevice(devATIRageIIplus, dddi.dwDeviceId, sizeof(devATIRageIIplus)))
- glb.bEmulateAlphaTest = TRUE;
- }
-
- // Vendor 2: Matrox
- if (dddi.dwVendorId == 0x102B) {
- // Test: Matrox G400 stencil buffer support does not work for AutoCAD
- if (dddi.dwDeviceId == 0x0525) {
- lpCtx->lpPF->pfd.cStencilBits = 0;
- if (lpCtx->lpPF->iZBufferPF != -1) {
- glb.lpZBufferPF[lpCtx->lpPF->iZBufferPF].dwStencilBitDepth = 0;
- glb.lpZBufferPF[lpCtx->lpPF->iZBufferPF].dwStencilBitMask = 0;
- glb.lpZBufferPF[lpCtx->lpPF->iZBufferPF].dwFlags &= ~DDPF_STENCILBUFFER;
- }
- }
- }
-#endif // _GLD3
-}
-
-// ***********************************************************************
-
-BOOL dglCreateContextBuffers(
- HDC a,
- DGL_ctx *lpCtx,
- BOOL bFallback)
-{
- HRESULT hResult;
-
- int i;
-// HGLRC hGLRC;
-// DGL_ctx* lpCtx;
-
-#ifndef _USE_GLD3_WGL
- DWORD dwFlags;
- DDSURFACEDESC2 ddsd2;
- DDSCAPS2 ddscaps2;
- LPDIRECTDRAWCLIPPER lpddClipper;
- D3DDEVICEDESC D3DHWDevDesc; // Direct3D Hardware description
- D3DDEVICEDESC D3DHELDevDesc; // Direct3D Hardware Emulation Layer
-#endif // _USE_GLD3_WGL
-
- float inv_aspect;
-
- GLenum bDoubleBuffer; // TRUE if double buffer required
- GLenum bDepthBuffer; // TRUE if depth buffer required
-
- const PIXELFORMATDESCRIPTOR *lpPFD = &lpCtx->lpPF->pfd;
-
- // Vars for Mesa visual
- DWORD dwDepthBits = 0;
- DWORD dwStencilBits = 0;
- DWORD dwAlphaBits = 0;
- DWORD bAlphaSW = GL_FALSE;
- DWORD bDouble = GL_FALSE;
-
- DDSURFACEDESC2 ddsd2DisplayMode;
- BOOL bFullScrnWin = FALSE; // fullscreen-size window ?
- DDBLTFX ddbltfx;
- DWORD dwMemoryType = (bFallback) ? DDSCAPS_SYSTEMMEMORY : glb.dwMemoryType;
- BOOL bBogusWindow = FALSE; // non-drawable window ?
- DWORD dwColorRef = 0; // GDI background color
- RECT rcDst; // GDI window rect
- POINT pt; // GDI window point
-
- // Palette used for creating default global palette
- PALETTEENTRY ppe[256];
-
-#ifndef _USE_GLD3_WGL
- // Vertex buffer description. Used for creation of vertex buffers
- D3DVERTEXBUFFERDESC vbufdesc;
-#endif // _USE_GLD3_WGL
-
-#define DDLOG_CRITICAL_OR_WARN (bFallback ? DDLOG_CRITICAL : DDLOG_WARN)
-
- ddlogPrintf(DDLOG_SYSTEM, "dglCreateContextBuffers for HDC=%X", a);
- nContextError = GLDERR_NONE;
-
-#ifdef GLD_THREADS
- // Serialize access to DirectDraw object creation or DDS start
- if (glb.bMultiThreaded)
- EnterCriticalSection(&CriticalSection);
-#endif
-
- // Check for back buffer
- bDoubleBuffer = GL_TRUE; //(lpPFD->dwFlags & PFD_DOUBLEBUFFER) ? GL_TRUE : GL_FALSE;
- // Since we always do back buffering, check if we emulate front buffering
- lpCtx->EmulateSingle =
- (lpPFD->dwFlags & PFD_DOUBLEBUFFER) ? FALSE : TRUE;
-#if 0 // Don't have to mimic MS OpenGL behavior for front-buffering (DaveM)
- lpCtx->EmulateSingle |=
- (lpPFD->dwFlags & PFD_SUPPORT_GDI) ? TRUE : FALSE;
-#endif
-
- // Check for depth buffer
- bDepthBuffer = (lpPFD->cDepthBits) ? GL_TRUE : GL_FALSE;
-
- lpCtx->bDoubleBuffer = bDoubleBuffer;
- lpCtx->bDepthBuffer = bDepthBuffer;
-
- // Set the Fullscreen flag for the context.
-// lpCtx->bFullscreen = glb.bFullscreen;
-
- // Obtain the dimensions of the rendering window
- lpCtx->hDC = a; // Cache DC
- lpCtx->hWnd = WindowFromDC(lpCtx->hDC);
- // Check for non-window DC = memory DC ?
- if (lpCtx->hWnd == NULL) {
- // bitmap memory contexts are always single-buffered
- lpCtx->EmulateSingle = TRUE;
- bBogusWindow = TRUE;
- ddlogPrintf(DDLOG_INFO, "Non-Window Memory Device Context");
- if (GetClipBox(lpCtx->hDC, &lpCtx->rcScreenRect) == ERROR) {
- ddlogMessage(DDLOG_WARN, "GetClipBox failed in dglCreateContext\n");
- SetRect(&lpCtx->rcScreenRect, 0, 0, 0, 0);
- }
- }
- else if (!GetClientRect(lpCtx->hWnd, &lpCtx->rcScreenRect)) {
- bBogusWindow = TRUE;
- ddlogMessage(DDLOG_WARN, "GetClientRect failed in dglCreateContext\n");
- SetRect(&lpCtx->rcScreenRect, 0, 0, 0, 0);
- }
- lpCtx->dwWidth = lpCtx->rcScreenRect.right - lpCtx->rcScreenRect.left;
- lpCtx->dwHeight = lpCtx->rcScreenRect.bottom - lpCtx->rcScreenRect.top;
-
- ddlogPrintf(DDLOG_INFO, "Input window %X: w=%i, h=%i",
- lpCtx->hWnd, lpCtx->dwWidth, lpCtx->dwHeight);
-
- // What if app only zeroes one dimension instead of both? (DaveM)
- if ( (lpCtx->dwWidth == 0) || (lpCtx->dwHeight == 0) ) {
- // Make the buffer size something sensible
- lpCtx->dwWidth = 8;
- lpCtx->dwHeight = 8;
- }
-
- // Set defaults
- lpCtx->dwModeWidth = lpCtx->dwWidth;
- lpCtx->dwModeHeight = lpCtx->dwHeight;
-/*
- // Find best display mode for fullscreen
- if (glb.bFullscreen || !glb.bPrimary) {
- dglChooseDisplayMode(lpCtx);
- }
-*/
- // Misc initialisation
- lpCtx->bCanRender = FALSE; // No rendering allowed yet
- lpCtx->bSceneStarted = FALSE;
- lpCtx->bFrameStarted = FALSE;
-
- // Detect OS (specifically 'Windows 2000' or 'Windows XP')
- DetectOS();
-
- // NOTE: WinNT not supported
- ddlogPrintf(DDLOG_INFO, "OS: %s", bHaveWin95 ? "Win9x" : (bHaveWin2K ? "Win2000/XP" : "Unsupported") );
-
- // Test for Fullscreen
- if (bHaveWin95) { // Problems with fullscreen on Win2K/XP
- if ((GetSystemMetrics(SM_CXSCREEN) == lpCtx->dwWidth) &&
- (GetSystemMetrics(SM_CYSCREEN) == lpCtx->dwHeight))
- {
- // Workaround for some apps that crash when going fullscreen.
- //lpCtx->bFullscreen = TRUE;
- }
-
- }
-
-#ifdef _USE_GLD3_WGL
- _gldDriver.CreateDrawable(lpCtx, glb.bDirectDrawPersistant, glb.bPersistantBuffers);
-#else
- // Check if DirectDraw has already been created by original GLRC (DaveM)
- if (glb.bDirectDrawPersistant && glb.bDirectDraw) {
- lpCtx->lpDD4 = glb.lpDD4;
- IDirectDraw4_AddRef(lpCtx->lpDD4);
- goto SkipDirectDrawCreate;
- }
-
- // Create DirectDraw object
- if (glb.bPrimary)
- hResult = DirectDrawCreate(NULL, &lpCtx->lpDD1, NULL);
- else {
- // A non-primary device is to be used.
- // Force context to be Fullscreen, secondary adaptors can not
- // be used in a window.
- hResult = DirectDrawCreate(&glb.ddGuid, &lpCtx->lpDD1, NULL);
- lpCtx->bFullscreen = TRUE;
- }
- if (FAILED(hResult)) {
- MessageBox(NULL, "Unable to initialize DirectDraw", "GLDirect", MB_OK);
- ddlogError(DDLOG_CRITICAL_OR_WARN, "Unable to create DirectDraw interface", hResult);
- nContextError = GLDERR_DDRAW;
- goto return_with_error;
- }
-
- // Query for DX6 IDirectDraw4.
- hResult = IDirectDraw_QueryInterface(lpCtx->lpDD1,
- &IID_IDirectDraw4,
- (void**)&lpCtx->lpDD4);
- if (FAILED(hResult)) {
- MessageBox(NULL, "GLDirect requires DirectX 6.0 or above", "GLDirect", MB_OK);
- ddlogError(DDLOG_CRITICAL_OR_WARN, "Unable to create DirectDraw4 interface", hResult);
- nContextError = GLDERR_DDRAW;
- goto return_with_error;
- }
-
- // Cache DirectDraw interface for subsequent GLRCs
- if (glb.bDirectDrawPersistant && !glb.bDirectDraw) {
- glb.lpDD4 = lpCtx->lpDD4;
- IDirectDraw4_AddRef(glb.lpDD4);
- glb.bDirectDraw = TRUE;
- }
-SkipDirectDrawCreate:
-
- // Now we have a DD4 interface we can check for broken cards
- dglTestForBrokenCards(lpCtx);
-
- // Test if primary device can use flipping instead of blitting
- ZeroMemory(&ddsd2DisplayMode, sizeof(ddsd2DisplayMode));
- ddsd2DisplayMode.dwSize = sizeof(ddsd2DisplayMode);
- hResult = IDirectDraw4_GetDisplayMode(
- lpCtx->lpDD4,
- &ddsd2DisplayMode);
- if (SUCCEEDED(hResult)) {
- if ( (lpCtx->dwWidth == ddsd2DisplayMode.dwWidth) &&
- (lpCtx->dwHeight == ddsd2DisplayMode.dwHeight) ) {
- // We have a fullscreen-size window
- bFullScrnWin = TRUE;
- // OK to use DirectDraw fullscreen mode ?
- if (glb.bPrimary && !glb.bFullscreenBlit && !lpCtx->EmulateSingle && !glb.bDirectDrawPersistant) {
- lpCtx->bFullscreen = TRUE;
- ddlogMessage(DDLOG_INFO, "Primary upgraded to page flipping.\n");
- }
- }
- // Cache the display mode dimensions
- lpCtx->dwModeWidth = ddsd2DisplayMode.dwWidth;
- lpCtx->dwModeHeight = ddsd2DisplayMode.dwHeight;
- }
-
- // Clamp the effective window dimensions to primary surface.
- // We need to do this for D3D viewport dimensions even if wide
- // surfaces are supported. This also is a good idea for handling
- // whacked-out window dimensions passed for non-drawable windows
- // like Solid Edge. (DaveM)
- if (lpCtx->dwWidth > ddsd2DisplayMode.dwWidth)
- lpCtx->dwWidth = ddsd2DisplayMode.dwWidth;
- if (lpCtx->dwHeight > ddsd2DisplayMode.dwHeight)
- lpCtx->dwHeight = ddsd2DisplayMode.dwHeight;
-
- // Check for non-RGB desktop resolution
- if (!lpCtx->bFullscreen && ddsd2DisplayMode.ddpfPixelFormat.dwRGBBitCount <= 8) {
- ddlogPrintf(DDLOG_CRITICAL_OR_WARN, "Desktop color depth %d bpp not supported",
- ddsd2DisplayMode.ddpfPixelFormat.dwRGBBitCount);
- nContextError = GLDERR_BPP;
- goto return_with_error;
- }
-#endif // _USE_GLD3_WGL
-
- ddlogPrintf(DDLOG_INFO, "Window: w=%i, h=%i (%s)",
- lpCtx->dwWidth,
- lpCtx->dwHeight,
- lpCtx->bFullscreen ? "fullscreen" : "windowed");
-
-#ifndef _USE_GLD3_WGL
- // Obtain ddraw caps
- ZeroMemory(&lpCtx->ddCaps, sizeof(DDCAPS));
- lpCtx->ddCaps.dwSize = sizeof(DDCAPS);
- if (glb.bHardware) {
- // Get HAL caps
- IDirectDraw4_GetCaps(lpCtx->lpDD4, &lpCtx->ddCaps, NULL);
- } else {
- // Get HEL caps
- IDirectDraw4_GetCaps(lpCtx->lpDD4, NULL, &lpCtx->ddCaps);
- }
-
- // If this flag is present then we can't default to Mesa
- // SW rendering between BeginScene() and EndScene().
- if (lpCtx->ddCaps.dwCaps2 & DDCAPS2_NO2DDURING3DSCENE) {
- ddlogMessage(DDLOG_INFO,
- "Warning : No 2D allowed during 3D scene.\n");
- }
-
- // Query for DX6 Direct3D3 interface
- hResult = IDirectDraw4_QueryInterface(lpCtx->lpDD4,
- &IID_IDirect3D3,
- (void**)&lpCtx->lpD3D3);
- if (FAILED(hResult)) {
- MessageBox(NULL, "Unable to initialize Direct3D", "GLDirect", MB_OK);
- ddlogError(DDLOG_CRITICAL_OR_WARN, "Unable to create Direct3D interface", hResult);
- nContextError = GLDERR_D3D;
- goto return_with_error;
- }
-
- // Context creation
- if (lpCtx->bFullscreen) {
- // FULLSCREEN
-
- // Disable warning popups when in fullscreen mode
- ddlogWarnOption(FALSE);
-
- // Have to release persistant primary surface if fullscreen mode
- if (glb.bDirectDrawPersistant && glb.bDirectDrawPrimary) {
- RELEASE(glb.lpPrimary4);
- glb.bDirectDrawPrimary = FALSE;
- }
-
- dwFlags = DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT;
- if (glb.bFastFPU)
- dwFlags |= DDSCL_FPUSETUP; // fast FPU setup optional (DaveM)
- hResult = IDirectDraw4_SetCooperativeLevel(lpCtx->lpDD4, lpCtx->hWnd, dwFlags);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "Unable to set Exclusive Fullscreen mode", hResult);
- goto return_with_error;
- }
-
- hResult = IDirectDraw4_SetDisplayMode(lpCtx->lpDD4,
- lpCtx->dwModeWidth,
- lpCtx->dwModeHeight,
- lpPFD->cColorBits,
- 0,
- 0);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "SetDisplayMode failed", hResult);
- goto return_with_error;
- }
-
- // ** The display mode has changed, so dont use MessageBox! **
-
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
-
- if (bDoubleBuffer) {
- // Double buffered
- // Primary surface
- ddsd2.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
- DDSCAPS_FLIP |
- DDSCAPS_COMPLEX |
- DDSCAPS_3DDEVICE |
- dwMemoryType;
- ddsd2.dwBackBufferCount = 1;
-
- hResult = IDirectDraw4_CreateSurface(lpCtx->lpDD4, &ddsd2, &lpCtx->lpFront4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateSurface (primary) failed", hResult);
- nContextError = GLDERR_MEM;
- goto return_with_error;
- }
-
- // Render target surface
- ZeroMemory(&ddscaps2, sizeof(ddscaps2)); // Clear the entire struct.
- ddscaps2.dwCaps = DDSCAPS_BACKBUFFER;
- hResult = IDirectDrawSurface4_GetAttachedSurface(lpCtx->lpFront4, &ddscaps2, &lpCtx->lpBack4);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "GetAttachedSurface failed", hResult);
- nContextError = GLDERR_MEM;
- goto return_with_error;
- }
- } else {
- // Single buffered
- // Primary surface
- ddsd2.dwFlags = DDSD_CAPS;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
- //DDSCAPS_3DDEVICE |
- dwMemoryType;
-
- hResult = IDirectDraw4_CreateSurface(lpCtx->lpDD4, &ddsd2, &lpCtx->lpFront4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateSurface (primary) failed", hResult);
- nContextError = GLDERR_MEM;
- goto return_with_error;
- }
-
- lpCtx->lpBack4 = NULL;
- }
- } else {
- // WINDOWED
-
- // OK to enable warning popups in windowed mode
- ddlogWarnOption(glb.bMessageBoxWarnings);
-
- dwFlags = DDSCL_NORMAL;
- if (glb.bMultiThreaded)
- dwFlags |= DDSCL_MULTITHREADED;
- if (glb.bFastFPU)
- dwFlags |= DDSCL_FPUSETUP; // fast FPU setup optional (DaveM)
- hResult = IDirectDraw4_SetCooperativeLevel(lpCtx->lpDD4,
- lpCtx->hWnd,
- dwFlags);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "Unable to set Normal coop level", hResult);
- goto return_with_error;
- }
- // Has Primary surface already been created for original GLRC ?
- // Note this can only be applicable for windowed modes
- if (glb.bDirectDrawPersistant && glb.bDirectDrawPrimary) {
- lpCtx->lpFront4 = glb.lpPrimary4;
- IDirectDrawSurface4_AddRef(lpCtx->lpFront4);
- // Update the window on the default clipper
- IDirectDrawSurface4_GetClipper(lpCtx->lpFront4, &lpddClipper);
- IDirectDrawClipper_SetHWnd(lpddClipper, 0, lpCtx->hWnd);
- IDirectDrawClipper_Release(lpddClipper);
- goto SkipPrimaryCreate;
- }
-
- // Primary surface
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
- ddsd2.dwFlags = DDSD_CAPS;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
- hResult = IDirectDraw4_CreateSurface(lpCtx->lpDD4, &ddsd2, &lpCtx->lpFront4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateSurface (primary) failed", hResult);
- nContextError = GLDERR_MEM;
- goto return_with_error;
- }
-
- // Cache Primary surface for subsequent GLRCs
- // Note this can only be applicable to subsequent windowed modes
- if (glb.bDirectDrawPersistant && !glb.bDirectDrawPrimary) {
- glb.lpPrimary4 = lpCtx->lpFront4;
- IDirectDrawSurface4_AddRef(glb.lpPrimary4);
- glb.bDirectDrawPrimary = TRUE;
- }
-
- // Clipper object
- hResult = DirectDrawCreateClipper(0, &lpddClipper, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateClipper failed", hResult);
- goto return_with_error;
- }
- hResult = IDirectDrawClipper_SetHWnd(lpddClipper, 0, lpCtx->hWnd);
- if (FAILED(hResult)) {
- RELEASE(lpddClipper);
- ddlogError(DDLOG_CRITICAL_OR_WARN, "SetHWnd failed", hResult);
- goto return_with_error;
- }
- hResult = IDirectDrawSurface4_SetClipper(lpCtx->lpFront4, lpddClipper);
- RELEASE(lpddClipper); // We have finished with it.
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "SetClipper failed", hResult);
- goto return_with_error;
- }
-SkipPrimaryCreate:
-
- if (bDoubleBuffer) {
- // Render target surface
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
- ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
- ddsd2.dwWidth = lpCtx->dwWidth;
- ddsd2.dwHeight = lpCtx->dwHeight;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_3DDEVICE |
- DDSCAPS_OFFSCREENPLAIN |
- dwMemoryType;
-
- // Reserve the entire desktop size for persistant buffers option
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers) {
- ddsd2.dwWidth = ddsd2DisplayMode.dwWidth;
- ddsd2.dwHeight = ddsd2DisplayMode.dwHeight;
- }
- // Re-use original back buffer if persistant buffers exist
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers && glb.lpBack4)
- hResult = IDirectDrawSurface4_AddRef(lpCtx->lpBack4 = glb.lpBack4);
- else
- hResult = IDirectDraw4_CreateSurface(lpCtx->lpDD4, &ddsd2, &lpCtx->lpBack4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "Create Backbuffer failed", hResult);
- nContextError = GLDERR_MEM;
- goto return_with_error;
- }
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers && !glb.lpBack4)
- IDirectDrawSurface4_AddRef(glb.lpBack4 = lpCtx->lpBack4);
- } else {
- lpCtx->lpBack4 = NULL;
- }
- }
-
- //
- // Now create the Z-buffer
- //
- lpCtx->bStencil = FALSE; // Default to no stencil buffer
- if (bDepthBuffer && (lpCtx->lpPF->iZBufferPF != -1)) {
- // Get z-buffer dimensions from the render target
- // Setup the surface desc for the z-buffer.
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
- ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_ZBUFFER | dwMemoryType;
- ddsd2.dwWidth = lpCtx->dwWidth;
- ddsd2.dwHeight = lpCtx->dwHeight;
- memcpy(&ddsd2.ddpfPixelFormat,
- &glb.lpZBufferPF[lpCtx->lpPF->iZBufferPF],
- sizeof(DDPIXELFORMAT) );
-
- // Reserve the entire desktop size for persistant buffers option
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers) {
- ddsd2.dwWidth = ddsd2DisplayMode.dwWidth;
- ddsd2.dwHeight = ddsd2DisplayMode.dwHeight;
- }
-
- // Create a z-buffer
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers && glb.lpDepth4)
- hResult = IDirectDrawSurface4_AddRef(lpCtx->lpDepth4 = glb.lpDepth4);
- else
- hResult = IDirectDraw4_CreateSurface(lpCtx->lpDD4, &ddsd2, &lpCtx->lpDepth4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateSurface (ZBuffer) failed", hResult);
- nContextError = GLDERR_MEM;
- goto return_with_error;
- }
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers && !glb.lpDepth4)
- IDirectDrawSurface4_AddRef(glb.lpDepth4 = lpCtx->lpDepth4);
- else if (glb.bDirectDrawPersistant && glb.bPersistantBuffers && glb.lpDepth4 && glb.lpBack4)
- IDirectDrawSurface4_DeleteAttachedSurface(glb.lpBack4, 0, glb.lpDepth4);
-
- // Attach Zbuffer to render target
- TRY(IDirectDrawSurface4_AddAttachedSurface(
- bDoubleBuffer ? lpCtx->lpBack4 : lpCtx->lpFront4,
- lpCtx->lpDepth4),
- "dglCreateContext: Attach Zbuffer");
- if (glb.lpZBufferPF[lpCtx->lpPF->iZBufferPF].dwFlags & DDPF_STENCILBUFFER) {
- lpCtx->bStencil = TRUE;
- ddlogMessage(DDLOG_INFO, "Depth buffer has stencil\n");
- }
- }
-
- // Clear all back buffers and Z-buffers in case of memory recycling.
- ZeroMemory(&ddbltfx, sizeof(ddbltfx));
- ddbltfx.dwSize = sizeof(ddbltfx);
- IDirectDrawSurface4_Blt(lpCtx->lpBack4, NULL, NULL, NULL,
- DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
- if (lpCtx->lpDepth4)
- IDirectDrawSurface4_Blt(lpCtx->lpDepth4, NULL, NULL, NULL,
- DDBLT_COLORFILL | DDBLT_WAIT, &ddbltfx);
-
- // Now that we have a Z-buffer we can create the 3D device
- hResult = IDirect3D3_CreateDevice(lpCtx->lpD3D3,
- &glb.d3dGuid,
- bDoubleBuffer ? lpCtx->lpBack4 : lpCtx->lpFront4,
- &lpCtx->lpDev3,
- NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "Unable to create Direct3D device", hResult);
- nContextError = GLDERR_D3D;
- goto return_with_error;
- }
-
- // We must do this as soon as the device is created
- dglInitStateCaches(lpCtx);
-
- // Obtain the D3D Device Description
- D3DHWDevDesc.dwSize = D3DHELDevDesc.dwSize = sizeof(D3DDEVICEDESC);
- TRY(IDirect3DDevice3_GetCaps(lpCtx->lpDev3,
- &D3DHWDevDesc,
- &D3DHELDevDesc),
- "dglCreateContext: GetCaps failed");
-
- // Choose the relevant description and cache it in the context.
- // We will use this description later for caps checking
- memcpy( &lpCtx->D3DDevDesc,
- glb.bHardware ? &D3DHWDevDesc : &D3DHELDevDesc,
- sizeof(D3DDEVICEDESC));
-
- // Now we can examine the texture formats
- if (!dglBuildTextureFormatList(lpCtx->lpDev3)) {
- ddlogMessage(DDLOG_CRITICAL_OR_WARN, "dglBuildTextureFormatList failed\n");
- goto return_with_error;
- }
-
- // Get the pixel format of the back buffer
- lpCtx->ddpfRender.dwSize = sizeof(lpCtx->ddpfRender);
- if (bDoubleBuffer)
- hResult = IDirectDrawSurface4_GetPixelFormat(
- lpCtx->lpBack4,
- &lpCtx->ddpfRender);
- else
- hResult = IDirectDrawSurface4_GetPixelFormat(
- lpCtx->lpFront4,
- &lpCtx->ddpfRender);
-
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "GetPixelFormat failed", hResult);
- goto return_with_error;
- }
- // Find a pixel packing function suitable for this surface
- pxClassifyPixelFormat(&lpCtx->ddpfRender,
- &lpCtx->fnPackFunc,
- &lpCtx->fnUnpackFunc,
- &lpCtx->fnPackSpanFunc);
-
- // Viewport
- hResult = IDirect3D3_CreateViewport(lpCtx->lpD3D3, &lpCtx->lpViewport3, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateViewport failed", hResult);
- goto return_with_error;
- }
-
- hResult = IDirect3DDevice3_AddViewport(lpCtx->lpDev3, lpCtx->lpViewport3);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "AddViewport failed", hResult);
- goto return_with_error;
- }
-
- // Initialise the viewport
- // Note screen coordinates are used for viewport clipping since D3D
- // transform operations are not used in the GLD CAD driver. (DaveM)
- inv_aspect = (float)lpCtx->dwHeight/(float)lpCtx->dwWidth;
-
- lpCtx->d3dViewport.dwSize = sizeof(lpCtx->d3dViewport);
- lpCtx->d3dViewport.dwX = 0;
- lpCtx->d3dViewport.dwY = 0;
- lpCtx->d3dViewport.dwWidth = lpCtx->dwWidth;
- lpCtx->d3dViewport.dwHeight = lpCtx->dwHeight;
- lpCtx->d3dViewport.dvClipX = 0; // -1.0f;
- lpCtx->d3dViewport.dvClipY = 0; // inv_aspect;
- lpCtx->d3dViewport.dvClipWidth = lpCtx->dwWidth; // 2.0f;
- lpCtx->d3dViewport.dvClipHeight = lpCtx->dwHeight; // 2.0f * inv_aspect;
- lpCtx->d3dViewport.dvMinZ = 0.0f;
- lpCtx->d3dViewport.dvMaxZ = 1.0f;
- TRY(IDirect3DViewport3_SetViewport2(lpCtx->lpViewport3, &lpCtx->d3dViewport), "dglCreateContext: SetViewport2");
-
- hResult = IDirect3DDevice3_SetCurrentViewport(lpCtx->lpDev3, lpCtx->lpViewport3);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "SetCurrentViewport failed", hResult);
- goto return_with_error;
- }
-
- lpCtx->dwBPP = lpPFD->cColorBits;
- lpCtx->iZBufferPF = lpCtx->lpPF->iZBufferPF;
-
- // Set last texture to NULL
- for (i=0; i<MAX_TEXTURE_UNITS; i++) {
- lpCtx->ColorOp[i] = D3DTOP_DISABLE;
- lpCtx->AlphaOp[i] = D3DTOP_DISABLE;
- lpCtx->tObj[i] = NULL;
- }
-
- // Default to perspective correct texture mapping
- dglSetRenderState(lpCtx, D3DRENDERSTATE_TEXTUREPERSPECTIVE, TRUE, "TexturePersp");
-
- // Set the default culling mode
- lpCtx->cullmode = D3DCULL_NONE;
- dglSetRenderState(lpCtx, D3DRENDERSTATE_CULLMODE, D3DCULL_NONE, "CullMode");
-
- // Disable specular
- dglSetRenderState(lpCtx, D3DRENDERSTATE_SPECULARENABLE, FALSE, "SpecularEnable");
- // Disable subpixel correction
-// dglSetRenderState(lpCtx, D3DRENDERSTATE_SUBPIXEL, FALSE, "SubpixelEnable");
- // Disable dithering
- dglSetRenderState(lpCtx, D3DRENDERSTATE_DITHERENABLE, FALSE, "DitherEnable");
-
- // Initialise the primitive caches
-// lpCtx->dwNextLineVert = 0;
-// lpCtx->dwNextTriVert = 0;
-
- // Init the global texture palette
- lpCtx->lpGlobalPalette = NULL;
-
- // Init the HW/SW usage counters
-// lpCtx->dwHWUsageCount = lpCtx->dwSWUsageCount = 0L;
-
- //
- // Create two D3D vertex buffers.
- // One will hold the pre-transformed data with the other one
- // being used to hold the post-transformed & clipped verts.
- //
-#if 0 // never used (DaveM)
- vbufdesc.dwSize = sizeof(D3DVERTEXBUFFERDESC);
- vbufdesc.dwCaps = D3DVBCAPS_WRITEONLY;
- if (glb.bHardware == FALSE)
- vbufdesc.dwCaps = D3DVBCAPS_SYSTEMMEMORY;
- vbufdesc.dwNumVertices = 32768; // For the time being
-
- // Source vertex buffer
- vbufdesc.dwFVF = DGL_LVERTEX;
- hResult = IDirect3D3_CreateVertexBuffer(lpCtx->lpD3D3, &vbufdesc, &lpCtx->m_vbuf, 0, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateVertexBuffer(src) failed", hResult);
- goto return_with_error;
- }
-
- // Destination vertex buffer
- vbufdesc.dwFVF = (glb.bMultitexture == FALSE) ? D3DFVF_TLVERTEX : (D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX2);
- hResult = IDirect3D3_CreateVertexBuffer(lpCtx->lpD3D3, &vbufdesc, &lpCtx->m_pvbuf, 0, NULL);
- if(FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "CreateVertexBuffer(dst) failed", hResult);
- goto return_with_error;
- }
-#endif
-
-#endif _USE_GLD3_WGL
-
- //
- // Now create the Mesa context
- //
-
- // Create the Mesa visual
- if (lpPFD->cDepthBits)
- dwDepthBits = 16;
- if (lpPFD->cStencilBits)
- dwStencilBits = 8;
- if (lpPFD->cAlphaBits) {
- dwAlphaBits = 8;
- bAlphaSW = GL_TRUE;
- }
- if (lpPFD->dwFlags & PFD_DOUBLEBUFFER)
- bDouble = GL_TRUE;
-// lpCtx->EmulateSingle =
-// (lpPFD->dwFlags & PFD_DOUBLEBUFFER) ? FALSE : TRUE;
-
-#ifdef _USE_GLD3_WGL
- lpCtx->glVis = _mesa_create_visual(
- bDouble, /* double buffer */
- GL_FALSE, // stereo
- lpPFD->cRedBits,
- lpPFD->cGreenBits,
- lpPFD->cBlueBits,
- dwAlphaBits,
- dwDepthBits,
- dwStencilBits,
- lpPFD->cAccumRedBits, // accum bits
- lpPFD->cAccumGreenBits, // accum bits
- lpPFD->cAccumBlueBits, // accum bits
- lpPFD->cAccumAlphaBits, // accum alpha bits
- 1 // num samples
- );
-#else // _USE_GLD3_WGL
- lpCtx->glVis = (*mesaFuncs.gl_create_visual)(
- GL_TRUE, // RGB mode
- bAlphaSW, // Is an alpha buffer required?
- bDouble, // Is an double-buffering required?
- GL_FALSE, // stereo
- dwDepthBits, // depth_size
- dwStencilBits, // stencil_size
- lpPFD->cAccumBits, // accum_size
- 0, // colour-index bits
- lpPFD->cRedBits, // Red bit count
- lpPFD->cGreenBits, // Green bit count
- lpPFD->cBlueBits, // Blue bit count
- dwAlphaBits // Alpha bit count
- );
-#endif // _USE_GLD3_WGL
-
- if (lpCtx->glVis == NULL) {
- ddlogMessage(DDLOG_CRITICAL_OR_WARN, "gl_create_visual failed\n");
- goto return_with_error;
- }
-
-#ifdef _USE_GLD3_WGL
- lpCtx->glCtx = _mesa_create_context(API_OPENGL, lpCtx->glVis, NULL, (void *)lpCtx, GL_TRUE);
-#else
- // Create the Mesa context
- lpCtx->glCtx = (*mesaFuncs.gl_create_context)(
- lpCtx->glVis, // Mesa visual
- NULL, // share list context
- (void *)lpCtx, // Pointer to our driver context
- GL_TRUE // Direct context flag
- );
-#endif // _USE_GLD3_WGL
-
- if (lpCtx->glCtx == NULL) {
- ddlogMessage(DDLOG_CRITICAL_OR_WARN, "gl_create_context failed\n");
- goto return_with_error;
- }
-
- // Create the Mesa framebuffer
-#ifdef _USE_GLD3_WGL
- lpCtx->glBuffer = _mesa_create_framebuffer(
- lpCtx->glVis,
- lpCtx->glVis->depthBits > 0,
- lpCtx->glVis->stencilBits > 0,
- lpCtx->glVis->accumRedBits > 0,
- GL_FALSE //swalpha
- );
-#else
- lpCtx->glBuffer = (*mesaFuncs.gl_create_framebuffer)(lpCtx->glVis);
-#endif // _USE_GLD3_WGL
-
- if (lpCtx->glBuffer == NULL) {
- ddlogMessage(DDLOG_CRITICAL_OR_WARN, "gl_create_framebuffer failed\n");
- goto return_with_error;
- }
-
-#ifdef _USE_GLD3_WGL
- // Init Mesa internals
- _swrast_CreateContext( lpCtx->glCtx );
- _vbo_CreateContext( lpCtx->glCtx );
- _tnl_CreateContext( lpCtx->glCtx );
- _swsetup_CreateContext( lpCtx->glCtx );
-
- _gldDriver.InitialiseMesa(lpCtx);
-
- lpCtx->glCtx->imports.warning = _gld_mesa_warning;
- lpCtx->glCtx->imports.fatal = _gld_mesa_fatal;
-
-#else
- // Tell Mesa how many texture stages we have
- glb.wMaxSimultaneousTextures = lpCtx->D3DDevDesc.wMaxSimultaneousTextures;
- // Only use as many Units as the spec requires
- if (glb.wMaxSimultaneousTextures > MAX_TEXTURE_UNITS)
- glb.wMaxSimultaneousTextures = MAX_TEXTURE_UNITS;
- lpCtx->glCtx->Const.MaxTextureUnits = glb.wMaxSimultaneousTextures;
- ddlogPrintf(DDLOG_INFO, "Texture stages : %d", glb.wMaxSimultaneousTextures);
-
- // Set the max texture size.
- // NOTE: clamped to a max of 1024 for extra performance!
- lpCtx->dwMaxTextureSize = (lpCtx->D3DDevDesc.dwMaxTextureWidth <= 1024) ? lpCtx->D3DDevDesc.dwMaxTextureWidth : 1024;
-
-// Texture resize takes place elsewhere. KH
-// NOTE: This was added to workaround an issue with the Intel app.
-#if 0
- lpCtx->glCtx->Const.MaxTextureSize = lpCtx->dwMaxTextureSize;
-#else
- lpCtx->glCtx->Const.MaxTextureSize = 1024;
-#endif
- lpCtx->glCtx->Const.MaxDrawBuffers = 1;
-
- // Setup the Display Driver pointers
- dglSetupDDPointers(lpCtx->glCtx);
-
- // Initialise all the Direct3D renderstates
- dglInitStateD3D(lpCtx->glCtx);
-
-#if 0
- // Signal a reload of texture state on next glBegin
- lpCtx->m_texHandleValid = FALSE;
- lpCtx->m_mtex = FALSE;
- lpCtx->m_texturing = FALSE;
-#else
- // Set default texture unit state
-// dglSetTexture(lpCtx, 0, NULL);
-// dglSetTexture(lpCtx, 1, NULL);
-#endif
-
- //
- // Set the global texture palette to default values.
- //
-
- // Clear the entire palette
- ZeroMemory(ppe, sizeof(PALETTEENTRY) * 256);
-
- // Fill the palette with a default colour.
- // A garish colour is used to catch bugs. Here Magenta is used.
- for (i=0; i < 256; i++) {
- ppe[i].peRed = 255;
- ppe[i].peGreen = 0;
- ppe[i].peBlue = 255;
- }
-
- RELEASE(lpCtx->lpGlobalPalette);
-
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers && glb.lpGlobalPalette)
- hResult = IDirectDrawPalette_AddRef(lpCtx->lpGlobalPalette = glb.lpGlobalPalette);
- else
- hResult = IDirectDraw4_CreatePalette(
- lpCtx->lpDD4,
- DDPCAPS_INITIALIZE | DDPCAPS_8BIT | DDPCAPS_ALLOW256,
- ppe,
- &(lpCtx->lpGlobalPalette),
- NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_ERROR, "Default CreatePalette failed\n", hResult);
- lpCtx->lpGlobalPalette = NULL;
- goto return_with_error;
- }
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers && !glb.lpGlobalPalette)
- IDirectDrawPalette_AddRef(glb.lpGlobalPalette = lpCtx->lpGlobalPalette);
-
-#endif // _USE_GLD3_WGL
-
- // ** If we have made it to here then we can enable rendering **
- lpCtx->bCanRender = TRUE;
-
-// ddlogMessage(DDLOG_SYSTEM, "dglCreateContextBuffers succeded\n");
-
-#ifdef GLD_THREADS
- // Release serialized access
- if (glb.bMultiThreaded)
- LeaveCriticalSection(&CriticalSection);
-#endif
-
- return TRUE;
-
-return_with_error:
- // Clean up before returning.
- // This is critical for secondary devices.
-
- lpCtx->bCanRender = FALSE;
-
-#ifdef _USE_GLD3_WGL
- // Destroy the Mesa context
- if (lpCtx->glBuffer)
- _mesa_destroy_framebuffer(lpCtx->glBuffer);
- if (lpCtx->glCtx)
- _mesa_destroy_context(lpCtx->glCtx);
- if (lpCtx->glVis)
- _mesa_destroy_visual(lpCtx->glVis);
-
- // Destroy driver data
- _gldDriver.DestroyDrawable(lpCtx);
-#else
- // Destroy the Mesa context
- if (lpCtx->glBuffer)
- (*mesaFuncs.gl_destroy_framebuffer)(lpCtx->glBuffer);
- if (lpCtx->glCtx)
- (*mesaFuncs.gl_destroy_context)(lpCtx->glCtx);
- if (lpCtx->glVis)
- (*mesaFuncs.gl_destroy_visual)(lpCtx->glVis);
-
- RELEASE(lpCtx->m_pvbuf); // Release D3D vertex buffer
- RELEASE(lpCtx->m_vbuf); // Release D3D vertex buffer
-
- if (lpCtx->lpViewport3) {
- if (lpCtx->lpDev3) IDirect3DDevice3_DeleteViewport(lpCtx->lpDev3, lpCtx->lpViewport3);
- RELEASE(lpCtx->lpViewport3);
- lpCtx->lpViewport3 = NULL;
- }
-
- RELEASE(lpCtx->lpDev3);
- if (lpCtx->lpDepth4) {
- if (lpCtx->lpBack4)
- IDirectDrawSurface4_DeleteAttachedSurface(lpCtx->lpBack4, 0L, lpCtx->lpDepth4);
- else
- IDirectDrawSurface4_DeleteAttachedSurface(lpCtx->lpFront4, 0L, lpCtx->lpDepth4);
- RELEASE(lpCtx->lpDepth4);
- lpCtx->lpDepth4 = NULL;
- }
- RELEASE(lpCtx->lpBack4);
- RELEASE(lpCtx->lpFront4);
- else
- if (lpCtx->bFullscreen) {
- IDirectDraw4_RestoreDisplayMode(lpCtx->lpDD4);
- IDirectDraw4_SetCooperativeLevel(lpCtx->lpDD4, NULL, DDSCL_NORMAL);
- }
- RELEASE(lpCtx->lpD3D3);
- RELEASE(lpCtx->lpDD4);
- RELEASE(lpCtx->lpDD1);
-#endif // _USE_GLD3_WGL
-
- lpCtx->bAllocated = FALSE;
-
-#ifdef GLD_THREADS
- // Release serialized access
- if (glb.bMultiThreaded)
- LeaveCriticalSection(&CriticalSection);
-#endif
-
- return FALSE;
-
-#undef DDLOG_CRITICAL_OR_WARN
-}
-
-// ***********************************************************************
-
-HGLRC dglCreateContext(
- HDC a,
- const DGL_pixelFormat *lpPF)
-{
- int i;
- HGLRC hGLRC;
- DGL_ctx* lpCtx;
- static BOOL bWarnOnce = TRUE;
- DWORD dwThreadId = GetCurrentThreadId();
- char szMsg[256];
- HWND hWnd;
- LONG lpfnWndProc;
-
- // Validate license
- if (!dglValidate())
- return NULL;
-
- // Is context state ready ?
- if (!bContextReady)
- return NULL;
-
- ddlogPrintf(DDLOG_SYSTEM, "dglCreateContext for HDC=%X, ThreadId=%X", a, dwThreadId);
-
- // Find next free context.
- // Also ensure that only one Fullscreen context is created at any one time.
- hGLRC = 0; // Default to Not Found
- for (i=0; i<DGL_MAX_CONTEXTS; i++) {
- if (ctxlist[i].bAllocated) {
- if (/*glb.bFullscreen && */ctxlist[i].bFullscreen)
- break;
- } else {
- hGLRC = (HGLRC)(i+1);
- break;
- }
- }
-
- // Bail if no GLRC was found
- if (!hGLRC)
- return NULL;
-
- // Set the context pointer
- lpCtx = dglGetContextAddress(hGLRC);
- // Make sure that context is zeroed before we do anything.
- // MFC and C++ apps call wglCreateContext() and wglDeleteContext() multiple times,
- // even though only one context is ever used by the app, so keep it clean. (DaveM)
- ZeroMemory(lpCtx, sizeof(DGL_ctx));
- lpCtx->bAllocated = TRUE;
- // Flag that buffers need creating on next wglMakeCurrent call.
- lpCtx->bHasBeenCurrent = FALSE;
- lpCtx->lpPF = (DGL_pixelFormat *)lpPF; // cache pixel format
- lpCtx->bCanRender = FALSE;
-
- // Create all the internal resources here, not in dglMakeCurrent().
- // We do a re-size check in dglMakeCurrent in case of re-allocations. (DaveM)
- // We now try context allocations twice, first with video memory,
- // then again with system memory. This is similar to technique
- // used for dglWglResizeBuffers(). (DaveM)
- if (lpCtx->bHasBeenCurrent == FALSE) {
- if (!dglCreateContextBuffers(a, lpCtx, FALSE)) {
- if (glb.bMessageBoxWarnings && bWarnOnce && dwLogging) {
- bWarnOnce = FALSE;
- switch (nContextError) {
- case GLDERR_DDRAW: strcpy(szMsg, szDDrawWarning); break;
- case GLDERR_D3D: strcpy(szMsg, szD3DWarning); break;
- case GLDERR_MEM: strcpy(szMsg, szResourceWarning); break;
- case GLDERR_BPP: strcpy(szMsg, szBPPWarning); break;
- default: strcpy(szMsg, "");
- }
- if (strlen(szMsg))
- MessageBox(NULL, szMsg, "GLDirect", MB_OK | MB_ICONWARNING);
- }
- // Only need to try again if memory error
- if (nContextError == GLDERR_MEM) {
- ddlogPrintf(DDLOG_WARN, "dglCreateContext failed 1st time with video memory");
- }
- else {
- ddlogPrintf(DDLOG_ERROR, "dglCreateContext failed");
- return NULL;
- }
- }
- }
-
- // Now that we have a hWnd, we can intercept the WindowProc.
- hWnd = lpCtx->hWnd;
- if (hWnd) {
- // Only hook individual window handler once if not hooked before.
- lpfnWndProc = GetWindowLong(hWnd, GWL_WNDPROC);
- if (lpfnWndProc != (LONG)dglWndProc) {
- lpCtx->lpfnWndProc = lpfnWndProc;
- SetWindowLong(hWnd, GWL_WNDPROC, (LONG)dglWndProc);
- }
- // Find the parent window of the app too.
- if (glb.hWndActive == NULL) {
- while (hWnd != NULL) {
- glb.hWndActive = hWnd;
- hWnd = GetParent(hWnd);
- }
- // Hook the parent window too.
- lpfnWndProc = GetWindowLong(glb.hWndActive, GWL_WNDPROC);
- if (glb.hWndActive == lpCtx->hWnd)
- glb.lpfnWndProc = lpCtx->lpfnWndProc;
- else if (lpfnWndProc != (LONG)dglWndProc)
- glb.lpfnWndProc = lpfnWndProc;
- if (glb.lpfnWndProc)
- SetWindowLong(glb.hWndActive, GWL_WNDPROC, (LONG)dglWndProc);
- }
- }
-
- ddlogPrintf(DDLOG_SYSTEM, "dglCreateContext succeeded for HGLRC=%d", (int)hGLRC);
-
- return hGLRC;
-}
-
-// ***********************************************************************
-// Make a DirectGL context current
-// Used by wgl functions and dgl functions
-BOOL dglMakeCurrent(
- HDC a,
- HGLRC b)
-{
- int context;
- DGL_ctx* lpCtx;
- HWND hWnd;
- BOOL bNeedResize = FALSE;
- BOOL bWindowChanged, bContextChanged;
- LPDIRECTDRAWCLIPPER lpddClipper;
- DWORD dwThreadId = GetCurrentThreadId();
- LONG lpfnWndProc;
-
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- // Is context state ready ?
- if (!bContextReady)
- return FALSE;
-
- context = (int)b; // This is as a result of STRICT!
- ddlogPrintf(DDLOG_SYSTEM, "dglMakeCurrent: HDC=%X, HGLRC=%d, ThreadId=%X", a, context, dwThreadId);
-
- // If the HGLRC is NULL then make no context current;
- // Ditto if the HDC is NULL either. (DaveM)
- if (context == 0 || a == 0) {
- // Corresponding Mesa operation
-#ifdef _USE_GLD3_WGL
- _mesa_make_current(NULL, NULL);
-#else
- (*mesaFuncs.gl_make_current)(NULL, NULL);
-#endif
- dglSetCurrentContext(0);
- return TRUE;
- }
-
- // Make sure the HGLRC is in range
- if ((context > DGL_MAX_CONTEXTS) || (context < 0)) {
- ddlogMessage(DDLOG_ERROR, "dglMakeCurrent: HGLRC out of range\n");
- return FALSE;
- }
-
- // Find address of context and make sure that it has been allocated
- lpCtx = dglGetContextAddress(b);
- if (!lpCtx->bAllocated) {
- ddlogMessage(DDLOG_ERROR, "dglMakeCurrent: Context not allocated\n");
-// return FALSE;
- return TRUE; // HACK: Shuts up "WebLab Viewer Pro". KeithH
- }
-
-#ifdef GLD_THREADS
- // Serialize access to DirectDraw or DDS operations
- if (glb.bMultiThreaded)
- EnterCriticalSection(&CriticalSection);
-#endif
-
- // Check if window has changed
- hWnd = (a != lpCtx->hDC) ? WindowFromDC(a) : lpCtx->hWnd;
- bWindowChanged = (hWnd != lpCtx->hWnd) ? TRUE : FALSE;
- bContextChanged = (b != dglGetCurrentContext()) ? TRUE : FALSE;
-
- // If the window has changed, make sure the clipper is updated. (DaveM)
- if (glb.bDirectDrawPersistant && !lpCtx->bFullscreen && (bWindowChanged || bContextChanged)) {
- lpCtx->hWnd = hWnd;
-#ifndef _USE_GLD3_WGL
- IDirectDrawSurface4_GetClipper(lpCtx->lpFront4, &lpddClipper);
- IDirectDrawClipper_SetHWnd(lpddClipper, 0, lpCtx->hWnd);
- IDirectDrawClipper_Release(lpddClipper);
-#endif // _USE_GLD3_WGL
- }
-
- // Make sure hDC and hWnd is current. (DaveM)
- // Obtain the dimensions of the rendering window
- lpCtx->hDC = a; // Cache DC
- lpCtx->hWnd = hWnd;
- hWndLastActive = hWnd;
-
- // Check for non-window DC = memory DC ?
- if (hWnd == NULL) {
- if (GetClipBox(a, &lpCtx->rcScreenRect) == ERROR) {
- ddlogMessage(DDLOG_WARN, "GetClipBox failed in dglMakeCurrent\n");
- SetRect(&lpCtx->rcScreenRect, 0, 0, 0, 0);
- }
- }
- else if (!GetClientRect(lpCtx->hWnd, &lpCtx->rcScreenRect)) {
- ddlogMessage(DDLOG_WARN, "GetClientRect failed in dglMakeCurrent\n");
- SetRect(&lpCtx->rcScreenRect, 0, 0, 0, 0);
- }
- // Check if buffers need to be re-sized;
- // If so, wait until Mesa GL stuff is setup before re-sizing;
- if (lpCtx->dwWidth != lpCtx->rcScreenRect.right - lpCtx->rcScreenRect.left ||
- lpCtx->dwHeight != lpCtx->rcScreenRect.bottom - lpCtx->rcScreenRect.top)
- bNeedResize = TRUE;
-
- // Now we can update our globals
- dglSetCurrentContext(b);
-
- // Corresponding Mesa operation
-#ifdef _USE_GLD3_WGL
- _mesa_make_current(lpCtx->glCtx, lpCtx->glBuffer);
- lpCtx->glCtx->Driver.UpdateState(lpCtx->glCtx, _NEW_ALL);
- if (bNeedResize) {
- // Resize buffers (Note Mesa GL needs to be setup beforehand);
- // Resize Mesa internal buffer too via glViewport() command,
- // which subsequently calls dglWglResizeBuffers() too.
- lpCtx->glCtx->Driver.Viewport(lpCtx->glCtx, 0, 0, lpCtx->dwWidth, lpCtx->dwHeight);
- lpCtx->bHasBeenCurrent = TRUE;
- }
-#else
- (*mesaFuncs.gl_make_current)(lpCtx->glCtx, lpCtx->glBuffer);
-
- dglSetupDDPointers(lpCtx->glCtx);
-
- // Insure DirectDraw surfaces fit current window DC
- if (bNeedResize) {
- // Resize buffers (Note Mesa GL needs to be setup beforehand);
- // Resize Mesa internal buffer too via glViewport() command,
- // which subsequently calls dglWglResizeBuffers() too.
- (*mesaFuncs.gl_Viewport)(lpCtx->glCtx, 0, 0, lpCtx->dwWidth, lpCtx->dwHeight);
- lpCtx->bHasBeenCurrent = TRUE;
- }
-#endif // _USE_GLD3_WGL
- ddlogPrintf(DDLOG_SYSTEM, "dglMakeCurrent: width = %d, height = %d", lpCtx->dwWidth, lpCtx->dwHeight);
-
- // We have to clear D3D back buffer and render state if emulated front buffering
- // for different window (but not context) like in Solid Edge.
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers
- && (bWindowChanged /* || bContextChanged */) && lpCtx->EmulateSingle) {
-#ifdef _USE_GLD3_WGL
-// IDirect3DDevice8_EndScene(lpCtx->pDev);
-// lpCtx->bSceneStarted = FALSE;
- lpCtx->glCtx->Driver.Clear(lpCtx->glCtx, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT,
- GL_TRUE, 0, 0, lpCtx->dwWidth, lpCtx->dwHeight);
-#else
- IDirect3DDevice3_EndScene(lpCtx->lpDev3);
- lpCtx->bSceneStarted = FALSE;
- dglClearD3D(lpCtx->glCtx, GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT,
- GL_TRUE, 0, 0, lpCtx->dwWidth, lpCtx->dwHeight);
-#endif // _USE_GLD3_WGL
- }
-
- // The first time we call MakeCurrent we set the initial viewport size
- if (lpCtx->bHasBeenCurrent == FALSE)
-#ifdef _USE_GLD3_WGL
- lpCtx->glCtx->Driver.Viewport(lpCtx->glCtx, 0, 0, lpCtx->dwWidth, lpCtx->dwHeight);
-#else
- (*mesaFuncs.gl_Viewport)(lpCtx->glCtx, 0, 0, lpCtx->dwWidth, lpCtx->dwHeight);
-#endif // _USE_GLD3_WGL
- lpCtx->bHasBeenCurrent = TRUE;
-
-#ifdef GLD_THREADS
- // Release serialized access
- if (glb.bMultiThreaded)
- LeaveCriticalSection(&CriticalSection);
-#endif
-
- return TRUE;
-}
-
-// ***********************************************************************
-
-BOOL dglDeleteContext(
- HGLRC a)
-{
- DGL_ctx* lpCtx;
- DWORD dwThreadId = GetCurrentThreadId();
- char argstr[256];
-
-#if 0 // We have enough trouble throwing exceptions as it is... (DaveM)
- // Validate license
- if (!dglValidate())
- return FALSE;
-#endif
-
- // Is context state ready ?
- if (!bContextReady)
- return FALSE;
-
- ddlogPrintf(DDLOG_SYSTEM, "dglDeleteContext: Deleting context HGLRC=%d, ThreadId=%X", (int)a, dwThreadId);
-
- // Make sure the HGLRC is in range
- if (((int) a> DGL_MAX_CONTEXTS) || ((int)a < 0)) {
- ddlogMessage(DDLOG_ERROR, "dglDeleteCurrent: HGLRC out of range\n");
- return FALSE;
- }
-
- // Make sure context is valid
- lpCtx = dglGetContextAddress(a);
- if (!lpCtx->bAllocated) {
- ddlogPrintf(DDLOG_WARN, "Tried to delete unallocated context HGLRC=%d", (int)a);
-// return FALSE;
- return TRUE; // HACK: Shuts up "WebLab Viewer Pro". KeithH
- }
-
- // Make sure context is de-activated
- if (a == dglGetCurrentContext()) {
- ddlogPrintf(DDLOG_WARN, "dglDeleteContext: context HGLRC=%d still active", (int)a);
- dglMakeCurrent(NULL, NULL);
- }
-
-#ifdef GLD_THREADS
- // Serialize access to DirectDraw or DDS operations
- if (glb.bMultiThreaded)
- EnterCriticalSection(&CriticalSection);
-#endif
-
- // We are about to destroy all Direct3D objects.
- // Therefore we must disable rendering
- lpCtx->bCanRender = FALSE;
-
- // This exception handler was installed to catch some
- // particularly nasty apps. Console apps that call exit()
- // fall into this catagory (i.e. Win32 Glut).
-
- // VC cannot successfully implement multiple exception handlers
- // if more than one exception occurs. Therefore reverting back to
- // single exception handler as Keith originally had it. (DaveM)
-
-#define WARN_MESSAGE(p) strcpy(argstr, (#p));
-#define SAFE_RELEASE(p) WARN_MESSAGE(p); RELEASE(p);
-
-__try {
-#ifdef _USE_GLD3_WGL
- WARN_MESSAGE(gl_destroy_framebuffer);
- if (lpCtx->glBuffer)
- _mesa_destroy_framebuffer(lpCtx->glBuffer);
- WARN_MESSAGE(gl_destroy_context);
- if (lpCtx->glCtx)
- _mesa_destroy_context(lpCtx->glCtx);
- WARN_MESSAGE(gl_destroy_visual);
- if (lpCtx->glVis)
- _mesa_destroy_visual(lpCtx->glVis);
-
- _gldDriver.DestroyDrawable(lpCtx);
-#else
- // Destroy the Mesa context
- WARN_MESSAGE(gl_destroy_framebuffer);
- if (lpCtx->glBuffer)
- (*mesaFuncs.gl_destroy_framebuffer)(lpCtx->glBuffer);
- WARN_MESSAGE(gl_destroy_context);
- if (lpCtx->glCtx)
- (*mesaFuncs.gl_destroy_context)(lpCtx->glCtx);
- WARN_MESSAGE(gl_destroy_visual);
- if (lpCtx->glVis)
- (*mesaFuncs.gl_destroy_visual)(lpCtx->glVis);
-
- SAFE_RELEASE(lpCtx->m_pvbuf); // release D3D vertex buffer
- SAFE_RELEASE(lpCtx->m_vbuf); // release D3D vertex buffer
-
- // Delete the global palette
- SAFE_RELEASE(lpCtx->lpGlobalPalette);
-
- // Clean up.
- if (lpCtx->lpViewport3) {
- if (lpCtx->lpDev3) IDirect3DDevice3_DeleteViewport(lpCtx->lpDev3, lpCtx->lpViewport3);
- SAFE_RELEASE(lpCtx->lpViewport3);
- lpCtx->lpViewport3 = NULL;
- }
-
- SAFE_RELEASE(lpCtx->lpDev3);
- if (lpCtx->lpDepth4) {
- if (lpCtx->lpBack4)
- IDirectDrawSurface4_DeleteAttachedSurface(lpCtx->lpBack4, 0L, lpCtx->lpDepth4);
- else
- IDirectDrawSurface4_DeleteAttachedSurface(lpCtx->lpFront4, 0L, lpCtx->lpDepth4);
- SAFE_RELEASE(lpCtx->lpDepth4);
- lpCtx->lpDepth4 = NULL;
- }
- SAFE_RELEASE(lpCtx->lpBack4);
- SAFE_RELEASE(lpCtx->lpFront4);
- if (lpCtx->bFullscreen) {
- IDirectDraw4_RestoreDisplayMode(lpCtx->lpDD4);
- IDirectDraw4_SetCooperativeLevel(lpCtx->lpDD4, NULL, DDSCL_NORMAL);
- }
- SAFE_RELEASE(lpCtx->lpD3D3);
- SAFE_RELEASE(lpCtx->lpDD4);
- SAFE_RELEASE(lpCtx->lpDD1);
-#endif // _ULSE_GLD3_WGL
-
-}
-__except(EXCEPTION_EXECUTE_HANDLER) {
- ddlogPrintf(DDLOG_WARN, "Exception raised in dglDeleteContext: %s", argstr);
-}
-
- // Restore the window message handler because this context may be used
- // again by another window with a *different* message handler. (DaveM)
- if (lpCtx->lpfnWndProc) {
- SetWindowLong(lpCtx->hWnd, GWL_WNDPROC, (LONG)lpCtx->lpfnWndProc);
- lpCtx->lpfnWndProc = (LONG)NULL;
- }
-
- lpCtx->bAllocated = FALSE; // This context is now free for use
-
-#ifdef GLD_THREADS
- // Release serialized access
- if (glb.bMultiThreaded)
- LeaveCriticalSection(&CriticalSection);
-#endif
-
- return TRUE;
-}
-
-// ***********************************************************************
-
-BOOL dglSwapBuffers(
- HDC hDC)
-{
- RECT rSrcRect; // Source rectangle
- RECT rDstRect; // Destination rectangle
- POINT pt;
- HRESULT hResult;
-
- DDBLTFX bltFX;
- DWORD dwBlitFlags;
- DDBLTFX *lpBltFX;
-
-// DWORD dwThreadId = GetCurrentThreadId();
- HGLRC hGLRC = dglGetCurrentContext();
- DGL_ctx *lpCtx = dglGetContextAddress(hGLRC);
- HWND hWnd;
-
- HDC hDCAux; // for memory DC
- int x,y,w,h; // for memory DC BitBlt
-
-#if 0 // Perhaps not a good idea. Called too often. KH
- // Validate license
- if (!dglValidate())
- return FALSE;
-#endif
-
- if (!lpCtx) {
- return TRUE; //FALSE; // No current context
- }
-
- if (!lpCtx->bCanRender) {
- // Don't return false else some apps will bail.
- return TRUE;
- }
-
- hWnd = lpCtx->hWnd;
- if (hDC != lpCtx->hDC) {
- ddlogPrintf(DDLOG_WARN, "dglSwapBuffers: HDC=%X does not match HDC=%X for HGLRC=%d", hDC, lpCtx->hDC, hGLRC);
- hWnd = WindowFromDC(hDC);
- }
-
-#ifndef _USE_GLD3_WGL
- // Ensure that the surfaces exist before we tell
- // the device to render to them.
- IDirectDraw4_RestoreAllSurfaces(lpCtx->lpDD4);
-
- // Make sure that the vertex caches have been emptied
-// dglStateChange(lpCtx);
-
- // Some OpenGL programs don't issue a glFinish - check for it here.
- if (lpCtx->bSceneStarted) {
- IDirect3DDevice3_EndScene(lpCtx->lpDev3);
- lpCtx->bSceneStarted = FALSE;
- }
-#endif
-
-#if 0
- // If the calling app is not active then we don't need to Blit/Flip.
- // We can therefore simply return TRUE.
- if (!glb.bAppActive)
- return TRUE;
- // Addendum: This is WRONG! We should bail if the app is *minimized*,
- // not merely if the app is just plain 'not active'.
- // KeithH, 27/May/2000.
-#endif
-
- // Check for non-window DC = memory DC ?
- if (hWnd == NULL) {
- if (GetClipBox(hDC, &rSrcRect) == ERROR)
- return TRUE;
- // Use GDI BitBlt instead from compatible DirectDraw DC
- x = rSrcRect.left;
- y = rSrcRect.top;
- w = rSrcRect.right - rSrcRect.left;
- h = rSrcRect.bottom - rSrcRect.top;
-
- // Ack. DX8 does not have a GetDC() function...
- // TODO: Defer to DX7 or DX9 drivers... (DaveM)
- return TRUE;
- }
-
- // Bail if window client region is not drawable, like in Solid Edge
- if (!IsWindow(hWnd) /* || !IsWindowVisible(hWnd) */ || !GetClientRect(hWnd, &rSrcRect))
- return TRUE;
-
-#ifdef GLD_THREADS
- // Serialize access to DirectDraw or DDS operations
- if (glb.bMultiThreaded)
- EnterCriticalSection(&CriticalSection);
-#endif
-
-#ifdef _USE_GLD3_WGL
- // Notify Mesa of impending swap, so Mesa can flush internal buffers.
- _mesa_notifySwapBuffers(lpCtx->glCtx);
- // Now perform driver buffer swap
- _gldDriver.SwapBuffers(lpCtx, hDC, hWnd);
-#else
- if (lpCtx->bFullscreen) {
- // Sync with retrace if required
- if (glb.bWaitForRetrace) {
- IDirectDraw4_WaitForVerticalBlank(
- lpCtx->lpDD4,
- DDWAITVB_BLOCKBEGIN,
- 0);
- }
-
- // Perform the fullscreen flip
- TRY(IDirectDrawSurface4_Flip(
- lpCtx->lpFront4,
- NULL,
- DDFLIP_WAIT),
- "dglSwapBuffers: Flip");
- } else {
- // Calculate current window position and size
- pt.x = pt.y = 0;
- ClientToScreen(hWnd, &pt);
- GetClientRect(hWnd, &rDstRect);
- if (rDstRect.right > lpCtx->dwModeWidth)
- rDstRect.right = lpCtx->dwModeWidth;
- if (rDstRect.bottom > lpCtx->dwModeHeight)
- rDstRect.bottom = lpCtx->dwModeHeight;
- OffsetRect(&rDstRect, pt.x, pt.y);
- rSrcRect.left = rSrcRect.top = 0;
- rSrcRect.right = lpCtx->dwWidth;
- rSrcRect.bottom = lpCtx->dwHeight;
- if (rSrcRect.right > lpCtx->dwModeWidth)
- rSrcRect.right = lpCtx->dwModeWidth;
- if (rSrcRect.bottom > lpCtx->dwModeHeight)
- rSrcRect.bottom = lpCtx->dwModeHeight;
-
- if (glb.bWaitForRetrace) {
- // Sync the blit to the vertical retrace
- ZeroMemory(&bltFX, sizeof(bltFX));
- bltFX.dwSize = sizeof(bltFX);
- bltFX.dwDDFX = DDBLTFX_NOTEARING;
- dwBlitFlags = DDBLT_WAIT | DDBLT_DDFX;
- lpBltFX = &bltFX;
- } else {
- dwBlitFlags = DDBLT_WAIT;
- lpBltFX = NULL;
- }
-
- // Perform the actual blit
- TRY(IDirectDrawSurface4_Blt(
- lpCtx->lpFront4,
- &rDstRect,
- lpCtx->lpBack4, // Blit source
- &rSrcRect,
- dwBlitFlags,
- lpBltFX),
- "dglSwapBuffers: Blt");
- }
-#endif // _USE_GLD3_WGL
-
-#ifdef GLD_THREADS
- // Release serialized access
- if (glb.bMultiThreaded)
- LeaveCriticalSection(&CriticalSection);
-#endif
-
- // TODO: Re-instate rendering bitmap snapshot feature??? (DaveM)
-
- // Render frame is completed
- ValidateRect(hWnd, NULL);
- lpCtx->bFrameStarted = FALSE;
-
- return TRUE;
-}
-
-// ***********************************************************************
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h b/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h
deleted file mode 100644
index 5eea9de3d..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglcontext.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: OpenGL context handling.
-*
-****************************************************************************/
-
-#ifndef __DGLCONTEXT_H
-#define __DGLCONTEXT_H
-
-// Disable compiler complaints about DLL linkage
-#pragma warning (disable:4273)
-
-// Macros to control compilation
-#ifndef STRICT
-#define STRICT
-#endif // STRICT
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <GL\gl.h>
-
-#ifdef _USE_GLD3_WGL
- #include "dglmacros.h"
- #include "dglglobals.h"
- #include "pixpack.h"
- #include "ddlog.h"
- #include "dglpf.h"
- #include "context.h" // Mesa context
-#else
- #include <ddraw.h>
- #include <d3d.h>
-
- #include "dglmacros.h"
- #include "dglglobals.h"
- #include "pixpack.h"
- #include "ddlog.h"
- #include "dglpf.h"
- #include "d3dvertex.h"
-
- #include "DirectGL.h"
-
- #include "context.h" // Mesa context
- #include "vb.h" // Mesa vertex buffer
-#endif // _USE_GLD3_WGL
-
-/*---------------------- Macros and type definitions ----------------------*/
-
-// TODO: Use a list instead of this constant!
-#define DGL_MAX_CONTEXTS 32
-
-// Structure for describing an OpenGL context
-#ifdef _USE_GLD3_WGL
-typedef struct {
- BOOL bHasBeenCurrent;
- DGL_pixelFormat *lpPF;
-
- // Pointer to private driver data (this also contains the drawable).
- void *glPriv;
-
- // Mesa vars:
- struct gl_context *glCtx; // The core Mesa context
- struct gl_config *glVis; // Describes the color buffer
- struct gl_framebuffer *glBuffer; // Ancillary buffers
-
- GLuint ClearIndex;
- GLuint CurrentIndex;
- GLubyte ClearColor[4];
- GLubyte CurrentColor[4];
-
- BOOL EmulateSingle; // Emulate single-buffering
- BOOL bDoubleBuffer;
- BOOL bDepthBuffer;
-
- // Shared driver vars:
- BOOL bAllocated;
- BOOL bFullscreen; // Is this a fullscreen context?
- BOOL bSceneStarted; // Has a lpDev->BeginScene been issued?
- BOOL bCanRender; // Flag: states whether rendering is OK
- BOOL bFrameStarted; // Has frame update started at all?
- BOOL bStencil; // TRUE if this context has stencil
- BOOL bGDIEraseBkgnd; // GDI Erase Background command
-
- // Window information
- HWND hWnd; // Window handle
- HDC hDC; // Windows' Device Context of the window
- DWORD dwWidth; // Window width
- DWORD dwHeight; // Window height
- DWORD dwBPP; // Window bits-per-pixel;
- RECT rcScreenRect; // Screen rectangle
- DWORD dwModeWidth; // Display mode width
- DWORD dwModeHeight; // Display mode height
- float dvClipX;
- float dvClipY;
- LONG lpfnWndProc; // window message handler function
-
-} DGL_ctx;
-
-#define GLD_context DGL_ctx
-#define GLD_GET_CONTEXT(c) (GLD_context*)(c)->DriverCtx
-
-#else // _USE_GLD3_WGL
-
-typedef struct {
- BOOL bHasBeenCurrent;
- DGL_pixelFormat *lpPF;
- //
- // Mesa context vars:
- //
- struct gl_context *glCtx; // The core Mesa context
- struct gl_config *glVis; // Describes the color buffer
- struct gl_framebuffer *glBuffer; // Ancillary buffers
-
- GLuint ClearIndex;
- GLuint CurrentIndex;
- GLubyte ClearColor[4];
- GLubyte CurrentColor[4];
-
- BOOL EmulateSingle; // Emulate single-buffering
- BOOL bDoubleBuffer;
- BOOL bDepthBuffer;
- int iZBufferPF; // Index of Zbuffer pixel format
-
- // Vertex buffer: one-to-one correlation with Mesa's vertex buffer.
- // This will be filled by our setup function (see d3dvsetup.c)
- DGL_TLvertex gWin[VB_SIZE]; // Transformed and lit vertices
-// DGL_Lvertex gObj[VB_SIZE]; // Lit vertices in object coordinates.
-
- // Indices for DrawIndexedPrimitive.
- // Clipped quads are drawn seperately, so use VB_SIZE.
- // 6 indices are needed to make 2 triangles for each possible quad
-// WORD wIndices[(VB_SIZE / 4) * 6];
- WORD wIndices[32768];
-
- //
- // Device driver vars:
- //
- BOOL bAllocated;
- BOOL bFullscreen; // Is this a fullscreen context?
- BOOL bSceneStarted; // Has a lpDev->BeginScene been issued?
- BOOL bCanRender; // Flag: states whether rendering is OK
- BOOL bFrameStarted; // Has frame update started at all?
-
- // DirectX COM interfaces, postfixed with the interface number
- IDirectDraw *lpDD1;
- IDirectDraw4 *lpDD4;
- IDirect3D3 *lpD3D3;
- IDirect3DDevice3 *lpDev3;
- IDirect3DViewport3 *lpViewport3;
- IDirectDrawSurface4 *lpFront4;
- IDirectDrawSurface4 *lpBack4;
- IDirectDrawSurface4 *lpDepth4;
-
- // Vertex buffers
- BOOL bD3DPipeline; // True if using D3D geometry pipeline
- IDirect3DVertexBuffer *m_vbuf; // Unprocessed vertices
- IDirect3DVertexBuffer *m_pvbuf; // Processed vertices ready to be rendered
-
- D3DTEXTUREOP ColorOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing
- D3DTEXTUREOP AlphaOp[MAX_TEXTURE_UNITS]; // Used for re-enabling texturing
- struct gl_texture_object *tObj[MAX_TEXTURE_UNITS];
-
- DDCAPS ddCaps; // DirectDraw caps
- D3DDEVICEDESC D3DDevDesc; // Direct3D Device description
-
- DDPIXELFORMAT ddpfRender; // Pixel format of the render buffer
- DDPIXELFORMAT ddpfDepth; // Pixel format of the depth buffer
-
- BOOL bStencil; // TRUE is this context has stencil
-
- PX_packFunc fnPackFunc; // Pixel packing function for SW
- PX_unpackFunc fnUnpackFunc; // Pixel unpacking function for SW
- PX_packSpanFunc fnPackSpanFunc; // Pixel span packer
-
- D3DVIEWPORT2 d3dViewport; // D3D Viewport object
-
- D3DCULL cullmode; // Direct3D cull mode
- D3DCOLOR curcolor; // Current color
- DWORD dwColorPF; // Current color, in format of target surface
- D3DCOLOR d3dClearColor; // Clear color
- D3DCOLOR ConstantColor; // For flat shading
- DWORD dwClearColorPF; // Clear color, in format of target surface
- BOOL bGDIEraseBkgnd; // GDI Erase Background command
-
- // Primitive caches
-// DGL_vertex LineCache[DGL_MAX_LINE_VERTS];
-// DGL_vertex TriCache[DGL_MAX_TRI_VERTS];
-// DWORD dwNextLineVert;
-// DWORD dwNextTriVert;
-
- // Window information
- HWND hWnd; // Window handle
- HDC hDC; // Windows' Device Context of the window
- DWORD dwWidth; // Window width
- DWORD dwHeight; // Window height
- DWORD dwBPP; // Window bits-per-pixel;
- RECT rcScreenRect; // Screen rectangle
- DWORD dwModeWidth; // Display mode width
- DWORD dwModeHeight; // Display mode height
- float dvClipX;
- float dvClipY;
- LONG lpfnWndProc; // window message handler function
-
- // Shared texture palette
- IDirectDrawPalette *lpGlobalPalette;
-
- // Usage counters.
- // One of these counters will be incremented when we choose
- // between hardware and software rendering functions.
-// DWORD dwHWUsageCount; // Hardware usage count
-// DWORD dwSWUsageCount; // Software usage count
-
- // Texture state flags.
-// BOOL m_texturing; // TRUE is texturing
-// BOOL m_mtex; // TRUE if multitexture
-// BOOL m_texHandleValid; // TRUE if tex state valid
-
- // Renderstate caches to ensure no redundant state changes
- DWORD dwRS[256]; // Renderstates
- DWORD dwTSS[2][24]; // Texture-stage states
- LPDIRECT3DTEXTURE2 lpTex[2]; // Texture (1 per stage)
-
- DWORD dwMaxTextureSize; // Max texture size:
- // clamped to 1024.
-
-} DGL_ctx;
-#endif // _USE_GLD3_WGL
-
-/*------------------------- Function Prototypes ---------------------------*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-HHOOK hKeyHook;
-LRESULT CALLBACK dglKeyProc(int code,WPARAM wParam,LPARAM lParam);
-
-void dglInitContextState();
-void dglDeleteContextState();
-BOOL dglIsValidContext(HGLRC a);
-DGL_ctx* dglGetContextAddress(const HGLRC a);
-HDC dglGetCurrentDC(void);
-HGLRC dglGetCurrentContext(void);
-HGLRC dglCreateContext(HDC a, const DGL_pixelFormat *lpPF);
-BOOL dglMakeCurrent(HDC a, HGLRC b);
-BOOL dglDeleteContext(HGLRC a);
-BOOL dglSwapBuffers(HDC hDC);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglglobals.c b/mesalib/src/mesa/drivers/windows/gldirect/dglglobals.c
deleted file mode 100644
index c633e3bcf..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglglobals.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Global variables.
-*
-****************************************************************************/
-
-#include "dglglobals.h"
-
-// =======================================================================
-// Global Variables
-// =======================================================================
-
-char szCopyright[] = "Copyright (c) 1998 SciTech Software, Inc.";
-char szDllName[] = "Scitech GLDirect";
-char szErrorTitle[] = "GLDirect Error";
-
-DGL_globals glb;
-
-// Shared result variable
-HRESULT hResult;
-
-// ***********************************************************************
-
-// Patch function for missing function in Mesa
-int finite(
- double x)
-{
- return _finite(x);
-};
-
-// ***********************************************************************
-
-void dglInitGlobals()
-{
- // Zero all fields just in case
- memset(&glb, 0, sizeof(glb));
-
- // Set the global defaults
- glb.bPrimary = FALSE; // Not the primary device
- glb.bHardware = FALSE; // Not a hardware device
-// glb.bFullscreen = FALSE; // Not running fullscreen
- glb.bSquareTextures = FALSE; // Device does not need sq
- glb.bPAL8 = FALSE; // Device cannot do 8bit
- glb.dwMemoryType = DDSCAPS_SYSTEMMEMORY;
- glb.dwRendering = DGL_RENDER_D3D;
-
- glb.bWaitForRetrace = TRUE; // Sync to vertical retrace
- glb.bFullscreenBlit = FALSE;
-
- glb.nPixelFormatCount = 0;
- glb.lpPF = NULL; // Pixel format list
-#ifndef _USE_GLD3_WGL
- glb.nZBufferPFCount = 0;
- glb.lpZBufferPF = NULL;
- glb.nDisplayModeCount = 0;
- glb.lpDisplayModes = NULL;
- glb.nTextureFormatCount = 0;
- glb.lpTextureFormat = NULL;
-#endif // _USE_GLD3_WGL
-
- glb.wMaxSimultaneousTextures = 1;
-
- // Enable support for multitexture, if available.
- glb.bMultitexture = TRUE;
-
- // Enable support for mipmapping
- glb.bUseMipmaps = TRUE;
-
- // Alpha emulation via chroma key
- glb.bEmulateAlphaTest = FALSE;
-
- // Use Mesa pipeline always (for compatibility)
- glb.bForceMesaPipeline = FALSE;
-
- // Init support for multiple GLRCs
- glb.bDirectDraw = FALSE;
- glb.bDirectDrawPrimary = FALSE;
- glb.bDirect3D = FALSE;
- glb.bDirect3DDevice = FALSE;
- glb.bDirectDrawStereo = FALSE;
- glb.iDirectDrawStereo = 0;
- glb.hWndActive = NULL;
- // Init DirectX COM interfaces for multiple GLRCs
-// glb.lpDD4 = NULL;
-// glb.lpPrimary4 = NULL;
-// glb.lpBack4 = NULL;
-// glb.lpDepth4 = NULL;
-// glb.lpGlobalPalette = NULL;
-
- // Init special support options
- glb.bMessageBoxWarnings = TRUE;
- glb.bDirectDrawPersistant = FALSE;
- glb.bPersistantBuffers = FALSE;
-
- // Do not assume single-precision-only FPU (for compatibility)
- glb.bFastFPU = FALSE;
-
- // Allow hot-key support
- glb.bHotKeySupport = TRUE;
-
- // Default to single-threaded support (for simplicity)
- glb.bMultiThreaded = FALSE;
-
- // Use application-specific customizations (for end-user convenience)
- glb.bAppCustomizations = TRUE;
-
-#ifdef _USE_GLD3_WGL
- // Registry/ini-file settings for GLDirect 3.x
- glb.dwAdapter = 0; // Primary DX8 adapter
- glb.dwTnL = 1; // MesaSW TnL
- glb.dwMultisample = 0; // Multisample Off
- glb.dwDriver = 2; // Direct3D HW
-
- // Signal a pixelformat list rebuild
- glb.bPixelformatsDirty = TRUE;
-#endif
-}
-
-// ***********************************************************************
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglglobals.h b/mesalib/src/mesa/drivers/windows/gldirect/dglglobals.h
deleted file mode 100644
index 995f1cd5e..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglglobals.h
+++ /dev/null
@@ -1,198 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Globals.
-*
-****************************************************************************/
-
-#ifndef __DGLGLOBALS_H
-#define __DGLGLOBALS_H
-
-#include "dglcontext.h"
-#include "dglpf.h" // Pixel format
-#ifndef _USE_GLD3_WGL
-#include "d3dtexture.h"
-#endif
-
-/*---------------------- Macros and type definitions ----------------------*/
-
-typedef enum {
- DGL_RENDER_MESASW = 0,
- DGL_RENDER_D3D = 1,
- DGL_RENDER_FORCE_DWORD = 0x7ffffff,
-} DGL_renderType;
-
-#ifdef _USE_GLD3_WGL
-
-// Same as DGL_renderType? KeithH
-typedef enum {
- GLDS_DRIVER_MESA_SW = 0, // Mesa SW rendering
- GLDS_DRIVER_REF = 1, // Direct3D Reference Rasteriser
- GLDS_DRIVER_HAL = 2, // Direct3D HW rendering
-} GLDS_DRIVER;
-
-typedef enum {
- GLDS_TNL_DEFAULT = 0, // Choose best TnL method
- GLDS_TNL_MESA = 1, // Mesa TnL
- GLDS_TNL_D3DSW = 2, // D3D Software TnL
- GLDS_TNL_D3DHW = 3, // D3D Hardware TnL
-} GLDS_TNL;
-
-typedef enum {
- GLDS_MULTISAMPLE_NONE = 0,
- GLDS_MULTISAMPLE_FASTEST = 1,
- GLDS_MULTISAMPLE_NICEST = 2,
-} GLDS_MULTISAMPLE;
-#endif
-
-typedef struct {
- // Registry settings
- char szDDName[MAX_DDDEVICEID_STRING]; // DirectDraw device name
- char szD3DName[MAX_DDDEVICEID_STRING]; // Direct3D driver name
- BOOL bPrimary; // Is ddraw device the Primary device?
- BOOL bHardware; // Is the d3d driver a Hardware driver?
-#ifndef _USE_GLD3_WGL
- GUID ddGuid; // GUID of the ddraw device
- GUID d3dGuid; // GUID of the direct3d driver
-#endif // _USE_GLD3_WGL
-// BOOL bFullscreen; // Force fullscreen - only useful for primary adaptors.
- BOOL bSquareTextures; // Does this driver require square textures?
- DWORD dwRendering; // Type of rendering required
-
- BOOL bWaitForRetrace; // Sync to vertical retrace
- BOOL bFullscreenBlit; // Use Blt instead of Flip in fullscreen modes
-
- // Multitexture
- BOOL bMultitexture;
-
- BOOL bUseMipmaps;
-
- DWORD dwMemoryType; // Sysmem or Vidmem
-
- // Global palette
- BOOL bPAL8;
- DDPIXELFORMAT ddpfPAL8;
-
- // Multitexture
- WORD wMaxSimultaneousTextures;
-
- // Win32 internals
- BOOL bAppActive; // Keep track of Alt-Tab
- LONG lpfnWndProc; // WndProc of calling app
-
- // Pixel Format Descriptior list.
- int nPixelFormatCount;
- DGL_pixelFormat *lpPF;
-#ifndef _USE_GLD3_WGL
- // ZBuffer pixel formats
- int nZBufferPFCount; // Count of Zbuffer pixel formats
- DDPIXELFORMAT *lpZBufferPF; // ZBuffer pixel formats
-
- // Display modes (for secondary devices)
- int nDisplayModeCount;
- DDSURFACEDESC2 *lpDisplayModes;
-
- // Texture pixel formats
- int nTextureFormatCount;
- DGL_textureFormat *lpTextureFormat;
-#endif // _USE_GLD3_WGL
- // Alpha emulation via chroma key
- BOOL bEmulateAlphaTest;
-
- // Geom pipeline override.
- // If this is set TRUE then the D3D pipeline will never be used,
- // and the Mesa pipline will always be used.
- BOOL bForceMesaPipeline;
-
-#ifdef _USE_GLD3_WGL
- BOOL bPixelformatsDirty; // Signal a list rebuild
-#endif
-
- // Additional globals to support multiple GL rendering contexts, GLRCs
- BOOL bDirectDraw; // DirectDraw interface exists ?
- BOOL bDirectDrawPrimary; // DirectDraw primary surface exists ?
- BOOL bDirect3D; // Direct3D interface exists ?
- BOOL bDirect3DDevice; // Direct3D device exists ?
-
- BOOL bDirectDrawStereo; // DirectDraw Stereo driver started ?
- int iDirectDrawStereo; // DirectDraw Stereo driver reference count
- HWND hWndActive; // copy of active window
-
- // Copies of DirectX COM interfaces for re-referencing across multiple GLRCs
-// IDirectDraw4 *lpDD4; // copy of DirectDraw interface
-// IDirectDrawSurface4 *lpPrimary4; // copy of DirectDraw primary surface
-// IDirectDrawSurface4 *lpBack4;
-// IDirectDrawSurface4 *lpDepth4;
-// IDirectDrawPalette *lpGlobalPalette;
-
- // Aids for heavy-duty MFC-windowed OGL apps, like AutoCAD
- BOOL bMessageBoxWarnings; // popup message box warning
- BOOL bDirectDrawPersistant; // DirectDraw is persisitant
- BOOL bPersistantBuffers; // DirectDraw buffers persisitant
-
- // FPU setup option for CAD precision (AutoCAD) vs GAME speed (Quake)
- BOOL bFastFPU; // single-precision-only FPU ?
-
- // Hot-Key support, like for real-time stereo parallax adjustments
- BOOL bHotKeySupport; // hot-key support ?
-
- // Multi-threaded support, for apps like 3DStudio
- BOOL bMultiThreaded; // multi-threaded ?
-
- // Detect and use app-specific customizations for apps like 3DStudio
- BOOL bAppCustomizations; // app customizations ?
-
-#ifdef _USE_GLD3_WGL
- DWORD dwAdapter; // Primary DX8 adapter
- DWORD dwTnL; // MesaSW TnL
- DWORD dwMultisample; // Multisample Off
- DWORD dwDriver; // Direct3D HW
- void *pDrvPrivate; // Driver-specific data
-#endif
-
-} DGL_globals;
-
-/*------------------------- Function Prototypes ---------------------------*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-DGL_globals glb;
-
-void dglInitGlobals();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglmacros.h b/mesalib/src/mesa/drivers/windows/gldirect/dglmacros.h
deleted file mode 100644
index aed0f2110..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglmacros.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Useful generic macros.
-*
-****************************************************************************/
-
-#ifndef __DGLMACROS_H
-#define __DGLMACROS_H
-
-#include <ddraw.h>
-
-// Define the relevant RELEASE macro depending on C or C++
-#if !defined(__cplusplus) || defined(CINTERFACE)
- // Standard C version
- #define RELEASE(x) if (x!=NULL) { x->lpVtbl->Release(x); x=NULL; }
-#else
- // C++ version
- #define RELEASE(x) if (x!=NULL) { x->Release(); x=NULL; }
-#endif
-
-// We don't want a message *every* time we call an unsupported function
-#define UNSUPPORTED(x) \
- { \
- static BOOL bFirstTime = TRUE; \
- if (bFirstTime) { \
- bFirstTime = FALSE; \
- ddlogError(DDLOG_WARN, (x), DDERR_CURRENTLYNOTAVAIL); \
- } \
- }
-
-#define DGL_CHECK_CONTEXT \
- if (ctx == NULL) return;
-
-// Don't render if bCanRender is not TRUE.
-#define DGL_CHECK_RENDER \
- if (!dgl->bCanRender) return;
-
-#if 0
-#define TRY(a,b) (a)
-#define TRY_ERR(a,b) (a)
-#else
-// hResult should be defined in the function
-// Return codes should be checked via SUCCEDDED and FAILED macros
-#define TRY(a,b) \
- { \
- if (FAILED(hResult=(a))) \
- ddlogError(DDLOG_ERROR, (b), hResult); \
- }
-
-// hResult is a global
-// The label exit_with_error should be defined within the calling scope
-#define TRY_ERR(a,b) \
- { \
- if (FAILED(hResult=(a))) { \
- ddlogError(DDLOG_ERROR, (b), hResult); \
- goto exit_with_error; \
- } \
- }
-#endif // #if 1
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglpf.c b/mesalib/src/mesa/drivers/windows/gldirect/dglpf.c
deleted file mode 100644
index 4cd4d0334..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglpf.c
+++ /dev/null
@@ -1,620 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ========================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Pixel Formats.
-*
-****************************************************************************/
-
-#include "dglpf.h"
-
-#ifdef _USE_GLD3_WGL
-#include "gld_driver.h"
-#endif
-
-// ***********************************************************************
-
-char szColorDepthWarning[] =
-"GLDirect does not support the current desktop\n\
-color depth.\n\n\
-You may need to change the display resolution to\n\
-16 bits per pixel or higher color depth using\n\
-the Windows Display Settings control panel\n\
-before running this OpenGL application.\n";
-
-// ***********************************************************************
-// This pixel format will be used as a template when compiling the list
-// of pixel formats supported by the hardware. Many fields will be
-// filled in at runtime.
-// PFD flag defaults are upgraded to match ChoosePixelFormat() -- DaveM
-DGL_pixelFormat pfTemplateHW =
-{
- {
- sizeof(PIXELFORMATDESCRIPTOR), // Size of the data structure
- 1, // Structure version - should be 1
- // Flags:
- PFD_DRAW_TO_WINDOW | // The buffer can draw to a window or device surface.
- PFD_DRAW_TO_BITMAP | // The buffer can draw to a bitmap. (DaveM)
- PFD_SUPPORT_GDI | // The buffer supports GDI drawing. (DaveM)
- PFD_SUPPORT_OPENGL | // The buffer supports OpenGL drawing.
- PFD_DOUBLEBUFFER | // The buffer is double-buffered.
- 0, // Placeholder for easy commenting of above flags
- PFD_TYPE_RGBA, // Pixel type RGBA.
- 16, // Total colour bitplanes (excluding alpha bitplanes)
- 5, 0, // Red bits, shift
- 5, 5, // Green bits, shift
- 5, 10, // Blue bits, shift
- 0, 0, // Alpha bits, shift (destination alpha)
- 0, // Accumulator bits (total)
- 0, 0, 0, 0, // Accumulator bits: Red, Green, Blue, Alpha
- 0, // Depth bits
- 0, // Stencil bits
- 0, // Number of auxiliary buffers
- 0, // Layer type
- 0, // Specifies the number of overlay and underlay planes.
- 0, // Layer mask
- 0, // Specifies the transparent color or index of an underlay plane.
- 0 // Damage mask
- },
- -1, // No depth/stencil buffer
-};
-
-// ***********************************************************************
-// Return the count of the number of bits in a Bit Mask.
-int BitCount(
- DWORD dw)
-{
- int i;
-
- if (dw == 0)
- return 0; // account for non-RGB mode
-
- for (i=0; dw; dw=dw>>1)
- i += (dw & 1);
- return i;
-}
-
-// ***********************************************************************
-
-DWORD BitShift(
- DWORD dwMaskIn)
-{
- DWORD dwShift, dwMask;
-
- if (dwMaskIn == 0)
- return 0; // account for non-RGB mode
-
- for (dwShift=0, dwMask=dwMaskIn; !(dwMask&1); dwShift++, dwMask>>=1);
-
- return dwShift;
-}
-
-// ***********************************************************************
-
-BOOL IsValidPFD(int iPFD)
-{
- DGL_pixelFormat *lpPF;
-
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- if ((glb.lpPF == NULL) ||
- (glb.nPixelFormatCount == 0))
- return FALSE;
-
- // Check PFD range
- if ( (iPFD < 1) || (iPFD > glb.nPixelFormatCount) ) {
- ddlogMessage(DDLOG_ERROR, "PFD out of range\n");
- return FALSE; // PFD is invalid
- }
-
- // Make a pointer to the pixel format
- lpPF = &glb.lpPF[iPFD-1];
-
- // Check size
- if (lpPF->pfd.nSize != sizeof(PIXELFORMATDESCRIPTOR)) {
- ddlogMessage(DDLOG_ERROR, "Bad PFD size\n");
- return FALSE; // PFD is invalid
- }
-
- // Check version
- if (lpPF->pfd.nVersion != 1) {
- ddlogMessage(DDLOG_ERROR, "PFD is not Version 1\n");
- return FALSE; // PFD is invalid
- }
-
- return TRUE; // PFD is valid
-}
-
-// ***********************************************************************
-
-#ifndef _USE_GLD3_WGL
-
-int iEnumCount; // Enumeration count
-DWORD dwDisplayBitDepth; // Bit depth of current display mode
-
-// ***********************************************************************
-
-HRESULT WINAPI EnumDisplayModesCallback(
- DDSURFACEDESC2* pddsd,
- void *pvContext)
-{
- DWORD dwModeDepth;
- DDSURFACEDESC2 *lpDisplayMode;
- char buf[32];
-
- // Check parameters
- if (pddsd == NULL)
- return DDENUMRET_CANCEL;
-
- dwModeDepth = pddsd->ddpfPixelFormat.dwRGBBitCount;
- lpDisplayMode = (DDSURFACEDESC2 *)pvContext;
-
- // Check mode for compatability with device.
- if (dwModeDepth != dwDisplayBitDepth)
- return DDENUMRET_OK;
-
- if (lpDisplayMode != NULL) {
- memcpy(&lpDisplayMode[iEnumCount], pddsd, sizeof(DDSURFACEDESC2));
- sprintf(buf, TEXT("Mode: %ld x %ld x %ld\n"),
- pddsd->dwWidth, pddsd->dwHeight, dwModeDepth);
- ddlogMessage(DDLOG_INFO, buf);
- }
-
- iEnumCount++;
-
- return DDENUMRET_OK;
-}
-
-// ***********************************************************************
-
-HRESULT CALLBACK d3dEnumZBufferFormatsCallback(
- DDPIXELFORMAT* pddpf,
- VOID* lpZBufferPF )
-{
- char buf[64];
-
- if(pddpf == NULL)
- return D3DENUMRET_CANCEL;
-
- if (pddpf->dwFlags & DDPF_ZBUFFER) {
- if (lpZBufferPF == NULL) {
- // Pass 1. Merely counting the PF
- glb.nZBufferPFCount++;
- } else {
- // Pass 2. Save the PF
- if (pddpf->dwFlags & DDPF_STENCILBUFFER) {
- sprintf(buf, " %d: Z=%d S=%d\n",
- iEnumCount,
- pddpf->dwZBufferBitDepth,
- pddpf->dwStencilBitDepth);
- } else {
- sprintf(buf, " %d: Z=%d S=0\n",
- iEnumCount,
- pddpf->dwZBufferBitDepth);
- }
- ddlogMessage(DDLOG_INFO, buf);
-
- memcpy(&glb.lpZBufferPF[iEnumCount++],
- pddpf,
- sizeof(DDPIXELFORMAT));
- }
- }
-
- return D3DENUMRET_OK;
-}
-#endif // _USE_GLD3_WGL
-
-// ***********************************************************************
-
-BOOL IsStencilSupportBroken(LPDIRECTDRAW4 lpDD4)
-{
- DDDEVICEIDENTIFIER dddi; // DX6 device identifier
- BOOL bBroken = FALSE;
-
- // Microsoft really fucked up with the GetDeviceIdentifier function
- // on Windows 2000, since it locks up on stock driers on the CD. Updated
- // drivers from vendors appear to work, but we can't identify the drivers
- // without this function!!! For now we skip these tests on Windows 2000.
- if ((GetVersion() & 0x80000000UL) == 0)
- return FALSE;
-
- // Obtain device info
- if (FAILED(IDirectDraw4_GetDeviceIdentifier(lpDD4, &dddi, 0)))
- return FALSE;
-
- // Matrox G400 stencil buffer support does not draw anything in AutoCAD,
- // but ordinary Z buffers draw shaded models fine. (DaveM)
- if (dddi.dwVendorId == 0x102B) { // Matrox
- if (dddi.dwDeviceId == 0x0525) { // G400
- bBroken = TRUE;
- }
- }
-
- return bBroken;
-}
-
-// ***********************************************************************
-
-void dglBuildPixelFormatList()
-{
- int i;
- char buf[128];
- char cat[8];
- DGL_pixelFormat *lpPF;
-
-#ifdef _USE_GLD3_WGL
- _gldDriver.BuildPixelformatList();
-#else
- HRESULT hRes;
- IDirectDraw *lpDD1 = NULL;
- IDirectDraw4 *lpDD4 = NULL;
- IDirect3D3 *lpD3D3 = NULL;
- DDSURFACEDESC2 ddsdDisplayMode;
-
- DWORD dwRb, dwGb, dwBb, dwAb; // Bit counts
- DWORD dwRs, dwGs, dwBs, dwAs; // Bit shifts
- DWORD dwPixelType; // RGB or color index
-
- // Set defaults
- glb.nPixelFormatCount = 0;
- glb.lpPF = NULL;
- glb.nZBufferPFCount = 0;
- glb.lpZBufferPF = NULL;
- glb.nDisplayModeCount = 0;
- glb.lpDisplayModes = NULL;
-
- //
- // Examine the hardware for depth and stencil
- //
-
- if (glb.bPrimary)
- hRes = DirectDrawCreate(NULL, &lpDD1, NULL);
- else
- hRes = DirectDrawCreate(&glb.ddGuid, &lpDD1, NULL);
-
- if (FAILED(hRes)) {
- ddlogError(DDLOG_ERROR, "dglBPFL: DirectDrawCreate failed", hRes);
- return;
- }
-
- // Query for DX6 IDirectDraw4.
- hRes = IDirectDraw_QueryInterface(
- lpDD1,
- &IID_IDirectDraw4,
- (void**)&lpDD4);
- if (FAILED(hRes)) {
- ddlogError(DDLOG_ERROR, "dglBPFL: QueryInterface (DD4) failed", hRes);
- goto clean_up;
- }
-
-
- // Retrieve caps of current display mode
- ZeroMemory(&ddsdDisplayMode, sizeof(ddsdDisplayMode));
- ddsdDisplayMode.dwSize = sizeof(ddsdDisplayMode);
- hRes = IDirectDraw4_GetDisplayMode(lpDD4, &ddsdDisplayMode);
- if (FAILED(hRes))
- goto clean_up;
-
- dwDisplayBitDepth = ddsdDisplayMode.ddpfPixelFormat.dwRGBBitCount;
- dwPixelType = (dwDisplayBitDepth <= 8) ? PFD_TYPE_COLORINDEX : PFD_TYPE_RGBA;
- dwRb = BitCount(ddsdDisplayMode.ddpfPixelFormat.dwRBitMask);
- dwGb = BitCount(ddsdDisplayMode.ddpfPixelFormat.dwGBitMask);
- dwBb = BitCount(ddsdDisplayMode.ddpfPixelFormat.dwBBitMask);
- dwRs = BitShift(ddsdDisplayMode.ddpfPixelFormat.dwRBitMask);
- dwGs = BitShift(ddsdDisplayMode.ddpfPixelFormat.dwGBitMask);
- dwBs = BitShift(ddsdDisplayMode.ddpfPixelFormat.dwBBitMask);
-
- if (BitCount(ddsdDisplayMode.ddpfPixelFormat.dwRGBAlphaBitMask)) {
- dwAb = BitCount(ddsdDisplayMode.ddpfPixelFormat.dwRGBAlphaBitMask);
- dwAs = BitShift(ddsdDisplayMode.ddpfPixelFormat.dwRGBAlphaBitMask);
- } else {
- dwAb = 0;
- dwAs = 0;
- }
-
- // Query for available display modes
- ddlogMessage(DDLOG_INFO, "\n");
- ddlogMessage(DDLOG_INFO, "Display Modes:\n");
-
- // Pass 1: Determine count
- iEnumCount = 0;
- hRes = IDirectDraw4_EnumDisplayModes(
- lpDD4,
- 0,
- NULL,
- NULL,
- EnumDisplayModesCallback);
- if (FAILED(hRes)) {
- ddlogError(DDLOG_ERROR, "dglBPFL: EnumDisplayModes failed", hRes);
- goto clean_up;
- }
- if (iEnumCount == 0) {
- ddlogMessage(DDLOG_ERROR, "dglBPFL: No display modes found");
- goto clean_up;
- }
- glb.lpDisplayModes = (DDSURFACEDESC2 *)calloc(iEnumCount,
- sizeof(DDSURFACEDESC2));
- if (glb.lpDisplayModes == NULL) {
- ddlogMessage(DDLOG_ERROR, "dglBPFL: DDSURFACEDESC2 calloc failed");
- goto clean_up;
- }
- glb.nDisplayModeCount = iEnumCount;
- // Pass 2: Save modes
- iEnumCount = 0;
- hRes = IDirectDraw4_EnumDisplayModes(
- lpDD4,
- 0,
- NULL,
- (void *)glb.lpDisplayModes,
- EnumDisplayModesCallback);
- if (FAILED(hRes)) {
- ddlogError(DDLOG_ERROR, "dglBPFL: EnumDisplayModes failed", hRes);
- goto clean_up;
- }
- // Query for IDirect3D3 interface
- hRes = IDirectDraw4_QueryInterface(
- lpDD4,
- &IID_IDirect3D3,
- (void**)&lpD3D3);
- if (FAILED(hRes)) {
- ddlogError(DDLOG_ERROR, "dglBPFL: QueryInterface (D3D3) failed", hRes);
- goto clean_up;
- }
-
- ddlogMessage(DDLOG_INFO, "\n");
- ddlogMessage(DDLOG_INFO, "ZBuffer formats:\n");
-
- // Pass 1. Count the ZBuffer pixel formats
- hRes = IDirect3D3_EnumZBufferFormats(
- lpD3D3,
- &glb.d3dGuid,
- d3dEnumZBufferFormatsCallback,
- NULL);
-
- if (FAILED(hRes))
- goto clean_up;
-
- if (glb.nZBufferPFCount) {
- glb.lpZBufferPF = (DDPIXELFORMAT *)calloc(glb.nZBufferPFCount,
- sizeof(DDPIXELFORMAT));
- if(glb.lpZBufferPF == NULL)
- goto clean_up;
-
- // Pass 2. Cache the ZBuffer pixel formats
- iEnumCount = 0; // (Used by the enum function)
- hRes = IDirect3D3_EnumZBufferFormats(
- lpD3D3,
- &glb.d3dGuid,
- d3dEnumZBufferFormatsCallback,
- glb.lpZBufferPF);
-
- if (FAILED(hRes))
- goto clean_up;
- }
-
- // Remove stencil support for boards which don't work for AutoCAD;
- // Matrox G400 does not work, but NVidia TNT2 and ATI Rage128 do... (DaveM)
- if (IsStencilSupportBroken(lpDD4)) {
- for (i=0; i<iEnumCount; i++)
- if (glb.lpZBufferPF[i].dwFlags & DDPF_STENCILBUFFER)
- glb.nZBufferPFCount--;
- }
-
- // One each for every ZBuffer pixel format (including no depth buffer)
- // Times-two because duplicated for single buffering (as opposed to double)
- glb.nPixelFormatCount = 2 * (glb.nZBufferPFCount + 1);
- glb.lpPF = (DGL_pixelFormat *)calloc(glb.nPixelFormatCount,
- sizeof(DGL_pixelFormat));
- if (glb.lpPF == NULL)
- goto clean_up;
- //
- // Fill in the pixel formats
- // Note: Depth buffer bits are really (dwZBufferBitDepth-dwStencilBitDepth)
- // but this will pass wierd numbers to the OpenGL app. (?)
- //
-
- pfTemplateHW.pfd.iPixelType = dwPixelType;
- pfTemplateHW.pfd.cColorBits = dwDisplayBitDepth;
- pfTemplateHW.pfd.cRedBits = dwRb;
- pfTemplateHW.pfd.cGreenBits = dwGb;
- pfTemplateHW.pfd.cBlueBits = dwBb;
- pfTemplateHW.pfd.cAlphaBits = dwAb;
- pfTemplateHW.pfd.cRedShift = dwRs;
- pfTemplateHW.pfd.cGreenShift = dwGs;
- pfTemplateHW.pfd.cBlueShift = dwBs;
- pfTemplateHW.pfd.cAlphaShift = dwAs;
-
- lpPF = glb.lpPF;
-
- // Fill in the double-buffered pixel formats
- for (i=0; i<(glb.nZBufferPFCount + 1); i++, lpPF++) {
- memcpy(lpPF, &pfTemplateHW, sizeof(DGL_pixelFormat));
- if (i) {
- lpPF->iZBufferPF = i-1;
- lpPF->pfd.cDepthBits = glb.lpZBufferPF[i-1].dwZBufferBitDepth;
- lpPF->pfd.cStencilBits = glb.lpZBufferPF[i-1].dwStencilBitDepth;
- }
- }
- // Fill in the single-buffered pixel formats
- for (i=0; i<(glb.nZBufferPFCount + 1); i++, lpPF++) {
- memcpy(lpPF, &pfTemplateHW, sizeof(DGL_pixelFormat));
- if (i) {
- lpPF->iZBufferPF = i-1;
- lpPF->pfd.cDepthBits = glb.lpZBufferPF[i-1].dwZBufferBitDepth;
- lpPF->pfd.cStencilBits = glb.lpZBufferPF[i-1].dwStencilBitDepth;
- }
- // Remove double-buffer flag. Could use XOR instead...
- lpPF->pfd.dwFlags &= (~(PFD_DOUBLEBUFFER));
- // Insert GDI flag for single buffered format only.
- lpPF->pfd.dwFlags |= PFD_SUPPORT_GDI;
- }
-#endif // _USE_GLD3_WGL
-
- // Lets dump the list to the log
- // ** Based on "wglinfo" by Nate Robins **
- ddlogMessage(DDLOG_INFO, "\n");
- ddlogMessage(DDLOG_INFO, "Pixel Formats:\n");
- ddlogMessage(DDLOG_INFO,
- " visual x bf lv rg d st r g b a ax dp st accum buffs ms\n");
- ddlogMessage(DDLOG_INFO,
- " id dep cl sp sz l ci b ro sz sz sz sz bf th cl r g b a ns b\n");
- ddlogMessage(DDLOG_INFO,
- "-----------------------------------------------------------------\n");
- for (i=0, lpPF = glb.lpPF; i<glb.nPixelFormatCount; i++, lpPF++) {
- sprintf(buf, "0x%02x ", i+1);
-
- sprintf(cat, "%2d ", lpPF->pfd.cColorBits);
- strcat(buf, cat);
- if(lpPF->pfd.dwFlags & PFD_DRAW_TO_WINDOW) sprintf(cat, "wn ");
- else if(lpPF->pfd.dwFlags & PFD_DRAW_TO_BITMAP) sprintf(cat, "bm ");
- else sprintf(cat, ". ");
- strcat(buf, cat);
-
- /* should find transparent pixel from LAYERPLANEDESCRIPTOR */
- sprintf(cat, " . ");
- strcat(buf, cat);
-
- sprintf(cat, "%2d ", lpPF->pfd.cColorBits);
- strcat(buf, cat);
-
- /* bReserved field indicates number of over/underlays */
- if(lpPF->pfd.bReserved) sprintf(cat, " %d ", lpPF->pfd.bReserved);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- sprintf(cat, " %c ", lpPF->pfd.iPixelType == PFD_TYPE_RGBA ? 'r' : 'c');
- strcat(buf, cat);
-
- sprintf(cat, "%c ", lpPF->pfd.dwFlags & PFD_DOUBLEBUFFER ? 'y' : '.');
- strcat(buf, cat);
-
- sprintf(cat, " %c ", lpPF->pfd.dwFlags & PFD_STEREO ? 'y' : '.');
- strcat(buf, cat);
-
- if(lpPF->pfd.cRedBits && lpPF->pfd.iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", lpPF->pfd.cRedBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cGreenBits && lpPF->pfd.iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", lpPF->pfd.cGreenBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cBlueBits && lpPF->pfd.iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", lpPF->pfd.cBlueBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cAlphaBits && lpPF->pfd.iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", lpPF->pfd.cAlphaBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cAuxBuffers) sprintf(cat, "%2d ", lpPF->pfd.cAuxBuffers);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cDepthBits) sprintf(cat, "%2d ", lpPF->pfd.cDepthBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cStencilBits) sprintf(cat, "%2d ", lpPF->pfd.cStencilBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cAccumRedBits) sprintf(cat, "%2d ", lpPF->pfd.cAccumRedBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cAccumGreenBits) sprintf(cat, "%2d ", lpPF->pfd.cAccumGreenBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cAccumBlueBits) sprintf(cat, "%2d ", lpPF->pfd.cAccumBlueBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(lpPF->pfd.cAccumAlphaBits) sprintf(cat, "%2d ", lpPF->pfd.cAccumAlphaBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- /* no multisample in Win32 */
- sprintf(cat, " . .\n");
- strcat(buf, cat);
-
- ddlogMessage(DDLOG_INFO, buf);
- }
- ddlogMessage(DDLOG_INFO,
- "-----------------------------------------------------------------\n");
- ddlogMessage(DDLOG_INFO, "\n");
-
-#ifndef _USE_GLD3_WGL
-clean_up:
- // Release COM objects
- RELEASE(lpD3D3);
- RELEASE(lpDD4);
- RELEASE(lpDD1);
-
- // Popup warning message if non RGB color mode
- if (dwDisplayBitDepth <= 8) {
- ddlogPrintf(DDLOG_WARN, "Current Color Depth %d bpp is not supported", dwDisplayBitDepth);
- MessageBox(NULL, szColorDepthWarning, "GLDirect", MB_OK | MB_ICONWARNING);
- }
-#endif // _USE_GLD3_WGL
-}
-
-// ***********************************************************************
-
-void dglReleasePixelFormatList()
-{
- glb.nPixelFormatCount = 0;
- if (glb.lpPF) {
- free(glb.lpPF);
- glb.lpPF = NULL;
- }
-#ifndef _USE_GLD3_WGL
- glb.nZBufferPFCount = 0;
- if (glb.lpZBufferPF) {
- free(glb.lpZBufferPF);
- glb.lpZBufferPF = NULL;
- }
- glb.nDisplayModeCount = 0;
- if (glb.lpDisplayModes) {
- free(glb.lpDisplayModes);
- glb.lpDisplayModes = NULL;
- }
-#endif // _USE_GLD3_WGL
-}
-
-// ***********************************************************************
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglpf.h b/mesalib/src/mesa/drivers/windows/gldirect/dglpf.h
deleted file mode 100644
index 8a7e38c4b..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglpf.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Pixel Formats.
-*
-****************************************************************************/
-
-#ifndef __DGLPF_H
-#define __DGLPF_H
-
-#ifndef STRICT
-#define STRICT
-#endif // STRICT
-#define WIN32_LEAN_AND_MEAN
-
-#include <windows.h>
-
-/*---------------------- Macros and type definitions ----------------------*/
-
-typedef struct {
- PIXELFORMATDESCRIPTOR pfd; // Win32 Pixel Format Descriptor
-#ifdef _USE_GLD3_WGL
- // Driver-specific data.
- // Example: The DX8 driver uses this to hold an index into a
- // list of depth-stencil descriptions.
- DWORD dwDriverData;
-#else
- int iZBufferPF; // Index of depth buffer pixel format
-#endif
-} DGL_pixelFormat;
-
-#include "dglglobals.h"
-
-/*------------------------- Function Prototypes ---------------------------*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-BOOL IsValidPFD(int iPFD);
-void dglBuildPixelFormatList();
-void dglReleasePixelFormatList();
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglwgl.c b/mesalib/src/mesa/drivers/windows/gldirect/dglwgl.c
deleted file mode 100644
index 37e681dfc..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglwgl.c
+++ /dev/null
@@ -1,2964 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: OpenGL window functions (wgl*).
-*
-****************************************************************************/
-
-#include "dglwgl.h"
-#ifdef _USE_GLD3_WGL
-#include "gld_driver.h"
-#endif
-
-#include "gl/glu.h" // MUST USE MICROSOFT'S GLU32!
-
-#ifndef _USE_GLD3_WGL
-extern DGL_mesaFuncs mesaFuncs;
-#endif
-
-// Need to export wgl* functions if using GLD3,
-// otherwise export GLD2 DGL_* functions.
-#ifdef _USE_GLD3_WGL
-#define _GLD_WGL_EXPORT(a) wgl##a
-#else
-#define _GLD_WGL_EXPORT(a) DGL_##a
-#endif
-
-// Calls into Mesa 4.x are different
-#ifdef _USE_GLD3_WGL
-#include "dlist.h"
-#include "drawpix.h"
-#include "get.h"
-#include "matrix.h"
-// NOTE: All the _GLD* macros now call the gl* functions direct.
-// This ensures that the correct internal pathway is taken. KeithH
-#define _GLD_glNewList glNewList
-#define _GLD_glBitmap glBitmap
-#define _GLD_glEndList glEndList
-#define _GLD_glDeleteLists glDeleteLists
-#define _GLD_glGetError glGetError
-#define _GLD_glTranslatef glTranslatef
-#define _GLD_glBegin glBegin
-#define _GLD_glVertex2fv glVertex2fv
-#define _GLD_glEnd glEnd
-#define _GLD_glNormal3f glNormal3f
-#define _GLD_glVertex3f glVertex3f
-#define _GLD_glVertex3fv glVertex3fv
-#else // _USE_GLD3_WGL
-#define _GLD_glNewList (*mesaFuncs.glNewList)
-#define _GLD_glBitmap (*mesaFuncs.glBitmap)
-#define _GLD_glEndList (*mesaFuncs.glEndList)
-#define _GLD_glDeleteLists (*mesaFuncs.glDeleteLists)
-#define _GLD_glGetError (*mesaFuncs.glGetError)
-#define _GLD_glTranslatef (*mesaFuncs.glTranslatef)
-#define _GLD_glBegin (*mesaFuncs.glBegin)
-#define _GLD_glVertex2fv (*mesaFuncs.glVertex2fv)
-#define _GLD_glEnd (*mesaFuncs.glEnd)
-#define _GLD_glNormal3f (*mesaFuncs.glNormal3f)
-#define _GLD_glVertex3f (*mesaFuncs.glVertex3f)
-#define _GLD_glVertex3fv (*mesaFuncs.glVertex3fv)
-#endif // _USE_GLD3_WGL
-
-// ***********************************************************************
-
-// Emulate SGI DDK calls.
-#define __wglMalloc(a) GlobalAlloc(GPTR, (a))
-#define __wglFree(a) GlobalFree((a))
-
-// ***********************************************************************
-
-// Mesa glu.h and MS glu.h call these different things...
-//#define GLUtesselator GLUtriangulatorObj
-//#define GLU_TESS_VERTEX_DATA GLU_VERTEX_DATA
-
-// For wglFontOutlines
-
-typedef GLUtesselator *(APIENTRY *gluNewTessProto)(void);
-typedef void (APIENTRY *gluDeleteTessProto)(GLUtesselator *tess);
-typedef void (APIENTRY *gluTessBeginPolygonProto)(GLUtesselator *tess, void *polygon_data);
-typedef void (APIENTRY *gluTessBeginContourProto)(GLUtesselator *tess);
-typedef void (APIENTRY *gluTessVertexProto)(GLUtesselator *tess, GLdouble coords[3], void *data);
-typedef void (APIENTRY *gluTessEndContourProto)(GLUtesselator *tess);
-typedef void (APIENTRY *gluTessEndPolygonProto)(GLUtesselator *tess);
-typedef void (APIENTRY *gluTessPropertyProto)(GLUtesselator *tess, GLenum which, GLdouble value);
-typedef void (APIENTRY *gluTessNormalProto)(GLUtesselator *tess, GLdouble x, GLdouble y, GLdouble z);
-typedef void (APIENTRY *gluTessCallbackProto)(GLUtesselator *tess, GLenum which, void (CALLBACK *)());
-
-static HINSTANCE gluModuleHandle;
-static gluNewTessProto gluNewTessProc;
-static gluDeleteTessProto gluDeleteTessProc;
-static gluTessBeginPolygonProto gluTessBeginPolygonProc;
-static gluTessBeginContourProto gluTessBeginContourProc;
-static gluTessVertexProto gluTessVertexProc;
-static gluTessEndContourProto gluTessEndContourProc;
-static gluTessEndPolygonProto gluTessEndPolygonProc;
-static gluTessPropertyProto gluTessPropertyProc;
-static gluTessNormalProto gluTessNormalProc;
-static gluTessCallbackProto gluTessCallbackProc;
-
-static HFONT hNewFont, hOldFont;
-static FLOAT ScaleFactor;
-
-#define LINE_BUF_QUANT 4000
-#define VERT_BUF_QUANT 4000
-
-static FLOAT* LineBuf;
-static DWORD LineBufSize;
-static DWORD LineBufIndex;
-static FLOAT* VertBuf;
-static DWORD VertBufSize;
-static DWORD VertBufIndex;
-static GLenum TessErrorOccurred;
-
-static int AppendToLineBuf(
- FLOAT value);
-
-static int AppendToVertBuf(
- FLOAT value);
-
-static int DrawGlyph(
- UCHAR* glyphBuf,
- DWORD glyphSize,
- FLOAT chordalDeviation,
- FLOAT extrusion,
- INT format);
-
-static void FreeLineBuf(void);
-
-static void FreeVertBuf(void);
-
-static long GetWord(
- UCHAR** p);
-
-static long GetDWord(
- UCHAR** p);
-
-static double GetFixed(
- UCHAR** p);
-
-static int InitLineBuf(void);
-
-static int InitVertBuf(void);
-
-static HFONT CreateHighResolutionFont(
- HDC hDC);
-
-static int MakeDisplayListFromGlyph(
- DWORD listName,
- UCHAR* glyphBuf,
- DWORD glyphSize,
- LPGLYPHMETRICSFLOAT glyphMetricsFloat,
- FLOAT chordalDeviation,
- FLOAT extrusion,
- INT format);
-
-static BOOL LoadGLUTesselator(void);
-static BOOL UnloadGLUTesselator(void);
-
-static int MakeLinesFromArc(
- FLOAT x0,
- FLOAT y0,
- FLOAT x1,
- FLOAT y1,
- FLOAT x2,
- FLOAT y2,
- DWORD vertexCountIndex,
- FLOAT chordalDeviationSquared);
-
-static int MakeLinesFromGlyph( UCHAR* glyphBuf,
- DWORD glyphSize,
- FLOAT chordalDeviation);
-
-static int MakeLinesFromTTLine( UCHAR** pp,
- DWORD vertexCountIndex,
- WORD pointCount);
-
-static int MakeLinesFromTTPolycurve( UCHAR** pp,
- DWORD vertexCountIndex,
- FLOAT chordalDeviation);
-
-static int MakeLinesFromTTPolygon( UCHAR** pp,
- FLOAT chordalDeviation);
-
-static int MakeLinesFromTTQSpline( UCHAR** pp,
- DWORD vertexCountIndex,
- WORD pointCount,
- FLOAT chordalDeviation);
-
-static void CALLBACK TessCombine( double coords[3],
- void* vertex_data[4],
- FLOAT weight[4],
- void** outData);
-
-static void CALLBACK TessError( GLenum error);
-
-static void CALLBACK TessVertexOutData( FLOAT p[3],
- GLfloat z);
-
-// ***********************************************************************
-
-#ifdef GLD_THREADS
-#pragma message("compiling DGLWGL.C vars for multi-threaded support")
-extern CRITICAL_SECTION CriticalSection;
-extern DWORD dwTLSPixelFormat; // TLS index for current pixel format
-#endif
-int curPFD = 0; // Current PFD (static)
-
-// ***********************************************************************
-
-int dglGetPixelFormat(void)
-{
-#ifdef GLD_THREADS
- int iPixelFormat;
- // get thread-specific instance
- if (glb.bMultiThreaded) {
- __try {
- iPixelFormat = (int)TlsGetValue(dwTLSPixelFormat);
- }
- __except(EXCEPTION_EXECUTE_HANDLER) {
- iPixelFormat = curPFD;
- }
- }
- // get global static var
- else {
- iPixelFormat = curPFD;
- }
- return iPixelFormat;
-#else
- return curPFD;
-#endif
-}
-
-// ***********************************************************************
-
-void dglSetPixelFormat(int iPixelFormat)
-{
-#ifdef GLD_THREADS
- // set thread-specific instance
- if (glb.bMultiThreaded) {
- __try {
- TlsSetValue(dwTLSPixelFormat, (LPVOID)iPixelFormat);
- }
- __except(EXCEPTION_EXECUTE_HANDLER) {
- curPFD = iPixelFormat;
- }
- }
- // set global static var
- else {
- curPFD = iPixelFormat;
- }
-#else
- curPFD = iPixelFormat;
-#endif
-}
-
-// ***********************************************************************
-
-int APIENTRY _GLD_WGL_EXPORT(ChoosePixelFormat)(
- HDC a,
- CONST PIXELFORMATDESCRIPTOR *ppfd)
-{
- DGL_pixelFormat *lpPF = glb.lpPF;
-
- PIXELFORMATDESCRIPTOR ppfdBest;
- int i;
- int bestIndex = -1;
- int numPixelFormats;
- DWORD dwFlags;
-
- char buf[128];
- char cat[8];
-
- DWORD dwAllFlags =
- PFD_DRAW_TO_WINDOW |
- PFD_DRAW_TO_BITMAP |
- PFD_SUPPORT_GDI |
- PFD_SUPPORT_OPENGL |
- PFD_GENERIC_FORMAT |
- PFD_NEED_PALETTE |
- PFD_NEED_SYSTEM_PALETTE |
- PFD_DOUBLEBUFFER |
- PFD_STEREO |
- /*PFD_SWAP_LAYER_BUFFERS |*/
- PFD_DOUBLEBUFFER_DONTCARE |
- PFD_STEREO_DONTCARE |
- PFD_SWAP_COPY |
- PFD_SWAP_EXCHANGE |
- PFD_GENERIC_ACCELERATED |
- 0;
-
- // Validate license
- if (!dglValidate())
- return 0;
-
- // List may not be built until dglValidate() is called! KeithH
- lpPF = glb.lpPF;
-
- //
- // Lets print the input pixel format to the log
- // ** Based on "wglinfo" by Nate Robins **
- //
- ddlogMessage(DDLOG_SYSTEM, "ChoosePixelFormat:\n");
- ddlogMessage(DDLOG_INFO, "Input pixel format for ChoosePixelFormat:\n");
- ddlogMessage(DDLOG_INFO,
- " visual x bf lv rg d st r g b a ax dp st accum buffs ms\n");
- ddlogMessage(DDLOG_INFO,
- " id dep cl sp sz l ci b ro sz sz sz sz bf th cl r g b a ns b\n");
- ddlogMessage(DDLOG_INFO,
- "-----------------------------------------------------------------\n");
- sprintf(buf, " . ");
-
- sprintf(cat, "%2d ", ppfd->cColorBits);
- strcat(buf, cat);
- if(ppfd->dwFlags & PFD_DRAW_TO_WINDOW) sprintf(cat, "wn ");
- else if(ppfd->dwFlags & PFD_DRAW_TO_BITMAP) sprintf(cat, "bm ");
- else sprintf(cat, ". ");
- strcat(buf, cat);
-
- /* should find transparent pixel from LAYERPLANEDESCRIPTOR */
- sprintf(cat, " . ");
- strcat(buf, cat);
-
- sprintf(cat, "%2d ", ppfd->cColorBits);
- strcat(buf, cat);
-
- /* bReserved field indicates number of over/underlays */
- if(ppfd->bReserved) sprintf(cat, " %d ", ppfd->bReserved);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- sprintf(cat, " %c ", ppfd->iPixelType == PFD_TYPE_RGBA ? 'r' : 'c');
- strcat(buf, cat);
-
- sprintf(cat, "%c ", ppfd->dwFlags & PFD_DOUBLEBUFFER ? 'y' : '.');
- strcat(buf, cat);
-
- sprintf(cat, " %c ", ppfd->dwFlags & PFD_STEREO ? 'y' : '.');
- strcat(buf, cat);
-
- if(ppfd->cRedBits && ppfd->iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", ppfd->cRedBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cGreenBits && ppfd->iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", ppfd->cGreenBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cBlueBits && ppfd->iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", ppfd->cBlueBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cAlphaBits && ppfd->iPixelType == PFD_TYPE_RGBA)
- sprintf(cat, "%2d ", ppfd->cAlphaBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cAuxBuffers) sprintf(cat, "%2d ", ppfd->cAuxBuffers);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cDepthBits) sprintf(cat, "%2d ", ppfd->cDepthBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cStencilBits) sprintf(cat, "%2d ", ppfd->cStencilBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cAccumRedBits) sprintf(cat, "%2d ", ppfd->cAccumRedBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cAccumGreenBits) sprintf(cat, "%2d ", ppfd->cAccumGreenBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cAccumBlueBits) sprintf(cat, "%2d ", ppfd->cAccumBlueBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- if(ppfd->cAccumAlphaBits) sprintf(cat, "%2d ", ppfd->cAccumAlphaBits);
- else sprintf(cat, " . ");
- strcat(buf, cat);
-
- /* no multisample in Win32 */
- sprintf(cat, " . .\n");
- strcat(buf, cat);
-
- ddlogMessage(DDLOG_INFO, buf);
- ddlogMessage(DDLOG_INFO,
- "-----------------------------------------------------------------\n");
- ddlogMessage(DDLOG_INFO, "\n");
-
- //
- // Examine the flags for correctness
- //
- dwFlags = ppfd->dwFlags;
- if (dwFlags != (dwFlags & dwAllFlags))
- {
- /* error: bad dwFlags */
- ddlogPrintf(DDLOG_WARN,
- "ChoosePixelFormat: bad flags (0x%x)",
- dwFlags & (~dwAllFlags));
- // Mask illegal flags and continue
- dwFlags = dwFlags & dwAllFlags;
- }
-
- switch (ppfd->iPixelType) {
- case PFD_TYPE_RGBA:
- case PFD_TYPE_COLORINDEX:
- break;
- default:
- /* error: bad iPixelType */
- ddlogMessage(DDLOG_WARN, "ChoosePixelFormat: bad pixel type\n");
- return 0;
- }
-
- switch (ppfd->iLayerType) {
- case PFD_MAIN_PLANE:
- case PFD_OVERLAY_PLANE:
- case PFD_UNDERLAY_PLANE:
- break;
- default:
- /* error: bad iLayerType */
- ddlogMessage(DDLOG_WARN, "ChoosePixelFormat: bad layer type\n");
- return 0;
- }
-
- numPixelFormats = glb.nPixelFormatCount;
-
- /* loop through candidate pixel format descriptors */
- for (i=0; i<numPixelFormats; ++i) {
- PIXELFORMATDESCRIPTOR ppfdCandidate;
-
- memcpy(&ppfdCandidate, &lpPF[i].pfd, sizeof(PIXELFORMATDESCRIPTOR));
-
- /*
- ** Check attributes which must match
- */
- if (ppfd->iPixelType != ppfdCandidate.iPixelType) {
- continue;
- }
-
- if (ppfd->iLayerType != ppfdCandidate.iLayerType) {
- continue;
- }
-
- if (((dwFlags ^ ppfdCandidate.dwFlags) & dwFlags) &
- (PFD_DRAW_TO_WINDOW | PFD_DRAW_TO_BITMAP |
- PFD_SUPPORT_GDI | PFD_SUPPORT_OPENGL))
- {
- continue;
- }
-
- if (!(dwFlags & PFD_DOUBLEBUFFER_DONTCARE)) {
- if ((dwFlags & PFD_DOUBLEBUFFER) !=
- (ppfdCandidate.dwFlags & PFD_DOUBLEBUFFER))
- {
- continue;
- }
- }
-
-// if (!(dwFlags & PFD_STEREO_DONTCARE)) {
- if ((dwFlags & PFD_STEREO) !=
- (ppfdCandidate.dwFlags & PFD_STEREO))
- {
- continue;
- }
-// }
-
- if (ppfd->iPixelType==PFD_TYPE_RGBA
- && ppfd->cAlphaBits && !ppfdCandidate.cAlphaBits) {
- continue;
- }
-
- if (ppfd->iPixelType==PFD_TYPE_RGBA
- && ppfd->cAccumBits && !ppfdCandidate.cAccumBits) {
- continue;
- }
-
- if (ppfd->cDepthBits && !ppfdCandidate.cDepthBits) {
- continue;
- }
-
- if (ppfd->cStencilBits && !ppfdCandidate.cStencilBits) {
- continue;
- }
-
- if (ppfd->cAuxBuffers && !ppfdCandidate.cAuxBuffers) {
- continue;
- }
-
- /*
- ** See if candidate is better than the previous best choice
- */
- if (bestIndex == -1) {
- ppfdBest = ppfdCandidate;
- bestIndex = i;
- continue;
- }
-
- if ((ppfd->cColorBits > ppfdBest.cColorBits &&
- ppfdCandidate.cColorBits > ppfdBest.cColorBits) ||
- (ppfd->cColorBits <= ppfdCandidate.cColorBits &&
- ppfdCandidate.cColorBits < ppfdBest.cColorBits))
- {
- ppfdBest = ppfdCandidate;
- bestIndex = i;
- continue;
- }
-
- if (ppfd->iPixelType==PFD_TYPE_RGBA
- && ppfd->cAlphaBits
- && ppfdCandidate.cAlphaBits > ppfdBest.cAlphaBits)
- {
- ppfdBest = ppfdCandidate;
- bestIndex = i;
- continue;
- }
-
- if (ppfd->iPixelType==PFD_TYPE_RGBA
- && ppfd->cAccumBits
- && ppfdCandidate.cAccumBits > ppfdBest.cAccumBits)
- {
- ppfdBest = ppfdCandidate;
- bestIndex = i;
- continue;
- }
-
- if ((ppfd->cDepthBits > ppfdBest.cDepthBits &&
- ppfdCandidate.cDepthBits > ppfdBest.cDepthBits) ||
- (ppfd->cDepthBits <= ppfdCandidate.cDepthBits &&
- ppfdCandidate.cDepthBits < ppfdBest.cDepthBits))
- {
- ppfdBest = ppfdCandidate;
- bestIndex = i;
- continue;
- }
-
- if (ppfd->cStencilBits &&
- ppfdCandidate.cStencilBits > ppfdBest.cStencilBits)
- {
- ppfdBest = ppfdCandidate;
- bestIndex = i;
- continue;
- }
-
- if (ppfd->cAuxBuffers &&
- ppfdCandidate.cAuxBuffers > ppfdBest.cAuxBuffers)
- {
- ppfdBest = ppfdCandidate;
- bestIndex = i;
- continue;
- }
- }
-
- if (bestIndex != -1) {
- ddlogPrintf(DDLOG_SYSTEM, "Pixel Format %d chosen as best match", bestIndex+1);
- return bestIndex + 1;
- }
-
- // Return the pixelformat that has the most capabilities.
- // ** NOTE: This is only possible due to the way the list
- // of pixelformats is built. **
- // Now picks best pixelformat. KeithH
- bestIndex = numPixelFormats; // most capable double buffer format
- ddlogPrintf(DDLOG_SYSTEM, "Pixel Format %d chosen by default", bestIndex);
- return (bestIndex);
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(CopyContext)(
- HGLRC a,
- HGLRC b,
- UINT c)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
- UNSUPPORTED("wglCopyContext")
- return FALSE; // Failed
-}
-
-// ***********************************************************************
-
-HGLRC APIENTRY _GLD_WGL_EXPORT(CreateContext)(
- HDC a)
-{
- int ipf;
-
- // Validate license
- if (!dglValidate())
- return 0;
-
- // Check that the current PFD is valid
- ipf = dglGetPixelFormat();
- if (!IsValidPFD(ipf))
- return (HGLRC)0;
-
- return dglCreateContext(a, &glb.lpPF[ipf-1]);
-}
-
-// ***********************************************************************
-
-HGLRC APIENTRY _GLD_WGL_EXPORT(CreateLayerContext)(
- HDC a,
- int b)
-{
- // Validate license
- if (!dglValidate())
- return 0;
-
- UNSUPPORTED("wglCreateLayerContext")
- return NULL; // Failed
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(DeleteContext)(
- HGLRC a)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- return dglDeleteContext(a);
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(DescribeLayerPlane)(
- HDC hDC,
- int iPixelFormat,
- int iLayerPlane,
- UINT nBytes,
- LPLAYERPLANEDESCRIPTOR plpd)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- UNSUPPORTED("DGL_DescribeLayerPlane")
-
-// gldLogPrintf(GLDLOG_INFO, "DescribeLayerPlane: %d, %d", iPixelFormat, iLayerPlane);
-
- return FALSE;
-}
-
-// ***********************************************************************
-
-int APIENTRY _GLD_WGL_EXPORT(DescribePixelFormat)(
- HDC a,
- int b,
- UINT c,
- LPPIXELFORMATDESCRIPTOR d)
-{
- UINT nSize;
-
- // Validate license
- if (!dglValidate())
- return 0;
-
- if (d == NULL) // Calling app requires max number of PF's
- return glb.nPixelFormatCount;
-
- // The supplied buffer may be larger than the info that we
- // will be copying.
- if (c > sizeof(PIXELFORMATDESCRIPTOR))
- nSize = sizeof(PIXELFORMATDESCRIPTOR);
- else
- nSize = c;
-
- // Setup an empty PFD before doing validation check
- memset(d, 0, nSize);
- d->nSize = nSize;
- d->nVersion = 1;
-
- if (!IsValidPFD(b))
- return 0; // Bail if PFD index is invalid
-
- memcpy(d, &glb.lpPF[b-1].pfd, nSize);
-
- return glb.nPixelFormatCount;
-}
-
-// ***********************************************************************
-
-HGLRC APIENTRY _GLD_WGL_EXPORT(GetCurrentContext)(void)
-{
- // Validate license
- if (!dglValidate())
- return 0;
-
- return dglGetCurrentContext();
-}
-
-// ***********************************************************************
-
-HDC APIENTRY _GLD_WGL_EXPORT(GetCurrentDC)(void)
-{
- // Validate license
- if (!dglValidate())
- return 0;
-
- return dglGetCurrentDC();
-}
-
-// ***********************************************************************
-
-PROC APIENTRY _GLD_WGL_EXPORT(GetDefaultProcAddress)(
- LPCSTR a)
-{
- // Validate license
- if (!dglValidate())
- return NULL;
-
- UNSUPPORTED("DGL_GetDefaultProcAddress")
- return NULL;
-}
-
-// ***********************************************************************
-
-int APIENTRY _GLD_WGL_EXPORT(GetLayerPaletteEntries)(
- HDC a,
- int b,
- int c,
- int d,
- COLORREF *e)
-{
- // Validate license
- if (!dglValidate())
- return 0;
-
- UNSUPPORTED("DGL_GetLayerPaletteEntries")
- return 0;
-}
-
-// ***********************************************************************
-
-int APIENTRY _GLD_WGL_EXPORT(GetPixelFormat)(
- HDC a)
-{
- // Validate license
- if (!dglValidate())
- return 0;
-
- return dglGetPixelFormat();
-}
-
-// ***********************************************************************
-
-PROC APIENTRY _GLD_WGL_EXPORT(GetProcAddress)(
- LPCSTR a)
-{
- PROC dglGetProcAddressD3D(LPCSTR a);
-
- // Validate license
- if (!dglValidate())
- return NULL;
-
-#ifdef _USE_GLD3_WGL
- return _gldDriver.wglGetProcAddress(a);
-#else
- return dglGetProcAddressD3D(a);
-#endif
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(MakeCurrent)(
- HDC a,
- HGLRC b)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- return dglMakeCurrent(a, b);
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(RealizeLayerPalette)(
- HDC a,
- int b,
- BOOL c)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- UNSUPPORTED("DGL_RealizeLayerPalette")
- return FALSE;
-}
-
-// ***********************************************************************
-
-int APIENTRY _GLD_WGL_EXPORT(SetLayerPaletteEntries)(
- HDC a,
- int b,
- int c,
- int d,
- CONST COLORREF *e)
-{
- // Validate license
- if (!dglValidate())
- return 0;
-
- UNSUPPORTED("DGL_SetLayerPaletteEntries")
- return 0;
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(SetPixelFormat)(
- HDC a,
- int b,
- CONST PIXELFORMATDESCRIPTOR *c)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- if (IsValidPFD(b)) {
- ddlogPrintf(DDLOG_SYSTEM, "SetPixelFormat: PixelFormat %d has been set", b);
- dglSetPixelFormat(b);
- return TRUE;
- } else {
- ddlogPrintf(DDLOG_ERROR,
- "SetPixelFormat: PixelFormat %d is invalid and cannot be set", b);
- return FALSE;
- }
-}
-
-// ***********************************************************************
-/*
- * Share lists between two gl_context structures.
- * This was added for WIN32 WGL function support, since wglShareLists()
- * must be called *after* wglCreateContext() with valid GLRCs. (DaveM)
- */
-//
-// Copied from GLD2.x. KeithH
-//
-static GLboolean _gldShareLists(
- struct gl_context *ctx1,
- struct gl_context *ctx2)
-{
- /* Sanity check context pointers */
- if (ctx1 == NULL || ctx2 == NULL)
- return GL_FALSE;
- /* Sanity check shared list pointers */
- if (ctx1->Shared == NULL || ctx2->Shared == NULL)
- return GL_FALSE;
- /* Decrement reference count on sharee to release previous list */
- ctx2->Shared->RefCount--;
-#if 0 /* 3DStudio exits on this memory release */
- if (ctx2->Shared->RefCount == 0)
- free_shared_state(ctx2, ctx2->Shared);
-#endif
- /* Re-assign list from sharer to sharee and increment reference count */
- ctx2->Shared = ctx1->Shared;
- ctx1->Shared->RefCount++;
- return GL_TRUE;
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(ShareLists)(
- HGLRC a,
- HGLRC b)
-{
- DGL_ctx *dgl1, *dgl2;
-
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- // Mesa supports shared lists, but you need to supply the shared
- // GL context info when calling gl_create_context(). An auxiliary
- // function gl_share_lists() has been added to update the shared
- // list info after the GL contexts have been created. (DaveM)
- dgl1 = dglGetContextAddress(a);
- dgl2 = dglGetContextAddress(b);
- if (dgl1->bAllocated && dgl2->bAllocated) {
-#ifdef _USE_GLD3_WGL
- return _gldShareLists(dgl1->glCtx, dgl2->glCtx);
-#else
- return (*mesaFuncs.gl_share_lists)(dgl1->glCtx, dgl2->glCtx);
-#endif
- }
- return FALSE;
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(SwapBuffers)(
- HDC a)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- return dglSwapBuffers(a);
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(SwapLayerBuffers)(
- HDC a,
- UINT b)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- return dglSwapBuffers(a);
-}
-
-// ***********************************************************************
-
-// ***********************************************************************
-// Note: This ResizeBuffers() function may be called from
-// either MESA glViewport() or GLD wglMakeCurrent().
-
-BOOL dglWglResizeBuffers(
- struct gl_context *ctx,
- BOOL bDefaultDriver)
-{
- DGL_ctx *dgl = NULL;
- RECT rcScreenRect;
- DWORD dwWidth;
- DWORD dwHeight;
- DDSURFACEDESC2 ddsd2;
- DDSCAPS2 ddscaps2;
- IDirectDrawClipper *lpddClipper = NULL;
- DWORD dwFlags;
- HRESULT hResult;
-
- DWORD dwMemoryType;
-
- int i;
- struct gl_texture_object *tObj;
- struct gl_texture_image *image;
-
- BOOL bWasFullscreen;
- BOOL bSaveDesktop;
- BOOL bFullScrnWin = FALSE;
- DDSURFACEDESC2 ddsd2DisplayMode;
-
- DDBLTFX ddbltfx;
- POINT pt;
- RECT rcDst;
-#ifdef _USE_GLD3_WGL
- GLD_displayMode glddm;
-#endif
-
-#define DDLOG_CRITICAL_OR_WARN (bDefaultDriver ? DDLOG_WARN : DDLOG_CRITICAL)
-
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- // Sanity checks
- if (ctx == NULL)
- return FALSE;
- dgl = ctx->DriverCtx;
- if (dgl == NULL)
- return FALSE;
-
- // Get the window size and calculate its dimensions
- if (dgl->hWnd == NULL) {
- // Check for non-window DC = memory DC ?
- if (GetClipBox(dgl->hDC, &rcScreenRect) == ERROR)
- SetRect(&rcScreenRect, 0, 0, 0, 0);
- }
- else if (!GetClientRect(dgl->hWnd, &rcScreenRect))
- SetRect(&rcScreenRect, 0, 0, 0, 0);
- dwWidth = rcScreenRect.right - rcScreenRect.left;
- dwHeight = rcScreenRect.bottom - rcScreenRect.top;
- CopyRect(&dgl->rcScreenRect, &rcScreenRect);
-
- // This will occur on Alt-Tab
- if ((dwWidth == 0) && (dwHeight == 0)) {
- //dgl->bCanRender = FALSE;
- return TRUE; // No resize possible!
- }
-
- // Some apps zero only 1 dimension for non-visible window... (DaveM)
- if ((dwWidth == 0) || (dwHeight == 0)) {
- dwWidth = 8;
- dwHeight = 8;
- }
-
- // Test to see if a resize is required.
- // Note that the dimensions will be the same if a prior resize attempt failed.
- if ((dwWidth == dgl->dwWidth) && (dwHeight == dgl->dwHeight) && bDefaultDriver) {
- return TRUE; // No resize required
- }
-
- ddlogPrintf(DDLOG_SYSTEM, "dglResize: %dx%d", dwWidth, dwHeight);
-#ifndef _USE_GLD3_WGL
- // Work out where we want our surfaces created
- dwMemoryType = (bDefaultDriver) ? glb.dwMemoryType : DDSCAPS_SYSTEMMEMORY;
-#endif // _USE_GLD3_WGL
-
- // Note previous fullscreen vs window display status
- bWasFullscreen = dgl->bFullscreen;
-
-#ifdef _USE_GLD3_WGL
- if (_gldDriver.GetDisplayMode(dgl, &glddm)) {
- if ( (dwWidth == glddm.Width) &&
- (dwHeight == glddm.Height) ) {
- bFullScrnWin = TRUE;
- }
- if (bFullScrnWin && glb.bPrimary && !glb.bFullscreenBlit && !glb.bDirectDrawPersistant) {
- dgl->bFullscreen = TRUE;
- ddlogMessage(DDLOG_INFO, "Fullscreen window after resize.\n");
- }
- else {
- dgl->bFullscreen = FALSE;
- ddlogMessage(DDLOG_INFO, "Non-Fullscreen window after resize.\n");
- }
- // Cache the display mode dimensions
- dgl->dwModeWidth = glddm.Width;
- dgl->dwModeHeight = glddm.Height;
- }
-
- // Clamp the effective window dimensions to primary surface.
- // We need to do this for D3D viewport dimensions even if wide
- // surfaces are supported. This also is a good idea for handling
- // whacked-out window dimensions passed for non-drawable windows
- // like Solid Edge. (DaveM)
- if (dgl->dwWidth > glddm.Width)
- dgl->dwWidth = glddm.Width;
- if (dgl->dwHeight > glddm.Height)
- dgl->dwHeight = glddm.Height;
-#else // _USE_GLD3_WGL
- // Window resize may have changed to fullscreen
- ZeroMemory(&ddsd2DisplayMode, sizeof(ddsd2DisplayMode));
- ddsd2DisplayMode.dwSize = sizeof(ddsd2DisplayMode);
- hResult = IDirectDraw4_GetDisplayMode(
- dgl->lpDD4,
- &ddsd2DisplayMode);
- if (SUCCEEDED(hResult)) {
- if ( (dwWidth == ddsd2DisplayMode.dwWidth) &&
- (dwHeight == ddsd2DisplayMode.dwHeight) ) {
- bFullScrnWin = TRUE;
- }
- if (bFullScrnWin && glb.bPrimary && !glb.bFullscreenBlit && !glb.bDirectDrawPersistant) {
- dgl->bFullscreen = TRUE;
- ddlogMessage(DDLOG_INFO, "Fullscreen window after resize.\n");
- }
- else {
- dgl->bFullscreen = FALSE;
- ddlogMessage(DDLOG_INFO, "Non-Fullscreen window after resize.\n");
- }
- // Cache the display mode dimensions
- dgl->dwModeWidth = ddsd2DisplayMode.dwWidth;
- dgl->dwModeHeight = ddsd2DisplayMode.dwHeight;
- }
-
- // Clamp the effective window dimensions to primary surface.
- // We need to do this for D3D viewport dimensions even if wide
- // surfaces are supported. This also is a good idea for handling
- // whacked-out window dimensions passed for non-drawable windows
- // like Solid Edge. (DaveM)
- if (dgl->dwWidth > ddsd2DisplayMode.dwWidth)
- dgl->dwWidth = ddsd2DisplayMode.dwWidth;
- if (dgl->dwHeight > ddsd2DisplayMode.dwHeight)
- dgl->dwHeight = ddsd2DisplayMode.dwHeight;
-#endif // _USE_GLD3_WGL
-
- // Note if fullscreen vs window display has changed?
- bSaveDesktop = (!bWasFullscreen && !dgl->bFullscreen) ? TRUE : FALSE;
- // Save the desktop primary surface from being destroyed
- // whenever remaining in windowed mode, since the stereo mode
- // switches are expensive...
-
-#ifndef _USE_GLD3_WGL
- // Don't need to re-allocate persistant buffers. (DaveM)
- // Though we should clear the back buffers to hide artifacts.
- if (glb.bDirectDrawPersistant && glb.bPersistantBuffers) {
- dgl->dwWidth = dwWidth;
- dgl->dwHeight = dwHeight;
- ZeroMemory(&ddbltfx, sizeof(ddbltfx));
- ddbltfx.dwSize = sizeof(ddbltfx);
- ddbltfx.dwFillColor = dgl->dwClearColorPF;
- IDirectDrawSurface4_Blt(dgl->lpBack4, &rcScreenRect, NULL, NULL,
- DDBLT_WAIT | DDBLT_COLORFILL, &ddbltfx);
- return TRUE;
- }
-
- // Ensure all rendering is complete
- if (ctx->Driver.Finish)
- (*ctx->Driver.Finish)(ctx);
- if (dgl->bSceneStarted == TRUE) {
- IDirect3DDevice3_EndScene(dgl->lpDev3);
- dgl->bSceneStarted = FALSE;
- }
-#endif // _USE_GLD3_WGL
- dgl->bCanRender = FALSE;
-
-#ifdef GLD_THREADS
- // Serialize access to DirectDraw and DDS operations
- if (glb.bMultiThreaded)
- EnterCriticalSection(&CriticalSection);
-#endif
-
-#ifndef _USE_GLD3_WGL
- // Release existing surfaces
- RELEASE(dgl->lpDev3);
- RELEASE(dgl->lpDepth4);
- RELEASE(dgl->lpBack4);
- if (glb.bDirectDrawPersistant && glb.bDirectDrawPrimary)
- ;
- else
- RELEASE(dgl->lpFront4);
-#endif // _USE_GLD3_WGL
- dgl->dwWidth = dwWidth;
- dgl->dwHeight = dwHeight;
-
- // Set defaults
- dgl->dwModeWidth = dgl->dwWidth;
- dgl->dwModeHeight = dgl->dwHeight;
-
-#ifdef _USE_GLD3_WGL
- if (!_gldDriver.ResizeDrawable(dgl, bDefaultDriver, glb.bDirectDrawPersistant, glb.bPersistantBuffers))
- goto cleanup_and_return_with_error;
-#else // _USE_GLD3_WGL
-
- if (dgl->bFullscreen) {
- //
- // FULLSCREEN
- //
-
- // Disable warning popups when in fullscreen mode
- ddlogWarnOption(FALSE);
-
- // Have to release the persistant DirectDraw primary surface
- // if switching to fullscreen mode. So if application wants
- // persistant display in fullscreen mode, a fullscreen-size
- // window should be used instead via fullscreen-blit option.
- if (glb.bDirectDrawPersistant && glb.bDirectDrawPrimary) {
- RELEASE(glb.lpPrimary4);
- glb.bDirectDrawPrimary = FALSE;
- }
-
- dwFlags = DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN | DDSCL_ALLOWREBOOT;
- if (glb.bFastFPU)
- dwFlags |= DDSCL_FPUSETUP; // optional
- hResult = IDirectDraw4_SetCooperativeLevel(dgl->lpDD4, dgl->hWnd, dwFlags);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: Unable to set Exclusive Fullscreen mode", hResult);
- goto cleanup_and_return_with_error;
- }
-
- hResult = IDirectDraw4_SetDisplayMode(dgl->lpDD4,
- dgl->dwModeWidth,
- dgl->dwModeHeight,
- dgl->dwBPP,
- 0,
- 0);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: SetDisplayMode failed", hResult);
- goto cleanup_and_return_with_error;
- }
-
- // ** The display mode has changed, so dont use MessageBox! **
-
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
-
- if (dgl->bDoubleBuffer) {
- // Double buffered
- // Primary surface
- ddsd2.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
- DDSCAPS_FLIP |
- DDSCAPS_COMPLEX |
- DDSCAPS_3DDEVICE |
- dwMemoryType;
- ddsd2.dwBackBufferCount = 1;
- hResult = IDirectDraw4_CreateSurface(dgl->lpDD4, &ddsd2, &dgl->lpFront4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: CreateSurface (primary) failed", hResult);
- goto cleanup_and_return_with_error;
- }
- // Render target surface
- ZeroMemory(&ddscaps2, sizeof(ddscaps2)); // Clear the entire struct.
- ddscaps2.dwCaps = DDSCAPS_BACKBUFFER;
- hResult = IDirectDrawSurface4_GetAttachedSurface(dgl->lpFront4, &ddscaps2, &dgl->lpBack4);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: GetAttachedSurface failed", hResult);
- goto cleanup_and_return_with_error;
- }
- } else {
- // Single buffered
- // Primary surface
- ddsd2.dwFlags = DDSD_CAPS;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
- //DDSCAPS_3DDEVICE |
- dwMemoryType;
-
- hResult = IDirectDraw4_CreateSurface(dgl->lpDD4, &ddsd2, &dgl->lpFront4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: CreateSurface (primary) failed", hResult);
- goto cleanup_and_return_with_error;
- }
-
- dgl->lpBack4 = NULL;
- }
- } else {
- // WINDOWED
-
- // OK to enable warning popups in windowed mode
- ddlogWarnOption(glb.bMessageBoxWarnings);
-
- // Ditto if persistant DirectDraw primary
- if (glb.bDirectDrawPersistant && glb.bDirectDrawPrimary)
- goto DoClipperOnly;
-
- // WINDOWED
- dwFlags = DDSCL_NORMAL;
- if (glb.bMultiThreaded)
- dwFlags |= DDSCL_MULTITHREADED;
- if (glb.bFastFPU)
- dwFlags |= DDSCL_FPUSETUP; // optional
- hResult = IDirectDraw4_SetCooperativeLevel(dgl->lpDD4,
- dgl->hWnd,
- dwFlags);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: Unable to set Normal coop level", hResult);
- goto cleanup_and_return_with_error;
- }
- // Primary surface
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
- ddsd2.dwFlags = DDSD_CAPS;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
- hResult = IDirectDraw4_CreateSurface(dgl->lpDD4, &ddsd2, &dgl->lpFront4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: CreateSurface (primary) failed", hResult);
- goto cleanup_and_return_with_error;
- }
-
- // Cache the primary surface for persistant DirectDraw state
- if (glb.bDirectDrawPersistant && !glb.bDirectDrawPrimary) {
- glb.lpPrimary4 = dgl->lpFront4;
- IDirectDrawSurface4_AddRef(glb.lpPrimary4);
- glb.bDirectDrawPrimary = TRUE;
- }
-
- // Clipper object
- hResult = DirectDrawCreateClipper(0, &lpddClipper, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: CreateClipper failed", hResult);
- goto cleanup_and_return_with_error;
- }
- hResult = IDirectDrawClipper_SetHWnd(lpddClipper, 0, dgl->hWnd);
- if (FAILED(hResult)) {
- RELEASE(lpddClipper);
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: SetHWnd failed", hResult);
- goto cleanup_and_return_with_error;
- }
- hResult = IDirectDrawSurface4_SetClipper(dgl->lpFront4, lpddClipper);
- RELEASE(lpddClipper); // We have finished with it.
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: SetClipper failed", hResult);
- goto cleanup_and_return_with_error;
- }
-DoClipperOnly:
- // Update the window for the original clipper
- if ((glb.bDirectDrawPersistant && glb.bDirectDrawPrimary) || bSaveDesktop) {
- IDirectDrawSurface4_GetClipper(dgl->lpFront4, &lpddClipper);
- IDirectDrawClipper_SetHWnd(lpddClipper, 0, dgl->hWnd);
- RELEASE(lpddClipper);
- }
-
- if (dgl->bDoubleBuffer) {
- // Render target surface
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
- ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT;
- ddsd2.dwWidth = dgl->dwWidth;
- ddsd2.dwHeight = dgl->dwHeight;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_3DDEVICE |
- DDSCAPS_OFFSCREENPLAIN |
- dwMemoryType;
- hResult = IDirectDraw4_CreateSurface(dgl->lpDD4, &ddsd2, &dgl->lpBack4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: Create Backbuffer failed", hResult);
- goto cleanup_and_return_with_error;
- }
-
- } else {
- dgl->lpBack4 = NULL;
- }
- }
-
- //
- // Now create the Zbuffer
- //
- if (dgl->bDepthBuffer) {
- // Get z-buffer dimensions from the render target
- // Setup the surface desc for the z-buffer.
- ZeroMemory(&ddsd2, sizeof(ddsd2));
- ddsd2.dwSize = sizeof(ddsd2);
- ddsd2.dwFlags = DDSD_CAPS | DDSD_WIDTH | DDSD_HEIGHT | DDSD_PIXELFORMAT;
- ddsd2.ddsCaps.dwCaps = DDSCAPS_ZBUFFER | dwMemoryType;
- ddsd2.dwWidth = dgl->dwWidth;
- ddsd2.dwHeight = dgl->dwHeight;
- memcpy(&ddsd2.ddpfPixelFormat,
- &glb.lpZBufferPF[dgl->iZBufferPF],
- sizeof(DDPIXELFORMAT) );
-
- // Create a z-buffer
- hResult = IDirectDraw4_CreateSurface(dgl->lpDD4, &ddsd2, &dgl->lpDepth4, NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: CreateSurface (ZBuffer) failed", hResult);
- goto cleanup_and_return_with_error;
- }
-
- // Attach Zbuffer to render target
- TRY(IDirectDrawSurface4_AddAttachedSurface(
- dgl->bDoubleBuffer ? dgl->lpBack4 : dgl->lpFront4,
- dgl->lpDepth4),
- "dglResize: Attach Zbuffer");
-
- }
-
- // Clear the newly resized back buffers for the window client area.
- ZeroMemory(&ddbltfx, sizeof(ddbltfx));
- ddbltfx.dwSize = sizeof(ddbltfx);
- ddbltfx.dwFillColor = dgl->dwClearColorPF;
- IDirectDrawSurface4_Blt(dgl->lpBack4, &rcScreenRect, NULL, NULL,
- DDBLT_WAIT | DDBLT_COLORFILL, &ddbltfx);
-
- //
- // Now that we have a zbuffer we can create the 3D device
- //
- hResult = IDirect3D3_CreateDevice(dgl->lpD3D3,
- bDefaultDriver ? &glb.d3dGuid : &IID_IDirect3DRGBDevice,
- dgl->bDoubleBuffer ? dgl->lpBack4 : dgl->lpFront4,
- &dgl->lpDev3,
- NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: Could not create Direct3D device", hResult);
- goto cleanup_and_return_with_error;
- }
-
- // We must do this as soon as the device is created
- dglInitStateCaches(dgl);
-
- //
- // Viewport
- //
- hResult = IDirect3DDevice3_AddViewport(dgl->lpDev3, dgl->lpViewport3);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: AddViewport failed", hResult);
- goto cleanup_and_return_with_error;
- }
-
- // Initialise the viewport
- dgl->d3dViewport.dwSize = sizeof(dgl->d3dViewport);
- dgl->d3dViewport.dwX = 0;
- dgl->d3dViewport.dwY = 0;
- dgl->d3dViewport.dwWidth = dgl->dwWidth;
- dgl->d3dViewport.dwHeight = dgl->dwHeight;
- dgl->d3dViewport.dvClipX = 0;
- dgl->d3dViewport.dvClipY = 0;
- dgl->d3dViewport.dvClipWidth = dgl->dwWidth;
- dgl->d3dViewport.dvClipHeight = dgl->dwHeight;
-// dgl->d3dViewport.dvMinZ = 0.0f;
-// dgl->d3dViewport.dvMaxZ = 1.0f;
- TRY(IDirect3DViewport3_SetViewport2(dgl->lpViewport3, &dgl->d3dViewport),
- "dglResize: SetViewport2");
-
- hResult = IDirect3DDevice3_SetCurrentViewport(dgl->lpDev3, dgl->lpViewport3);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: SetCurrentViewport failed", hResult);
- goto cleanup_and_return_with_error;
- }
-
- // (Re)Initialise all the Direct3D renderstates
- dglInitStateD3D(ctx);
-
- // Now we have to recreate all of our textures (+ mipmaps).
- // Walk over all textures in hash table
- // XXX what about the default texture objects (id=0)?
- {
- struct _mesa_HashTable *textures = ctx->Shared->TexObjects;
- GLuint id;
- for (id = _mesa_HashFirstEntry(textures);
- id;
- id = _mesa_HashNextEntry(textures, id)) {
- tObj = (struct gl_texture_object *) _mesa_HashLookup(textures, id);
- if (tObj->DriverData) {
- // We could call our TexImage function directly, but it's
- // safer to use the driver pointer.
- for (i=0; i<MAX_TEXTURE_LEVELS; i++) {
- image = tObj->Image[i];
- if (image) {
- switch (tObj->Dimensions){
- case 1:
- if (ctx->Driver.TexImage)
- (*ctx->Driver.TexImage)(ctx, GL_TEXTURE_1D, tObj, i, image->Format, image);
- break;
- case 2:
- if (ctx->Driver.TexImage)
- (*ctx->Driver.TexImage)(ctx, GL_TEXTURE_2D, tObj, i, image->Format, image);
- break;
- default:
- break;
- }
- }
- }
- }
- }
- }
-
- // Re-Bind each texture Unit
- for (i=0; i<glb.wMaxSimultaneousTextures; i++) {
- tObj = ctx->Texture.Unit[i].Current;
- if (tObj) {
- DGL_texture *lpTex = (DGL_texture *)tObj->DriverData;
- hResult = dglSetTexture(dgl, i, lpTex ? lpTex->lpTexture : NULL);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_ERROR, "dglResize: SetTexture failed", hResult);
- }
- }
- }
-#endif // _USE_GLD3_WGL
-
- dgl->bCanRender = TRUE;
-
-#ifdef GLD_THREADS
- // Release serialized access
- if (glb.bMultiThreaded)
- LeaveCriticalSection(&CriticalSection);
-#endif
-
- // SUCCESS.
- return TRUE;
-
-cleanup_and_return_with_error:
- // Relase all interfaces before returning.
-#ifdef _USE_GLD3_WGL
- _gldDriver.DestroyDrawable(dgl);
-#else // _USE_GLD3_WGL
- RELEASE(dgl->lpDev3);
- RELEASE(dgl->lpDepth4);
- RELEASE(dgl->lpBack4);
- if (glb.bDirectDrawPersistant && glb.bDirectDrawPrimary)
- ;
- else
- RELEASE(dgl->lpFront4);
-
-#undef DDLOG_CRITICAL_OR_WARN
-#endif // _USE_GLD3_WGL
-
- // Mark context as not being able to render
- dgl->bCanRender = FALSE;
-
-#ifdef GLD_THREADS
- // Release serialized access
- if (glb.bMultiThreaded)
- LeaveCriticalSection(&CriticalSection);
-#endif
-
- return FALSE;
-}
-
-// ***********************************************************************
-// ***********************************************************************
-// Support for bitmap fonts.
-// ***********************************************************************
-// ***********************************************************************
-
-/*****************************************************************************
-**
-** InvertGlyphBitmap.
-**
-** Invert the bitmap so that it suits OpenGL's representation.
-** Each row starts on a double word boundary.
-**
-*****************************************************************************/
-
-static void InvertGlyphBitmap(
- int w,
- int h,
- DWORD *fptr,
- DWORD *tptr)
-{
- int dWordsInRow = (w+31)/32;
- int i, j;
- DWORD *tmp = tptr;
-
- if (w <= 0 || h <= 0) {
- return;
- }
-
- tptr += ((h-1)*dWordsInRow);
- for (i = 0; i < h; i++) {
- for (j = 0; j < dWordsInRow; j++) {
- *(tptr + j) = *(fptr + j);
- }
- tptr -= dWordsInRow;
- fptr += dWordsInRow;
- }
-}
-
-// ***********************************************************************
-
-/*****************************************************************************
- * wglUseFontBitmaps
- *
- * Converts a subrange of the glyphs in a GDI font to OpenGL display
- * lists.
- *
- * Extended to support any GDI font, not just TrueType fonts. (DaveM)
- *
- *****************************************************************************/
-
-BOOL APIENTRY _GLD_WGL_EXPORT(UseFontBitmapsA)(
- HDC hDC,
- DWORD first,
- DWORD count,
- DWORD listBase)
-{
- int i, ox, oy, ix, iy;
- int w, h;
- int iBufSize, iCurBufSize = 0;
- DWORD *bitmapBuffer = NULL;
- DWORD *invertedBitmapBuffer = NULL;
- BOOL bSuccessOrFail = TRUE;
- BOOL bTrueType = FALSE;
- TEXTMETRIC tm;
- GLYPHMETRICS gm;
- RASTERIZER_STATUS rs;
- MAT2 mat;
- SIZE size;
- RECT rect;
- HDC hDCMem;
- HBITMAP hBitmap;
- BITMAPINFO bmi;
- HFONT hFont;
-
- // Validate SciTech DirectGL license
- if (!dglValidate())
- return FALSE;
-
- // Set up a unity matrix.
- ZeroMemory(&mat, sizeof(mat));
- mat.eM11.value = 1;
- mat.eM22.value = 1;
-
- // Test to see if selected font is TrueType or not
- ZeroMemory(&tm, sizeof(tm));
- if (!GetTextMetrics(hDC, &tm)) {
- ddlogMessage(DDLOG_ERROR, "DGL_UseFontBitmaps: Font metrics error\n");
- return (FALSE);
- }
- bTrueType = (tm.tmPitchAndFamily & TMPF_TRUETYPE) ? TRUE : FALSE;
-
- // Test to see if TRUE-TYPE capabilities are installed
- // (only necessary if TrueType font selected)
- ZeroMemory(&rs, sizeof(rs));
- if (bTrueType) {
- if (!GetRasterizerCaps (&rs, sizeof (RASTERIZER_STATUS))) {
- ddlogMessage(DDLOG_ERROR, "DGL_UseFontBitmaps: Raster caps error\n");
- return (FALSE);
- }
- if (!(rs.wFlags & TT_ENABLED)) {
- ddlogMessage(DDLOG_ERROR, "DGL_UseFontBitmaps: No TrueType caps\n");
- return (FALSE);
- }
- }
-
- // Trick to get the current font handle
- hFont = SelectObject(hDC, GetStockObject(SYSTEM_FONT));
- SelectObject(hDC, hFont);
-
- // Have memory device context available for holding bitmaps of font glyphs
- hDCMem = CreateCompatibleDC(hDC);
- SelectObject(hDCMem, hFont);
- SetTextColor(hDCMem, RGB(0xFF, 0xFF, 0xFF));
- SetBkColor(hDCMem, 0);
-
- for (i = first; (DWORD) i < (first + count); i++) {
- // Find out how much space is needed for the bitmap so we can
- // Set the buffer size correctly.
- if (bTrueType) {
- // Use TrueType support to get bitmap size of glyph
- iBufSize = GetGlyphOutline(hDC, i, GGO_BITMAP, &gm,
- 0, NULL, &mat);
- if (iBufSize == GDI_ERROR) {
- bSuccessOrFail = FALSE;
- break;
- }
- }
- else {
- // Use generic GDI support to compute bitmap size of glyph
- w = tm.tmMaxCharWidth;
- h = tm.tmHeight;
- if (GetTextExtentPoint32(hDC, (LPCTSTR)&i, 1, &size)) {
- w = size.cx;
- h = size.cy;
- }
- iBufSize = w * h;
- // Use DWORD multiple for compatibility
- iBufSize += 3;
- iBufSize /= 4;
- iBufSize *= 4;
- }
-
- // If we need to allocate Larger Buffers, then do so - but allocate
- // An extra 50 % so that we don't do too many mallocs !
- if (iBufSize > iCurBufSize) {
- if (bitmapBuffer) {
- __wglFree(bitmapBuffer);
- }
- if (invertedBitmapBuffer) {
- __wglFree(invertedBitmapBuffer);
- }
-
- iCurBufSize = iBufSize * 2;
- bitmapBuffer = (DWORD *) __wglMalloc(iCurBufSize);
- invertedBitmapBuffer = (DWORD *) __wglMalloc(iCurBufSize);
-
- if (bitmapBuffer == NULL || invertedBitmapBuffer == NULL) {
- bSuccessOrFail = FALSE;
- break;
- }
- }
-
- // If we fail to get the Glyph data, delete the display lists
- // Created so far and return FALSE.
- if (bTrueType) {
- // Use TrueType support to get bitmap of glyph
- if (GetGlyphOutline(hDC, i, GGO_BITMAP, &gm,
- iBufSize, bitmapBuffer, &mat) == GDI_ERROR) {
- bSuccessOrFail = FALSE;
- break;
- }
-
- // Setup glBitmap parameters for current font glyph
- w = gm.gmBlackBoxX;
- h = gm.gmBlackBoxY;
- ox = gm.gmptGlyphOrigin.x;
- oy = gm.gmptGlyphOrigin.y;
- ix = gm.gmCellIncX;
- iy = gm.gmCellIncY;
- }
- else {
- // Use generic GDI support to create bitmap of glyph
- ZeroMemory(bitmapBuffer, iBufSize);
-
- if (i >= tm.tmFirstChar && i <= tm.tmLastChar) {
- // Only create bitmaps for actual font glyphs
- hBitmap = CreateBitmap(w, h, 1, 1, NULL);
- SelectObject(hDCMem, hBitmap);
- // Make bitmap of current font glyph
- SetRect(&rect, 0, 0, w, h);
- DrawText(hDCMem, (LPCTSTR)&i, 1, &rect,
- DT_LEFT | DT_BOTTOM | DT_SINGLELINE | DT_NOCLIP);
- // Make copy of bitmap in our local buffer
- ZeroMemory(&bmi, sizeof(bmi));
- bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bmi.bmiHeader.biWidth = w;
- bmi.bmiHeader.biHeight = -h;
- bmi.bmiHeader.biPlanes = 1;
- bmi.bmiHeader.biBitCount = 1;
- bmi.bmiHeader.biCompression = BI_RGB;
- GetDIBits(hDCMem, hBitmap, 0, h, bitmapBuffer, &bmi, 0);
- DeleteObject(hBitmap);
- }
- else {
- // Otherwise use empty display list for non-existing glyph
- iBufSize = 0;
- }
-
- // Setup glBitmap parameters for current font glyph
- ox = 0;
- oy = tm.tmDescent;
- ix = w;
- iy = 0;
- }
-
- // Create an OpenGL display list.
- _GLD_glNewList((listBase + i), GL_COMPILE);
-
- // Some fonts have no data for the space character, yet advertise
- // a non-zero size.
- if (0 == iBufSize) {
- _GLD_glBitmap(0, 0, 0.0f, 0.0f, (GLfloat) ix, (GLfloat) iy, NULL);
- } else {
- // Invert the Glyph data.
- InvertGlyphBitmap(w, h, bitmapBuffer, invertedBitmapBuffer);
-
- // Render an OpenGL bitmap and invert the origin.
- _GLD_glBitmap(w, h,
- (GLfloat) ox, (GLfloat) (h-oy),
- (GLfloat) ix, (GLfloat) iy,
- (GLubyte *) invertedBitmapBuffer);
- }
-
- // Close this display list.
- _GLD_glEndList();
- }
-
- if (bSuccessOrFail == FALSE) {
- ddlogMessage(DDLOG_ERROR, "DGL_UseFontBitmaps: Get glyph failed\n");
- _GLD_glDeleteLists((i+listBase), (i-first));
- }
-
- // Release resources used
- DeleteObject(hFont);
- DeleteDC(hDCMem);
-
- if (bitmapBuffer)
- __wglFree(bitmapBuffer);
- if (invertedBitmapBuffer)
- __wglFree(invertedBitmapBuffer);
-
- return(bSuccessOrFail);
-}
-
-// ***********************************************************************
-
-BOOL APIENTRY _GLD_WGL_EXPORT(UseFontBitmapsW)(
- HDC a,
- DWORD b,
- DWORD c,
- DWORD d)
-{
- // Validate license
- if (!dglValidate())
- return FALSE;
-
- return _GLD_WGL_EXPORT(UseFontBitmapsA)(a, b, c, d);
-}
-
-// ***********************************************************************
-// ***********************************************************************
-// Support for outline TrueType fonts.
-// ***********************************************************************
-// ***********************************************************************
-
-void * __wglRealloc(
- void *oldPtr,
- size_t newSize)
-{
- void *newPtr = NULL;
-
- if (newSize != 0) {
- newPtr = (void *) GlobalAlloc(GPTR, newSize);
- if (oldPtr && newPtr) {
- DWORD oldSize = GlobalSize(oldPtr);
-
- memcpy(newPtr, oldPtr, (oldSize <= newSize ? oldSize : newSize));
- GlobalFree(oldPtr);
- }
- } else if (oldPtr) {
- GlobalFree(oldPtr);
- }
- if (newPtr == NULL) {
- return NULL; /* XXX out of memory error */
- }
- return newPtr;
-}
-
-// ***********************************************************************
-
-
-/*****************************************************************************
- * wglUseFontOutlinesW
- *
- * Converts a subrange of the glyphs in a TrueType font to OpenGL display
- * lists.
- *****************************************************************************/
-
-BOOL APIENTRY _GLD_WGL_EXPORT(UseFontOutlinesW)(
- IN HDC hDC,
- IN DWORD first,
- IN DWORD count,
- IN DWORD listBase,
- IN FLOAT chordalDeviation,
- IN FLOAT extrusion,
- IN INT format,
- OUT LPGLYPHMETRICSFLOAT lpgmf)
-{
- return _GLD_WGL_EXPORT(UseFontOutlinesA)(hDC, first, count, listBase,
- chordalDeviation, extrusion, format, lpgmf);
-}
-
-/*****************************************************************************
- * wglUseFontOutlinesA
- *
- * Converts a subrange of the glyphs in a TrueType font to OpenGL display
- * lists.
- *****************************************************************************/
-
-BOOL APIENTRY _GLD_WGL_EXPORT(UseFontOutlinesA)(
- IN HDC hDC,
- IN DWORD first,
- IN DWORD count,
- IN DWORD listBase,
- IN FLOAT chordalDeviation,
- IN FLOAT extrusion,
- IN INT format,
- OUT LPGLYPHMETRICSFLOAT glyphMetricsFloatArray)
- {
- DWORD glyphIndex;
- UCHAR* glyphBuf;
- DWORD glyphBufSize;
-
-
- /*
- * Flush any previous OpenGL errors. This allows us to check for
- * new errors so they can be reported via the function return value.
- */
- while (_GLD_glGetError() != GL_NO_ERROR)
- ;
-
- /*
- * Make sure that the current font can be sampled accurately.
- */
- hNewFont = CreateHighResolutionFont(hDC);
- if (!hNewFont)
- return FALSE;
-
- hOldFont = SelectObject(hDC, hNewFont);
- if (!hOldFont)
- return FALSE;
-
- /*
- * Preallocate a buffer for the outline data, and track its size:
- */
- glyphBuf = (UCHAR*) __wglMalloc(glyphBufSize = 10240);
- if (!glyphBuf)
- return FALSE; /*WGL_STATUS_NOT_ENOUGH_MEMORY*/
-
- /*
- * Process each glyph in the given range:
- */
- for (glyphIndex = first; glyphIndex - first < count; ++glyphIndex)
- {
- GLYPHMETRICS glyphMetrics;
- DWORD glyphSize;
- static MAT2 matrix =
- {
- {0, 1}, {0, 0},
- {0, 0}, {0, 1}
- };
- LPGLYPHMETRICSFLOAT glyphMetricsFloat =
- &glyphMetricsFloatArray[glyphIndex - first];
-
-
- /*
- * Determine how much space is needed to store the glyph's
- * outlines. If our glyph buffer isn't large enough,
- * resize it.
- */
- glyphSize = GetGlyphOutline( hDC,
- glyphIndex,
- GGO_NATIVE,
- &glyphMetrics,
- 0,
- NULL,
- &matrix
- );
- if (glyphSize < 0)
- return FALSE; /*WGL_STATUS_FAILURE*/
- if (glyphSize > glyphBufSize)
- {
- __wglFree(glyphBuf);
- glyphBuf = (UCHAR*) __wglMalloc(glyphBufSize = glyphSize);
- if (!glyphBuf)
- return FALSE; /*WGL_STATUS_NOT_ENOUGH_MEMORY*/
- }
-
-
- /*
- * Get the glyph's outlines.
- */
- if (GetGlyphOutline( hDC,
- glyphIndex,
- GGO_NATIVE,
- &glyphMetrics,
- glyphBufSize,
- glyphBuf,
- &matrix
- ) < 0)
- {
- __wglFree(glyphBuf);
- return FALSE; /*WGL_STATUS_FAILURE*/
- }
-
- glyphMetricsFloat->gmfBlackBoxX =
- (FLOAT) glyphMetrics.gmBlackBoxX * ScaleFactor;
- glyphMetricsFloat->gmfBlackBoxY =
- (FLOAT) glyphMetrics.gmBlackBoxY * ScaleFactor;
- glyphMetricsFloat->gmfptGlyphOrigin.x =
- (FLOAT) glyphMetrics.gmptGlyphOrigin.x * ScaleFactor;
- glyphMetricsFloat->gmfptGlyphOrigin.y =
- (FLOAT) glyphMetrics.gmptGlyphOrigin.y * ScaleFactor;
- glyphMetricsFloat->gmfCellIncX =
- (FLOAT) glyphMetrics.gmCellIncX * ScaleFactor;
- glyphMetricsFloat->gmfCellIncY =
- (FLOAT) glyphMetrics.gmCellIncY * ScaleFactor;
-
- /*
- * Turn the glyph into a display list:
- */
- if (!MakeDisplayListFromGlyph( (glyphIndex - first) + listBase,
- glyphBuf,
- glyphSize,
- glyphMetricsFloat,
- chordalDeviation + ScaleFactor,
- extrusion,
- format))
- {
- __wglFree(glyphBuf);
- return FALSE; /*WGL_STATUS_FAILURE*/
- }
- }
-
-
- /*
- * Clean up temporary storage and return. If an error occurred,
- * clear all OpenGL error flags and return FAILURE status;
- * otherwise just return SUCCESS.
- */
- __wglFree(glyphBuf);
-
- SelectObject(hDC, hOldFont);
-
- if (_GLD_glGetError() == GL_NO_ERROR)
- return TRUE; /*WGL_STATUS_SUCCESS*/
- else
- {
- while (_GLD_glGetError() != GL_NO_ERROR)
- ;
- return FALSE; /*WGL_STATUS_FAILURE*/
- }
- }
-
-
-
-/*****************************************************************************
- * CreateHighResolutionFont
- *
- * Gets metrics for the current font and creates an equivalent font
- * scaled to the design units of the font.
- *
- *****************************************************************************/
-
-static HFONT
-CreateHighResolutionFont(HDC hDC)
- {
- UINT otmSize;
- OUTLINETEXTMETRIC *otm;
- LONG fontHeight, fontWidth, fontUnits;
- LOGFONT logFont;
-
- otmSize = GetOutlineTextMetrics(hDC, 0, NULL);
- if (otmSize == 0)
- return NULL;
-
- otm = (OUTLINETEXTMETRIC *) __wglMalloc(otmSize);
- if (otm == NULL)
- return NULL;
-
- otm->otmSize = otmSize;
- if (GetOutlineTextMetrics(hDC, otmSize, otm) == 0)
- return NULL;
-
- fontHeight = otm->otmTextMetrics.tmHeight -
- otm->otmTextMetrics.tmInternalLeading;
- fontWidth = otm->otmTextMetrics.tmAveCharWidth;
- fontUnits = (LONG) otm->otmEMSquare;
-
- ScaleFactor = 1.0F / (FLOAT) fontUnits;
-
- logFont.lfHeight = - ((LONG) fontUnits);
- logFont.lfWidth = (LONG)
- ((FLOAT) (fontWidth * fontUnits) / (FLOAT) fontHeight);
- logFont.lfEscapement = 0;
- logFont.lfOrientation = 0;
- logFont.lfWeight = otm->otmTextMetrics.tmWeight;
- logFont.lfItalic = otm->otmTextMetrics.tmItalic;
- logFont.lfUnderline = otm->otmTextMetrics.tmUnderlined;
- logFont.lfStrikeOut = otm->otmTextMetrics.tmStruckOut;
- logFont.lfCharSet = otm->otmTextMetrics.tmCharSet;
- logFont.lfOutPrecision = OUT_OUTLINE_PRECIS;
- logFont.lfClipPrecision = CLIP_DEFAULT_PRECIS;
- logFont.lfQuality = DEFAULT_QUALITY;
- logFont.lfPitchAndFamily =
- otm->otmTextMetrics.tmPitchAndFamily & 0xf0;
- strcpy(logFont.lfFaceName,
- (char *)otm + (int)otm->otmpFaceName);
-
- hNewFont = CreateFontIndirect(&logFont);
- if (hNewFont == NULL)
- return NULL;
-
- __wglFree(otm);
-
- return hNewFont;
- }
-
-
-
-/*****************************************************************************
- * MakeDisplayListFromGlyph
- *
- * Converts the outline of a glyph to an OpenGL display list.
- *
- * Return value is nonzero for success, zero for failure.
- *
- * Does not check for OpenGL errors, so if the caller needs to know about them,
- * it should call glGetError().
- *****************************************************************************/
-
-static int
-MakeDisplayListFromGlyph( IN DWORD listName,
- IN UCHAR* glyphBuf,
- IN DWORD glyphSize,
- IN LPGLYPHMETRICSFLOAT glyphMetricsFloat,
- IN FLOAT chordalDeviation,
- IN FLOAT extrusion,
- IN INT format)
- {
- int status;
-
- _GLD_glNewList(listName, GL_COMPILE);
- status = DrawGlyph( glyphBuf,
- glyphSize,
- chordalDeviation,
- extrusion,
- format);
-
- _GLD_glTranslatef(glyphMetricsFloat->gmfCellIncX,
- glyphMetricsFloat->gmfCellIncY,
- 0.0F);
- _GLD_glEndList();
-
- return status;
- }
-
-
-
-/*****************************************************************************
- * DrawGlyph
- *
- * Converts the outline of a glyph to OpenGL drawing primitives, tessellating
- * as needed, and then draws the glyph. Tessellation of the quadratic splines
- * in the outline is controlled by "chordalDeviation", and the drawing
- * primitives (lines or polygons) are selected by "format".
- *
- * Return value is nonzero for success, zero for failure.
- *
- * Does not check for OpenGL errors, so if the caller needs to know about them,
- * it should call glGetError().
- *****************************************************************************/
-
-static int
-DrawGlyph( IN UCHAR* glyphBuf,
- IN DWORD glyphSize,
- IN FLOAT chordalDeviation,
- IN FLOAT extrusion,
- IN INT format)
- {
- INT status = 0;
- FLOAT* p;
- DWORD loop;
- DWORD point;
- GLUtesselator* tess = NULL;
-
-
- /*
- * Initialize the global buffer into which we place the outlines:
- */
- if (!InitLineBuf())
- goto exit;
-
-
- /*
- * Convert the glyph outlines to a set of polyline loops.
- * (See MakeLinesFromGlyph() for the format of the loop data
- * structure.)
- */
- if (!MakeLinesFromGlyph(glyphBuf, glyphSize, chordalDeviation))
- goto exit;
- p = LineBuf;
-
-
- /*
- * Now draw the loops in the appropriate format:
- */
- if (format == WGL_FONT_LINES)
- {
- /*
- * This is the easy case. Just draw the outlines.
- */
- for (loop = (DWORD) *p++; loop; --loop)
- {
- _GLD_glBegin(GL_LINE_LOOP);
- for (point = (DWORD) *p++; point; --point)
- {
- _GLD_glVertex2fv(p);
- p += 2;
- }
- _GLD_glEnd();
- }
- status = 1;
- }
-
- else if (format == WGL_FONT_POLYGONS)
- {
- double v[3];
- FLOAT *save_p = p;
- GLfloat z_value;
-
- /*
- * This is the hard case. We have to set up a tessellator
- * to convert the outlines into a set of polygonal
- * primitives, which the tessellator passes to some
- * auxiliary routines for drawing.
- */
- if (!LoadGLUTesselator())
- goto exit;
- if (!InitVertBuf())
- goto exit;
- if (!(tess = gluNewTessProc()))
- goto exit;
- gluTessCallbackProc(tess, GLU_BEGIN, (void(CALLBACK *)()) _GLD_glBegin);
- gluTessCallbackProc(tess, GLU_TESS_VERTEX_DATA,
- (void(CALLBACK *)()) TessVertexOutData);
- gluTessCallbackProc(tess, GLU_END, (void(CALLBACK *)()) _GLD_glEnd);
- gluTessCallbackProc(tess, GLU_ERROR, (void(CALLBACK *)()) TessError);
- gluTessCallbackProc(tess, GLU_TESS_COMBINE, (void(CALLBACK *)()) TessCombine);
- gluTessNormalProc(tess, 0.0F, 0.0F, 1.0F);
-
- TessErrorOccurred = 0;
- _GLD_glNormal3f(0.0f, 0.0f, 1.0f);
- v[2] = 0.0;
- z_value = 0.0f;
-
- gluTessBeginPolygonProc(tess, (void *)*(int *)&z_value);
- for (loop = (DWORD) *p++; loop; --loop)
- {
- gluTessBeginContourProc(tess);
-
- for (point = (DWORD) *p++; point; --point)
- {
- v[0] = p[0];
- v[1] = p[1];
- gluTessVertexProc(tess, v, p);
- p += 2;
- }
-
- gluTessEndContourProc(tess);
- }
- gluTessEndPolygonProc(tess);
-
- status = !TessErrorOccurred;
-
- /* Extrusion code */
- if (extrusion) {
- DWORD loops;
- GLfloat thickness = (GLfloat) -extrusion;
- FLOAT *vert, *vert2;
- DWORD count;
-
- p = save_p;
- loops = (DWORD) *p++;
-
- for (loop = 0; loop < loops; loop++) {
- GLfloat dx, dy, len;
- DWORD last;
-
- count = (DWORD) *p++;
- _GLD_glBegin(GL_QUAD_STRIP);
-
- /* Check if the first and last vertex are identical
- * so we don't draw the same quad twice.
- */
- vert = p + (count-1)*2;
- last = (p[0] == vert[0] && p[1] == vert[1]) ? count-1 : count;
-
- for (point = 0; point <= last; point++) {
- vert = p + 2 * (point % last);
- vert2 = p + 2 * ((point+1) % last);
-
- dx = vert[0] - vert2[0];
- dy = vert[1] - vert2[1];
- len = (GLfloat)sqrt(dx * dx + dy * dy);
-
- _GLD_glNormal3f(dy / len, -dx / len, 0.0f);
- _GLD_glVertex3f((GLfloat) vert[0],
- (GLfloat) vert[1], thickness);
- _GLD_glVertex3f((GLfloat) vert[0],
- (GLfloat) vert[1], 0.0f);
- }
-
- _GLD_glEnd();
- p += count*2;
- }
-
- /* Draw the back face */
- p = save_p;
- v[2] = thickness;
- _GLD_glNormal3f(0.0f, 0.0f, -1.0f);
- gluTessNormalProc(tess, 0.0F, 0.0F, -1.0F);
-
- gluTessBeginPolygonProc(tess, (void *)*(int *)&thickness);
-
- for (loop = (DWORD) *p++; loop; --loop)
- {
- count = (DWORD) *p++;
-
- gluTessBeginContourProc(tess);
-
- for (point = 0; point < count; point++)
- {
- vert = p + ((count-point-1)<<1);
- v[0] = vert[0];
- v[1] = vert[1];
- gluTessVertexProc(tess, v, vert);
- }
- p += count*2;
-
- gluTessEndContourProc(tess);
- }
- gluTessEndPolygonProc(tess);
- }
-
-#if DEBUG
- if (TessErrorOccurred)
- printf("Tessellation error %s\n",
- gluErrorString(TessErrorOccurred));
-#endif
- }
-
-
-exit:
- FreeLineBuf();
- if (tess)
- gluDeleteTessProc(tess);
- // UnloadGLUTesselator();
- FreeVertBuf();
- return status;
- }
-
-
-
-/*****************************************************************************
- * LoadGLUTesselator
- *
- * Maps the glu32.dll module and gets function pointers for the
- * tesselator functions.
- *****************************************************************************/
-
-static BOOL
-LoadGLUTesselator(void)
- {
- if (gluModuleHandle != NULL)
- return TRUE;
-
- {
- extern HINSTANCE hInstanceOpenGL;
- char *gluName = "GLU32.DLL";
-// char name[256];
-// char *ptr;
-// int len;
-
-/*
- len = GetModuleFileName(hInstanceOpenGL, name, 255);
- if (len != 0)
- {
- ptr = name+len-1;
- while (ptr > name && *ptr != '\\')
- ptr--;
- if (*ptr == '\\')
- ptr++;
- if (!stricmp(ptr, "cosmogl.dll"))
- {
- gluName = "COSMOGLU.DLL";
- }
- else if (!stricmp(ptr, "opengl32.dll"))
- {
- gluName = "GLU32.DLL";
- }
- }
-*/
- if ((gluModuleHandle = LoadLibrary(gluName)) == NULL)
- return FALSE;
- }
-
- if ((gluNewTessProc = (gluNewTessProto)
- GetProcAddress(gluModuleHandle, "gluNewTess")) == NULL)
- return FALSE;
-
- if ((gluDeleteTessProc = (gluDeleteTessProto)
- GetProcAddress(gluModuleHandle, "gluDeleteTess")) == NULL)
- return FALSE;
-
- if ((gluTessBeginPolygonProc = (gluTessBeginPolygonProto)
- GetProcAddress(gluModuleHandle, "gluTessBeginPolygon")) == NULL)
- return FALSE;
-
- if ((gluTessBeginContourProc = (gluTessBeginContourProto)
- GetProcAddress(gluModuleHandle, "gluTessBeginContour")) == NULL)
- return FALSE;
-
- if ((gluTessVertexProc = (gluTessVertexProto)
- GetProcAddress(gluModuleHandle, "gluTessVertex")) == NULL)
- return FALSE;
-
- if ((gluTessEndContourProc = (gluTessEndContourProto)
- GetProcAddress(gluModuleHandle, "gluTessEndContour")) == NULL)
- return FALSE;
-
- if ((gluTessEndPolygonProc = (gluTessEndPolygonProto)
- GetProcAddress(gluModuleHandle, "gluTessEndPolygon")) == NULL)
- return FALSE;
-
- if ((gluTessPropertyProc = (gluTessPropertyProto)
- GetProcAddress(gluModuleHandle, "gluTessProperty")) == NULL)
- return FALSE;
-
- if ((gluTessNormalProc = (gluTessNormalProto)
- GetProcAddress(gluModuleHandle, "gluTessNormal")) == NULL)
- return FALSE;
-
- if ((gluTessCallbackProc = (gluTessCallbackProto)
- GetProcAddress(gluModuleHandle, "gluTessCallback")) == NULL)
- return FALSE;
-
- return TRUE;
- }
-
-
-
-/*****************************************************************************
- * UnloadGLUTesselator
- *
- * Unmaps the glu32.dll module.
- *****************************************************************************/
-
-static BOOL
-UnloadGLUTesselator(void)
- {
- if (gluModuleHandle != NULL)
- if (FreeLibrary(gluModuleHandle) == FALSE)
- return FALSE;
- gluModuleHandle = NULL;
- }
-
-
-
-/*****************************************************************************
- * TessVertexOut
- *
- * Used by tessellator to handle output vertexes.
- *****************************************************************************/
-
-static void CALLBACK
-TessVertexOut(FLOAT p[3])
- {
- GLfloat v[2];
-
- v[0] = p[0] * ScaleFactor;
- v[1] = p[1] * ScaleFactor;
- _GLD_glVertex2fv(v);
- }
-
-static void CALLBACK
-TessVertexOutData(FLOAT p[3], GLfloat z)
-{
- GLfloat v[3];
-
- v[0] = (GLfloat) p[0];
- v[1] = (GLfloat) p[1];
- v[2] = z;
- _GLD_glVertex3fv(v);
-}
-
-
-/*****************************************************************************
- * TessCombine
- *
- * Used by tessellator to handle self-intersecting contours and degenerate
- * geometry.
- *****************************************************************************/
-
-static void CALLBACK
-TessCombine(double coords[3],
- void* vertex_data[4],
- FLOAT weight[4],
- void** outData)
- {
- if (!AppendToVertBuf((FLOAT) coords[0])
- || !AppendToVertBuf((FLOAT) coords[1])
- || !AppendToVertBuf((FLOAT) coords[2]))
- TessErrorOccurred = GL_OUT_OF_MEMORY;
- *outData = VertBuf + (VertBufIndex - 3);
- }
-
-
-
-/*****************************************************************************
- * TessError
- *
- * Saves the last tessellator error code in the global TessErrorOccurred.
- *****************************************************************************/
-
-static void CALLBACK
-TessError(GLenum error)
- {
- TessErrorOccurred = error;
- }
-
-
-
-/*****************************************************************************
- * MakeLinesFromGlyph
- *
- * Converts the outline of a glyph from the TTPOLYGON format to a simple
- * array of floating-point values containing one or more loops.
- *
- * The first element of the output array is a count of the number of loops.
- * The loop data follows this count. Each loop consists of a count of the
- * number of vertices it contains, followed by the vertices. Each vertex
- * is an X and Y coordinate. For example, a single triangle might be
- * described by this array:
- *
- * 1., 3., 0., 0., 1., 0., 0., 1.
- * ^ ^ ^ ^ ^ ^ ^ ^
- * #loops #verts x1 y1 x2 y2 x3 y3
- *
- * A two-loop glyph would look like this:
- *
- * 2., 3., 0.,0., 1.,0., 0.,1., 3., .2,.2, .4,.2, .2,.4
- *
- * Line segments from the TTPOLYGON are transferred to the output array in
- * the obvious way. Quadratic splines in the TTPOLYGON are converted to
- * collections of line segments
- *****************************************************************************/
-
-static int
-MakeLinesFromGlyph(IN UCHAR* glyphBuf,
- IN DWORD glyphSize,
- IN FLOAT chordalDeviation)
- {
- UCHAR* p;
- int status = 0;
-
-
- /*
- * Pick up all the polygons (aka loops) that make up the glyph:
- */
- if (!AppendToLineBuf(0.0F)) /* loop count at LineBuf[0] */
- goto exit;
-
- p = glyphBuf;
- while (p < glyphBuf + glyphSize)
- {
- if (!MakeLinesFromTTPolygon(&p, chordalDeviation))
- goto exit;
- LineBuf[0] += 1.0F; /* increment loop count */
- }
-
- status = 1;
-
-exit:
- return status;
- }
-
-
-
-/*****************************************************************************
- * MakeLinesFromTTPolygon
- *
- * Converts a TTPOLYGONHEADER and its associated curve structures into a
- * single polyline loop in the global LineBuf.
- *****************************************************************************/
-
-static int
-MakeLinesFromTTPolygon( IN OUT UCHAR** pp,
- IN FLOAT chordalDeviation)
- {
- DWORD polySize;
- UCHAR* polyStart;
- DWORD vertexCountIndex;
-
- /*
- * Record where the polygon data begins, and where the loop's
- * vertex count resides:
- */
- polyStart = *pp;
- vertexCountIndex = LineBufIndex;
- if (!AppendToLineBuf(0.0F))
- return 0;
-
- /*
- * Extract relevant data from the TTPOLYGONHEADER:
- */
- polySize = GetDWord(pp);
- if (GetDWord(pp) != TT_POLYGON_TYPE) /* polygon type */
- return 0;
- if (!AppendToLineBuf((FLOAT) GetFixed(pp))) /* first X coord */
- return 0;
- if (!AppendToLineBuf((FLOAT) GetFixed(pp))) /* first Y coord */
- return 0;
- LineBuf[vertexCountIndex] += 1.0F;
-
- /*
- * Process each of the TTPOLYCURVE structures in the polygon:
- */
- while (*pp < polyStart + polySize)
- if (!MakeLinesFromTTPolycurve( pp,
- vertexCountIndex,
- chordalDeviation))
- return 0;
-
- return 1;
- }
-
-
-
-/*****************************************************************************
- * MakeLinesFromTTPolyCurve
- *
- * Converts the lines and splines in a single TTPOLYCURVE structure to points
- * in the global LineBuf.
- *****************************************************************************/
-
-static int
-MakeLinesFromTTPolycurve( IN OUT UCHAR** pp,
- IN DWORD vertexCountIndex,
- IN FLOAT chordalDeviation)
- {
- WORD type;
- WORD pointCount;
-
-
- /*
- * Pick up the relevant fields of the TTPOLYCURVE structure:
- */
- type = (WORD) GetWord(pp);
- pointCount = (WORD) GetWord(pp);
-
- /*
- * Convert the "curve" to line segments:
- */
- if (type == TT_PRIM_LINE)
- return MakeLinesFromTTLine( pp,
- vertexCountIndex,
- pointCount);
- else if (type == TT_PRIM_QSPLINE)
- return MakeLinesFromTTQSpline( pp,
- vertexCountIndex,
- pointCount,
- chordalDeviation);
- else
- return 0;
- }
-
-
-
-/*****************************************************************************
- * MakeLinesFromTTLine
- *
- * Converts points from the polyline in a TT_PRIM_LINE structure to
- * equivalent points in the global LineBuf.
- *****************************************************************************/
-static int
-MakeLinesFromTTLine( IN OUT UCHAR** pp,
- IN DWORD vertexCountIndex,
- IN WORD pointCount)
- {
- /*
- * Just copy the line segments into the line buffer (converting
- * type as we go):
- */
- LineBuf[vertexCountIndex] += pointCount;
- while (pointCount--)
- {
- if (!AppendToLineBuf((FLOAT) GetFixed(pp)) /* X coord */
- || !AppendToLineBuf((FLOAT) GetFixed(pp))) /* Y coord */
- return 0;
- }
-
- return 1;
- }
-
-
-
-/*****************************************************************************
- * MakeLinesFromTTQSpline
- *
- * Converts points from the poly quadratic spline in a TT_PRIM_QSPLINE
- * structure to polyline points in the global LineBuf.
- *****************************************************************************/
-
-static int
-MakeLinesFromTTQSpline( IN OUT UCHAR** pp,
- IN DWORD vertexCountIndex,
- IN WORD pointCount,
- IN FLOAT chordalDeviation)
- {
- FLOAT x0, y0, x1, y1, x2, y2;
- WORD point;
-
- /*
- * Process each of the non-interpolated points in the outline.
- * To do this, we need to generate two interpolated points (the
- * start and end of the arc) for each non-interpolated point.
- * The first interpolated point is always the one most recently
- * stored in LineBuf, so we just extract it from there. The
- * second interpolated point is either the average of the next
- * two points in the QSpline, or the last point in the QSpline
- * if only one remains.
- */
- for (point = 0; point < pointCount - 1; ++point)
- {
- x0 = LineBuf[LineBufIndex - 2];
- y0 = LineBuf[LineBufIndex - 1];
-
- x1 = (FLOAT) GetFixed(pp);
- y1 = (FLOAT) GetFixed(pp);
-
- if (point == pointCount - 2)
- {
- /*
- * This is the last arc in the QSpline. The final
- * point is the end of the arc.
- */
- x2 = (FLOAT) GetFixed(pp);
- y2 = (FLOAT) GetFixed(pp);
- }
- else
- {
- /*
- * Peek at the next point in the input to compute
- * the end of the arc:
- */
- x2 = 0.5F * (x1 + (FLOAT) GetFixed(pp));
- y2 = 0.5F * (y1 + (FLOAT) GetFixed(pp));
- /*
- * Push the point back onto the input so it will
- * be reused as the next off-curve point:
- */
- *pp -= 8;
- }
-
- if (!MakeLinesFromArc( x0, y0,
- x1, y1,
- x2, y2,
- vertexCountIndex,
- chordalDeviation * chordalDeviation))
- return 0;
- }
-
- return 1;
- }
-
-
-
-/*****************************************************************************
- * MakeLinesFromArc
- *
- * Subdivides one arc of a quadratic spline until the chordal deviation
- * tolerance requirement is met, then places the resulting set of line
- * segments in the global LineBuf.
- *****************************************************************************/
-
-static int
-MakeLinesFromArc( IN FLOAT x0,
- IN FLOAT y0,
- IN FLOAT x1,
- IN FLOAT y1,
- IN FLOAT x2,
- IN FLOAT y2,
- IN DWORD vertexCountIndex,
- IN FLOAT chordalDeviationSquared)
- {
- FLOAT x01;
- FLOAT y01;
- FLOAT x12;
- FLOAT y12;
- FLOAT midPointX;
- FLOAT midPointY;
- FLOAT deltaX;
- FLOAT deltaY;
-
- /*
- * Calculate midpoint of the curve by de Casteljau:
- */
- x01 = 0.5F * (x0 + x1);
- y01 = 0.5F * (y0 + y1);
- x12 = 0.5F * (x1 + x2);
- y12 = 0.5F * (y1 + y2);
- midPointX = 0.5F * (x01 + x12);
- midPointY = 0.5F * (y01 + y12);
-
-
- /*
- * Estimate chordal deviation by the distance from the midpoint
- * of the curve to its non-interpolated control point. If this
- * distance is greater than the specified chordal deviation
- * constraint, then subdivide. Otherwise, generate polylines
- * from the three control points.
- */
- deltaX = midPointX - x1;
- deltaY = midPointY - y1;
- if (deltaX * deltaX + deltaY * deltaY > chordalDeviationSquared)
- {
- MakeLinesFromArc( x0, y0,
- x01, y01,
- midPointX, midPointY,
- vertexCountIndex,
- chordalDeviationSquared);
-
- MakeLinesFromArc( midPointX, midPointY,
- x12, y12,
- x2, y2,
- vertexCountIndex,
- chordalDeviationSquared);
- }
- else
- {
- /*
- * The "pen" is already at (x0, y0), so we don't need to
- * add that point to the LineBuf.
- */
- if (!AppendToLineBuf(x1)
- || !AppendToLineBuf(y1)
- || !AppendToLineBuf(x2)
- || !AppendToLineBuf(y2))
- return 0;
- LineBuf[vertexCountIndex] += 2.0F;
- }
-
- return 1;
- }
-
-
-
-/*****************************************************************************
- * InitLineBuf
- *
- * Initializes the global LineBuf and its associated size and current-element
- * counters.
- *****************************************************************************/
-
-static int
-InitLineBuf(void)
- {
- if (!(LineBuf = (FLOAT*)
- __wglMalloc((LineBufSize = LINE_BUF_QUANT) * sizeof(FLOAT))))
- return 0;
- LineBufIndex = 0;
- return 1;
- }
-
-
-
-/*****************************************************************************
- * InitVertBuf
- *
- * Initializes the global VertBuf and its associated size and current-element
- * counters.
- *****************************************************************************/
-
-static int
-InitVertBuf(void)
- {
- if (!(VertBuf = (FLOAT*)
- __wglMalloc((VertBufSize = VERT_BUF_QUANT) * sizeof(FLOAT))))
- return 0;
- VertBufIndex = 0;
- return 1;
- }
-
-
-
-/*****************************************************************************
- * AppendToLineBuf
- *
- * Appends one floating-point value to the global LineBuf array. Return value
- * is non-zero for success, zero for failure.
- *****************************************************************************/
-
-static int
-AppendToLineBuf(FLOAT value)
- {
- if (LineBufIndex >= LineBufSize)
- {
- FLOAT* f;
-
- f = (FLOAT*) __wglRealloc(LineBuf,
- (LineBufSize += LINE_BUF_QUANT) * sizeof(FLOAT));
- if (!f)
- return 0;
- LineBuf = f;
- }
- LineBuf[LineBufIndex++] = value;
- return 1;
- }
-
-
-
-/*****************************************************************************
- * AppendToVertBuf
- *
- * Appends one floating-point value to the global VertBuf array. Return value
- * is non-zero for success, zero for failure.
- *
- * Note that we can't realloc this one, because the tessellator is using
- * pointers into it.
- *****************************************************************************/
-
-static int
-AppendToVertBuf(FLOAT value)
- {
- if (VertBufIndex >= VertBufSize)
- return 0;
- VertBuf[VertBufIndex++] = value;
- return 1;
- }
-
-
-
-/*****************************************************************************
- * FreeLineBuf
- *
- * Cleans up vertex buffer structure.
- *****************************************************************************/
-
-static void
-FreeLineBuf(void)
- {
- if (LineBuf)
- {
- __wglFree(LineBuf);
- LineBuf = NULL;
- }
- }
-
-
-
-/*****************************************************************************
- * FreeVertBuf
- *
- * Cleans up vertex buffer structure.
- *****************************************************************************/
-
-static void
-FreeVertBuf(void)
- {
- if (VertBuf)
- {
- __wglFree(VertBuf);
- VertBuf = NULL;
- }
- }
-
-
-
-/*****************************************************************************
- * GetWord
- *
- * Fetch the next 16-bit word from a little-endian byte stream, and increment
- * the stream pointer to the next unscanned byte.
- *****************************************************************************/
-
-static long GetWord(UCHAR** p)
- {
- long value;
-
- value = ((*p)[1] << 8) + (*p)[0];
- *p += 2;
- return value;
- }
-
-
-
-/*****************************************************************************
- * GetDWord
- *
- * Fetch the next 32-bit word from a little-endian byte stream, and increment
- * the stream pointer to the next unscanned byte.
- *****************************************************************************/
-
-static long GetDWord(UCHAR** p)
- {
- long value;
-
- value = ((*p)[3] << 24) + ((*p)[2] << 16) + ((*p)[1] << 8) + (*p)[0];
- *p += 4;
- return value;
- }
-
-
-
-
-/*****************************************************************************
- * GetFixed
- *
- * Fetch the next 32-bit fixed-point value from a little-endian byte stream,
- * convert it to floating-point, and increment the stream pointer to the next
- * unscanned byte.
- *****************************************************************************/
-
-static double GetFixed(
- UCHAR** p)
-{
- long hiBits, loBits;
- double value;
-
- loBits = GetWord(p);
- hiBits = GetWord(p);
- value = (double) ((hiBits << 16) | loBits) / 65536.0;
-
- return value * ScaleFactor;
-}
-
-// ***********************************************************************
-
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dglwgl.h b/mesalib/src/mesa/drivers/windows/gldirect/dglwgl.h
deleted file mode 100644
index 1dc5c034e..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dglwgl.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: OpenGL window functions (wgl*).
-*
-****************************************************************************/
-
-#ifndef __DGLWGL_H
-#define __DGLWGL_H
-
-// Disable compiler complaints about DLL linkage
-#pragma warning (disable:4273)
-
-// Macros to control compilation
-#define STRICT
-#define WIN32_LEAN_AND_MEAN
-
-#include <windows.h>
-#include <GL\gl.h>
-
-#include "dglcontext.h"
-#include "dglglobals.h"
-#include "dglmacros.h"
-#include "ddlog.h"
-#include "dglpf.h"
-
-/*---------------------- Macros and type definitions ----------------------*/
-
-typedef struct {
- PROC proc;
- char *name;
-} DGL_extension;
-
-#ifndef __MINGW32__
-/* XXX why is this here?
- * It should probaby be somewhere in src/mesa/drivers/windows/
- */
-#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_WINGDI_H) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(BUILD_FOR_SNAP)
-# define WGL_FONT_LINES 0
-# define WGL_FONT_POLYGONS 1
-#ifndef _GNU_H_WINDOWS32_FUNCTIONS
-# ifdef UNICODE
-# define wglUseFontBitmaps wglUseFontBitmapsW
-# define wglUseFontOutlines wglUseFontOutlinesW
-# else
-# define wglUseFontBitmaps wglUseFontBitmapsA
-# define wglUseFontOutlines wglUseFontOutlinesA
-# endif /* !UNICODE */
-#endif /* _GNU_H_WINDOWS32_FUNCTIONS */
-typedef struct tagLAYERPLANEDESCRIPTOR LAYERPLANEDESCRIPTOR, *PLAYERPLANEDESCRIPTOR, *LPLAYERPLANEDESCRIPTOR;
-typedef struct _GLYPHMETRICSFLOAT GLYPHMETRICSFLOAT, *PGLYPHMETRICSFLOAT, *LPGLYPHMETRICSFLOAT;
-typedef struct tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESCRIPTOR, *LPPIXELFORMATDESCRIPTOR;
-#if !defined(GLX_USE_MESA)
-#include <GL/mesa_wgl.h>
-#endif
-#endif
-#endif /* !__MINGW32__ */
-
-/*------------------------- Function Prototypes ---------------------------*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#ifndef _USE_GLD3_WGL
-int APIENTRY DGL_ChoosePixelFormat(HDC a, CONST PIXELFORMATDESCRIPTOR *ppfd);
-BOOL APIENTRY DGL_CopyContext(HGLRC a, HGLRC b, UINT c);
-HGLRC APIENTRY DGL_CreateContext(HDC a);
-HGLRC APIENTRY DGL_CreateLayerContext(HDC a, int b);
-BOOL APIENTRY DGL_DeleteContext(HGLRC a);
-BOOL APIENTRY DGL_DescribeLayerPlane(HDC a, int b, int c, UINT d, LPLAYERPLANEDESCRIPTOR e);
-int APIENTRY DGL_DescribePixelFormat(HDC a, int b, UINT c, LPPIXELFORMATDESCRIPTOR d);
-HGLRC APIENTRY DGL_GetCurrentContext(void);
-HDC APIENTRY DGL_GetCurrentDC(void);
-PROC APIENTRY DGL_GetDefaultProcAddress(LPCSTR a);
-int APIENTRY DGL_GetLayerPaletteEntries(HDC a, int b, int c, int d, COLORREF *e);
-int APIENTRY DGL_GetPixelFormat(HDC a);
-PROC APIENTRY DGL_GetProcAddress(LPCSTR a);
-BOOL APIENTRY DGL_MakeCurrent(HDC a, HGLRC b);
-BOOL APIENTRY DGL_RealizeLayerPalette(HDC a, int b, BOOL c);
-int APIENTRY DGL_SetLayerPaletteEntries(HDC a, int b, int c, int d, CONST COLORREF *e);
-BOOL APIENTRY DGL_SetPixelFormat(HDC a, int b, CONST PIXELFORMATDESCRIPTOR *c);
-BOOL APIENTRY DGL_ShareLists(HGLRC a, HGLRC b);
-BOOL APIENTRY DGL_SwapBuffers(HDC a);
-BOOL APIENTRY DGL_SwapLayerBuffers(HDC a, UINT b);
-BOOL APIENTRY DGL_UseFontBitmapsA(HDC a, DWORD b, DWORD c, DWORD d);
-BOOL APIENTRY DGL_UseFontBitmapsW(HDC a, DWORD b, DWORD c, DWORD d);
-BOOL APIENTRY DGL_UseFontOutlinesA(HDC a, DWORD b, DWORD c, DWORD d, FLOAT e, FLOAT f, int g, LPGLYPHMETRICSFLOAT h);
-BOOL APIENTRY DGL_UseFontOutlinesW(HDC a, DWORD b, DWORD c, DWORD d, FLOAT e, FLOAT f, int g, LPGLYPHMETRICSFLOAT h);
-#endif //_USE_GLD3_WGL
-
-BOOL dglWglResizeBuffers(struct gl_context *ctx, BOOL bDefaultDriver);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dll_main.c b/mesalib/src/mesa/drivers/windows/gldirect/dll_main.c
deleted file mode 100644
index 1d7ac64f4..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dll_main.c
+++ /dev/null
@@ -1,817 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Win32 DllMain functions.
-*
-****************************************************************************/
-
-// INITGUID must only be defined once.
-// Don't put it in a shared header file!
-// GLD3 uses dxguid.lib, so INITGUID must *not* be used!
-#ifndef _USE_GLD3_WGL
-#define INITGUID
-#endif // _USE_GLD3_WGL
-
-#include "dllmain.h"
-
-//#include "snap/graphics.h"
-//#include "drvlib/os/os.h"
-
-#ifdef _USE_GLD3_WGL
-typedef void (APIENTRY *LPDGLSPLASHSCREEN)(int, int, char*);
-#include "gld_driver.h"
-#endif
-
-// ***********************************************************************
-
-BOOL bInitialized = FALSE; // callback driver initialized?
-BOOL bExited = FALSE; // callback driver exited this instance?
-HINSTANCE hInstanceDll = NULL; // DLL instance handle
-
-static BOOL bDriverValidated = FALSE; // prior validation status
-static BOOL bSplashScreen = TRUE; // Splash Screen ?
-static BOOL bValidINIFound = FALSE; // Have we found a valid INI file?
-
-HHOOK hKeyHook = NULL; // global keyboard handler hook
-
-// Multi-threaded support needs to be reflected in Mesa code. (DaveM)
-int _gld_bMultiThreaded = FALSE;
-
-// ***********************************************************************
-
-DWORD dwLogging = 0; // Logging flag
-DWORD dwDebugLevel = 0; // Log debug level
-
-char szLogPath[_MAX_PATH] = {"\0"}; // Log file path
-char szSNAPPath[_MAX_PATH] = {"\0"}; // SNAP driver path
-
-#ifndef _USE_GLD3_WGL
-DGL_wglFuncs wglFuncs = {
- sizeof(DGL_wglFuncs),
- DGL_ChoosePixelFormat,
- DGL_CopyContext,
- DGL_CreateContext,
- DGL_CreateLayerContext,
- DGL_DeleteContext,
- DGL_DescribeLayerPlane,
- DGL_DescribePixelFormat,
- DGL_GetCurrentContext,
- DGL_GetCurrentDC,
- DGL_GetDefaultProcAddress,
- DGL_GetLayerPaletteEntries,
- DGL_GetPixelFormat,
- DGL_GetProcAddress,
- DGL_MakeCurrent,
- DGL_RealizeLayerPalette,
- DGL_SetLayerPaletteEntries,
- DGL_SetPixelFormat,
- DGL_ShareLists,
- DGL_SwapBuffers,
- DGL_SwapLayerBuffers,
- DGL_UseFontBitmapsA,
- DGL_UseFontBitmapsW,
- DGL_UseFontOutlinesA,
- DGL_UseFontOutlinesW,
-};
-
-DGL_mesaFuncs mesaFuncs = {
- sizeof(DGL_mesaFuncs),
-};
-#endif // _USE_GLD3_WGL
-
-// ***********************************************************************
-
-typedef struct {
- DWORD dwDriver; // 0=SciTech SW, 1=Direct3D SW, 2=Direct3D HW
- BOOL bMipmapping; // 0=off, 1=on
- BOOL bMultitexture; // 0=off, 1=on
- BOOL bWaitForRetrace; // 0=off, 1=on
- BOOL bFullscreenBlit; // 0=off, 1=on
- BOOL bFastFPU; // 0=off, 1=on
- BOOL bDirectDrawPersistant;// 0=off, 1=on
- BOOL bPersistantBuffers; // 0=off, 1=on
- DWORD dwLogging; // 0=off, 1=normal, 2=crash-proof
- DWORD dwLoggingSeverity; // 0=all, 1=warnings+errors, 2=errors only
- BOOL bMessageBoxWarnings;// 0=off, 1=on
- BOOL bMultiThreaded; // 0=off, 1=on
- BOOL bAppCustomizations; // 0=off, 1=on
- BOOL bHotKeySupport; // 0=off, 1=on
- BOOL bSplashScreen; // 0=off, 1=on
-
-#ifdef _USE_GLD3_WGL
- //
- // New for GLDirect 3.0
- //
- DWORD dwAdapter; // DX8 adpater ordinal
- DWORD dwTnL; // Transform & Lighting type
- DWORD dwMultisample; // DX8 multisample type
-#endif // _USE_GLD3_WGL
-} INI_settings;
-
-static INI_settings ini;
-
-// ***********************************************************************
-
-BOOL APIENTRY DGL_initDriver(
-#ifdef _USE_GLD3_WGL
- void)
-{
-#else
- DGL_wglFuncs *lpWglFuncs,
- DGL_mesaFuncs *lpMesaFuncs)
-{
- // Check for valid pointers
- if ((lpWglFuncs == NULL) || (lpMesaFuncs == NULL))
- return FALSE;
-
- // Check for valid structs
- if (lpWglFuncs->dwSize != sizeof(DGL_wglFuncs)) {
- return FALSE;
- }
-
- // Check for valid structs
- if (lpMesaFuncs->dwSize != sizeof(DGL_mesaFuncs)) {
- return FALSE;
- }
-
- // Copy the Mesa functions
- memcpy(&mesaFuncs, lpMesaFuncs, sizeof(DGL_mesaFuncs));
-
- // Pass back the wgl functions
- memcpy(lpWglFuncs, &wglFuncs, sizeof(DGL_wglFuncs));
-#endif // _USE_GLD3_WGL
-
- // Finally initialize the callback driver
- if (!dglInitDriver())
- return FALSE;
-
- return TRUE;
-};
-
-// ***********************************************************************
-
-BOOL ReadINIFile(
- HINSTANCE hInstance)
-{
- char szModuleFilename[MAX_PATH];
- char szSystemDirectory[MAX_PATH];
- const char szSectionName[] = "Config";
- char szINIFile[MAX_PATH];
- int pos;
-
- // Now using the DLL module handle. KeithH, 24/May/2000.
- // Addendum: GetModuleFileName(NULL, ... returns process filename,
- // GetModuleFileName(hModule, ... returns DLL filename,
-
- // Get the dll path and filename.
- GetModuleFileName(hInstance, &szModuleFilename[0], MAX_PATH); // NULL for current process
- // Get the System directory.
- GetSystemDirectory(&szSystemDirectory[0], MAX_PATH);
-
- // Test to see if DLL is in system directory.
- if (strnicmp(szModuleFilename, szSystemDirectory, strlen(szSystemDirectory))==0) {
- // DLL *is* in system directory.
- // Return FALSE to indicate that registry keys should be read.
- return FALSE;
- }
-
- // Compose filename of INI file
- strcpy(szINIFile, szModuleFilename);
- pos = strlen(szINIFile);
- while (szINIFile[pos] != '\\') {
- pos--;
- }
- szINIFile[pos+1] = '\0';
- // Use run-time DLL path for log file too
- strcpy(szLogPath, szINIFile);
- szLogPath[pos] = '\0';
- // Complete full INI file path
- strcat(szINIFile, "gldirect.ini");
-
- // Read settings from private INI file.
- // Note that defaults are contained in the calls.
- ini.dwDriver = GetPrivateProfileInt(szSectionName, "dwDriver", 2, szINIFile);
- ini.bMipmapping = GetPrivateProfileInt(szSectionName, "bMipmapping", 1, szINIFile);
- ini.bMultitexture = GetPrivateProfileInt(szSectionName, "bMultitexture", 1, szINIFile);
- ini.bWaitForRetrace = GetPrivateProfileInt(szSectionName, "bWaitForRetrace", 0, szINIFile);
- ini.bFullscreenBlit = GetPrivateProfileInt(szSectionName, "bFullscreenBlit", 0, szINIFile);
- ini.bFastFPU = GetPrivateProfileInt(szSectionName, "bFastFPU", 1, szINIFile);
- ini.bDirectDrawPersistant = GetPrivateProfileInt(szSectionName, "bPersistantDisplay", 0, szINIFile);
- ini.bPersistantBuffers = GetPrivateProfileInt(szSectionName, "bPersistantResources", 0, szINIFile);
- ini.dwLogging = GetPrivateProfileInt(szSectionName, "dwLogging", 0, szINIFile);
- ini.dwLoggingSeverity = GetPrivateProfileInt(szSectionName, "dwLoggingSeverity", 0, szINIFile);
- ini.bMessageBoxWarnings = GetPrivateProfileInt(szSectionName, "bMessageBoxWarnings", 0, szINIFile);
- ini.bMultiThreaded = GetPrivateProfileInt(szSectionName, "bMultiThreaded", 0, szINIFile);
- ini.bAppCustomizations = GetPrivateProfileInt(szSectionName, "bAppCustomizations", 1, szINIFile);
- ini.bHotKeySupport = GetPrivateProfileInt(szSectionName, "bHotKeySupport", 0, szINIFile);
- ini.bSplashScreen = GetPrivateProfileInt(szSectionName, "bSplashScreen", 1, szINIFile);
-
-#ifdef _USE_GLD3_WGL
- // New for GLDirect 3.x
- ini.dwAdapter = GetPrivateProfileInt(szSectionName, "dwAdapter", 0, szINIFile);
- // dwTnL now defaults to zero (chooses TnL at runtime). KeithH
- ini.dwTnL = GetPrivateProfileInt(szSectionName, "dwTnL", 0, szINIFile);
- ini.dwMultisample = GetPrivateProfileInt(szSectionName, "dwMultisample", 0, szINIFile);
-#endif
-
- return TRUE;
-}
-
-// ***********************************************************************
-
-BOOL dllReadRegistry(
- HINSTANCE hInstance)
-{
- // Read settings from INI file, if available
- bValidINIFound = FALSE;
- if (ReadINIFile(hInstance)) {
- const char *szRendering[3] = {
- "SciTech Software Renderer",
- "Direct3D MMX Software Renderer",
- "Direct3D Hardware Renderer"
- };
- // Set globals
- glb.bPrimary = 1;
- glb.bHardware = (ini.dwDriver == 2) ? 1 : 0;
-#ifndef _USE_GLD3_WGL
- memset(&glb.ddGuid, 0, sizeof(glb.ddGuid));
- glb.d3dGuid = (ini.dwDriver == 2) ? IID_IDirect3DHALDevice : IID_IDirect3DRGBDevice;
-#endif // _USE_GLD3_WGL
- strcpy(glb.szDDName, "Primary");
- strcpy(glb.szD3DName, szRendering[ini.dwDriver]);
- glb.dwRendering = ini.dwDriver;
- glb.bUseMipmaps = ini.bMipmapping;
- glb.bMultitexture = ini.bMultitexture;
- glb.bWaitForRetrace = ini.bWaitForRetrace;
- glb.bFullscreenBlit = ini.bFullscreenBlit;
- glb.bFastFPU = ini.bFastFPU;
- glb.bDirectDrawPersistant = ini.bDirectDrawPersistant;
- glb.bPersistantBuffers = ini.bPersistantBuffers;
- dwLogging = ini.dwLogging;
- dwDebugLevel = ini.dwLoggingSeverity;
- glb.bMessageBoxWarnings = ini.bMessageBoxWarnings;
- glb.bMultiThreaded = ini.bMultiThreaded;
- glb.bAppCustomizations = ini.bAppCustomizations;
- glb.bHotKeySupport = ini.bHotKeySupport;
- bSplashScreen = ini.bSplashScreen;
-#ifdef _USE_GLD3_WGL
- // New for GLDirect 3.x
- glb.dwAdapter = ini.dwAdapter;
- glb.dwDriver = ini.dwDriver;
- glb.dwTnL = ini.dwTnL;
- glb.dwMultisample = ini.dwMultisample;
-#endif
- bValidINIFound = TRUE;
- return TRUE;
- }
- // Read settings from registry
- else {
- HKEY hReg;
- DWORD cbValSize;
- DWORD dwType = REG_SZ; // Registry data type for strings
- BOOL bRegistryError;
- BOOL bSuccess;
-
-#define REG_READ_DWORD(a, b) \
- cbValSize = sizeof(b); \
- if (ERROR_SUCCESS != RegQueryValueEx( hReg, (a), \
- NULL, NULL, (LPBYTE)&(b), &cbValSize )) \
- bRegistryError = TRUE;
-
-#define REG_READ_DEVICEID(a, b) \
- cbValSize = MAX_DDDEVICEID_STRING; \
- if(ERROR_SUCCESS != RegQueryValueEx(hReg, (a), 0, &dwType, \
- (LPBYTE)&(b), &cbValSize)) \
- bRegistryError = TRUE;
-
-#define REG_READ_STRING(a, b) \
- cbValSize = sizeof((b)); \
- if(ERROR_SUCCESS != RegQueryValueEx(hReg, (a), 0, &dwType, \
- (LPBYTE)&(b), &cbValSize)) \
- bRegistryError = TRUE;
-
- // Read settings from the registry.
-
- // Open the registry key for the current user if it exists.
- bSuccess = (ERROR_SUCCESS == RegOpenKeyEx(HKEY_CURRENT_USER,
- DIRECTGL_REG_SETTINGS_KEY,
- 0,
- KEY_READ,
- &hReg));
- // Otherwise open the registry key for the local machine.
- if (!bSuccess)
- bSuccess = (ERROR_SUCCESS == RegOpenKeyEx(DIRECTGL_REG_KEY_ROOT,
- DIRECTGL_REG_SETTINGS_KEY,
- 0,
- KEY_READ,
- &hReg));
- if (!bSuccess)
- return FALSE;
-
- bRegistryError = FALSE;
-
- REG_READ_DWORD(DIRECTGL_REG_SETTING_PRIMARY, glb.bPrimary);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_D3D_HW, glb.bHardware);
-#ifndef _USE_GLD3_WGL
- REG_READ_DWORD(DIRECTGL_REG_SETTING_DD_GUID, glb.ddGuid);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_D3D_GUID, glb.d3dGuid);
-#endif // _USE_GLD3_WGL
- REG_READ_DWORD(DIRECTGL_REG_SETTING_LOGGING, dwLogging);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_DEBUGLEVEL, dwDebugLevel);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_RENDERING, glb.dwRendering);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_MULTITEXTURE, glb.bMultitexture);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_WAITFORRETRACE, glb.bWaitForRetrace);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_FULLSCREENBLIT, glb.bFullscreenBlit);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_USEMIPMAPS, glb.bUseMipmaps);
-
- REG_READ_DEVICEID(DIRECTGL_REG_SETTING_DD_NAME, glb.szDDName);
- REG_READ_DEVICEID(DIRECTGL_REG_SETTING_D3D_NAME, glb.szD3DName);
-
- REG_READ_DWORD(DIRECTGL_REG_SETTING_MSGBOXWARNINGS, glb.bMessageBoxWarnings);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_PERSISTDISPLAY, glb.bDirectDrawPersistant);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_PERSISTBUFFERS, glb.bPersistantBuffers);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_FASTFPU, glb.bFastFPU);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_HOTKEYS, glb.bHotKeySupport);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_MULTITHREAD, glb.bMultiThreaded);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_APPCUSTOM, glb.bAppCustomizations);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_SPLASHSCREEN, bSplashScreen);
-
-#ifdef _USE_GLD3_WGL
- // New for GLDirect 3.x
- glb.dwDriver = glb.dwRendering;
- REG_READ_DWORD(DIRECTGL_REG_SETTING_ADAPTER, glb.dwAdapter);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_TNL, glb.dwTnL);
- REG_READ_DWORD(DIRECTGL_REG_SETTING_MULTISAMPLE, glb.dwMultisample);
-#endif
-
- RegCloseKey(hReg);
-
- // Open the global registry key for GLDirect
- bSuccess = (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,
- DIRECTGL_REG_SETTINGS_KEY,
- 0,
- KEY_READ,
- &hReg));
- if (bSuccess) {
- // Read the installation path for GLDirect
- REG_READ_STRING("InstallLocation",szLogPath);
- RegCloseKey(hReg);
- }
-
- if (bRegistryError || !bSuccess)
- return FALSE;
- else
-
- return TRUE;
-
-#undef REG_READ_DWORD
-#undef REG_READ_DEVICEID
-#undef REG_READ_STRING
- }
-}
-
-// ***********************************************************************
-
-BOOL dllWriteRegistry(
- void )
-{
- HKEY hReg;
- DWORD dwCreateDisposition, cbValSize;
- BOOL bRegistryError = FALSE;
-
-#define REG_WRITE_DWORD(a, b) \
- cbValSize = sizeof(b); \
- if (ERROR_SUCCESS != RegSetValueEx( hReg, (a), \
- 0, REG_DWORD, (LPBYTE)&(b), cbValSize )) \
- bRegistryError = TRUE;
-
- if (ERROR_SUCCESS == RegCreateKeyEx( DIRECTGL_REG_KEY_ROOT, DIRECTGL_REG_SETTINGS_KEY,
- 0, NULL, 0, KEY_WRITE, NULL, &hReg,
- &dwCreateDisposition )) {
- RegFlushKey(hReg); // Make sure keys are written to disk
- RegCloseKey(hReg);
- hReg = NULL;
- }
-
- if (bRegistryError)
- return FALSE;
- else
- return TRUE;
-
-#undef REG_WRITE_DWORD
-}
-
-// ***********************************************************************
-
-void dglInitHotKeys(HINSTANCE hInstance)
-{
- // Hot-Key support at all?
- if (!glb.bHotKeySupport)
- return;
-
- // Install global keyboard interceptor
- hKeyHook = SetWindowsHookEx(WH_KEYBOARD, dglKeyProc, hInstance, 0);
-}
-
-// ***********************************************************************
-
-void dglExitHotKeys(void)
-{
- // Hot-Key support at all?
- if (!glb.bHotKeySupport)
- return;
-
- // Remove global keyboard interceptor
- if (hKeyHook)
- UnhookWindowsHookEx(hKeyHook);
- hKeyHook = NULL;
-}
-
-// ***********************************************************************
-
-// Note: This app-customization step must be performed in both the main
-// OpenGL32 driver and the callback driver DLLs for multithreading option.
-void dglSetAppCustomizations(void)
-{
- char szModuleFileName[MAX_PATH];
- int iSize = MAX_PATH;
-
- // Get the currently loaded EXE filename.
- GetModuleFileName(NULL, &szModuleFileName[0], MAX_PATH); // NULL for current process
- strupr(szModuleFileName);
- iSize = strlen(szModuleFileName);
-
- // Check for specific EXEs and adjust global settings accordingly
-
- // NOTE: In GLD3.x "bDirectDrawPersistant" corresponds to IDirect3D8 and
- // "bPersistantBuffers" corresponds to IDirect3DDevice8. KeithH
-
- // Case 1: 3DStudio must be multi-threaded
- // Added: Discreet GMAX (3DStudio MAX 4 for gamers. KeithH)
- if (strstr(szModuleFileName, "3DSMAX.EXE")
- || strstr(szModuleFileName, "3DSVIZ.EXE")
- || strstr(szModuleFileName, "GMAX.EXE")) {
- glb.bMultiThreaded = TRUE;
- glb.bDirectDrawPersistant = FALSE;
- glb.bPersistantBuffers = FALSE;
- return;
- }
-
- // Case 2: Solid Edge must use pre-allocated resources for all GLRCs
- if (strstr(szModuleFileName, "PART.EXE")
- || strstr(szModuleFileName, "ASSEMBL.EXE")
- || strstr(szModuleFileName, "DRAFT.EXE")
- || strstr(szModuleFileName, "SMARTVW.EXE")
- || strstr(szModuleFileName, "SMETAL.EXE")) {
- glb.bMultiThreaded = FALSE;
- glb.bDirectDrawPersistant = TRUE;
- glb.bPersistantBuffers = FALSE;
- return;
- }
-
- // Case 3: Sudden Depth creates and destroys GLRCs on paint commands
- if (strstr(szModuleFileName, "SUDDEPTH.EXE")
- || strstr(szModuleFileName, "SUDDEMO.EXE")) {
- glb.bMultiThreaded = FALSE;
- glb.bDirectDrawPersistant = TRUE;
- glb.bPersistantBuffers = TRUE;
- glb.bFullscreenBlit = TRUE;
- return;
- }
-
- // Case 4: StereoGraphics test apps create and destroy GLRCs on paint commands
- if (strstr(szModuleFileName, "REDBLUE.EXE")
- || strstr(szModuleFileName, "DIAGNOSE.EXE")) {
- glb.bMultiThreaded = FALSE;
- glb.bDirectDrawPersistant = TRUE;
- glb.bPersistantBuffers = TRUE;
- return;
- }
-
- // Case 5: Pipes screen savers share multiple GLRCs for same window
- if (strstr(szModuleFileName, "PIPES.SCR")
- || (strstr(szModuleFileName, "PIPES") && strstr(szModuleFileName, ".SCR"))) {
- glb.bMultiThreaded = FALSE;
- glb.bDirectDrawPersistant = TRUE;
- glb.bPersistantBuffers = TRUE;
- return;
- }
-
- // Case 6: AutoVue uses sub-viewport ops which are temporarily broken in stereo window
- if (strstr(szModuleFileName, "AVWIN.EXE")) {
- glb.bMultiThreaded = FALSE;
- glb.bDirectDrawPersistant = TRUE;
- glb.bPersistantBuffers = TRUE;
- return;
- }
- // Case 7: Quake3 is waiting for DDraw objects to be released at exit
- if (strstr(szModuleFileName, "QUAKE")) {
- glb.bMultiThreaded = FALSE;
- glb.bDirectDrawPersistant = FALSE;
- glb.bPersistantBuffers = FALSE;
- glb.bFullscreenBlit = FALSE;
- return;
- }
- // Case 8: Reflection GLX server is unable to switch contexts at run-time
- if (strstr(szModuleFileName, "RX.EXE")) {
- glb.bMultiThreaded = FALSE;
- glb.bMessageBoxWarnings = FALSE;
- return;
- }
- // Case 9: Original AutoCAD 2000 must share DDraw objects across GLRCs
- if (strstr(szModuleFileName, "ACAD.EXE")) {
- glb.bFastFPU = FALSE;
- if (GetModuleHandle("wopengl6.hdi") != NULL) {
- glb.bMultiThreaded = FALSE;
- glb.bDirectDrawPersistant = TRUE;
- glb.bPersistantBuffers = FALSE;
- }
- return;
- }
-}
-
-// ***********************************************************************
-
-BOOL dglInitDriver(void)
-{
- UCHAR szExeName[MAX_PATH];
- const char *szRendering[] = {
- "Mesa Software",
- "Direct3D RGB SW",
- "Direct3D HW",
- };
- static BOOL bWarnOnce = FALSE;
-
- // Already initialized?
- if (bInitialized)
- return TRUE;
-
- // Moved from DllMain DLL_PROCESS_ATTACH:
-
- // (Re-)Init defaults
- dglInitGlobals();
-
- // Read registry or INI file settings
- if (!dllReadRegistry(hInstanceDll)) {
- if (!bWarnOnce)
- MessageBox( NULL, "GLDirect has not been configured.\n\n"
- "Please run the configuration program\n"
- "before using GLDirect with applications.\n",
- "GLDirect", MB_OK | MB_ICONWARNING);
- bWarnOnce = TRUE;
- return FALSE;
- }
-
-#ifdef _USE_GLD3_WGL
- // Must do this as early as possible.
- // Need to read regkeys/ini-file first though.
- gldInitDriverPointers(glb.dwDriver);
-
- // Create private driver globals
- _gldDriver.CreatePrivateGlobals();
-#endif
- // Overide settings with application customizations
- if (glb.bAppCustomizations)
- dglSetAppCustomizations();
-
-//#ifndef _USE_GLD3_WGL
- // Set the global memory type to either sysmem or vidmem
- glb.dwMemoryType = glb.bHardware ? DDSCAPS_VIDEOMEMORY : DDSCAPS_SYSTEMMEMORY;
-//#endif
-
- // Multi-threaded support overides persistant display support
- if (glb.bMultiThreaded)
- glb.bDirectDrawPersistant = glb.bPersistantBuffers = FALSE;
-
- // Multi-threaded support needs to be reflected in Mesa code. (DaveM)
- _gld_bMultiThreaded = glb.bMultiThreaded;
-
- // Start logging
- ddlogPathOption(szLogPath);
- ddlogWarnOption(glb.bMessageBoxWarnings);
- ddlogOpen((DDLOG_loggingMethodType)dwLogging,
- (DDLOG_severityType)dwDebugLevel);
-
- // Obtain the name of the calling app
- ddlogMessage(DDLOG_SYSTEM, "Driver : SciTech GLDirect 4.0\n");
- GetModuleFileName(NULL, szExeName, sizeof(szExeName));
- ddlogPrintf(DDLOG_SYSTEM, "Executable : %s", szExeName);
-
- ddlogPrintf(DDLOG_SYSTEM, "DirectDraw device: %s", glb.szDDName);
- ddlogPrintf(DDLOG_SYSTEM, "Direct3D driver : %s", glb.szD3DName);
-
- ddlogPrintf(DDLOG_SYSTEM, "Rendering type : %s", szRendering[glb.dwRendering]);
-
- ddlogPrintf(DDLOG_SYSTEM, "Multithreaded : %s", glb.bMultiThreaded ? "Enabled" : "Disabled");
- ddlogPrintf(DDLOG_SYSTEM, "Display resources: %s", glb.bDirectDrawPersistant ? "Persistant" : "Instanced");
- ddlogPrintf(DDLOG_SYSTEM, "Buffer resources : %s", glb.bPersistantBuffers ? "Persistant" : "Instanced");
-
- dglInitContextState();
- dglBuildPixelFormatList();
- //dglBuildTextureFormatList();
-
- // D3D callback driver is now successfully initialized
- bInitialized = TRUE;
- // D3D callback driver is now ready to be exited
- bExited = FALSE;
-
- return TRUE;
-}
-
-// ***********************************************************************
-
-void dglExitDriver(void)
-{
-
- // Only need to clean up once per instance:
- // May be called implicitly from DLL_PROCESS_DETACH,
- // or explicitly from DGL_exitDriver().
- if (bExited)
- return;
- bExited = TRUE;
-
- // DDraw objects may be invalid when DLL unloads.
-__try {
-
- // Clean-up sequence (moved from DLL_PROCESS_DETACH)
-#ifndef _USE_GLD3_WGL
- dglReleaseTextureFormatList();
-#endif
- dglReleasePixelFormatList();
- dglDeleteContextState();
-
-#ifdef _USE_GLD3_WGL
- _gldDriver.DestroyPrivateGlobals();
-#endif
-
-}
-__except(EXCEPTION_EXECUTE_HANDLER) {
- ddlogPrintf(DDLOG_WARN, "Exception raised in dglExitDriver.");
-}
-
- // Close the log file
- ddlogClose();
-}
-
-// ***********************************************************************
-
-int WINAPI DllMain(
- HINSTANCE hInstance,
- DWORD fdwReason,
- PVOID pvReserved)
-{
- switch (fdwReason) {
- case DLL_PROCESS_ATTACH:
- // Cache DLL instance handle
- hInstanceDll = hInstance;
-
- // Flag that callback driver has yet to be initialized
- bInitialized = bExited = FALSE;
-
-#ifndef _USE_GLD3_WGL
- // Init internal Mesa function pointers
- memset(&mesaFuncs, 0, sizeof(DGL_mesaFuncs));
-#endif // _USE_GLD3_WGL
-
- // Init defaults
- dglInitGlobals();
-
- // Defer rest of DLL initialization to 1st WGL function call
- break;
-
- case DLL_PROCESS_DETACH:
- // Call exit clean-up sequence
- dglExitDriver();
- break;
- }
-
- return TRUE;
-}
-
-// ***********************************************************************
-
-void APIENTRY DGL_exitDriver(void)
-{
- // Call exit clean-up sequence
- dglExitDriver();
-}
-
-// ***********************************************************************
-
-void APIENTRY DGL_reinitDriver(void)
-{
- // Force init sequence again
- bInitialized = bExited = FALSE;
- dglInitDriver();
-}
-
-// ***********************************************************************
-
-int WINAPI DllInitialize(
- HINSTANCE hInstance,
- DWORD fdwReason,
- PVOID pvReserved)
-{
- // Some Watcom compiled executables require this.
- return DllMain(hInstance, fdwReason, pvReserved);
-}
-
-// ***********************************************************************
-
-void DGL_LoadSplashScreen(int piReg, char* pszUser)
-{
- HINSTANCE hSplashDll = NULL;
- LPDGLSPLASHSCREEN dglSplashScreen = NULL;
- static BOOL bOnce = FALSE;
- static int iReg = 0;
- static char szUser[255] = {"\0"};
-
- // Display splash screen at all?
- if (!bSplashScreen)
- return;
-
- // Only display splash screen once
- if (bOnce)
- return;
- bOnce = TRUE;
-
- // Make local copy of string for passing to DLL
- if (pszUser)
- strcpy(szUser, pszUser);
- iReg = piReg;
-
- // Load Splash Screen DLL
- // (If it fails to load for any reason, we don't care...)
- hSplashDll = LoadLibrary("gldsplash.dll");
- if (hSplashDll) {
- // Execute the Splash Screen function
- dglSplashScreen = (LPDGLSPLASHSCREEN)GetProcAddress(hSplashDll, "GLDSplashScreen");
- if (dglSplashScreen)
- (*dglSplashScreen)(1, iReg, szUser);
- // Don't unload the DLL since splash screen dialog is modeless now
- }
-}
-
-// ***********************************************************************
-
-BOOL dglValidate()
-{
- char *szCaption = "SciTech GLDirect Driver";
- UINT uType = MB_OK | MB_ICONEXCLAMATION;
-
-#ifdef _USE_GLD3_WGL
- // (Re)build pixelformat list
- if (glb.bPixelformatsDirty)
- _gldDriver.BuildPixelformatList();
-#endif
-
- // Check to see if we have already validated
- if (bDriverValidated && bInitialized)
- return TRUE;
-
- // Since all (most) the WGL functions must be validated at this point,
- // this also insure that the callback driver is completely initialized.
- if (!bInitialized)
- if (!dglInitDriver()) {
- MessageBox(NULL,
- "The GLDirect driver could not initialize.\n\n"
- "Please run the configuration program to\n"
- "properly configure the driver, or else\n"
- "re-run the installation program.", szCaption, uType);
- _exit(1); // Bail
- }
-
- return TRUE;
-}
-
-// ***********************************************************************
-
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dllmain.h b/mesalib/src/mesa/drivers/windows/gldirect/dllmain.h
deleted file mode 100644
index 03343ef7a..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dllmain.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Win32 DllMain functions.
-*
-****************************************************************************/
-
-#ifndef __DLLMAIN_H
-#define __DLLMAIN_H
-
-// Macros to control compilation
-#define STRICT
-#define WIN32_LEAN_AND_MEAN
-
-#include <windows.h>
-
-#ifndef _USE_GLD3_WGL
-#include "DirectGL.h"
-#endif // _USE_GLD3_WGL
-
-//#include "gldirect/regkeys.h"
-#include "dglglobals.h"
-#include "ddlog.h"
-#ifndef _USE_GLD3_WGL
-#include "d3dtexture.h"
-#endif // _USE_GLD3_WGL
-
-#include "dglwgl.h"
-
-extern BOOL bInitialized;
-
-BOOL dglInitDriver(void);
-void dglExitDriver(void);
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c
deleted file mode 100644
index 171585dcf..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_driver_dx9.c
+++ /dev/null
@@ -1,1204 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Driver interface code to Mesa
-*
-****************************************************************************/
-
-//#include <windows.h>
-#include "dglcontext.h"
-#include "ddlog.h"
-#include "gld_dx9.h"
-
-#include "glheader.h"
-#include "context.h"
-#include "colormac.h"
-#include "depth.h"
-#include "extensions.h"
-#include "macros.h"
-#include "matrix.h"
-// #include "mem.h"
-//#include "mmath.h"
-#include "mtypes.h"
-#include "texformat.h"
-#include "teximage.h"
-#include "texstore.h"
-#include "vbo/vbo.h"
-#include "swrast_setup/swrast_setup.h"
-#include "swrast_setup/ss_context.h"
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-extern BOOL dglSwapBuffers(HDC hDC);
-
-// HACK: Hack the _33 member of the OpenGL perspective projection matrix
-const float _fPersp_33 = 1.6f;
-
-//---------------------------------------------------------------------------
-// Internal functions
-//---------------------------------------------------------------------------
-
-void _gld_mesa_warning(
- __struct gl_context *gc,
- char *str)
-{
- // Intercept Mesa's internal warning mechanism
- gldLogPrintf(GLDLOG_WARN, "Mesa warning: %s", str);
-}
-
-//---------------------------------------------------------------------------
-
-void _gld_mesa_fatal(
- __struct gl_context *gc,
- char *str)
-{
- // Intercept Mesa's internal fatal-message mechanism
- gldLogPrintf(GLDLOG_CRITICAL, "Mesa FATAL: %s", str);
-
- // Mesa calls abort(0) here.
- ddlogClose();
- exit(0);
-}
-
-//---------------------------------------------------------------------------
-
-D3DSTENCILOP _gldConvertStencilOp(
- GLenum StencilOp)
-{
- // Used by Stencil: pass, fail and zfail
-
- switch (StencilOp) {
- case GL_KEEP:
- return D3DSTENCILOP_KEEP;
- case GL_ZERO:
- return D3DSTENCILOP_ZERO;
- case GL_REPLACE:
- return D3DSTENCILOP_REPLACE;
- case GL_INCR:
- return D3DSTENCILOP_INCRSAT;
- case GL_DECR:
- return D3DSTENCILOP_DECRSAT;
- case GL_INVERT:
- return D3DSTENCILOP_INVERT;
- case GL_INCR_WRAP_EXT: // GL_EXT_stencil_wrap
- return D3DSTENCILOP_INCR;
- case GL_DECR_WRAP_EXT: // GL_EXT_stencil_wrap
- return D3DSTENCILOP_DECR;
- }
-
-#ifdef _DEBUG
- gldLogMessage(GLDLOG_ERROR, "_gldConvertStencilOp: Unknown StencilOp\n");
-#endif
-
- return D3DSTENCILOP_KEEP;
-}
-
-//---------------------------------------------------------------------------
-
-D3DCMPFUNC _gldConvertCompareFunc(
- GLenum CmpFunc)
-{
- // Used for Alpha func, depth func and stencil func.
-
- switch (CmpFunc) {
- case GL_NEVER:
- return D3DCMP_NEVER;
- case GL_LESS:
- return D3DCMP_LESS;
- case GL_EQUAL:
- return D3DCMP_EQUAL;
- case GL_LEQUAL:
- return D3DCMP_LESSEQUAL;
- case GL_GREATER:
- return D3DCMP_GREATER;
- case GL_NOTEQUAL:
- return D3DCMP_NOTEQUAL;
- case GL_GEQUAL:
- return D3DCMP_GREATEREQUAL;
- case GL_ALWAYS:
- return D3DCMP_ALWAYS;
- };
-
-#ifdef _DEBUG
- gldLogMessage(GLDLOG_ERROR, "_gldConvertCompareFunc: Unknown CompareFunc\n");
-#endif
-
- return D3DCMP_ALWAYS;
-}
-
-//---------------------------------------------------------------------------
-
-D3DBLEND _gldConvertBlendFunc(
- GLenum blend,
- GLenum DefaultBlend)
-{
- switch (blend) {
- case GL_ZERO:
- return D3DBLEND_ZERO;
- case GL_ONE:
- return D3DBLEND_ONE;
- case GL_DST_COLOR:
- return D3DBLEND_DESTCOLOR;
- case GL_SRC_COLOR:
- return D3DBLEND_SRCCOLOR;
- case GL_ONE_MINUS_DST_COLOR:
- return D3DBLEND_INVDESTCOLOR;
- case GL_ONE_MINUS_SRC_COLOR:
- return D3DBLEND_INVSRCCOLOR;
- case GL_SRC_ALPHA:
- return D3DBLEND_SRCALPHA;
- case GL_ONE_MINUS_SRC_ALPHA:
- return D3DBLEND_INVSRCALPHA;
- case GL_DST_ALPHA:
- return D3DBLEND_DESTALPHA;
- case GL_ONE_MINUS_DST_ALPHA:
- return D3DBLEND_INVDESTALPHA;
- case GL_SRC_ALPHA_SATURATE:
- return D3DBLEND_SRCALPHASAT;
- }
-
-#ifdef _DEBUG
- gldLogMessage(GLDLOG_ERROR, "_gldConvertBlendFunc: Unknown BlendFunc\n");
-#endif
-
- return DefaultBlend;
-}
-
-//---------------------------------------------------------------------------
-// Misc. functions
-//---------------------------------------------------------------------------
-
-void gld_Noop_DX9(
- struct gl_context *ctx)
-{
-#ifdef _DEBUG
- gldLogMessage(GLDLOG_ERROR, "gld_Noop called!\n");
-#endif
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Error_DX9(
- struct gl_context *ctx)
-{
-#ifdef _DEBUG
- // Quite useless.
-// gldLogMessage(GLDLOG_ERROR, "ctx->Driver.Error called!\n");
-#endif
-}
-
-//---------------------------------------------------------------------------
-// Required Mesa functions
-//---------------------------------------------------------------------------
-
-static GLboolean gld_set_draw_buffer_DX9(
- struct gl_context *ctx,
- GLenum mode)
-{
- (void) ctx;
- if ((mode==GL_FRONT_LEFT) || (mode == GL_BACK_LEFT)) {
- return GL_TRUE;
- }
- else {
- return GL_FALSE;
- }
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_set_read_buffer_DX9(
- struct gl_context *ctx,
- struct gl_framebuffer *buffer,
- GLenum mode)
-{
- /* separate read buffer not supported */
-/*
- ASSERT(buffer == ctx->DrawBuffer);
- ASSERT(mode == GL_FRONT_LEFT);
-*/
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Clear_DX9(
- struct gl_context *ctx,
- GLbitfield mask,
- GLboolean all,
- GLint x,
- GLint y,
- GLint width,
- GLint height)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- DWORD dwFlags = 0;
- D3DCOLOR Color = 0;
- float Z = 0.0f;
- DWORD Stencil = 0;
- D3DRECT d3dClearRect;
-
- // TODO: Colourmask
- const GLuint *colorMask = (GLuint *) &ctx->Color.ColorMask[0];
-
- if (!gld->pDev)
- return;
-
- if (mask & (DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT)) {
- GLubyte col[4];
- CLAMPED_FLOAT_TO_UBYTE(col[0], ctx->Color.ClearColor[0]);
- CLAMPED_FLOAT_TO_UBYTE(col[1], ctx->Color.ClearColor[1]);
- CLAMPED_FLOAT_TO_UBYTE(col[2], ctx->Color.ClearColor[2]);
- CLAMPED_FLOAT_TO_UBYTE(col[3], ctx->Color.ClearColor[3]);
- dwFlags |= D3DCLEAR_TARGET;
- Color = D3DCOLOR_RGBA(col[0], col[1], col[2], col[3]);
- }
-
- if (mask & DD_DEPTH_BIT) {
- // D3D8 will fail the Clear call if we try and clear a
- // depth buffer and we haven't created one.
- // Also, some apps try and clear a depth buffer,
- // when a depth buffer hasn't been requested by the app.
- if (ctx->Visual.depthBits == 0) {
- mask &= ~DD_DEPTH_BIT; // Remove depth bit from mask
- } else {
- dwFlags |= D3DCLEAR_ZBUFFER;
- Z = ctx->Depth.Clear;
- }
- }
-
- if (mask & DD_STENCIL_BIT) {
- if (ctx->Visual.stencilBits == 0) {
- // No stencil bits in depth buffer
- mask &= ~DD_STENCIL_BIT; // Remove stencil bit from mask
- } else {
- dwFlags |= D3DCLEAR_STENCIL;
- Stencil = ctx->Stencil.Clear;
- }
- }
-
- // Some apps do really weird things with the rect, such as Quake3.
- if ((x < 0) || (y < 0) || (width <= 0) || (height <= 0)) {
- all = GL_TRUE;
- }
-
- if (!all) {
- // Calculate clear subrect
- d3dClearRect.x1 = x;
- d3dClearRect.y1 = gldCtx->dwHeight - (y + height);
- d3dClearRect.x2 = x + width;
- d3dClearRect.y2 = d3dClearRect.y1 + height;
-// gldLogPrintf(GLDLOG_INFO, "Rect %d,%d %d,%d", x,y,width,height);
- }
-
- // dwFlags will be zero if there's nothing to clear
- if (dwFlags) {
- _GLD_DX9_DEV(Clear(
- gld->pDev,
- all ? 0 : 1,
- all ? NULL : &d3dClearRect,
- dwFlags,
- Color, Z, Stencil));
- }
-
- if (mask & DD_ACCUM_BIT) {
- // Clear accumulation buffer
- }
-}
-
-//---------------------------------------------------------------------------
-
-// Mesa 5: Parameter change
-static void gld_buffer_size_DX9(
-// struct gl_context *ctx,
- struct gl_framebuffer *fb,
- GLuint *width,
- GLuint *height)
-{
-// GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
-
- *width = fb->Width; // gldCtx->dwWidth;
- *height = fb->Height; // gldCtx->dwHeight;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_Finish_DX9(
- struct gl_context *ctx)
-{
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_Flush_DX9(
- struct gl_context *ctx)
-{
- GLD_context *gld = GLD_GET_CONTEXT(ctx);
-
- // TODO: Detect apps that glFlush() then SwapBuffers() ?
-
- if (gld->EmulateSingle) {
- // Emulating a single-buffered context.
- // [Direct3D doesn't allow rendering to front buffer]
- dglSwapBuffers(gld->hDC);
- }
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_STENCIL(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- // Two-sided stencil. New for Mesa 5
- const GLuint uiFace = 0UL;
-
- struct gl_stencil_attrib *pStencil = &ctx->Stencil;
-
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILENABLE, pStencil->Enabled ? TRUE : FALSE));
- if (pStencil->Enabled) {
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILFUNC, _gldConvertCompareFunc(pStencil->Function[uiFace])));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILREF, pStencil->Ref[uiFace]));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILMASK, pStencil->ValueMask[uiFace]));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILWRITEMASK, pStencil->WriteMask[uiFace]));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILFAIL, _gldConvertStencilOp(pStencil->FailFunc[uiFace])));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILZFAIL, _gldConvertStencilOp(pStencil->ZFailFunc[uiFace])));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_STENCILPASS, _gldConvertStencilOp(pStencil->ZPassFunc[uiFace])));
- }
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_COLOR(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- DWORD dwFlags = 0;
- D3DBLEND src;
- D3DBLEND dest;
-
- // Alpha func
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_ALPHAFUNC, _gldConvertCompareFunc(ctx->Color.AlphaFunc)));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_ALPHAREF, (DWORD)ctx->Color.AlphaRef));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_ALPHATESTENABLE, ctx->Color.AlphaEnabled));
-
- // Blend func
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_ALPHABLENDENABLE, ctx->Color.BlendEnabled));
- src = _gldConvertBlendFunc(ctx->Color.BlendSrcRGB, GL_ONE);
- dest = _gldConvertBlendFunc(ctx->Color.BlendDstRGB, GL_ZERO);
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_SRCBLEND, src));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_DESTBLEND, dest));
-
- // Color mask
- if (ctx->Color.ColorMask[0][0]) dwFlags |= D3DCOLORWRITEENABLE_RED;
- if (ctx->Color.ColorMask[0][1]) dwFlags |= D3DCOLORWRITEENABLE_GREEN;
- if (ctx->Color.ColorMask[0][2]) dwFlags |= D3DCOLORWRITEENABLE_BLUE;
- if (ctx->Color.ColorMask[0][3]) dwFlags |= D3DCOLORWRITEENABLE_ALPHA;
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_COLORWRITEENABLE, dwFlags));
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_DEPTH(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_ZENABLE, ctx->Depth.Test ? D3DZB_TRUE : D3DZB_FALSE));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_ZFUNC, _gldConvertCompareFunc(ctx->Depth.Func)));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_ZWRITEENABLE, ctx->Depth.Mask ? TRUE : FALSE));
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_POLYGON(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- D3DFILLMODE d3dFillMode = D3DFILL_SOLID;
- D3DCULL d3dCullMode = D3DCULL_NONE;
- float fOffset = 0; // Changed from int to float for DX9
-
- // Fillmode
- switch (ctx->Polygon.FrontMode) {
- case GL_POINT:
- d3dFillMode = D3DFILL_POINT;
- break;
- case GL_LINE:
- d3dFillMode = D3DFILL_WIREFRAME;
- break;
- case GL_FILL:
- d3dFillMode = D3DFILL_SOLID;
- break;
- }
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FILLMODE, d3dFillMode));
-
- if (ctx->Polygon.CullFlag) {
- switch (ctx->Polygon.CullFaceMode) {
- case GL_BACK:
- if (ctx->Polygon.FrontFace == GL_CCW)
- d3dCullMode = D3DCULL_CW;
- else
- d3dCullMode = D3DCULL_CCW;
- break;
- case GL_FRONT:
- if (ctx->Polygon.FrontFace == GL_CCW)
- d3dCullMode = D3DCULL_CCW;
- else
- d3dCullMode = D3DCULL_CW;
- break;
- case GL_FRONT_AND_BACK:
- d3dCullMode = D3DCULL_NONE;
- break;
- default:
- break;
- }
- } else {
- d3dCullMode = D3DCULL_NONE;
- }
-// d3dCullMode = D3DCULL_NONE; // FOR DEBUGGING
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_CULLMODE, d3dCullMode));
-
- // Polygon offset
- // ZBIAS ranges from 0 to 16 and can only move towards the viewer
- // Mesa5: ctx->Polygon._OffsetAny removed
- if (ctx->Polygon.OffsetFill) {
- fOffset = ctx->Polygon.OffsetUnits;
-// if (iOffset < 0.0f)
-// iOffset = -iOffset;
-// else
-// iOffset = 0.0f; // D3D can't push away
- }
- // NOTE: SetRenderState() required a DWORD, so need to cast
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_DEPTHBIAS, *((DWORD*)&fOffset)));
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_FOG(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- D3DCOLOR d3dFogColour;
- D3DFOGMODE d3dFogMode = D3DFOG_LINEAR;
-
- // TODO: Fog is calculated seperately in the Mesa pipeline
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGENABLE, FALSE));
- return;
-
- // Fog enable
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGENABLE, ctx->Fog.Enabled));
- if (!ctx->Fog.Enabled) {
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGTABLEMODE, D3DFOG_NONE));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGVERTEXMODE, D3DFOG_NONE));
- return; // If disabled, don't bother setting any fog state
- }
-
- // Fog colour
- d3dFogColour = D3DCOLOR_COLORVALUE( ctx->Fog.Color[0],
- ctx->Fog.Color[1],
- ctx->Fog.Color[2],
- ctx->Fog.Color[3]);
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGCOLOR, d3dFogColour));
-
- // Fog density
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGDENSITY, *((DWORD*) (&ctx->Fog.Density))));
-
- // Fog start
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGSTART, *((DWORD*) (&ctx->Fog.Start))));
-
- // Fog end
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGEND, *((DWORD*) (&ctx->Fog.End))));
-
- // Fog mode
- switch (ctx->Fog.Mode) {
- case GL_LINEAR:
- d3dFogMode = D3DFOG_LINEAR;
- break;
- case GL_EXP:
- d3dFogMode = D3DFOG_EXP;
- break;
- case GL_EXP2:
- d3dFogMode = D3DFOG_EXP2;
- break;
- }
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGTABLEMODE, d3dFogMode));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_FOGVERTEXMODE, D3DFOG_NONE));
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_LIGHT(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
- DWORD dwSpecularEnable;
-
- // Shademode
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_SHADEMODE, (ctx->Light.ShadeModel == GL_SMOOTH) ? D3DSHADE_GOURAUD : D3DSHADE_FLAT));
-
- // Separate specular colour
- if (ctx->Light.Enabled)
- dwSpecularEnable = (ctx->_TriangleCaps & DD_SEPARATE_SPECULAR) ? TRUE: FALSE;
- else
- dwSpecularEnable = FALSE;
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_SPECULARENABLE, dwSpecularEnable));
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_MODELVIEW(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- D3DMATRIX m;
- //GLfloat *pM = ctx->ModelView.m;
- // Mesa5: Model-view is now a stack
- GLfloat *pM = ctx->ModelviewMatrixStack.Top->m;
- m._11 = pM[0];
- m._12 = pM[1];
- m._13 = pM[2];
- m._14 = pM[3];
- m._21 = pM[4];
- m._22 = pM[5];
- m._23 = pM[6];
- m._24 = pM[7];
- m._31 = pM[8];
- m._32 = pM[9];
- m._33 = pM[10];
- m._34 = pM[11];
- m._41 = pM[12];
- m._42 = pM[13];
- m._43 = pM[14];
- m._44 = pM[15];
-
- gld->matModelView = m;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_PROJECTION(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- D3DMATRIX m;
- //GLfloat *pM = ctx->ProjectionMatrix.m;
- // Mesa 5: Now a stack
- GLfloat *pM = ctx->ProjectionMatrixStack.Top->m;
- m._11 = pM[0];
- m._12 = pM[1];
- m._13 = pM[2];
- m._14 = pM[3];
-
- m._21 = pM[4];
- m._22 = pM[5];
- m._23 = pM[6];
- m._24 = pM[7];
-
- m._31 = pM[8];
- m._32 = pM[9];
- m._33 = pM[10] / _fPersp_33; // / 1.6f;
- m._34 = pM[11];
-
- m._41 = pM[12];
- m._42 = pM[13];
- m._43 = pM[14] / 2.0f;
- m._44 = pM[15];
-
- gld->matProjection = m;
-}
-
-//---------------------------------------------------------------------------
-/*
-void gldFrustumHook_DX9(
- GLdouble left,
- GLdouble right,
- GLdouble bottom,
- GLdouble top,
- GLdouble nearval,
- GLdouble farval)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- // Pass values on to Mesa first (in case we mess with them)
- _mesa_Frustum(left, right, bottom, top, nearval, farval);
-
- _fPersp_33 = farval / (nearval - farval);
-
-// ddlogPrintf(GLDLOG_SYSTEM, "Frustum: %f", farval/nearval);
-}
-
-//---------------------------------------------------------------------------
-
-void gldOrthoHook_DX9(
- GLdouble left,
- GLdouble right,
- GLdouble bottom,
- GLdouble top,
- GLdouble nearval,
- GLdouble farval)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- // Pass values on to Mesa first (in case we mess with them)
- _mesa_Ortho(left, right, bottom, top, nearval, farval);
-
- _fPersp_33 = 1.6f;
-
-// ddlogPrintf(GLDLOG_SYSTEM, "Ortho: %f", farval/nearval);
-}
-*/
-//---------------------------------------------------------------------------
-
-void gld_NEW_VIEWPORT(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- D3DVIEWPORT9 d3dvp;
-// GLint x, y;
-// GLsizei w, h;
-
- // Set depth range
- _GLD_DX9_DEV(GetViewport(gld->pDev, &d3dvp));
- // D3D can't do Quake1/Quake2 z-trick
- if (ctx->Viewport.Near <= ctx->Viewport.Far) {
- d3dvp.MinZ = ctx->Viewport.Near;
- d3dvp.MaxZ = ctx->Viewport.Far;
- } else {
- d3dvp.MinZ = ctx->Viewport.Far;
- d3dvp.MaxZ = ctx->Viewport.Near;
- }
-/* x = ctx->Viewport.X;
- y = ctx->Viewport.Y;
- w = ctx->Viewport.Width;
- h = ctx->Viewport.Height;
- if (x < 0) x = 0;
- if (y < 0) y = 0;
- if (w > gldCtx->dwWidth) w = gldCtx->dwWidth;
- if (h > gldCtx->dwHeight) h = gldCtx->dwHeight;
- // Ditto for D3D viewport dimensions
- if (w+x > gldCtx->dwWidth) w = gldCtx->dwWidth-x;
- if (h+y > gldCtx->dwHeight) h = gldCtx->dwHeight-y;
- d3dvp.X = x;
- d3dvp.Y = gldCtx->dwHeight - (y + h);
- d3dvp.Width = w;
- d3dvp.Height = h;*/
- _GLD_DX9_DEV(SetViewport(gld->pDev, &d3dvp));
-
-// gld->fFlipWindowY = (float)gldCtx->dwHeight;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_SCISSOR(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- // Bail if IHV driver cannot scissor
- if (!gld->bCanScissor)
- return;
-
- // Set scissor rect
- if (ctx->Scissor.Enabled) {
- RECT rcRect;
- // Keep in mind that RECT's need an extra row and column
- rcRect.left = ctx->Scissor.X;
- rcRect.right = ctx->Scissor.X + ctx->Scissor.Width; // + 1;
- rcRect.top = gldCtx->dwHeight - (ctx->Scissor.Y + ctx->Scissor.Height);
- rcRect.bottom = rcRect.top + ctx->Scissor.Height;
- IDirect3DDevice9_SetScissorRect(gld->pDev, &rcRect);
- }
-
- // Enable/disable scissor as required
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_SCISSORTESTENABLE, ctx->Scissor.Enabled));
-}
-
-//---------------------------------------------------------------------------
-
-__inline BOOL _gldAnyEvalEnabled(
- struct gl_context *ctx)
-{
- struct gl_eval_attrib *eval = &ctx->Eval;
-
- if ((eval->AutoNormal) ||
- (eval->Map1Color4) ||
- (eval->Map1Index) ||
- (eval->Map1Normal) ||
- (eval->Map1TextureCoord1) ||
- (eval->Map1TextureCoord2) ||
- (eval->Map1TextureCoord3) ||
- (eval->Map1TextureCoord4) ||
- (eval->Map1Vertex3) ||
- (eval->Map1Vertex4) ||
- (eval->Map2Color4) ||
- (eval->Map2Index) ||
- (eval->Map2Normal) ||
- (eval->Map2TextureCoord1) ||
- (eval->Map2TextureCoord2) ||
- (eval->Map2TextureCoord3) ||
- (eval->Map2TextureCoord4) ||
- (eval->Map2Vertex3) ||
- (eval->Map2Vertex4)
- )
- return TRUE;
-
- return FALSE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL _gldChooseInternalPipeline(
- struct gl_context *ctx,
- GLD_driver_dx9 *gld)
-{
-// return TRUE; // DEBUGGING: ALWAYS USE MESA
-// return FALSE; // DEBUGGING: ALWAYS USE D3D
-
- if ((glb.dwTnL == GLDS_TNL_MESA) || (gld->bHasHWTnL == FALSE))
- {
- gld->PipelineUsage.qwMesa.QuadPart++;
- return TRUE; // Force Mesa TnL
- }
-
- if ((ctx->Light.Enabled) ||
- (1) ||
- (ctx->Texture._TexGenEnabled) ||
- (ctx->Texture._TexMatEnabled) ||
-// (ctx->Transform._AnyClip) ||
- (ctx->Scissor.Enabled) ||
- _gldAnyEvalEnabled(ctx) // Put this last so we can early-out
- )
- {
- gld->PipelineUsage.qwMesa.QuadPart++;
- return TRUE;
- }
-
- gld->PipelineUsage.qwD3DFVF.QuadPart++;
- return FALSE;
-
-/* // Force Mesa pipeline?
- if (glb.dwTnL == GLDS_TNL_MESA) {
- gld->PipelineUsage.dwMesa.QuadPart++;
- return GLD_PIPELINE_MESA;
- }
-
- // Test for functionality not exposed in the D3D pathways
- if ((ctx->Texture._GenFlags)) {
- gld->PipelineUsage.dwMesa.QuadPart++;
- return GLD_PIPELINE_MESA;
- }
-
- // Now decide if vertex shader can be used.
- // If two sided lighting is enabled then we must either
- // use Mesa TnL or the vertex shader
- if (ctx->_TriangleCaps & DD_TRI_LIGHT_TWOSIDE) {
- if (gld->VStwosidelight.hShader && !ctx->Fog.Enabled) {
- // Use Vertex Shader
- gld->PipelineUsage.dwD3D2SVS.QuadPart++;
- return GLD_PIPELINE_D3D_VS_TWOSIDE;
- } else {
- // Use Mesa TnL
- gld->PipelineUsage.dwMesa.QuadPart++;
- return GLD_PIPELINE_MESA;
- }
- }
-
- // Must be D3D fixed-function pipeline
- gld->PipelineUsage.dwD3DFVF.QuadPart++;
- return GLD_PIPELINE_D3D_FVF;
-*/
-}
-
-//---------------------------------------------------------------------------
-
-void gld_update_state_DX9(
- struct gl_context *ctx,
- GLuint new_state)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLD_pb_dx9 *gldPB;
-
- if (!gld || !gld->pDev)
- return;
-
- _swsetup_InvalidateState( ctx, new_state );
- _vbo_InvalidateState( ctx, new_state );
- _tnl_InvalidateState( ctx, new_state );
-
- // SetupIndex will be used in the pipelines for choosing setup function
- if ((ctx->_TriangleCaps & (DD_TRI_LIGHT_TWOSIDE | DD_SEPARATE_SPECULAR)) ||
- (ctx->Fog.Enabled))
- {
- if (ctx->_TriangleCaps & DD_FLATSHADE)
- gld->iSetupFunc = GLD_SI_FLAT_EXTRAS;
- else
- gld->iSetupFunc = GLD_SI_SMOOTH_EXTRAS;
- } else {
- if (ctx->_TriangleCaps & DD_FLATSHADE)
- gld->iSetupFunc = GLD_SI_FLAT; // Setup flat shade + texture
- else
- gld->iSetupFunc = GLD_SI_SMOOTH; // Setup smooth shade + texture
- }
-
- gld->bUseMesaTnL = _gldChooseInternalPipeline(ctx, gld);
- if (gld->bUseMesaTnL) {
- gldPB = &gld->PB2d;
- _GLD_DX9_DEV(SetSoftwareVertexProcessing(gld->pDev, TRUE));
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_CLIPPING, FALSE));
- _GLD_DX9_DEV(SetVertexShader(gld->pDev, NULL));
- _GLD_DX9_DEV(SetFVF(gld->pDev, gldPB->dwFVF));
- } else {
- gldPB = &gld->PB3d;
- _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_CLIPPING, TRUE));
-// if (gld->TnLPipeline == GLD_PIPELINE_D3D_VS_TWOSIDE) {
-// _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_SOFTWAREVERTEXPROCESSING, !gld->VStwosidelight.bHardware));
-// _GLD_DX9_DEV(SetVertexShader(gld->pDev, gld->VStwosidelight.hShader));
-// } else {
-// _GLD_DX9_DEV(SetRenderState(gld->pDev, D3DRS_SOFTWAREVERTEXPROCESSING, !gld->bHasHWTnL));
- _GLD_DX9_DEV(SetSoftwareVertexProcessing(gld->pDev, !gld->bHasHWTnL));
- _GLD_DX9_DEV(SetVertexShader(gld->pDev, NULL));
- _GLD_DX9_DEV(SetFVF(gld->pDev, gldPB->dwFVF));
-// }
- }
-
-#define _GLD_TEST_STATE(a) \
- if (new_state & (a)) { \
- gld##a(ctx); \
- new_state &= ~(a); \
- }
-
-#define _GLD_TEST_STATE_DX9(a) \
- if (new_state & (a)) { \
- gld##a##_DX9(ctx); \
- new_state &= ~(a); \
- }
-
-#define _GLD_IGNORE_STATE(a) new_state &= ~(a);
-
-// if (!gld->bUseMesaTnL) {
- // Not required if Mesa is doing the TnL.
- // Problem: If gld->bUseMesaTnL is TRUE when these are signaled,
- // then we'll miss updating the D3D TnL pipeline.
- // Therefore, don't test for gld->bUseMesaTnL
- _GLD_TEST_STATE(_NEW_MODELVIEW);
- _GLD_TEST_STATE(_NEW_PROJECTION);
-// }
-
- _GLD_TEST_STATE_DX9(_NEW_TEXTURE); // extern, so guard with _DX9
- _GLD_TEST_STATE(_NEW_COLOR);
- _GLD_TEST_STATE(_NEW_DEPTH);
- _GLD_TEST_STATE(_NEW_POLYGON);
- _GLD_TEST_STATE(_NEW_STENCIL);
- _GLD_TEST_STATE(_NEW_FOG);
- _GLD_TEST_STATE(_NEW_LIGHT);
- _GLD_TEST_STATE(_NEW_VIEWPORT);
-
- _GLD_IGNORE_STATE(_NEW_TRANSFORM);
-
- // Scissor Test: New for DX9
- _GLD_TEST_STATE(_NEW_SCISSOR);
-
-// Stubs for future use.
-/* _GLD_TEST_STATE(_NEW_TEXTURE_MATRIX);
- _GLD_TEST_STATE(_NEW_COLOR_MATRIX);
- _GLD_TEST_STATE(_NEW_EVAL);
- _GLD_TEST_STATE(_NEW_HINT);
- _GLD_TEST_STATE(_NEW_LINE);
- _GLD_TEST_STATE(_NEW_PIXEL);
- _GLD_TEST_STATE(_NEW_POINT);
- _GLD_TEST_STATE(_NEW_POLYGONSTIPPLE);
- _GLD_TEST_STATE(_NEW_PACKUNPACK);
- _GLD_TEST_STATE(_NEW_ARRAY);
- _GLD_TEST_STATE(_NEW_RENDERMODE);
- _GLD_TEST_STATE(_NEW_BUFFERS);
- _GLD_TEST_STATE(_NEW_MULTISAMPLE);
-*/
-
-// For debugging.
-#if 0
-#define _GLD_TEST_UNHANDLED_STATE(a) \
- if (new_state & (a)) { \
- gldLogMessage(GLDLOG_ERROR, "Unhandled " #a "\n"); \
- }
- _GLD_TEST_UNHANDLED_STATE(_NEW_TEXTURE_MATRIX);
- _GLD_TEST_UNHANDLED_STATE(_NEW_COLOR_MATRIX);
- _GLD_TEST_UNHANDLED_STATE(_NEW_EVAL);
- _GLD_TEST_UNHANDLED_STATE(_NEW_HINT);
- _GLD_TEST_UNHANDLED_STATE(_NEW_LINE);
- _GLD_TEST_UNHANDLED_STATE(_NEW_PIXEL);
- _GLD_TEST_UNHANDLED_STATE(_NEW_POINT);
- _GLD_TEST_UNHANDLED_STATE(_NEW_POLYGONSTIPPLE);
-// _GLD_TEST_UNHANDLED_STATE(_NEW_SCISSOR);
- _GLD_TEST_UNHANDLED_STATE(_NEW_PACKUNPACK);
- _GLD_TEST_UNHANDLED_STATE(_NEW_ARRAY);
- _GLD_TEST_UNHANDLED_STATE(_NEW_RENDERMODE);
- _GLD_TEST_UNHANDLED_STATE(_NEW_BUFFERS);
- _GLD_TEST_UNHANDLED_STATE(_NEW_MULTISAMPLE);
-#undef _GLD_UNHANDLED_STATE
-#endif
-
-#undef _GLD_TEST_STATE
-}
-
-//---------------------------------------------------------------------------
-// Viewport
-//---------------------------------------------------------------------------
-
-void gld_Viewport_DX9(
- struct gl_context *ctx,
- GLint x,
- GLint y,
- GLsizei w,
- GLsizei h)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- D3DVIEWPORT9 d3dvp;
-
- if (!gld || !gld->pDev)
- return;
-
- // This is a hack. When the app is minimized, Mesa passes
- // w=1 and h=1 for viewport dimensions. Without this test
- // we get a GPF in gld_wgl_resize_buffers().
- if ((w==1) && (h==1))
- return;
-
- // Call ResizeBuffersMESA. This function will early-out
- // if no resize is needed.
- //ctx->Driver.ResizeBuffersMESA(ctx);
- // Mesa 5: Changed parameters
- ctx->Driver.ResizeBuffers(gldCtx->glBuffer);
-
-#if 0
- ddlogPrintf(GLDLOG_SYSTEM, ">> Viewport x=%d y=%d w=%d h=%d", x,y,w,h);
-#endif
-
- // ** D3D viewport must not be outside the render target surface **
- // Sanity check the GL viewport dimensions
- if (x < 0) x = 0;
- if (y < 0) y = 0;
- if (w > gldCtx->dwWidth) w = gldCtx->dwWidth;
- if (h > gldCtx->dwHeight) h = gldCtx->dwHeight;
- // Ditto for D3D viewport dimensions
- if (w+x > gldCtx->dwWidth) w = gldCtx->dwWidth-x;
- if (h+y > gldCtx->dwHeight) h = gldCtx->dwHeight-y;
-
- d3dvp.X = x;
- d3dvp.Y = gldCtx->dwHeight - (y + h);
- d3dvp.Width = w;
- d3dvp.Height = h;
- if (ctx->Viewport.Near <= ctx->Viewport.Far) {
- d3dvp.MinZ = ctx->Viewport.Near;
- d3dvp.MaxZ = ctx->Viewport.Far;
- } else {
- d3dvp.MinZ = ctx->Viewport.Far;
- d3dvp.MaxZ = ctx->Viewport.Near;
- }
-
- // TODO: DEBUGGING
-// d3dvp.MinZ = 0.0f;
-// d3dvp.MaxZ = 1.0f;
-
- _GLD_DX9_DEV(SetViewport(gld->pDev, &d3dvp));
-
-}
-
-//---------------------------------------------------------------------------
-
-extern BOOL dglWglResizeBuffers(struct gl_context *ctx, BOOL bDefaultDriver);
-
-// Mesa 5: Parameter change
-void gldResizeBuffers_DX9(
-// struct gl_context *ctx)
- struct gl_framebuffer *fb)
-{
- GET_CURRENT_CONTEXT(ctx);
- dglWglResizeBuffers(ctx, TRUE);
-}
-
-//---------------------------------------------------------------------------
-#ifdef _DEBUG
-// This is only for debugging.
-// To use, plug into ctx->Driver.Enable pointer below.
-void gld_Enable(
- struct gl_context *ctx,
- GLenum e,
- GLboolean b)
-{
- char buf[1024];
- sprintf(buf, "Enable: %s (%s)\n", _mesa_lookup_enum_by_nr(e), b?"TRUE":"FALSE");
- ddlogMessage(DDLOG_SYSTEM, buf);
-}
-#endif
-//---------------------------------------------------------------------------
-// Driver pointer setup
-//---------------------------------------------------------------------------
-
-extern const GLubyte* _gldGetStringGeneric(struct gl_context*, GLenum);
-
-void gldSetupDriverPointers_DX9(
- struct gl_context *ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- TNLcontext *tnl = TNL_CONTEXT(ctx);
-
- // Mandatory functions
- ctx->Driver.GetString = _gldGetStringGeneric;
- ctx->Driver.UpdateState = gld_update_state_DX9;
- ctx->Driver.Clear = gld_Clear_DX9;
- ctx->Driver.DrawBuffer = gld_set_draw_buffer_DX9;
- ctx->Driver.GetBufferSize = gld_buffer_size_DX9;
- ctx->Driver.Finish = gld_Finish_DX9;
- ctx->Driver.Flush = gld_Flush_DX9;
- ctx->Driver.Error = gld_Error_DX9;
-
- // Hardware accumulation buffer
- ctx->Driver.Accum = NULL; // TODO: gld_Accum;
-
- // Bitmap functions
- ctx->Driver.CopyPixels = gld_CopyPixels_DX9;
- ctx->Driver.DrawPixels = gld_DrawPixels_DX9;
- ctx->Driver.ReadPixels = gld_ReadPixels_DX9;
- ctx->Driver.Bitmap = gld_Bitmap_DX9;
-
- // Buffer resize
- ctx->Driver.ResizeBuffers = gldResizeBuffers_DX9;
-
- // Texture image functions
- ctx->Driver.ChooseTextureFormat = gld_ChooseTextureFormat_DX9;
- ctx->Driver.TexImage1D = gld_TexImage1D_DX9;
- ctx->Driver.TexImage2D = gld_TexImage2D_DX9;
- ctx->Driver.TexImage3D = _mesa_store_teximage3d;
- ctx->Driver.TexSubImage1D = gld_TexSubImage1D_DX9;
- ctx->Driver.TexSubImage2D = gld_TexSubImage2D_DX9;
- ctx->Driver.TexSubImage3D = _mesa_store_texsubimage3d;
-
- ctx->Driver.CopyTexImage1D = gldCopyTexImage1D_DX9; //NULL;
- ctx->Driver.CopyTexImage2D = gldCopyTexImage2D_DX9; //NULL;
- ctx->Driver.CopyTexSubImage1D = gldCopyTexSubImage1D_DX9; //NULL;
- ctx->Driver.CopyTexSubImage2D = gldCopyTexSubImage2D_DX9; //NULL;
- ctx->Driver.CopyTexSubImage3D = gldCopyTexSubImage3D_DX9;
- ctx->Driver.TestProxyTexImage = _mesa_test_proxy_teximage;
-
- // Texture object functions
- ctx->Driver.BindTexture = NULL;
- ctx->Driver.NewTextureObject = NULL; // Not yet implemented by Mesa!;
- ctx->Driver.DeleteTexture = gld_DeleteTexture_DX9;
- ctx->Driver.PrioritizeTexture = NULL;
-
- // Imaging functionality
- ctx->Driver.CopyColorTable = NULL;
- ctx->Driver.CopyColorSubTable = NULL;
- ctx->Driver.CopyConvolutionFilter1D = NULL;
- ctx->Driver.CopyConvolutionFilter2D = NULL;
-
- // State changing functions
- ctx->Driver.AlphaFunc = NULL; //gld_AlphaFunc;
- ctx->Driver.BlendFuncSeparate = NULL; //gld_BlendFunc;
- ctx->Driver.ClearColor = NULL; //gld_ClearColor;
- ctx->Driver.ClearDepth = NULL; //gld_ClearDepth;
- ctx->Driver.ClearStencil = NULL; //gld_ClearStencil;
- ctx->Driver.ColorMask = NULL; //gld_ColorMask;
- ctx->Driver.CullFace = NULL; //gld_CullFace;
- ctx->Driver.ClipPlane = NULL; //gld_ClipPlane;
- ctx->Driver.FrontFace = NULL; //gld_FrontFace;
- ctx->Driver.DepthFunc = NULL; //gld_DepthFunc;
- ctx->Driver.DepthMask = NULL; //gld_DepthMask;
- ctx->Driver.DepthRange = NULL;
- ctx->Driver.Enable = NULL; //gld_Enable;
- ctx->Driver.Fogfv = NULL; //gld_Fogfv;
- ctx->Driver.Hint = NULL; //gld_Hint;
- ctx->Driver.Lightfv = NULL; //gld_Lightfv;
- ctx->Driver.LightModelfv = NULL; //gld_LightModelfv;
- ctx->Driver.LineStipple = NULL; //gld_LineStipple;
- ctx->Driver.LineWidth = NULL; //gld_LineWidth;
- ctx->Driver.LogicOpcode = NULL; //gld_LogicOpcode;
- ctx->Driver.PointParameterfv = NULL; //gld_PointParameterfv;
- ctx->Driver.PointSize = NULL; //gld_PointSize;
- ctx->Driver.PolygonMode = NULL; //gld_PolygonMode;
- ctx->Driver.PolygonOffset = NULL; //gld_PolygonOffset;
- ctx->Driver.PolygonStipple = NULL; //gld_PolygonStipple;
- ctx->Driver.RenderMode = NULL; //gld_RenderMode;
- ctx->Driver.Scissor = NULL; //gld_Scissor;
- ctx->Driver.ShadeModel = NULL; //gld_ShadeModel;
- ctx->Driver.StencilFunc = NULL; //gld_StencilFunc;
- ctx->Driver.StencilMask = NULL; //gld_StencilMask;
- ctx->Driver.StencilOp = NULL; //gld_StencilOp;
- ctx->Driver.TexGen = NULL; //gld_TexGen;
- ctx->Driver.TexEnv = NULL;
- ctx->Driver.TexParameter = NULL;
- ctx->Driver.TextureMatrix = NULL; //gld_TextureMatrix;
- ctx->Driver.Viewport = gld_Viewport_DX9;
-
- _swsetup_Wakeup(ctx);
-
- tnl->Driver.RunPipeline = _tnl_run_pipeline;
- tnl->Driver.Render.ResetLineStipple = gld_ResetLineStipple_DX9;
- tnl->Driver.Render.ClippedPolygon = _tnl_RenderClippedPolygon;
- tnl->Driver.Render.ClippedLine = _tnl_RenderClippedLine;
-
- // Hook into glFrustum() and glOrtho()
-// ctx->Exec->Frustum = gldFrustumHook_DX9;
-// ctx->Exec->Ortho = gldOrthoHook_DX9;
-
-}
-
-//---------------------------------------------------------------------------
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h
deleted file mode 100644
index 5cb36ac05..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dx9.h
+++ /dev/null
@@ -1,327 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: GLDirect Direct3D 9.0 header file
-*
-****************************************************************************/
-
-#ifndef _GLD_DX9_H
-#define _GLD_DX9_H
-
-//---------------------------------------------------------------------------
-// Windows includes
-//---------------------------------------------------------------------------
-
-//#ifndef STRICT
-//#define STRICT
-//#endif
-
-//#define WIN32_LEAN_AND_MEAN
-//#include <windows.h>
-#include <d3d9.h>
-#include <d3dx9.h>
-
-// MS screwed up with the DX8.1 SDK - there's no compile-time
-// method of compiling for 8.0 via the 8.1 SDK unless you
-// "make sure you don't use any 8.1 interfaces".
-// We CAN use 8.1 D3DX static functions, though - just not new 8.1 interfaces.
-//
-// D3D_SDK_VERSION is 120 for 8.0 (supported by Windows 95).
-// D3D_SDK_VERSION is 220 for 8.1 (NOT supported by Windows 95).
-//
-//#define D3D_SDK_VERSION_DX9_SUPPORT_WIN95 120
-//#define D3D_SDK_VERSION_DX91 220
-
-// Typedef for obtaining function from d3d8.dll
-typedef IDirect3D9* (WINAPI *FNDIRECT3DCREATE9) (UINT);
-
-
-//---------------------------------------------------------------------------
-// Defines
-//---------------------------------------------------------------------------
-
-#ifdef _DEBUG
-#define _GLD_TEST_HRESULT(h) \
-{ \
- HRESULT _hr = (h); \
- if (FAILED(_hr)) { \
- gldLogError(GLDLOG_ERROR, #h, _hr); \
- } \
-}
-#define _GLD_DX9(func) _GLD_TEST_HRESULT(IDirect3D9_##func##)
-#define _GLD_DX9_DEV(func) _GLD_TEST_HRESULT(IDirect3DDevice9_##func##)
-#define _GLD_DX9_VB(func) _GLD_TEST_HRESULT(IDirect3DVertexBuffer9_##func##)
-#define _GLD_DX9_TEX(func) _GLD_TEST_HRESULT(IDirect3DTexture9_##func##)
-#else
-#define _GLD_DX9(func) IDirect3D9_##func
-#define _GLD_DX9_DEV(func) IDirect3DDevice9_##func
-#define _GLD_DX9_VB(func) IDirect3DVertexBuffer9_##func
-#define _GLD_DX9_TEX(func) IDirect3DTexture9_##func
-#endif
-
-#define SAFE_RELEASE(p) \
-{ \
- if (p) { \
- (p)->lpVtbl->Release(p); \
- (p) = NULL; \
- } \
-}
-
-#define SAFE_RELEASE_VB9(p) \
-{ \
- if (p) { \
- IDirect3DVertexBuffer9_Release((p)); \
- (p) = NULL; \
- } \
-}
-
-#define SAFE_RELEASE_SURFACE9(p) \
-{ \
- if (p) { \
- IDirect3DSurface9_Release((p)); \
- (p) = NULL; \
- } \
-}
-
-// Setup index.
-enum {
- GLD_SI_FLAT = 0,
- GLD_SI_SMOOTH = 1,
- GLD_SI_FLAT_EXTRAS = 2,
- GLD_SI_SMOOTH_EXTRAS = 3,
-};
-/*
-// Internal pipeline
-typedef enum {
- GLD_PIPELINE_MESA = 0, // Mesa pipeline
- GLD_PIPELINE_D3D_FVF = 1, // Direct3D Fixed-function pipeline
- GLD_PIPELINE_D3D_VS_TWOSIDE = 2 // Direct3D two-sided-lighting vertex shader
-} GLD_tnl_pipeline;
-*/
-//---------------------------------------------------------------------------
-// Vertex definitions for Fixed-Function pipeline
-//---------------------------------------------------------------------------
-
-//
-// NOTE: If the number of texture units is altered then most of
-// the texture code will need to be revised.
-//
-
-#define GLD_MAX_TEXTURE_UNITS_DX9 2
-
-//
-// 2D vertex transformed by Mesa
-//
-#define GLD_FVF_2D_VERTEX ( D3DFVF_XYZRHW | \
- D3DFVF_DIFFUSE | \
- D3DFVF_SPECULAR | \
- D3DFVF_TEX2)
-typedef struct {
- FLOAT x, y; // 2D raster coords
- FLOAT sz; // Screen Z (depth)
- FLOAT rhw; // Reciprocal homogenous W
- DWORD diffuse; // Diffuse colour
- DWORD specular; // For separate-specular support
- FLOAT t0_u, t0_v; // 1st set of texture coords
- FLOAT t1_u, t1_v; // 2nd set of texture coords
-} GLD_2D_VERTEX;
-
-
-//
-// 3D vertex transformed by Direct3D
-//
-#define GLD_FVF_3D_VERTEX ( D3DFVF_XYZ | \
- D3DFVF_DIFFUSE | \
- D3DFVF_TEX2)
-
-typedef struct {
- D3DXVECTOR3 Position; // XYZ Vector in object space
- D3DCOLOR Diffuse; // Diffuse colour
- D3DXVECTOR2 TexUnit0; // Texture unit 0
- D3DXVECTOR2 TexUnit1; // Texture unit 1
-} GLD_3D_VERTEX;
-
-//---------------------------------------------------------------------------
-// Vertex Shaders
-//---------------------------------------------------------------------------
-/*
-// DX8 Vertex Shader
-typedef struct {
- DWORD hShader; // If NULL, shader is invalid and cannot be used
- BOOL bHardware; // If TRUE then shader was created for hardware,
- // otherwise shader was created for software.
-} GLD_vertexShader;
-*/
-//---------------------------------------------------------------------------
-// Structs
-//---------------------------------------------------------------------------
-
-// This keeps a count of how many times we choose each individual internal
-// pathway. Useful for seeing if a certain pathway was ever used by an app, and
-// how much each pathway is biased.
-// Zero the members at context creation and dump stats at context deletion.
-typedef struct {
- // Note: DWORD is probably too small
- ULARGE_INTEGER qwMesa; // Mesa TnL pipeline
- ULARGE_INTEGER qwD3DFVF; // Direct3D Fixed-Function pipeline
-// ULARGE_INTEGER dwD3D2SVS; // Direct3D Two-Sided Vertex Shader pipeline
-} GLD_pipeline_usage;
-
-// GLDirect Primitive Buffer (points, lines, triangles and quads)
-typedef struct {
- // Data for IDirect3DDevice9::CreateVertexBuffer()
- DWORD dwStride; // Stride of vertex
- DWORD dwUsage; // Usage flags
- DWORD dwFVF; // Direct3D Flexible Vertex Format
- DWORD dwPool; // Pool flags
-
- IDirect3DVertexBuffer9 *pVB; // Holds points, lines, tris and quads.
-
- // Point list is assumed to be at start of buffer
- DWORD iFirstLine; // Index of start of line list
- DWORD iFirstTriangle; // Index of start of triangle list
-
- BYTE *pPoints; // Pointer to next free point
- BYTE *pLines; // Pointer to next free line
- BYTE *pTriangles; // Pointer to next free triangle
-
- DWORD nPoints; // Number of points ready to render
- DWORD nLines; // Number of lines ready to render
- DWORD nTriangles; // Number of triangles ready to render
-} GLD_pb_dx9;
-
-// GLDirect DX9 driver data
-typedef struct {
- // GLDirect vars
- BOOL bDoublebuffer; // Doublebuffer (otherwise single-buffered)
- BOOL bDepthStencil; // Depth buffer needed (stencil optional)
- D3DFORMAT RenderFormat; // Format of back/front buffer
- D3DFORMAT DepthFormat; // Format of depth/stencil
-// float fFlipWindowY; // Value for flipping viewport Y coord
-
- // Direct3D vars
- D3DCAPS9 d3dCaps9;
- BOOL bHasHWTnL; // Device has Hardware Transform/Light?
- IDirect3D9 *pD3D; // Base Direct3D9 interface
- IDirect3DDevice9 *pDev; // Direct3D9 Device interface
- GLD_pb_dx9 PB2d; // Vertices transformed by Mesa
- GLD_pb_dx9 PB3d; // Vertices transformed by Direct3D
- D3DPRIMITIVETYPE d3dpt; // Current Direct3D primitive type
- D3DXMATRIX matProjection; // Projection matrix for D3D TnL
- D3DXMATRIX matModelView; // Model/View matrix for D3D TnL
- int iSetupFunc; // Which setup functions to use
- BOOL bUseMesaTnL; // Whether to use Mesa or D3D for TnL
-
- // Direct3D vars for two-sided lighting
-// GLD_vertexShader VStwosidelight; // Vertex Shader for two-sided lighting
-// D3DXMATRIX matWorldViewProj;// World/View/Projection matrix for shaders
-
-
-// GLD_tnl_pipeline TnLPipeline; // Index of current internal pipeline
- GLD_pipeline_usage PipelineUsage;
-
- BOOL bCanScissor; // Scissor test - new for DX9
-} GLD_driver_dx9;
-
-#define GLD_GET_DX9_DRIVER(c) (GLD_driver_dx9*)(c)->glPriv
-
-//---------------------------------------------------------------------------
-// Function prototypes
-//---------------------------------------------------------------------------
-
-PROC gldGetProcAddress_DX9(LPCSTR a);
-void gldEnableExtensions_DX9(struct gl_context *ctx);
-void gldInstallPipeline_DX9(struct gl_context *ctx);
-void gldSetupDriverPointers_DX9(struct gl_context *ctx);
-//void gldResizeBuffers_DX9(struct gl_context *ctx);
-void gldResizeBuffers_DX9(struct gl_framebuffer *fb);
-
-
-// Texture functions
-
-void gldCopyTexImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
-void gldCopyTexImage2D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
-void gldCopyTexSubImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
-void gldCopyTexSubImage2D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
-void gldCopyTexSubImage3D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height );
-
-void gld_NEW_TEXTURE_DX9(struct gl_context *ctx);
-void gld_DrawPixels_DX9(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, const GLvoid *pixels);
-void gld_ReadPixels_DX9(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, const struct gl_pixelstore_attrib *unpack, GLvoid *dest);
-void gld_CopyPixels_DX9(struct gl_context *ctx, GLint srcx, GLint srcy, GLsizei width, GLsizei height, GLint dstx, GLint dsty, GLenum type);
-void gld_Bitmap_DX9(struct gl_context *ctx, GLint x, GLint y, GLsizei width, GLsizei height, const struct gl_pixelstore_attrib *unpack, const GLubyte *bitmap);
-const struct gl_texture_format* gld_ChooseTextureFormat_DX9(struct gl_context *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType);
-void gld_TexImage2D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *tObj, struct gl_texture_image *texImage);
-void gld_TexImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage );
-void gld_TexSubImage2D_DX9( struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage );
-void gld_TexSubImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage);
-void gld_DeleteTexture_DX9(struct gl_context *ctx, struct gl_texture_object *tObj);
-void gld_ResetLineStipple_DX9(struct gl_context *ctx);
-
-// 2D primitive functions
-
-void gld_Points2D_DX9(struct gl_context *ctx, GLuint first, GLuint last);
-
-void gld_Line2DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1);
-void gld_Line2DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1);
-
-void gld_Triangle2DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-void gld_Triangle2DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-void gld_Triangle2DFlatExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-void gld_Triangle2DSmoothExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-
-void gld_Quad2DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-void gld_Quad2DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-void gld_Quad2DFlatExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-void gld_Quad2DSmoothExtras_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-
-// 3D primitive functions
-
-void gld_Points3D_DX9(struct gl_context *ctx, GLuint first, GLuint last);
-void gld_Line3DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1);
-void gld_Triangle3DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-void gld_Quad3DFlat_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-void gld_Line3DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1);
-void gld_Triangle3DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-void gld_Quad3DSmooth_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-
-// Primitive functions for Two-sided-lighting Vertex Shader
-
-void gld_Points2DTwoside_DX9(struct gl_context *ctx, GLuint first, GLuint last);
-void gld_Line2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1);
-void gld_Line2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1);
-void gld_Triangle2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-void gld_Triangle2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2);
-void gld_Quad2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-void gld_Quad2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3);
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dxerr9.h b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dxerr9.h
deleted file mode 100644
index 7ec8c8a46..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_dxerr9.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*==========================================================================;
- *
- *
- * File: dxerr9.h
- * Content: DirectX Error Library Include File
- *
- ****************************************************************************/
-
-#ifndef _GLD_DXERR9_H_
-#define _GLD_DXERR9_H_
-
-
-#include <d3d9.h>
-
-//
-// DXGetErrorString9
-//
-// Desc: Converts an DirectX HRESULT to a string
-//
-// Args: HRESULT hr Can be any error code from
-// DPLAY D3D8 D3DX8 DMUSIC DSOUND
-//
-// Return: Converted string
-//
-const char* __stdcall DXGetErrorString9A(HRESULT hr);
-const WCHAR* __stdcall DXGetErrorString9W(HRESULT hr);
-
-#ifdef UNICODE
- #define DXGetErrorString9 DXGetErrorString9W
-#else
- #define DXGetErrorString9 DXGetErrorString9A
-#endif
-
-
-//
-// DXTrace
-//
-// Desc: Outputs a formatted error message to the debug stream
-//
-// Args: CHAR* strFile The current file, typically passed in using the
-// __FILE__ macro.
-// DWORD dwLine The current line number, typically passed in using the
-// __LINE__ macro.
-// HRESULT hr An HRESULT that will be traced to the debug stream.
-// CHAR* strMsg A string that will be traced to the debug stream (may be NULL)
-// BOOL bPopMsgBox If TRUE, then a message box will popup also containing the passed info.
-//
-// Return: The hr that was passed in.
-//
-//HRESULT __stdcall DXTraceA( char* strFile, DWORD dwLine, HRESULT hr, char* strMsg, BOOL bPopMsgBox = FALSE );
-//HRESULT __stdcall DXTraceW( char* strFile, DWORD dwLine, HRESULT hr, WCHAR* strMsg, BOOL bPopMsgBox = FALSE );
-HRESULT __stdcall DXTraceA( char* strFile, DWORD dwLine, HRESULT hr, char* strMsg, BOOL bPopMsgBox);
-HRESULT __stdcall DXTraceW( char* strFile, DWORD dwLine, HRESULT hr, WCHAR* strMsg, BOOL bPopMsgBox);
-
-#ifdef UNICODE
- #define DXTrace DXTraceW
-#else
- #define DXTrace DXTraceA
-#endif
-
-
-//
-// Helper macros
-//
-#if defined(DEBUG) | defined(_DEBUG)
- #define DXTRACE_MSG(str) DXTrace( __FILE__, (DWORD)__LINE__, 0, str, FALSE )
- #define DXTRACE_ERR(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, TRUE )
- #define DXTRACE_ERR_NOMSGBOX(str,hr) DXTrace( __FILE__, (DWORD)__LINE__, hr, str, FALSE )
-#else
- #define DXTRACE_MSG(str) (0L)
- #define DXTRACE_ERR(str,hr) (hr)
- #define DXTRACE_ERR_NOMSGBOX(str,hr) (hr)
-#endif
-
-
-#endif
-
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c
deleted file mode 100644
index d370ce413..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_ext_dx9.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: GL extensions
-*
-****************************************************************************/
-
-//#include "../GLDirect.h"
-//#include "../gld_log.h"
-//#include "../gld_settings.h"
-
-#include <windows.h>
-#define GL_GLEXT_PROTOTYPES
-#include <GL/gl.h>
-#include <GL/glext.h>
-
-//#include "ddlog.h"
-//#include "gld_dx8.h"
-
-#include "glheader.h"
-#include "context.h"
-#include "colormac.h"
-#include "depth.h"
-#include "extensions.h"
-#include "macros.h"
-#include "matrix.h"
-// #include "mem.h"
-//#include "mmath.h"
-#include "mtypes.h"
-#include "texformat.h"
-#include "texstore.h"
-#include "vbo/vbo.h"
-#include "swrast_setup/swrast_setup.h"
-#include "swrast_setup/ss_context.h"
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-#include "dglcontext.h"
-#include "extensions.h"
-
-// For some reason this is not defined in an above header...
-extern void _mesa_enable_imaging_extensions(struct gl_context *ctx);
-
-//---------------------------------------------------------------------------
-// Hack for the SGIS_multitexture extension that was removed from Mesa
-// NOTE: SGIS_multitexture enums also clash with GL_SGIX_async_pixel
-
- // NOTE: Quake2 ran *slower* with this enabled, so I've
- // disabled it for now.
- // To enable, uncomment:
- // _mesa_add_extension(ctx, GL_TRUE, szGL_SGIS_multitexture, 0);
-
-//---------------------------------------------------------------------------
-
-enum {
- /* Quake2 GL_SGIS_multitexture */
- GL_SELECTED_TEXTURE_SGIS = 0x835B,
- GL_SELECTED_TEXTURE_COORD_SET_SGIS = 0x835C,
- GL_MAX_TEXTURES_SGIS = 0x835D,
- GL_TEXTURE0_SGIS = 0x835E,
- GL_TEXTURE1_SGIS = 0x835F,
- GL_TEXTURE2_SGIS = 0x8360,
- GL_TEXTURE3_SGIS = 0x8361,
- GL_TEXTURE_COORD_SET_SOURCE_SGIS = 0x8363,
-};
-
-//---------------------------------------------------------------------------
-
-void APIENTRY gldSelectTextureSGIS(
- GLenum target)
-{
- GLenum ARB_target = GL_TEXTURE0_ARB + (target - GL_TEXTURE0_SGIS);
- glActiveTextureARB(ARB_target);
-}
-
-//---------------------------------------------------------------------------
-
-void APIENTRY gldMTexCoord2fSGIS(
- GLenum target,
- GLfloat s,
- GLfloat t)
-{
- GLenum ARB_target = GL_TEXTURE0_ARB + (target - GL_TEXTURE0_SGIS);
- glMultiTexCoord2fARB(ARB_target, s, t);
-}
-
-//---------------------------------------------------------------------------
-
-void APIENTRY gldMTexCoord2fvSGIS(
- GLenum target,
- const GLfloat *v)
-{
- GLenum ARB_target = GL_TEXTURE0_ARB + (target - GL_TEXTURE0_SGIS);
- glMultiTexCoord2fvARB(ARB_target, v);
-}
-
-//---------------------------------------------------------------------------
-// Extensions
-//---------------------------------------------------------------------------
-
-typedef struct {
- PROC proc;
- char *name;
-} GLD_extension;
-
-GLD_extension GLD_extList[] = {
-#ifdef GL_EXT_polygon_offset
- { (PROC)glPolygonOffsetEXT, "glPolygonOffsetEXT" },
-#endif
- { (PROC)glBlendEquationEXT, "glBlendEquationEXT" },
- { (PROC)glBlendColorEXT, "glBlendColorExt" },
- { (PROC)glVertexPointerEXT, "glVertexPointerEXT" },
- { (PROC)glNormalPointerEXT, "glNormalPointerEXT" },
- { (PROC)glColorPointerEXT, "glColorPointerEXT" },
- { (PROC)glIndexPointerEXT, "glIndexPointerEXT" },
- { (PROC)glTexCoordPointerEXT, "glTexCoordPointer" },
- { (PROC)glEdgeFlagPointerEXT, "glEdgeFlagPointerEXT" },
- { (PROC)glGetPointervEXT, "glGetPointervEXT" },
- { (PROC)glArrayElementEXT, "glArrayElementEXT" },
- { (PROC)glDrawArraysEXT, "glDrawArrayEXT" },
- { (PROC)glAreTexturesResidentEXT, "glAreTexturesResidentEXT" },
- { (PROC)glBindTextureEXT, "glBindTextureEXT" },
- { (PROC)glDeleteTexturesEXT, "glDeleteTexturesEXT" },
- { (PROC)glGenTexturesEXT, "glGenTexturesEXT" },
- { (PROC)glIsTextureEXT, "glIsTextureEXT" },
- { (PROC)glPrioritizeTexturesEXT, "glPrioritizeTexturesEXT" },
- { (PROC)glCopyTexSubImage3DEXT, "glCopyTexSubImage3DEXT" },
- { (PROC)glTexImage3DEXT, "glTexImage3DEXT" },
- { (PROC)glTexSubImage3DEXT, "glTexSubImage3DEXT" },
- { (PROC)glPointParameterfEXT, "glPointParameterfEXT" },
- { (PROC)glPointParameterfvEXT, "glPointParameterfvEXT" },
-
- { (PROC)glLockArraysEXT, "glLockArraysEXT" },
- { (PROC)glUnlockArraysEXT, "glUnlockArraysEXT" },
- { NULL, "\0" }
-};
-
-GLD_extension GLD_multitexList[] = {
-/*
- { (PROC)glMultiTexCoord1dSGIS, "glMTexCoord1dSGIS" },
- { (PROC)glMultiTexCoord1dvSGIS, "glMTexCoord1dvSGIS" },
- { (PROC)glMultiTexCoord1fSGIS, "glMTexCoord1fSGIS" },
- { (PROC)glMultiTexCoord1fvSGIS, "glMTexCoord1fvSGIS" },
- { (PROC)glMultiTexCoord1iSGIS, "glMTexCoord1iSGIS" },
- { (PROC)glMultiTexCoord1ivSGIS, "glMTexCoord1ivSGIS" },
- { (PROC)glMultiTexCoord1sSGIS, "glMTexCoord1sSGIS" },
- { (PROC)glMultiTexCoord1svSGIS, "glMTexCoord1svSGIS" },
- { (PROC)glMultiTexCoord2dSGIS, "glMTexCoord2dSGIS" },
- { (PROC)glMultiTexCoord2dvSGIS, "glMTexCoord2dvSGIS" },
- { (PROC)glMultiTexCoord2fSGIS, "glMTexCoord2fSGIS" },
- { (PROC)glMultiTexCoord2fvSGIS, "glMTexCoord2fvSGIS" },
- { (PROC)glMultiTexCoord2iSGIS, "glMTexCoord2iSGIS" },
- { (PROC)glMultiTexCoord2ivSGIS, "glMTexCoord2ivSGIS" },
- { (PROC)glMultiTexCoord2sSGIS, "glMTexCoord2sSGIS" },
- { (PROC)glMultiTexCoord2svSGIS, "glMTexCoord2svSGIS" },
- { (PROC)glMultiTexCoord3dSGIS, "glMTexCoord3dSGIS" },
- { (PROC)glMultiTexCoord3dvSGIS, "glMTexCoord3dvSGIS" },
- { (PROC)glMultiTexCoord3fSGIS, "glMTexCoord3fSGIS" },
- { (PROC)glMultiTexCoord3fvSGIS, "glMTexCoord3fvSGIS" },
- { (PROC)glMultiTexCoord3iSGIS, "glMTexCoord3iSGIS" },
- { (PROC)glMultiTexCoord3ivSGIS, "glMTexCoord3ivSGIS" },
- { (PROC)glMultiTexCoord3sSGIS, "glMTexCoord3sSGIS" },
- { (PROC)glMultiTexCoord3svSGIS, "glMTexCoord3svSGIS" },
- { (PROC)glMultiTexCoord4dSGIS, "glMTexCoord4dSGIS" },
- { (PROC)glMultiTexCoord4dvSGIS, "glMTexCoord4dvSGIS" },
- { (PROC)glMultiTexCoord4fSGIS, "glMTexCoord4fSGIS" },
- { (PROC)glMultiTexCoord4fvSGIS, "glMTexCoord4fvSGIS" },
- { (PROC)glMultiTexCoord4iSGIS, "glMTexCoord4iSGIS" },
- { (PROC)glMultiTexCoord4ivSGIS, "glMTexCoord4ivSGIS" },
- { (PROC)glMultiTexCoord4sSGIS, "glMTexCoord4sSGIS" },
- { (PROC)glMultiTexCoord4svSGIS, "glMTexCoord4svSGIS" },
- { (PROC)glMultiTexCoordPointerSGIS, "glMTexCoordPointerSGIS" },
- { (PROC)glSelectTextureSGIS, "glSelectTextureSGIS" },
- { (PROC)glSelectTextureCoordSetSGIS, "glSelectTextureCoordSetSGIS" },
-*/
- { (PROC)glActiveTextureARB, "glActiveTextureARB" },
- { (PROC)glClientActiveTextureARB, "glClientActiveTextureARB" },
- { (PROC)glMultiTexCoord1dARB, "glMultiTexCoord1dARB" },
- { (PROC)glMultiTexCoord1dvARB, "glMultiTexCoord1dvARB" },
- { (PROC)glMultiTexCoord1fARB, "glMultiTexCoord1fARB" },
- { (PROC)glMultiTexCoord1fvARB, "glMultiTexCoord1fvARB" },
- { (PROC)glMultiTexCoord1iARB, "glMultiTexCoord1iARB" },
- { (PROC)glMultiTexCoord1ivARB, "glMultiTexCoord1ivARB" },
- { (PROC)glMultiTexCoord1sARB, "glMultiTexCoord1sARB" },
- { (PROC)glMultiTexCoord1svARB, "glMultiTexCoord1svARB" },
- { (PROC)glMultiTexCoord2dARB, "glMultiTexCoord2dARB" },
- { (PROC)glMultiTexCoord2dvARB, "glMultiTexCoord2dvARB" },
- { (PROC)glMultiTexCoord2fARB, "glMultiTexCoord2fARB" },
- { (PROC)glMultiTexCoord2fvARB, "glMultiTexCoord2fvARB" },
- { (PROC)glMultiTexCoord2iARB, "glMultiTexCoord2iARB" },
- { (PROC)glMultiTexCoord2ivARB, "glMultiTexCoord2ivARB" },
- { (PROC)glMultiTexCoord2sARB, "glMultiTexCoord2sARB" },
- { (PROC)glMultiTexCoord2svARB, "glMultiTexCoord2svARB" },
- { (PROC)glMultiTexCoord3dARB, "glMultiTexCoord3dARB" },
- { (PROC)glMultiTexCoord3dvARB, "glMultiTexCoord3dvARB" },
- { (PROC)glMultiTexCoord3fARB, "glMultiTexCoord3fARB" },
- { (PROC)glMultiTexCoord3fvARB, "glMultiTexCoord3fvARB" },
- { (PROC)glMultiTexCoord3iARB, "glMultiTexCoord3iARB" },
- { (PROC)glMultiTexCoord3ivARB, "glMultiTexCoord3ivARB" },
- { (PROC)glMultiTexCoord3sARB, "glMultiTexCoord3sARB" },
- { (PROC)glMultiTexCoord3svARB, "glMultiTexCoord3svARB" },
- { (PROC)glMultiTexCoord4dARB, "glMultiTexCoord4dARB" },
- { (PROC)glMultiTexCoord4dvARB, "glMultiTexCoord4dvARB" },
- { (PROC)glMultiTexCoord4fARB, "glMultiTexCoord4fARB" },
- { (PROC)glMultiTexCoord4fvARB, "glMultiTexCoord4fvARB" },
- { (PROC)glMultiTexCoord4iARB, "glMultiTexCoord4iARB" },
- { (PROC)glMultiTexCoord4ivARB, "glMultiTexCoord4ivARB" },
- { (PROC)glMultiTexCoord4sARB, "glMultiTexCoord4sARB" },
- { (PROC)glMultiTexCoord4svARB, "glMultiTexCoord4svARB" },
-
- // Descent3 doesn't use correct string, hence this hack
- { (PROC)glMultiTexCoord4fARB, "glMultiTexCoord4f" },
-
- // Quake2 SGIS multitexture
- { (PROC)gldSelectTextureSGIS, "glSelectTextureSGIS" },
- { (PROC)gldMTexCoord2fSGIS, "glMTexCoord2fSGIS" },
- { (PROC)gldMTexCoord2fvSGIS, "glMTexCoord2fvSGIS" },
-
- { NULL, "\0" }
-};
-
-//---------------------------------------------------------------------------
-
-PROC gldGetProcAddress_DX(
- LPCSTR a)
-{
- int i;
- PROC proc = NULL;
-
- for (i=0; GLD_extList[i].proc; i++) {
- if (!strcmp(a, GLD_extList[i].name)) {
- proc = GLD_extList[i].proc;
- break;
- }
- }
-
- if (glb.bMultitexture) {
- for (i=0; GLD_multitexList[i].proc; i++) {
- if (!strcmp(a, GLD_multitexList[i].name)) {
- proc = GLD_multitexList[i].proc;
- break;
- }
- }
- }
-
- gldLogPrintf(GLDLOG_INFO, "GetProcAddress: %s (%s)", a, proc ? "OK" : "Failed");
-
- return proc;
-}
-
-//---------------------------------------------------------------------------
-
-void gldEnableExtensions_DX9(
- struct gl_context *ctx)
-{
- GLuint i;
-
- // Mesa enables some extensions by default.
- // This table decides which ones we want to switch off again.
-
- // NOTE: GL_EXT_compiled_vertex_array appears broken.
-
- const char *gld_disable_extensions[] = {
-// "GL_ARB_transpose_matrix",
-// "GL_EXT_compiled_vertex_array",
-// "GL_EXT_polygon_offset",
-// "GL_EXT_rescale_normal",
- "GL_EXT_texture3D",
-// "GL_NV_texgen_reflection",
- NULL
- };
-
- const char *gld_multitex_extensions[] = {
- "GL_ARB_multitexture", // Quake 3
- NULL
- };
-
- // Quake 2 engines
- const char *szGL_SGIS_multitexture = "GL_SGIS_multitexture";
-
- const char *gld_enable_extensions[] = {
- "GL_EXT_texture_env_add", // Quake 3
- "GL_ARB_texture_env_add", // Quake 3
- NULL
- };
-
- for (i=0; gld_disable_extensions[i]; i++) {
- _mesa_disable_extension(ctx, gld_disable_extensions[i]);
- }
-
- for (i=0; gld_enable_extensions[i]; i++) {
- _mesa_enable_extension(ctx, gld_enable_extensions[i]);
- }
-
- if (glb.bMultitexture) {
- for (i=0; gld_multitex_extensions[i]; i++) {
- _mesa_enable_extension(ctx, gld_multitex_extensions[i]);
- }
-
- // GL_SGIS_multitexture
- // NOTE: Quake2 ran *slower* with this enabled, so I've
- // disabled it for now.
- // Fair bit slower on GeForce256,
- // Much slower on 3dfx Voodoo5 5500.
-// _mesa_add_extension(ctx, GL_TRUE, szGL_SGIS_multitexture, 0);
-
- }
-
- _mesa_enable_imaging_extensions(ctx);
- _mesa_enable_1_3_extensions(ctx);
- _mesa_enable_1_4_extensions(ctx);
-}
-
-//---------------------------------------------------------------------------
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c
deleted file mode 100644
index 6c41e567d..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_pipeline_dx9.c
+++ /dev/null
@@ -1,77 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Mesa transformation pipeline with GLDirect fastpath
-*
-****************************************************************************/
-
-//#include "../GLDirect.h"
-
-#include "dglcontext.h"
-#include "ddlog.h"
-#include "gld_dx9.h"
-
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-//---------------------------------------------------------------------------
-
-extern struct tnl_pipeline_stage _gld_d3d_render_stage;
-extern struct tnl_pipeline_stage _gld_mesa_render_stage;
-
-static const struct tnl_pipeline_stage *gld_pipeline[] = {
- &_gld_d3d_render_stage, // Direct3D TnL
- &_tnl_vertex_transform_stage,
- &_tnl_normal_transform_stage,
- &_tnl_lighting_stage,
- &_tnl_fog_coordinate_stage, /* TODO: Omit fog stage. ??? */
- &_tnl_texgen_stage,
- &_tnl_texture_transform_stage,
- &_tnl_point_attenuation_stage,
- &_gld_mesa_render_stage, // Mesa TnL, D3D rendering
- 0,
-};
-
-//---------------------------------------------------------------------------
-
-void gldInstallPipeline_DX9(
- struct gl_context *ctx)
-{
- // Remove any existing pipeline stages,
- // then install GLDirect pipeline stages.
-
- _tnl_destroy_pipeline(ctx);
- _tnl_install_pipeline(ctx, gld_pipeline);
-}
-
-//---------------------------------------------------------------------------
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c
deleted file mode 100644
index 256ffcc38..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_primitive_dx9.c
+++ /dev/null
@@ -1,1445 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Primitive (points/lines/tris/quads) rendering
-*
-****************************************************************************/
-
-//#include "../GLDirect.h"
-
-//#include "gld_dx8.h"
-
-#include "dglcontext.h"
-#include "ddlog.h"
-#include "gld_dx9.h"
-
-#include "glheader.h"
-#include "context.h"
-#include "colormac.h"
-#include "depth.h"
-#include "extensions.h"
-#include "macros.h"
-#include "matrix.h"
-// #include "mem.h"
-//#include "mmath.h"
-#include "mtypes.h"
-#include "texformat.h"
-#include "texstore.h"
-#include "vbo/vbo.h"
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "swrast_setup/ss_context.h"
-#include "swrast/s_context.h"
-#include "swrast/s_depth.h"
-#include "swrast/s_lines.h"
-#include "swrast/s_triangle.h"
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-// Disable compiler complaints about unreferenced local variables
-#pragma warning (disable:4101)
-
-//---------------------------------------------------------------------------
-// Helper defines for primitives
-//---------------------------------------------------------------------------
-
-//static const float ooZ = 1.0f / 65536.0f; // One over Z
-
-#define GLD_COLOUR (D3DCOLOR_RGBA(swv->color[0], swv->color[1], swv->color[2], swv->color[3]))
-#define GLD_SPECULAR (D3DCOLOR_RGBA(swv->specular[0], swv->specular[1], swv->specular[2], swv->specular[3]))
-#define GLD_FLIP_Y(y) (gldCtx->dwHeight - (y))
-
-//---------------------------------------------------------------------------
-// 2D vertex setup
-//---------------------------------------------------------------------------
-
-#define GLD_SETUP_2D_VARS_POINTS \
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); \
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); \
- GLD_2D_VERTEX *pV = (GLD_2D_VERTEX*)gld->PB2d.pPoints; \
- SScontext *ss = SWSETUP_CONTEXT(ctx); \
- SWvertex *swv; \
- DWORD dwSpecularColour; \
- DWORD dwFlatColour
-
-#define GLD_SETUP_2D_VARS_LINES \
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); \
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); \
- GLD_2D_VERTEX *pV = (GLD_2D_VERTEX*)gld->PB2d.pLines; \
- SScontext *ss = SWSETUP_CONTEXT(ctx); \
- SWvertex *swv; \
- DWORD dwSpecularColour; \
- DWORD dwFlatColour
-
-#define GLD_SETUP_2D_VARS_TRIANGLES \
- BOOL bFog = ctx->Fog.Enabled; \
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); \
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); \
- GLD_2D_VERTEX *pV = (GLD_2D_VERTEX*)gld->PB2d.pTriangles; \
- SScontext *ss = SWSETUP_CONTEXT(ctx); \
- SWvertex *swv; \
- DWORD dwSpecularColour; \
- DWORD dwFlatColour; \
- GLuint facing = 0; \
- struct vertex_buffer *VB; \
- GLchan (*vbcolor)[4]; \
- GLchan (*vbspec)[4]
-
-#define GLD_SETUP_GET_SWVERT(s) \
- swv = &ss->verts[##s]
-
-#define GLD_SETUP_2D_VERTEX \
- pV->x = swv->win[0]; \
- pV->y = GLD_FLIP_Y(swv->win[1]); \
- pV->rhw = swv->win[3]
-
-#define GLD_SETUP_SMOOTH_COLOUR \
- pV->diffuse = GLD_COLOUR
-
-#define GLD_SETUP_GET_FLAT_COLOUR \
- dwFlatColour = GLD_COLOUR
-#define GLD_SETUP_GET_FLAT_FOG_COLOUR \
- dwFlatColour = _gldComputeFog(ctx, swv)
-
-#define GLD_SETUP_USE_FLAT_COLOUR \
- pV->diffuse = dwFlatColour
-
-#define GLD_SETUP_GET_FLAT_SPECULAR \
- dwSpecularColour= GLD_SPECULAR
-
-#define GLD_SETUP_USE_FLAT_SPECULAR \
- pV->specular = dwSpecularColour
-
-#define GLD_SETUP_DEPTH \
- pV->sz = swv->win[2] / ctx->DepthMaxF
-// pV->z = swv->win[2] * ooZ;
-
-#define GLD_SETUP_SPECULAR \
- pV->specular = GLD_SPECULAR
-
-#define GLD_SETUP_FOG \
- pV->diffuse = _gldComputeFog(ctx, swv)
-
-#define GLD_SETUP_TEX0 \
- pV->t0_u = swv->texcoord[0][0]; \
- pV->t0_v = swv->texcoord[0][1]
-
-#define GLD_SETUP_TEX1 \
- pV->t1_u = swv->texcoord[1][0]; \
- pV->t1_v = swv->texcoord[1][1]
-
-#define GLD_SETUP_LIGHTING(v) \
- if (facing == 1) { \
- pV->diffuse = D3DCOLOR_RGBA(vbcolor[##v][0], vbcolor[##v][1], vbcolor[##v][2], vbcolor[##v][3]); \
- if (vbspec) { \
- pV->specular = D3DCOLOR_RGBA(vbspec[##v][0], vbspec[##v][1], vbspec[##v][2], vbspec[##v][3]); \
- } \
- } else { \
- if (bFog) \
- GLD_SETUP_FOG; \
- else \
- GLD_SETUP_SMOOTH_COLOUR; \
- GLD_SETUP_SPECULAR; \
- }
-
-#define GLD_SETUP_GET_FLAT_LIGHTING(v) \
- if (facing == 1) { \
- dwFlatColour = D3DCOLOR_RGBA(vbcolor[##v][0], vbcolor[##v][1], vbcolor[##v][2], vbcolor[##v][3]); \
- if (vbspec) { \
- dwSpecularColour = D3DCOLOR_RGBA(vbspec[##v][0], vbspec[##v][1], vbspec[##v][2], vbspec[##v][3]); \
- } \
- }
-
-#define GLD_SETUP_TWOSIDED_LIGHTING \
- /* Two-sided lighting */ \
- if (ctx->_TriangleCaps & DD_TRI_LIGHT_TWOSIDE) { \
- SWvertex *verts = SWSETUP_CONTEXT(ctx)->verts; \
- SWvertex *v[3]; \
- GLfloat ex,ey,fx,fy,cc; \
- /* Get vars for later */ \
- VB = &TNL_CONTEXT(ctx)->vb; \
- vbcolor = (GLchan (*)[4])VB->BackfaceColorPtr->data; \
- if (VB->BackfaceSecondaryColorPtr) { \
- vbspec = (GLchan (*)[4])VB->BackfaceSecondaryColorPtr->data; \
- } else { \
- vbspec = NULL; \
- } \
- v[0] = &verts[v0]; \
- v[1] = &verts[v1]; \
- v[2] = &verts[v2]; \
- ex = v[0]->win[0] - v[2]->win[0]; \
- ey = v[0]->win[1] - v[2]->win[1]; \
- fx = v[1]->win[0] - v[2]->win[0]; \
- fy = v[1]->win[1] - v[2]->win[1]; \
- cc = ex*fy - ey*fx; \
- facing = (cc < 0.0) ^ ctx->Polygon._FrontBit; \
- }
-
-//---------------------------------------------------------------------------
-// 3D vertex setup
-//---------------------------------------------------------------------------
-
-#define GLD_SETUP_3D_VARS_POINTS \
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); \
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); \
- GLD_3D_VERTEX *pV = (GLD_3D_VERTEX*)gld->PB3d.pPoints; \
- TNLcontext *tnl = TNL_CONTEXT(ctx); \
- struct vertex_buffer *VB = &tnl->vb; \
- GLfloat (*p4f)[4]; \
- GLfloat (*tc)[4]; \
- DWORD dwColor;
-
-#define GLD_SETUP_3D_VARS_LINES \
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); \
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); \
- GLD_3D_VERTEX *pV = (GLD_3D_VERTEX*)gld->PB3d.pLines; \
- TNLcontext *tnl = TNL_CONTEXT(ctx); \
- struct vertex_buffer *VB = &tnl->vb; \
- GLfloat (*p4f)[4]; \
- GLfloat (*tc)[4]; \
- DWORD dwColor;
-
-#define GLD_SETUP_3D_VARS_TRIANGLES \
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx); \
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx); \
- GLD_3D_VERTEX *pV = (GLD_3D_VERTEX*)gld->PB3d.pTriangles; \
- TNLcontext *tnl = TNL_CONTEXT(ctx); \
- struct vertex_buffer *VB = &tnl->vb; \
- GLfloat (*p4f)[4]; \
- GLfloat (*tc)[4]; \
- DWORD dwColor;
-
-#define GLD_SETUP_3D_VERTEX(v) \
- p4f = VB->AttribPtr[_TNL_ATTRIB_POS]->data; \
- pV->Position.x = p4f[##v][0]; \
- pV->Position.y = p4f[##v][1]; \
- pV->Position.z = p4f[##v][2];
-
-#define GLD_SETUP_SMOOTH_COLOUR_3D(v) \
- p4f = (GLfloat (*)[4])VB->AttribPtr[_TNL_ATTRIB_COLOR0]->data; \
- pV->Diffuse = D3DCOLOR_COLORVALUE(p4f[##v][0], p4f[##v][1], p4f[##v][2], p4f[##v][3]);
-
-
-#define GLD_SETUP_GET_FLAT_COLOUR_3D(v) \
- p4f = (GLfloat (*)[4])VB->AttribPtr[_TNL_ATTRIB_COLOR00]->data; \
- dwColor = D3DCOLOR_COLORVALUE(p4f[##v][0], p4f[##v][1], p4f[##v][2], p4f[##v][3]);
-
-#define GLD_SETUP_USE_FLAT_COLOUR_3D \
- pV->Diffuse = dwColor;
-
-#define GLD_SETUP_TEX0_3D(v) \
- if (VB->AttribPtr[_TNL_ATTRIB_TEX0]) { \
- tc = VB->AttribPtr[_TNL_ATTRIB_TEX0]->data; \
- pV->TexUnit0.x = tc[##v][0]; \
- pV->TexUnit0.y = tc[##v][1]; \
- }
-
-#define GLD_SETUP_TEX1_3D(v) \
- if (VB->AttribPtr[_TNL_ATTRIB_TEX1]) { \
- tc = VB->AttribPtr[_TNL_ATTRIB_TEX1]->data; \
- pV->TexUnit1.x = tc[##v][0]; \
- pV->TexUnit1.y = tc[##v][1]; \
- }
-
-//---------------------------------------------------------------------------
-// Helper functions
-//---------------------------------------------------------------------------
-
-__inline DWORD _gldComputeFog(
- struct gl_context *ctx,
- SWvertex *swv)
-{
- // Full fog calculation.
- // Based on Mesa code.
-
- GLchan rFog, gFog, bFog;
- GLchan fR, fG, fB;
- const GLfloat f = swv->fog;
- const GLfloat g = 1.0 - f;
-
- UNCLAMPED_FLOAT_TO_CHAN(rFog, ctx->Fog.Color[RCOMP]);
- UNCLAMPED_FLOAT_TO_CHAN(gFog, ctx->Fog.Color[GCOMP]);
- UNCLAMPED_FLOAT_TO_CHAN(bFog, ctx->Fog.Color[BCOMP]);
- fR = f * swv->color[0] + g * rFog;
- fG = f * swv->color[1] + g * gFog;
- fB = f * swv->color[2] + g * bFog;
- return D3DCOLOR_RGBA(fR, fG, fB, swv->color[3]);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_ResetLineStipple_DX9(
- struct gl_context *ctx)
-{
- // TODO: Fake stipple with a 32x32 texture.
-}
-
-//---------------------------------------------------------------------------
-// 2D (post-transformed) primitives
-//---------------------------------------------------------------------------
-
-void gld_Points2D_DX9(
- struct gl_context *ctx,
- GLuint first,
- GLuint last)
-{
- GLD_SETUP_2D_VARS_POINTS;
-
- unsigned i;
- struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-
- // _Size is already clamped to MaxPointSize and MinPointSize
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_POINTSIZE, *((DWORD*)&ctx->Point._Size));
-
- if (VB->Elts) {
- for (i=first; i<last; i++, pV++) {
- if (VB->ClipMask[VB->Elts[i]] == 0) {
-// _swrast_Point( ctx, &verts[VB->Elts[i]] );
- GLD_SETUP_GET_SWVERT(VB->Elts[i]);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_SPECULAR;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- }
- }
- } else {
- GLD_SETUP_GET_SWVERT(first);
- for (i=first; i<last; i++, swv++, pV++) {
- if (VB->ClipMask[i] == 0) {
-// _swrast_Point( ctx, &verts[i] );
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_SPECULAR;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- }
- }
- }
-
- gld->PB2d.pPoints = (BYTE*)pV;
- gld->PB2d.nPoints += (last-first);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Line2DFlat_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1)
-{
- GLD_SETUP_2D_VARS_LINES;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_GET_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_GET_FLAT_SPECULAR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- gld->PB2d.pLines = (BYTE*)pV;
- gld->PB2d.nLines++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Line2DSmooth_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1)
-{
- GLD_SETUP_2D_VARS_LINES;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_SPECULAR;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_SPECULAR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- gld->PB2d.pLines = (BYTE*)pV;
- gld->PB2d.nLines++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Triangle2DFlat_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2)
-{
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_GET_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Triangle2DSmooth_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2)
-{
-
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Triangle2DFlatExtras_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2)
-{
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_TWOSIDED_LIGHTING(v2);
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- if (bFog)
- GLD_SETUP_GET_FLAT_FOG_COLOUR;
- else
- GLD_SETUP_GET_FLAT_COLOUR;
- GLD_SETUP_GET_FLAT_SPECULAR;
- GLD_SETUP_GET_FLAT_LIGHTING(v2);
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Triangle2DSmoothExtras_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2)
-{
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_TWOSIDED_LIGHTING(v0);
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v0);
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v1);
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v2);
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Quad2DFlat_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2,
- GLuint v3)
-{
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_GET_SWVERT(v3);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_GET_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v3);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Quad2DSmooth_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2,
- GLuint v3)
-{
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v3);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_SMOOTH_COLOUR;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Quad2DFlatExtras_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2,
- GLuint v3)
-{
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_TWOSIDED_LIGHTING(v3);
-
- GLD_SETUP_GET_SWVERT(v3);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- if (bFog)
- GLD_SETUP_GET_FLAT_FOG_COLOUR;
- else
- GLD_SETUP_GET_FLAT_COLOUR;
- GLD_SETUP_GET_FLAT_SPECULAR;
- GLD_SETUP_GET_FLAT_LIGHTING(v3);
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- GLD_SETUP_GET_SWVERT(v3);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_USE_FLAT_COLOUR;
- GLD_SETUP_USE_FLAT_SPECULAR;
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Quad2DSmoothExtras_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2,
- GLuint v3)
-{
- GLD_SETUP_2D_VARS_TRIANGLES;
-
- GLD_SETUP_TWOSIDED_LIGHTING(v0);
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v0);
- pV++;
-
- GLD_SETUP_GET_SWVERT(v1);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v1);
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v2);
- pV++;
-
- GLD_SETUP_GET_SWVERT(v2);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v2);
- pV++;
-
- GLD_SETUP_GET_SWVERT(v3);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v3);
- pV++;
-
- GLD_SETUP_GET_SWVERT(v0);
- GLD_SETUP_2D_VERTEX;
- GLD_SETUP_DEPTH;
- GLD_SETUP_TEX0;
- GLD_SETUP_TEX1;
- GLD_SETUP_LIGHTING(v0);
- pV++;
-
- gld->PB2d.pTriangles = (BYTE*)pV;
- gld->PB2d.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-// 3D (pre-transformed) primitives
-//---------------------------------------------------------------------------
-
-void gld_Points3D_DX9(
- struct gl_context *ctx,
- GLuint first,
- GLuint last)
-{
- GLD_SETUP_3D_VARS_POINTS
-
- unsigned i;
-// struct vertex_buffer *VB = &TNL_CONTEXT(ctx)->vb;
-
- // _Size is already clamped to MaxPointSize and MinPointSize
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_POINTSIZE, *((DWORD*)&ctx->Point._Size));
-
- if (VB->Elts) {
- for (i=first; i<last; i++, pV++) {
- if (VB->ClipMask[VB->Elts[i]] == 0) {
-// _swrast_Point( ctx, &verts[VB->Elts[i]] );
-// GLD_SETUP_GET_SWVERT(VB->Elts[i]);
- GLD_SETUP_3D_VERTEX(VB->Elts[i])
- GLD_SETUP_SMOOTH_COLOUR_3D(i)
- GLD_SETUP_TEX0_3D(i)
- GLD_SETUP_TEX1_3D(i)
- }
- }
- } else {
-// GLD_SETUP_GET_SWVERT(first);
- for (i=first; i<last; i++, pV++) {
- if (VB->ClipMask[i] == 0) {
-// _swrast_Point( ctx, &verts[i] );
- GLD_SETUP_3D_VERTEX(i)
- GLD_SETUP_SMOOTH_COLOUR_3D(i)
- GLD_SETUP_TEX0_3D(i)
- GLD_SETUP_TEX1_3D(i)
- }
- }
- }
-/*
- for (i=first; i<last; i++, pV++) {
- GLD_SETUP_3D_VERTEX(i)
- GLD_SETUP_SMOOTH_COLOUR_3D(i)
- GLD_SETUP_TEX0_3D(i)
- GLD_SETUP_TEX1_3D(i)
- }
-*/
- gld->PB3d.pPoints = (BYTE*)pV;
- gld->PB3d.nPoints += (last-first);
-}
-
-//---------------------------------------------------------------------------
-// Line functions
-//---------------------------------------------------------------------------
-
-void gld_Line3DFlat_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1)
-{
- GLD_SETUP_3D_VARS_LINES
-
- GLD_SETUP_3D_VERTEX(v1)
- GLD_SETUP_GET_FLAT_COLOUR_3D(v1)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v1)
- GLD_SETUP_TEX1_3D(v1)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v0)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v0)
- GLD_SETUP_TEX1_3D(v0)
- pV++;
-
- gld->PB3d.pLines = (BYTE*)pV;
- gld->PB3d.nLines++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Line3DSmooth_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1)
-{
- GLD_SETUP_3D_VARS_LINES
-
- GLD_SETUP_3D_VERTEX(v1)
- GLD_SETUP_SMOOTH_COLOUR_3D(v1)
- GLD_SETUP_TEX0_3D(v1)
- GLD_SETUP_TEX1_3D(v1)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v0)
- GLD_SETUP_SMOOTH_COLOUR_3D(v0)
- GLD_SETUP_TEX0_3D(v0)
- GLD_SETUP_TEX1_3D(v0)
- pV++;
-
- gld->PB3d.pLines = (BYTE*)pV;
- gld->PB3d.nLines++;
-}
-
-//---------------------------------------------------------------------------
-// Triangle functions
-//---------------------------------------------------------------------------
-
-void gld_Triangle3DFlat_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2)
-{
- GLD_SETUP_3D_VARS_TRIANGLES
-
- GLD_SETUP_3D_VERTEX(v2)
- GLD_SETUP_TEX0_3D(v2)
- GLD_SETUP_TEX1_3D(v2)
- GLD_SETUP_GET_FLAT_COLOUR_3D(v2)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- pV++;
-
- GLD_SETUP_3D_VERTEX(v0)
- GLD_SETUP_TEX0_3D(v0)
- GLD_SETUP_TEX1_3D(v0)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- pV++;
-
- GLD_SETUP_3D_VERTEX(v1)
- GLD_SETUP_TEX0_3D(v1)
- GLD_SETUP_TEX1_3D(v1)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- pV++;
-
- gld->PB3d.pTriangles = (BYTE*)pV;
- gld->PB3d.nTriangles++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Triangle3DSmooth_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2)
-{
- GLD_SETUP_3D_VARS_TRIANGLES
-
- GLD_SETUP_3D_VERTEX(v0)
- GLD_SETUP_SMOOTH_COLOUR_3D(v0)
- GLD_SETUP_TEX0_3D(v0)
- GLD_SETUP_TEX1_3D(v0)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v1)
- GLD_SETUP_SMOOTH_COLOUR_3D(v1)
- GLD_SETUP_TEX0_3D(v1)
- GLD_SETUP_TEX1_3D(v1)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v2)
- GLD_SETUP_SMOOTH_COLOUR_3D(v2)
- GLD_SETUP_TEX0_3D(v2)
- GLD_SETUP_TEX1_3D(v2)
- pV++;
-
- gld->PB3d.pTriangles = (BYTE*)pV;
- gld->PB3d.nTriangles++;
-}
-
-//---------------------------------------------------------------------------
-// Quad functions
-//---------------------------------------------------------------------------
-
-void gld_Quad3DFlat_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2,
- GLuint v3)
-{
- GLD_SETUP_3D_VARS_TRIANGLES
-
- GLD_SETUP_3D_VERTEX(v3)
- GLD_SETUP_GET_FLAT_COLOUR_3D(v3)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v3)
- GLD_SETUP_TEX1_3D(v3)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v0)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v0)
- GLD_SETUP_TEX1_3D(v0)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v1)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v1)
- GLD_SETUP_TEX1_3D(v1)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v1)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v1)
- GLD_SETUP_TEX1_3D(v1)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v2)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v2)
- GLD_SETUP_TEX1_3D(v2)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v3)
- GLD_SETUP_USE_FLAT_COLOUR_3D
- GLD_SETUP_TEX0_3D(v3)
- GLD_SETUP_TEX1_3D(v3)
- pV++;
-
- gld->PB3d.pTriangles = (BYTE*)pV;
- gld->PB3d.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Quad3DSmooth_DX9(
- struct gl_context *ctx,
- GLuint v0,
- GLuint v1,
- GLuint v2,
- GLuint v3)
-{
- GLD_SETUP_3D_VARS_TRIANGLES
-
- GLD_SETUP_3D_VERTEX(v0)
- GLD_SETUP_SMOOTH_COLOUR_3D(v0)
- GLD_SETUP_TEX0_3D(v0)
- GLD_SETUP_TEX1_3D(v0)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v1)
- GLD_SETUP_SMOOTH_COLOUR_3D(v1)
- GLD_SETUP_TEX0_3D(v1)
- GLD_SETUP_TEX1_3D(v1)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v2)
- GLD_SETUP_SMOOTH_COLOUR_3D(v2)
- GLD_SETUP_TEX0_3D(v2)
- GLD_SETUP_TEX1_3D(v2)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v2)
- GLD_SETUP_SMOOTH_COLOUR_3D(v2)
- GLD_SETUP_TEX0_3D(v2)
- GLD_SETUP_TEX1_3D(v2)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v3)
- GLD_SETUP_SMOOTH_COLOUR_3D(v3)
- GLD_SETUP_TEX0_3D(v3)
- GLD_SETUP_TEX1_3D(v3)
- pV++;
-
- GLD_SETUP_3D_VERTEX(v0)
- GLD_SETUP_SMOOTH_COLOUR_3D(v0)
- GLD_SETUP_TEX0_3D(v0)
- GLD_SETUP_TEX1_3D(v0)
- pV++;
-
- gld->PB3d.pTriangles = (BYTE*)pV;
- gld->PB3d.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-// Vertex setup for two-sided-lighting vertex shader
-//---------------------------------------------------------------------------
-
-/*
-
-void gld_Points2DTwoside_DX9(struct gl_context *ctx, GLuint first, GLuint last)
-{
- // NOTE: Two-sided lighting does not apply to Points
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Line2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1)
-{
- // NOTE: Two-sided lighting does not apply to Lines
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Line2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1)
-{
- // NOTE: Two-sided lighting does not apply to Lines
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Triangle2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2)
-{
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Triangle2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
- GLD_TWOSIDED_VERTEX *pV = (GLD_TWOSIDED_VERTEX*)gld->PBtwosidelight.pTriangles;
- SScontext *ss = SWSETUP_CONTEXT(ctx);
- SWvertex *swv;
- DWORD dwSpecularColour;
- DWORD dwFlatColour;
- GLuint facing = 0;
- struct vertex_buffer *VB;
- GLchan (*vbcolor)[4];
- GLchan (*vbspec)[4];
-
- // Reciprocal of DepthMax
- const float ooDepthMax = 1.0f / ctx->DepthMaxF;
-
- // 1st vert
- swv = &ss->verts[v0];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 2nd vert
- swv = &ss->verts[v1];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 3rd vert
- swv = &ss->verts[v2];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- gld->PBtwosidelight.pTriangles = (BYTE*)pV;
- gld->PBtwosidelight.nTriangles++;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Quad2DFlatTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
- GLD_TWOSIDED_VERTEX *pV = (GLD_TWOSIDED_VERTEX*)gld->PBtwosidelight.pTriangles;
- SScontext *ss = SWSETUP_CONTEXT(ctx);
- SWvertex *swv;
- DWORD dwSpecularColour;
- DWORD dwFlatColour;
- GLuint facing = 0;
- struct vertex_buffer *VB;
- GLchan (*vbcolor)[4];
- GLchan (*vbspec)[4];
-
- // Reciprocal of DepthMax
- const float ooDepthMax = 1.0f / ctx->DepthMaxF;
-
- // 1st vert
- swv = &ss->verts[v0];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 2nd vert
- swv = &ss->verts[v1];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 3rd vert
- swv = &ss->verts[v2];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 4th vert
- swv = &ss->verts[v2];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 5th vert
- swv = &ss->verts[v3];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 6th vert
- swv = &ss->verts[v0];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- gld->PBtwosidelight.pTriangles = (BYTE*)pV;
- gld->PBtwosidelight.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Quad2DSmoothTwoside_DX9(struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
- GLD_TWOSIDED_VERTEX *pV = (GLD_TWOSIDED_VERTEX*)gld->PBtwosidelight.pTriangles;
- SScontext *ss = SWSETUP_CONTEXT(ctx);
- SWvertex *swv;
- DWORD dwSpecularColour;
- DWORD dwFlatColour;
- GLuint facing = 0;
- struct vertex_buffer *VB;
- GLchan (*vbcolor)[4];
- GLchan (*vbspec)[4];
-
- // Reciprocal of DepthMax
- const float ooDepthMax = 1.0f / ctx->DepthMaxF;
-
- // 1st vert
- swv = &ss->verts[v0];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 2nd vert
- swv = &ss->verts[v1];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 3rd vert
- swv = &ss->verts[v2];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 4th vert
- swv = &ss->verts[v2];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 5th vert
- swv = &ss->verts[v3];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- // 6th vert
- swv = &ss->verts[v0];
- pV->Position.x = swv->win[0];
- pV->Position.y = GLD_FLIP_Y(swv->win[1]);
- pV->Position.z = swv->win[2] * ooDepthMax;
- pV->Position.w = swv->win[3];
- pV->TexUnit0.x = swv->texcoord[0][0];
- pV->TexUnit0.y = swv->texcoord[0][1];
- pV->TexUnit1.x = swv->texcoord[1][0];
- pV->TexUnit1.y = swv->texcoord[1][1];
- pV->FrontDiffuse = GLD_COLOUR;
- pV->FrontSpecular = GLD_SPECULAR;
- pV++;
-
- gld->PBtwosidelight.pTriangles = (BYTE*)pV;
- gld->PBtwosidelight.nTriangles += 2;
-}
-
-//---------------------------------------------------------------------------
-
-*/
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c
deleted file mode 100644
index c3ebdc3af..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_texture_dx9.c
+++ /dev/null
@@ -1,2104 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Texture / Bitmap functions
-*
-****************************************************************************/
-
-#include "dglcontext.h"
-#include "ddlog.h"
-#include "gld_dx9.h"
-
-#include <d3dx9tex.h>
-
-#include "texformat.h"
-#include "colormac.h"
-#include "texstore.h"
-#include "image.h"
-// #include "mem.h"
-
-//---------------------------------------------------------------------------
-
-#define GLD_FLIP_HEIGHT(y,h) (gldCtx->dwHeight - (y) - (h))
-
-//---------------------------------------------------------------------------
-// 1D texture fetch
-//---------------------------------------------------------------------------
-
-#define CHAN_SRC( t, i, j, k, sz ) \
- ((GLchan *)(t)->Data + (i) * (sz))
-#define UBYTE_SRC( t, i, j, k, sz ) \
- ((GLubyte *)(t)->Data + (i) * (sz))
-#define USHORT_SRC( t, i, j, k ) \
- ((GLushort *)(t)->Data + (i))
-#define FLOAT_SRC( t, i, j, k ) \
- ((GLfloat *)(t)->Data + (i))
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_1d_texel_X8R8G8B8(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 );
- GLchan *rgba = (GLchan *)texel;
- rgba[RCOMP] = src[2];
- rgba[GCOMP] = src[1];
- rgba[BCOMP] = src[0];
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_1d_texel_f_X8R8G8B8(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 );
- texel[RCOMP] = CHAN_TO_FLOAT(src[0]);
- texel[GCOMP] = CHAN_TO_FLOAT(src[1]);
- texel[BCOMP] = CHAN_TO_FLOAT(src[2]);
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_1d_texel_X1R5G5B5(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
- rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 10) & 0xf8) * 255 / 0xf8 );
- rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 5) & 0xf8) * 255 / 0xf8 );
- rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf8) * 255 / 0xf8 );
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_1d_texel_f_X1R5G5B5(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLushort s = *src;
- texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 );
- texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 );
- texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 );
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_1d_texel_X4R4G4B4(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
- rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 8) & 0xf) * 255 / 0xf );
- rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 4) & 0xf) * 255 / 0xf );
- rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf) * 255 / 0xf );
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_1d_texel_f_X4R4G4B4(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLushort s = *src;
- texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf );
- texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf );
- texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf );
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-#undef CHAN_SRC
-#undef UBYTE_SRC
-#undef USHORT_SRC
-#undef FLOAT_SRC
-
-//---------------------------------------------------------------------------
-// 2D texture fetch
-//---------------------------------------------------------------------------
-
-#define CHAN_SRC( t, i, j, k, sz ) \
- ((GLchan *)(t)->Data + ((t)->Width * (j) + (i)) * (sz))
-#define UBYTE_SRC( t, i, j, k, sz ) \
- ((GLubyte *)(t)->Data + ((t)->Width * (j) + (i)) * (sz))
-#define USHORT_SRC( t, i, j, k ) \
- ((GLushort *)(t)->Data + ((t)->Width * (j) + (i)))
-#define FLOAT_SRC( t, i, j, k ) \
- ((GLfloat *)(t)->Data + ((t)->Width * (j) + (i)))
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_2d_texel_X8R8G8B8(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 );
- GLchan *rgba = (GLchan *)texel;
- rgba[RCOMP] = src[2];
- rgba[GCOMP] = src[1];
- rgba[BCOMP] = src[0];
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_2d_texel_f_X8R8G8B8(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 );
- texel[RCOMP] = CHAN_TO_FLOAT(src[0]);
- texel[GCOMP] = CHAN_TO_FLOAT(src[1]);
- texel[BCOMP] = CHAN_TO_FLOAT(src[2]);
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_2d_texel_X1R5G5B5(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
- rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 10) & 0xf8) * 255 / 0xf8 );
- rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 5) & 0xf8) * 255 / 0xf8 );
- rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf8) * 255 / 0xf8 );
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_2d_texel_f_X1R5G5B5(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLushort s = *src;
- texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 );
- texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 );
- texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 );
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_2d_texel_X4R4G4B4(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
- rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 8) & 0xf) * 255 / 0xf );
- rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 4) & 0xf) * 255 / 0xf );
- rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf) * 255 / 0xf );
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_2d_texel_f_X4R4G4B4(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLushort s = *src;
- texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf );
- texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf );
- texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf );
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-#undef CHAN_SRC
-#undef UBYTE_SRC
-#undef USHORT_SRC
-#undef FLOAT_SRC
-
-//---------------------------------------------------------------------------
-// 3D texture fetch
-//---------------------------------------------------------------------------
-
-#define CHAN_SRC( t, i, j, k, sz ) \
- (GLchan *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)) * (sz)
-#define UBYTE_SRC( t, i, j, k, sz ) \
- ((GLubyte *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)) * (sz))
-#define USHORT_SRC( t, i, j, k ) \
- ((GLushort *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)))
-#define FLOAT_SRC( t, i, j, k ) \
- ((GLfloat *)(t)->Data + (((t)->Height * (k) + (j)) * \
- (t)->Width + (i)))
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_3d_texel_X8R8G8B8(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 );
- GLchan *rgba = (GLchan *)texel;
- rgba[RCOMP] = src[2];
- rgba[GCOMP] = src[1];
- rgba[BCOMP] = src[0];
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_3d_texel_f_X8R8G8B8(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLchan *src = CHAN_SRC( texImage, i, j, k, 4 );
- texel[RCOMP] = CHAN_TO_FLOAT(src[0]);
- texel[GCOMP] = CHAN_TO_FLOAT(src[1]);
- texel[BCOMP] = CHAN_TO_FLOAT(src[2]);
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_3d_texel_X1R5G5B5(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
- rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 10) & 0xf8) * 255 / 0xf8 );
- rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 5) & 0xf8) * 255 / 0xf8 );
- rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf8) * 255 / 0xf8 );
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_3d_texel_f_X1R5G5B5(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLushort s = *src;
- texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 10) & 0xf8) * 255 / 0xf8 );
- texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 5) & 0xf8) * 255 / 0xf8 );
- texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf8) * 255 / 0xf8 );
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_3d_texel_X4R4G4B4(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLchan *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLchan *rgba = (GLchan *) texel; GLushort s = *src;
- rgba[RCOMP] = UBYTE_TO_CHAN( ((s >> 8) & 0xf) * 255 / 0xf );
- rgba[GCOMP] = UBYTE_TO_CHAN( ((s >> 4) & 0xf) * 255 / 0xf );
- rgba[BCOMP] = UBYTE_TO_CHAN( ((s ) & 0xf) * 255 / 0xf );
- rgba[ACOMP] = CHAN_MAX;
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_fetch_3d_texel_f_X4R4G4B4(
- const struct gl_texture_image *texImage,
- GLint i, GLint j, GLint k, GLfloat *texel )
-{
- const GLushort *src = USHORT_SRC( texImage, i, j, k );
- GLushort s = *src;
- texel[RCOMP] = UBYTE_TO_FLOAT( ((s >> 8) & 0xf) * 255 / 0xf );
- texel[GCOMP] = UBYTE_TO_FLOAT( ((s >> 4) & 0xf) * 255 / 0xf );
- texel[BCOMP] = UBYTE_TO_FLOAT( ((s ) & 0xf) * 255 / 0xf );
- texel[ACOMP] = 1.f;
-}
-
-//---------------------------------------------------------------------------
-
-#undef CHAN_SRC
-#undef UBYTE_SRC
-#undef USHORT_SRC
-#undef FLOAT_SRC
-
-//---------------------------------------------------------------------------
-// Direct3D texture formats that have no Mesa equivalent
-//---------------------------------------------------------------------------
-
-const struct gl_texture_format _gld_texformat_X8R8G8B8 = {
- MESA_FORMAT_ARGB8888, /* MesaFormat */
- GL_RGBA, /* BaseFormat */
- GL_UNSIGNED_NORMALIZED_ARB, /* DataType */
- 8, /* RedBits */
- 8, /* GreenBits */
- 8, /* BlueBits */
- 0, /* AlphaBits */
- 0, /* LuminanceBits */
- 0, /* IntensityBits */
- 0, /* IndexBits */
- 0, /* DepthBits */
- 4, /* TexelBytes */
- _mesa_texstore_argb8888, /* StoreTexImageFunc */
- gld_fetch_1d_texel_X8R8G8B8, /* FetchTexel1D */
- gld_fetch_2d_texel_X8R8G8B8, /* FetchTexel2D */
- gld_fetch_3d_texel_X8R8G8B8, /* FetchTexel3D */
- gld_fetch_1d_texel_f_X8R8G8B8, /* FetchTexel1Df */
- gld_fetch_2d_texel_f_X8R8G8B8, /* FetchTexel2Df */
- gld_fetch_3d_texel_f_X8R8G8B8, /* FetchTexel3Df */
-};
-
-const struct gl_texture_format _gld_texformat_X1R5G5B5 = {
- MESA_FORMAT_ARGB1555, /* MesaFormat */
- GL_RGBA, /* BaseFormat */
- GL_UNSIGNED_NORMALIZED_ARB, /* DataType */
- 5, /* RedBits */
- 5, /* GreenBits */
- 5, /* BlueBits */
- 0, /* AlphaBits */
- 0, /* LuminanceBits */
- 0, /* IntensityBits */
- 0, /* IndexBits */
- 0, /* DepthBits */
- 2, /* TexelBytes */
- _mesa_texstore_argb1555, /* StoreTexImageFunc */
- gld_fetch_1d_texel_X1R5G5B5, /* FetchTexel1D */
- gld_fetch_2d_texel_X1R5G5B5, /* FetchTexel2D */
- gld_fetch_3d_texel_X1R5G5B5, /* FetchTexel3D */
- gld_fetch_1d_texel_f_X1R5G5B5, /* FetchTexel1Df */
- gld_fetch_2d_texel_f_X1R5G5B5, /* FetchTexel2Df */
- gld_fetch_3d_texel_f_X1R5G5B5, /* FetchTexel3Df */
-};
-
-const struct gl_texture_format _gld_texformat_X4R4G4B4 = {
- MESA_FORMAT_ARGB4444, /* MesaFormat */
- GL_RGBA, /* BaseFormat */
- GL_UNSIGNED_NORMALIZED_ARB, /* DataType */
- 4, /* RedBits */
- 4, /* GreenBits */
- 4, /* BlueBits */
- 0, /* AlphaBits */
- 0, /* LuminanceBits */
- 0, /* IntensityBits */
- 0, /* IndexBits */
- 0, /* DepthBits */
- 2, /* TexelBytes */
- _mesa_texstore_argb4444, /* StoreTexImageFunc */
- gld_fetch_1d_texel_X4R4G4B4, /* FetchTexel1D */
- gld_fetch_2d_texel_X4R4G4B4, /* FetchTexel2D */
- gld_fetch_3d_texel_X4R4G4B4, /* FetchTexel3D */
- gld_fetch_1d_texel_f_X4R4G4B4, /* FetchTexel1Df */
- gld_fetch_2d_texel_f_X4R4G4B4, /* FetchTexel2Df */
- gld_fetch_3d_texel_f_X4R4G4B4, /* FetchTexel3Df */
-};
-
-//---------------------------------------------------------------------------
-// Texture unit constants
-//---------------------------------------------------------------------------
-
-// List of possible combinations of texture environments.
-// Example: GLD_TEXENV_MODULATE_RGBA means
-// GL_MODULATE, GL_RGBA base internal format.
-#define GLD_TEXENV_DECAL_RGB 0
-#define GLD_TEXENV_DECAL_RGBA 1
-#define GLD_TEXENV_DECAL_ALPHA 2
-#define GLD_TEXENV_REPLACE_RGB 3
-#define GLD_TEXENV_REPLACE_RGBA 4
-#define GLD_TEXENV_REPLACE_ALPHA 5
-#define GLD_TEXENV_MODULATE_RGB 6
-#define GLD_TEXENV_MODULATE_RGBA 7
-#define GLD_TEXENV_MODULATE_ALPHA 8
-#define GLD_TEXENV_BLEND_RGB 9
-#define GLD_TEXENV_BLEND_RGBA 10
-#define GLD_TEXENV_BLEND_ALPHA 11
-#define GLD_TEXENV_ADD_RGB 12
-#define GLD_TEXENV_ADD_RGBA 13
-#define GLD_TEXENV_ADD_ALPHA 14
-
-// Per-stage (i.e. per-unit) texture environment
-typedef struct {
- DWORD ColorArg1; // Colour argument 1
- D3DTEXTUREOP ColorOp; // Colour operation
- DWORD ColorArg2; // Colour argument 2
- DWORD AlphaArg1; // Alpha argument 1
- D3DTEXTUREOP AlphaOp; // Alpha operation
- DWORD AlphaArg2; // Alpha argument 2
-} GLD_texenv;
-
-// TODO: Do we really need to set ARG1 and ARG2 every time?
-// They seem to always be TEXTURE and CURRENT respectively.
-
-// C = Colour out
-// A = Alpha out
-// Ct = Colour from Texture
-// Cf = Colour from fragment (diffuse)
-// At = Alpha from Texture
-// Af = Alpha from fragment (diffuse)
-// Cc = GL_TEXTURE_ENV_COLOUR (GL_BLEND)
-const GLD_texenv gldTexEnv[] = {
- // DECAL_RGB: C=Ct, A=Af
- {D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT},
- // DECAL_RGBA: C=Cf(1-At)+CtAt, A=Af
- {D3DTA_TEXTURE, D3DTOP_BLENDTEXTUREALPHA, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT},
- // DECAL_ALPHA: <undefined> use DECAL_RGB
- {D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT},
-
- // REPLACE_RGB: C=Ct, A=Af
- {D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT},
- // REPLACE_RGBA: C=Ct, A=At
- {D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_CURRENT},
- // REPLACE_ALPHA: C=Cf, A=At
- {D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG1, D3DTA_CURRENT},
-
- // MODULATE_RGB: C=CfCt, A=Af
- {D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT},
- // MODULATE_RGBA: C=CfCt, A=AfAt
- {D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT},
- // MODULATE_ALPHA: C=Cf, A=AfAt
- {D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT},
-
- // BLEND_RGB: C=Cf(1-Ct)+CcCt, A=Af
- {D3DTA_TEXTURE, D3DTOP_LERP, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT},
- // BLEND_RGBA: C=Cf(1-Ct)+CcCt, A=AfAt
- {D3DTA_TEXTURE, D3DTOP_LERP, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT},
- // BLEND_ALPHA: C=Cf, A=AfAt
- {D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT},
-
- // ADD_RGB: C=Cf+Ct, A=Af
- {D3DTA_TEXTURE, D3DTOP_ADD, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT},
- // ADD_RGBA: C=Cf+Ct, A=AfAt
- {D3DTA_TEXTURE, D3DTOP_ADD, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT},
- // ADD_ALPHA: C=Cf, A=AfAt
- {D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_CURRENT,
- D3DTA_TEXTURE, D3DTOP_MODULATE, D3DTA_CURRENT},
-};
-
-//---------------------------------------------------------------------------
-
-D3DTEXTUREADDRESS _gldConvertWrap(
- GLenum wrap)
-{
- return (wrap == GL_CLAMP) ? D3DTADDRESS_CLAMP : D3DTADDRESS_WRAP;
-}
-
-//---------------------------------------------------------------------------
-
-D3DTEXTUREFILTERTYPE _gldConvertMagFilter(
- GLenum magfilter)
-{
- return (magfilter == GL_LINEAR) ? D3DTEXF_LINEAR : D3DTEXF_POINT;
-}
-
-//---------------------------------------------------------------------------
-
-void _gldConvertMinFilter(
- GLenum minfilter,
- D3DTEXTUREFILTERTYPE *min_filter,
- D3DTEXTUREFILTERTYPE *mip_filter)
-{
- switch (minfilter) {
- case GL_NEAREST:
- *min_filter = D3DTEXF_POINT;
- *mip_filter = D3DTEXF_NONE;
- break;
- case GL_LINEAR:
- *min_filter = D3DTEXF_LINEAR;
- *mip_filter = D3DTEXF_NONE;
- break;
- case GL_NEAREST_MIPMAP_NEAREST:
- *min_filter = D3DTEXF_POINT;
- *mip_filter = D3DTEXF_POINT;
- break;
- case GL_LINEAR_MIPMAP_NEAREST:
- *min_filter = D3DTEXF_LINEAR;
- *mip_filter = D3DTEXF_POINT;
- break;
- case GL_NEAREST_MIPMAP_LINEAR:
- *min_filter = D3DTEXF_POINT;
- *mip_filter = D3DTEXF_LINEAR;
- break;
- case GL_LINEAR_MIPMAP_LINEAR:
- *min_filter = D3DTEXF_LINEAR;
- *mip_filter = D3DTEXF_LINEAR;
- break;
- }
-}
-
-//---------------------------------------------------------------------------
-
-D3DFORMAT _gldGLFormatToD3DFormat(
- GLenum internalFormat)
-{
- switch (internalFormat) {
- case GL_INTENSITY:
- case GL_INTENSITY4:
- case GL_INTENSITY8:
- case GL_INTENSITY12:
- case GL_INTENSITY16:
- // LUNIMANCE != INTENSITY, but D3D doesn't have I8 textures
- return D3DFMT_L8;
- case 1:
- case GL_LUMINANCE:
- case GL_LUMINANCE4:
- case GL_LUMINANCE8:
- case GL_LUMINANCE12:
- case GL_LUMINANCE16:
- return D3DFMT_L8;
- case GL_ALPHA:
- case GL_ALPHA4:
- case GL_ALPHA8:
- case GL_ALPHA12:
- case GL_ALPHA16:
- return D3DFMT_A8;
- case GL_COLOR_INDEX:
- case GL_COLOR_INDEX1_EXT:
- case GL_COLOR_INDEX2_EXT:
- case GL_COLOR_INDEX4_EXT:
- case GL_COLOR_INDEX8_EXT:
- case GL_COLOR_INDEX12_EXT:
- case GL_COLOR_INDEX16_EXT:
- return D3DFMT_X8R8G8B8;
- case 2:
- case GL_LUMINANCE_ALPHA:
- case GL_LUMINANCE4_ALPHA4:
- case GL_LUMINANCE6_ALPHA2:
- case GL_LUMINANCE8_ALPHA8:
- case GL_LUMINANCE12_ALPHA4:
- case GL_LUMINANCE12_ALPHA12:
- case GL_LUMINANCE16_ALPHA16:
- return D3DFMT_A8L8;
- case GL_R3_G3_B2:
- // TODO: Mesa does not support RGB332 internally
- return D3DFMT_X4R4G4B4; //D3DFMT_R3G3B2;
- case GL_RGB4:
- return D3DFMT_X4R4G4B4;
- case GL_RGB5:
- return D3DFMT_X1R5G5B5;
- case 3:
- case GL_RGB:
- case GL_RGB8:
- case GL_RGB10:
- case GL_RGB12:
- case GL_RGB16:
- return D3DFMT_R8G8B8;
- case GL_RGBA4:
- return D3DFMT_A4R4G4B4;
- case 4:
- case GL_RGBA:
- case GL_RGBA2:
- case GL_RGBA8:
- case GL_RGB10_A2:
- case GL_RGBA12:
- case GL_RGBA16:
- return D3DFMT_A8R8G8B8;
- case GL_RGB5_A1:
- return D3DFMT_A1R5G5B5;
- }
-
- // Return an acceptable default
- return D3DFMT_A8R8G8B8;
-}
-
-//---------------------------------------------------------------------------
-
-GLenum _gldDecodeBaseFormat(
- IDirect3DTexture9 *pTex)
-{
- // Examine Direct3D texture and return base OpenGL internal texture format
- // NOTE: We can't use any base format info from Mesa because D3D might have
- // used a different texture format when we used D3DXCreateTexture().
-
- // Base internal format is one of (Red Book p355):
- // GL_ALPHA,
- // GL_LUMINANCE,
- // GL_LUMINANCE_ALPHA,
- // GL_INTENSITY,
- // GL_RGB,
- // GL_RGBA
-
- // NOTE: INTENSITY not used (not supported by Direct3D)
- // LUMINANCE has same texture functions as RGB
- // LUMINANCE_ALPHA has same texture functions as RGBA
-
- // TODO: cache format instead of using GetLevelDesc()
- D3DSURFACE_DESC desc;
- _GLD_DX9_TEX(GetLevelDesc(pTex, 0, &desc));
-
- switch (desc.Format) {
- case D3DFMT_R8G8B8:
- case D3DFMT_X8R8G8B8:
- case D3DFMT_R5G6B5:
- case D3DFMT_X1R5G5B5:
- case D3DFMT_R3G3B2:
- case D3DFMT_X4R4G4B4:
- case D3DFMT_P8:
- case D3DFMT_L8:
- return GL_RGB;
- case D3DFMT_A8R8G8B8:
- case D3DFMT_A1R5G5B5:
- case D3DFMT_A4R4G4B4:
- case D3DFMT_A8R3G3B2:
- case D3DFMT_A8P8:
- case D3DFMT_A8L8:
- case D3DFMT_A4L4:
- return GL_RGBA;
- case D3DFMT_A8:
- return GL_ALPHA;
- // Compressed texture formats. Need to check these...
- case D3DFMT_DXT1:
- return GL_RGBA;
- case D3DFMT_DXT2:
- return GL_RGB;
- case D3DFMT_DXT3:
- return GL_RGBA;
- case D3DFMT_DXT4:
- return GL_RGB;
- case D3DFMT_DXT5:
- return GL_RGBA;
- }
-
- // Fell through. Return arbitary default.
- return GL_RGBA;
-}
-
-//---------------------------------------------------------------------------
-
-const struct gl_texture_format* _gldMesaFormatForD3DFormat(
- D3DFORMAT d3dfmt)
-{
- switch (d3dfmt) {
- case D3DFMT_A8R8G8B8:
- return &_mesa_texformat_argb8888;
- case D3DFMT_R8G8B8:
- return &_mesa_texformat_rgb888;
- case D3DFMT_R5G6B5:
- return &_mesa_texformat_rgb565;
- case D3DFMT_A4R4G4B4:
- return &_mesa_texformat_argb4444;
- case D3DFMT_A1R5G5B5:
- return &_mesa_texformat_argb1555;
- case D3DFMT_A8L8:
- return &_mesa_texformat_al88;
- case D3DFMT_R3G3B2:
- return &_mesa_texformat_rgb332;
- case D3DFMT_A8:
- return &_mesa_texformat_a8;
- case D3DFMT_L8:
- return &_mesa_texformat_l8;
- case D3DFMT_X8R8G8B8:
- return &_gld_texformat_X8R8G8B8;
- case D3DFMT_X1R5G5B5:
- return &_gld_texformat_X1R5G5B5;
- case D3DFMT_X4R4G4B4:
- return &_gld_texformat_X4R4G4B4;
- }
-
- // If we reach here then we've made an error somewhere else
- // by allowing a format that is not supported.
- assert(0);
-
- return NULL; // Shut up compiler warning
-}
-
-//---------------------------------------------------------------------------
-// Copy* functions
-//---------------------------------------------------------------------------
-
-void gldCopyTexImage1D_DX9(
- struct gl_context *ctx,
- GLenum target, GLint level,
- GLenum internalFormat,
- GLint x, GLint y,
- GLsizei width, GLint border )
-{
- // TODO
-}
-
-//---------------------------------------------------------------------------
-
-void gldCopyTexImage2D_DX9(
- struct gl_context *ctx,
- GLenum target,
- GLint level,
- GLenum internalFormat,
- GLint x,
- GLint y,
- GLsizei width,
- GLsizei height,
- GLint border)
-{
- // TODO
-}
-
-//---------------------------------------------------------------------------
-
-void gldCopyTexSubImage1D_DX9(
- struct gl_context *ctx,
- GLenum target, GLint level,
- GLint xoffset, GLint x, GLint y, GLsizei width )
-{
- // TODO
-}
-
-//---------------------------------------------------------------------------
-
-void gldCopyTexSubImage2D_DX9(
- struct gl_context *ctx,
- GLenum target,
- GLint level,
- GLint xoffset,
- GLint yoffset,
- GLint x,
- GLint y,
- GLsizei width,
- GLsizei height)
-{
- // TODO
-}
-
-//---------------------------------------------------------------------------
-
-void gldCopyTexSubImage3D_DX9(
- struct gl_context *ctx,
- GLenum target,
- GLint level,
- GLint xoffset,
- GLint yoffset,
- GLint zoffset,
- GLint x,
- GLint y,
- GLsizei width,
- GLsizei height )
-{
- // TODO ?
-}
-
-//---------------------------------------------------------------------------
-// Bitmap/Pixel functions
-//---------------------------------------------------------------------------
-
-#define GLD_FLIP_Y(y) (gldCtx->dwHeight - (y))
-
-#define _GLD_FVF_IMAGE (D3DFVF_XYZRHW | D3DFVF_TEX1)
-
-typedef struct {
- FLOAT x, y; // 2D raster coords
- FLOAT z; // depth value
- FLOAT rhw; // reciprocal homogenous W (always 1.0f)
- FLOAT tu, tv; // texture coords
-} _GLD_IMAGE_VERTEX;
-
-//---------------------------------------------------------------------------
-
-HRESULT _gldDrawPixels(
- struct gl_context *ctx,
- BOOL bChromakey, // Alpha test for glBitmap() images
- GLint x, // GL x position
- GLint y, // GL y position (needs flipping)
- GLsizei width, // Width of input image
- GLsizei height, // Height of input image
- IDirect3DSurface9 *pImage)
-{
- //
- // Draw input image as texture implementing PixelZoom and clipping.
- // Any fragment operations currently enabled will be used.
- //
-
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- IDirect3DTexture9 *pTexture;
- D3DSURFACE_DESC d3dsd;
- IDirect3DSurface9 *pSurface;
- _GLD_IMAGE_VERTEX v[4];
- HRESULT hr;
-
- float ZoomWidth, ZoomHeight;
- float ScaleWidth, ScaleHeight;
-
- // Create a texture to hold image
- hr = D3DXCreateTexture(
- gld->pDev,
- width, height,
- 1, // miplevels
- 0, // usage
- D3DFMT_A8R8G8B8, // format
- D3DPOOL_MANAGED, // pool
- &pTexture);
- if (FAILED(hr))
- return hr;
-
- hr = IDirect3DTexture9_GetSurfaceLevel(pTexture, 0, &pSurface);
- if (FAILED(hr)) {
- IDirect3DTexture9_Release(pTexture);
- return hr;
- }
-
- // Copy image into texture
- hr = D3DXLoadSurfaceFromSurface(
- pSurface, NULL, NULL, // Dest surface
- pImage, NULL, NULL, // Src surface
- D3DX_FILTER_NONE,
- 0);
- IDirect3DSurface9_Release(pSurface);
- if (FAILED(hr)) {
- IDirect3DTexture9_Release(pTexture);
- return hr;
- }
-
- //
- // Set up the quad like this (ascii-art ahead!)
- //
- // 3--2
- // | |
- // 0--1
- //
- //
-
- // Set depth
- v[0].z = v[1].z = v[2].z = v[3].z = ctx->Current.RasterPos[2];
- // Set Reciprocal Homogenous W
- v[0].rhw = v[1].rhw = v[2].rhw = v[3].rhw = 1.0f;
-
- // Set texcoords
- // Examine texture size - if different to input width and height
- // then we'll need to munge the texcoords to fit.
- IDirect3DTexture9_GetLevelDesc(pTexture, 0, &d3dsd);
- ScaleWidth = (float)width / (float)d3dsd.Width;
- ScaleHeight = (float)height / (float)d3dsd.Height;
- v[0].tu = 0.0f; v[0].tv = 0.0f;
- v[1].tu = ScaleWidth; v[1].tv = 0.0f;
- v[2].tu = ScaleWidth; v[2].tv = ScaleHeight;
- v[3].tu = 0.0f; v[3].tv = ScaleHeight;
-
- // Set raster positions
- ZoomWidth = (float)width * ctx->Pixel.ZoomX;
- ZoomHeight = (float)height * ctx->Pixel.ZoomY;
-
- v[0].x = x; v[0].y = GLD_FLIP_Y(y);
- v[1].x = x+ZoomWidth; v[1].y = GLD_FLIP_Y(y);
- v[2].x = x+ZoomWidth; v[2].y = GLD_FLIP_Y(y+ZoomHeight);
- v[3].x = x; v[3].y = GLD_FLIP_Y(y+ZoomHeight);
-
- // Draw image with full HW acceleration
- // NOTE: Be nice to use a State Block for all this state...
- IDirect3DDevice9_SetTexture(gld->pDev, 0, pTexture);
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_CULLMODE, D3DCULL_NONE);
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_CLIPPING, TRUE);
-
-// IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_MINFILTER, D3DTEXF_POINT);
-// IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_MIPFILTER, D3DTEXF_POINT);
-// IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_MAGFILTER, D3DTEXF_POINT);
-// IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_ADDRESSU, D3DTADDRESS_CLAMP);
-// IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_ADDRESSV, D3DTADDRESS_CLAMP);
- IDirect3DDevice9_SetSamplerState(gld->pDev, 0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
- IDirect3DDevice9_SetSamplerState(gld->pDev, 0, D3DSAMP_MIPFILTER, D3DTEXF_POINT);
- IDirect3DDevice9_SetSamplerState(gld->pDev, 0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
- IDirect3DDevice9_SetSamplerState(gld->pDev, 0, D3DSAMP_ADDRESSU, D3DTADDRESS_CLAMP);
- IDirect3DDevice9_SetSamplerState(gld->pDev, 0, D3DSAMP_ADDRESSV, D3DTADDRESS_CLAMP);
-
- IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_COLOROP, D3DTOP_SELECTARG1);
- IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_ALPHAOP, D3DTOP_SELECTARG1);
- IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
- IDirect3DDevice9_SetTextureStageState(gld->pDev, 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE);
- IDirect3DDevice9_SetTextureStageState(gld->pDev, 1, D3DTSS_COLOROP, D3DTOP_DISABLE);
- IDirect3DDevice9_SetTextureStageState(gld->pDev, 1, D3DTSS_ALPHAOP, D3DTOP_DISABLE);
-
- IDirect3DDevice9_SetVertexShader(gld->pDev, NULL);
- IDirect3DDevice9_SetFVF(gld->pDev, _GLD_FVF_IMAGE);
-
- //
- // Emulate Chromakey with an Alpha Test.
- // [Alpha Test is more widely supported anyway]
- //
- if (bChromakey) {
- // Switch on alpha testing
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_ALPHATESTENABLE, TRUE);
- // Fragment passes is alpha is greater than reference value
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_ALPHAFUNC, D3DCMP_GREATER);
- // Set alpha reference value between Bitmap alpha values of
- // zero (transparent) and one (opaque).
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_ALPHAREF, 0x7f);
- }
-
- IDirect3DDevice9_DrawPrimitiveUP(gld->pDev, D3DPT_TRIANGLEFAN, 2, &v, sizeof(_GLD_IMAGE_VERTEX));
-
- // Release texture
- IDirect3DDevice9_SetTexture(gld->pDev, 0, NULL);
- IDirect3DTexture9_Release(pTexture);
-
- // Reset state to before we messed it up
- FLUSH_VERTICES(ctx, _NEW_ALL);
-
- return S_OK;
-}
-
-//---------------------------------------------------------------------------
-
-void gld_DrawPixels_DX9(
- struct gl_context *ctx,
- GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum format, GLenum type,
- const struct gl_pixelstore_attrib *unpack,
- const GLvoid *pixels )
-{
- GLD_context *gldCtx;
- GLD_driver_dx9 *gld;
-
- IDirect3DSurface9 *pImage;
- HRESULT hr;
- D3DLOCKED_RECT d3dLockedRect;
-
- const struct gl_texture_format *MesaFormat;
-
- MesaFormat = _mesa_choose_tex_format(ctx, format, format, type);
-
- // Mesa does not currently handle this format.
- if (format == GL_BGR)
- return;
-
- gldCtx = GLD_GET_CONTEXT(ctx);
- gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- hr = IDirect3DDevice9_CreateOffscreenPlainSurface(
- gld->pDev,
- width,
- height,
- D3DFMT_A8R8G8B8,
- D3DPOOL_SCRATCH,
- &pImage,
- NULL);
- if (FAILED(hr)) {
- return;
- }
-
- //
- // Use Mesa to fill in image
- //
-
- // Lock all of surface
- hr = IDirect3DSurface9_LockRect(pImage, &d3dLockedRect, NULL, 0);
- if (FAILED(hr)) {
- IDirect3DSurface9_Release(pImage);
- return;
- }
-
- // unpack image, apply transfer ops and store directly in texture
- MesaFormat->StoreImage(
- ctx,
- 2,
- GL_RGBA,
- &_mesa_texformat_argb8888,
- d3dLockedRect.pBits,
- width, height, 1, 0, 0, 0,
- d3dLockedRect.Pitch,
- 0, /* dstImageStride */
- format, type, pixels, unpack);
-
- IDirect3DSurface9_UnlockRect(pImage);
-
- _gldDrawPixels(ctx, FALSE, x, y, width, height, pImage);
-
- IDirect3DSurface9_Release(pImage);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_ReadPixels_DX9(
- struct gl_context *ctx,
- GLint x, GLint y, GLsizei width, GLsizei height,
- GLenum format, GLenum type,
- const struct gl_pixelstore_attrib *pack,
- GLvoid *dest)
-{
-
- GLD_context *gldCtx;
- GLD_driver_dx9 *gld;
-
- IDirect3DSurface9 *pBackbuffer = NULL;
- IDirect3DSurface9 *pNativeImage = NULL;
- IDirect3DSurface9 *pCanonicalImage = NULL;
-
- D3DSURFACE_DESC d3dsd;
- RECT rcSrc; // Source rect
- POINT ptDst; // Dest point
- HRESULT hr;
- D3DLOCKED_RECT d3dLockedRect;
- struct gl_pixelstore_attrib srcPacking;
- int i;
- GLint DstRowStride;
- const struct gl_texture_format *MesaFormat;
-
- switch (format) {
- case GL_STENCIL_INDEX:
- case GL_DEPTH_COMPONENT:
- return;
- }
-
- MesaFormat = _mesa_choose_tex_format(ctx, format, format, type);
- DstRowStride = _mesa_image_row_stride(pack, width, format, type);
-
- gldCtx = GLD_GET_CONTEXT(ctx);
- gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- // Get backbuffer
- hr = IDirect3DDevice9_GetBackBuffer(
- gld->pDev,
- 0, // First swapchain
- 0, // First backbuffer
- D3DBACKBUFFER_TYPE_MONO,
- &pBackbuffer);
- if (FAILED(hr))
- return;
-
- // Get backbuffer description
- hr = IDirect3DSurface9_GetDesc(pBackbuffer, &d3dsd);
- if (FAILED(hr)) {
- goto gld_ReadPixels_DX9_return;
- }
-
- // Create a surface compatible with backbuffer
- hr = IDirect3DDevice9_CreateOffscreenPlainSurface(
- gld->pDev,
- width,
- height,
- d3dsd.Format,
- D3DPOOL_SCRATCH,
- &pNativeImage,
- NULL);
- if (FAILED(hr)) {
- goto gld_ReadPixels_DX9_return;
- }
-
- // Compute source rect and dest point
- SetRect(&rcSrc, 0, 0, width, height);
- OffsetRect(&rcSrc, x, GLD_FLIP_HEIGHT(y, height));
- ptDst.x = ptDst.y = 0;
-
- // Get source pixels.
- //
- // This intermediate surface ensure that we can use CopyRects()
- // instead of relying on D3DXLoadSurfaceFromSurface(), which may
- // try and lock the backbuffer. This way seems safer.
- //
- // CopyRects has been removed for DX9.
- //
-/* hr = IDirect3DDevice9_CopyRects(
- gld->pDev,
- pBackbuffer,
- &rcSrc,
- 1,
- pNativeImage,
- &ptDst);*/
- hr = D3DXLoadSurfaceFromSurface(
- pNativeImage, // Dest surface
- NULL, // Dest palette
- &rcSrc, // Dest rect
- pBackbuffer, // Src surface
- NULL, // Src palette
- &rcSrc, // Src rect
- D3DX_FILTER_NONE, // Filter
- 0 // Colorkey (0=no colorkey)
- );
- if (FAILED(hr)) {
- goto gld_ReadPixels_DX9_return;
- }
-
- // Create an RGBA8888 surface
- hr = IDirect3DDevice9_CreateOffscreenPlainSurface(
- gld->pDev,
- width,
- height,
- D3DFMT_A8R8G8B8,
- D3DPOOL_SCRATCH,
- &pCanonicalImage,
- NULL);
- if (FAILED(hr)) {
- goto gld_ReadPixels_DX9_return;
- }
-
- // Convert to RGBA8888
- hr = D3DXLoadSurfaceFromSurface(
- pCanonicalImage, // Dest surface
- NULL, NULL, // Dest palette, RECT
- pNativeImage, // Src surface
- NULL, NULL, // Src palette, RECT
- D3DX_FILTER_NONE, // Filter
- 0); // Colourkey
- if (FAILED(hr)) {
- goto gld_ReadPixels_DX9_return;
- }
-
- srcPacking.Alignment = 1;
- srcPacking.ImageHeight = height;
- srcPacking.LsbFirst = GL_FALSE;
- srcPacking.RowLength = 0;
- srcPacking.SkipImages = 0;
- srcPacking.SkipPixels = 0;
- srcPacking.SkipRows = 0;
- srcPacking.SwapBytes = GL_FALSE;
-
- // Lock all of image
- hr = IDirect3DSurface9_LockRect(pCanonicalImage, &d3dLockedRect, NULL, 0);
- if (FAILED(hr)) {
- goto gld_ReadPixels_DX9_return;
- }
-
- // We need to flip the data. Yuck.
- // Perhaps Mesa has a span packer we can use in future...
- for (i=0; i<height; i++) {
- BYTE *pDestRow = (BYTE*)_mesa_image_address(2,pack, dest, width, height, format, type, 0, i, 0);
- BYTE *pSrcRow = (BYTE*)d3dLockedRect.pBits + (d3dLockedRect.Pitch * (height-i-1));
- MesaFormat->StoreImage(
- ctx,
- 2,
- GL_RGBA, // base format
- MesaFormat, // dst format
- pDestRow, // dest addr
- width, 1, 1, 0, 0, 0, // src x,y,z & dst offsets x,y,z
- DstRowStride, // dst row stride
- 0, // dstImageStride
- GL_BGRA, // src format
- GL_UNSIGNED_BYTE, // src type
- pSrcRow, // src addr
- &srcPacking); // packing params of source image
- }
-
- IDirect3DSurface9_UnlockRect(pCanonicalImage);
-
-gld_ReadPixels_DX9_return:
- SAFE_RELEASE_SURFACE9(pCanonicalImage);
- SAFE_RELEASE_SURFACE9(pNativeImage);
- SAFE_RELEASE_SURFACE9(pBackbuffer);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_CopyPixels_DX9(
- struct gl_context *ctx,
- GLint srcx,
- GLint srcy,
- GLsizei width,
- GLsizei height,
- GLint dstx,
- GLint dsty,
- GLenum type)
-{
- //
- // NOTE: Not allowed to copy vidmem to vidmem!
- // Therefore we use an intermediate image surface.
- //
-
- GLD_context *gldCtx;
- GLD_driver_dx9 *gld;
-
- IDirect3DSurface9 *pBackbuffer;
- D3DSURFACE_DESC d3dsd;
- IDirect3DSurface9 *pImage;
- RECT rcSrc; // Source rect
- POINT ptDst; // Dest point
- HRESULT hr;
-
- // Only backbuffer
- if (type != GL_COLOR)
- return;
-
- gldCtx = GLD_GET_CONTEXT(ctx);
- gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- // Get backbuffer
- hr = IDirect3DDevice9_GetBackBuffer(
- gld->pDev,
- 0, // First swapchain
- 0, // First backbuffer
- D3DBACKBUFFER_TYPE_MONO,
- &pBackbuffer);
- if (FAILED(hr))
- return;
-
- // Get backbuffer description
- hr = IDirect3DSurface9_GetDesc(pBackbuffer, &d3dsd);
- if (FAILED(hr)) {
- IDirect3DSurface9_Release(pBackbuffer);
- return;
- }
-
- // Create a surface compatible with backbuffer
- hr = IDirect3DDevice9_CreateOffscreenPlainSurface(
- gld->pDev,
- width,
- height,
- d3dsd.Format,
- D3DPOOL_SCRATCH,
- &pImage,
- NULL);
- if (FAILED(hr)) {
- IDirect3DSurface9_Release(pBackbuffer);
- return;
- }
-
- // Compute source rect and dest point
- SetRect(&rcSrc, 0, 0, width, height);
- OffsetRect(&rcSrc, srcx, GLD_FLIP_HEIGHT(srcy, height));
- ptDst.x = ptDst.y = 0;
-
- // Get source pixels
-/* hr = IDirect3DDevice8_CopyRects(
- gld->pDev,
- pBackbuffer,
- &rcSrc,
- 1,
- pImage,
- &ptDst);*/
- hr = D3DXLoadSurfaceFromSurface(
- pImage, // Dest surface
- NULL, // Dest palette
- &rcSrc, // Dest rect
- pBackbuffer, // Src surface
- NULL, // Src palette
- &rcSrc, // Src rect
- D3DX_FILTER_NONE, // Filter
- 0 // Colorkey (0=no colorkey)
- );
- IDirect3DSurface9_Release(pBackbuffer);
- if (FAILED(hr)) {
- IDirect3DSurface9_Release(pImage);
- return;
- }
-
- _gldDrawPixels(ctx, FALSE, dstx, dsty, width, height, pImage);
-
- IDirect3DSurface9_Release(pImage);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_Bitmap_DX9(
- struct gl_context *ctx,
- GLint x,
- GLint y,
- GLsizei width,
- GLsizei height,
- const struct gl_pixelstore_attrib *unpack,
- const GLubyte *bitmap)
-{
- GLD_context *gldCtx;
- GLD_driver_dx9 *gld;
-
- IDirect3DSurface9 *pImage;
- HRESULT hr;
- D3DLOCKED_RECT d3dLockedRect;
- BYTE *pTempBitmap;
- D3DCOLOR clBitmapOne, clBitmapZero;
- D3DCOLOR *pBits;
- const GLubyte *src;
- int i, j, k;
-
- gldCtx = GLD_GET_CONTEXT(ctx);
- gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- // A NULL bitmap is valid, but merely advances the raster position
- if ((bitmap == NULL) || (width == 0) || (height == 0))
- return;
-
- clBitmapZero = D3DCOLOR_RGBA(0,0,0,0); // NOTE: Alpha is Zero
- clBitmapOne = D3DCOLOR_COLORVALUE(
- ctx->Current.RasterColor[0],
- ctx->Current.RasterColor[1],
- ctx->Current.RasterColor[2],
- 1.0f); // NOTE: Alpha is One
-
- hr = IDirect3DDevice9_CreateOffscreenPlainSurface(
- gld->pDev,
- width,
- height,
- D3DFMT_A8R8G8B8,
- D3DPOOL_SCRATCH,
- &pImage,
- NULL);
- if (FAILED(hr)) {
- return;
- }
-
- // Lock all of surface
- hr = IDirect3DSurface9_LockRect(pImage, &d3dLockedRect, NULL, 0);
- if (FAILED(hr)) {
- IDirect3DSurface9_Release(pImage);
- return;
- }
-
- pTempBitmap = _mesa_unpack_bitmap(width, height, bitmap, unpack);
- if (pTempBitmap == NULL) {
- IDirect3DSurface9_Release(pImage);
- return;
- }
-
- pBits = (D3DCOLOR*)d3dLockedRect.pBits;
-
- for (i=0; i<height; i++) {
- GLubyte byte;
- pBits = (D3DCOLOR*)((BYTE*)d3dLockedRect.pBits + (i*d3dLockedRect.Pitch));
- src = (const GLubyte *) _mesa_image_address(2,
- &ctx->DefaultPacking, pTempBitmap, width, height, GL_COLOR_INDEX, GL_BITMAP,
- 0, i, 0);
- for (j=0; j<(width>>3); j++) {
- byte = *src++;
- for (k=0; k<8; k++) {
- *pBits++ = (byte & 128) ? clBitmapOne : clBitmapZero;
- byte <<= 1;
- }
- }
- // Fill remaining bits from bitmap
- if (width & 7) {
- byte = *src;
- for (k=0; k<(width & 7); k++) {
- *pBits++ = (byte & 128) ? clBitmapOne : clBitmapZero;
- byte <<= 1;
- }
- }
- }
-
- FREE(pTempBitmap);
-
-/*
- // unpack image, apply transfer ops and store directly in texture
- texImage->TexFormat->StoreImage(
- ctx,
- 2,
- GL_BITMAP,
- &_mesa_texformat_argb8888,
- d3dLockedRect.pBits,
- width, height, 1, 0, 0, 0,
- d3dLockedRect.Pitch,
- 0, // dstImageStride
- GL_BITMAP, GL_COLOR_INDEX, bitmap, unpack);
-*/
- IDirect3DSurface9_UnlockRect(pImage);
-
- _gldDrawPixels(ctx, TRUE, x, y, width, height, pImage);
-
- IDirect3DSurface9_Release(pImage);
-}
-
-//---------------------------------------------------------------------------
-// Texture functions
-//---------------------------------------------------------------------------
-
-void _gldAllocateTexture(
- struct gl_context *ctx,
- struct gl_texture_object *tObj,
- struct gl_texture_image *texImage)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- IDirect3DTexture9 *pTex;
- D3DFORMAT d3dFormat;
-
- if (!tObj || !texImage)
- return;
-
- pTex = (IDirect3DTexture9*)tObj->DriverData;
- if (pTex) {
- // Decide whether we can keep existing D3D texture
- // by examining top-level surface.
- D3DSURFACE_DESC d3dsd;
- _GLD_DX9_TEX(GetLevelDesc(pTex, 0, &d3dsd));
- // Release existing texture if not compatible
- if ((d3dsd.Width == texImage->Width) ||
- (d3dsd.Height == texImage->Height))
- {
- return; // Keep the existing texture
- }
- tObj->DriverData = NULL;
- _GLD_DX9_TEX(Release(pTex));
- }
-
- d3dFormat = _gldGLFormatToD3DFormat(texImage->IntFormat);
- D3DXCreateTexture(
- gld->pDev,
- texImage->Width,
- texImage->Height,
- // TODO: Re-evaluate mipmapping
- (glb.bUseMipmaps) ? D3DX_DEFAULT : 1,
- 0, // Usage
- d3dFormat,
- D3DPOOL_MANAGED,
- &pTex);
- tObj->DriverData = pTex;
-}
-
-//---------------------------------------------------------------------------
-
-const struct gl_texture_format* gld_ChooseTextureFormat_DX9(
- struct gl_context *ctx,
- GLint internalFormat,
- GLenum srcFormat,
- GLenum srcType)
-{
- // [Based on mesa_choose_tex_format()]
- //
- // We will choose only texture formats that are supported
- // by Direct3D. If the hardware doesn't support a particular
- // texture format, then the D3DX texture calls that we use
- // will automatically use a HW supported format.
- //
- // The most critical aim is to reduce copying; if we can use
- // texture-image data directly then it will be a big performance assist.
- //
-
- switch (internalFormat) {
- case GL_INTENSITY:
- case GL_INTENSITY4:
- case GL_INTENSITY8:
- case GL_INTENSITY12:
- case GL_INTENSITY16:
- return &_mesa_texformat_l8; // D3DFMT_L8
- case 1:
- case GL_LUMINANCE:
- case GL_LUMINANCE4:
- case GL_LUMINANCE8:
- case GL_LUMINANCE12:
- case GL_LUMINANCE16:
- return &_mesa_texformat_l8; // D3DFMT_L8
- case GL_ALPHA:
- case GL_ALPHA4:
- case GL_ALPHA8:
- case GL_ALPHA12:
- case GL_ALPHA16:
- return &_mesa_texformat_a8; // D3DFMT_A8
- case GL_COLOR_INDEX:
- case GL_COLOR_INDEX1_EXT:
- case GL_COLOR_INDEX2_EXT:
- case GL_COLOR_INDEX4_EXT:
- case GL_COLOR_INDEX8_EXT:
- case GL_COLOR_INDEX12_EXT:
- case GL_COLOR_INDEX16_EXT:
- return &_mesa_texformat_rgb565; // D3DFMT_R5G6B5
- // Mesa will convert this for us later...
- // return &_mesa_texformat_ci8; // D3DFMT_R5G6B5
- case 2:
- case GL_LUMINANCE_ALPHA:
- case GL_LUMINANCE4_ALPHA4:
- case GL_LUMINANCE6_ALPHA2:
- case GL_LUMINANCE8_ALPHA8:
- case GL_LUMINANCE12_ALPHA4:
- case GL_LUMINANCE12_ALPHA12:
- case GL_LUMINANCE16_ALPHA16:
- return &_mesa_texformat_al88; // D3DFMT_A8L8
- case GL_R3_G3_B2:
- return &_mesa_texformat_rgb332; // D3DFMT_R3G3B2
- case GL_RGB4:
- case GL_RGBA4:
- case GL_RGBA2:
- return &_mesa_texformat_argb4444; // D3DFMT_A4R4G4B4
- case 3:
- case GL_RGB:
- case GL_RGB5:
- case GL_RGB8:
- case GL_RGB10:
- case GL_RGB12:
- case GL_RGB16:
- return &_mesa_texformat_rgb565;
- case 4:
- case GL_RGBA:
- case GL_RGBA8:
- case GL_RGB10_A2:
- case GL_RGBA12:
- case GL_RGBA16:
- return &_mesa_texformat_argb8888;
- case GL_RGB5_A1:
- return &_mesa_texformat_argb1555;
- default:
- _mesa_problem(NULL, "unexpected format in fxDDChooseTextureFormat");
- return NULL;
- }
-}
-
-//---------------------------------------------------------------------------
-
-/*
-// Safer(?), slower version.
-void gld_TexImage2D_DX9(
- struct gl_context *ctx,
- GLenum target,
- GLint level,
- GLint internalFormat,
- GLint width,
- GLint height,
- GLint border,
- GLenum format,
- GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *tObj,
- struct gl_texture_image *texImage)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- IDirect3DTexture9 *pTex;
- IDirect3DSurface9 *pSurface;
- RECT rcSrcRect;
- HRESULT hr;
- GLint texelBytes = 4;
- GLvoid *tempImage;
-
- if (!tObj || !texImage)
- return;
-
- if (level == 0) {
- _gldAllocateTexture(ctx, tObj, texImage);
- }
-
- pTex = (IDirect3DTexture9*)tObj->DriverData;
- if (!pTex)
- return; // Texture has not been created
- if (level >= IDirect3DTexture9_GetLevelCount(pTex))
- return; // Level does not exist
- hr = IDirect3DTexture9_GetSurfaceLevel(pTex, level, &pSurface);
- if (FAILED(hr))
- return; // Surface level doesn't exist (or just a plain error)
-
- tempImage = MALLOC(width * height * texelBytes);
- if (!tempImage) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
- IDirect3DSurface9_Release(pSurface);
- return;
- }
- // unpack image, apply transfer ops and store in tempImage
- texImage->TexFormat->StoreImage(ctx, 2, texImage->Format,
- &_mesa_texformat_argb8888, // dest format
- tempImage,
- width, height, 1, 0, 0, 0,
- width * texelBytes,
- 0, // dstImageStride
- format, type, pixels, packing);
-
- SetRect(&rcSrcRect, 0, 0, width, height);
- D3DXLoadSurfaceFromMemory(
- pSurface,
- NULL,
- NULL,
- tempImage,
- D3DFMT_A8R8G8B8,
- width * texelBytes,
- NULL,
- &rcSrcRect,
- D3DX_FILTER_NONE,
- 0);
-
- FREE(tempImage);
- IDirect3DSurface9_Release(pSurface);
-}
-*/
-
-//---------------------------------------------------------------------------
-
-// Faster, more efficient version.
-// Copies subimage straight to dest texture
-void gld_TexImage2D_DX9(
- struct gl_context *ctx,
- GLenum target,
- GLint level,
- GLint internalFormat,
- GLint width,
- GLint height,
- GLint border,
- GLenum format,
- GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *tObj,
- struct gl_texture_image *texImage)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- IDirect3DTexture9 *pTex;
- IDirect3DSurface9 *pSurface;
- HRESULT hr;
- D3DLOCKED_RECT d3dLockedRect;
- D3DSURFACE_DESC d3dsd;
-
- if (!tObj || !texImage)
- return;
-
- // GLQUAKE FIX
- // Test for input alpha data with non-alpha internalformat
- if (((internalFormat==3) || (internalFormat==GL_RGB)) && (format==GL_RGBA)) {
- // Input format has alpha, but a non-alpha format has been requested.
- texImage->IntFormat = GL_RGBA;
- internalFormat = GL_RGBA;
- }
-
- if (level == 0) {
- _gldAllocateTexture(ctx, tObj, texImage);
- }
-
- pTex = (IDirect3DTexture9*)tObj->DriverData;
- if (!pTex)
- return; // Texture has not been created
- if (level >= IDirect3DTexture9_GetLevelCount(pTex))
- return; // Level does not exist
- hr = IDirect3DTexture9_GetSurfaceLevel(pTex, level, &pSurface);
- if (FAILED(hr))
- return; // Surface level doesn't exist (or just a plain error)
-
- IDirect3DSurface9_GetDesc(pSurface, &d3dsd);
-
- // Lock all of surface
- hr = IDirect3DSurface9_LockRect(pSurface, &d3dLockedRect, NULL, 0);
- if (FAILED(hr)) {
- IDirect3DSurface9_Release(pSurface);
- return;
- }
-
- // unpack image, apply transfer ops and store directly in texture
- texImage->TexFormat->StoreImage(
- ctx,
- 2,
- texImage->Format,
- _gldMesaFormatForD3DFormat(d3dsd.Format),
- d3dLockedRect.pBits,
- width, height, 1, 0, 0, 0,
- d3dLockedRect.Pitch,
- 0, // dstImageStride
- format, type, pixels, packing);
-
- IDirect3DSurface9_UnlockRect(pSurface);
- IDirect3DSurface9_Release(pSurface);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_TexImage1D_DX9(struct gl_context *ctx, GLenum target, GLint level,
- GLint internalFormat,
- GLint width, GLint border,
- GLenum format, GLenum type, const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage )
-{
- // A 1D texture is a 2D texture with a height of zero
- gld_TexImage2D_DX9(ctx, target, level, internalFormat, width, 1, border, format, type, pixels, packing, texObj, texImage);
-}
-
-//---------------------------------------------------------------------------
-
-/*
-void gld_TexSubImage2D( struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *tObj,
- struct gl_texture_image *texImage )
-{
- GLD_GET_CONTEXT
- IDirect3DTexture9 *pTex;
- IDirect3DSurface9 *pSurface;
- D3DFORMAT d3dFormat;
- HRESULT hr;
- GLint texelBytes = 4;
- GLvoid *tempImage;
- RECT rcSrcRect;
- RECT rcDstRect;
-
- if (!tObj || !texImage)
- return;
-
- pTex = (IDirect3DTexture9*)tObj->DriverData;
- if (!pTex)
- return; // Texture has not been created
- if (level >= _GLD_DX9_TEX(GetLevelCount(pTex))
- return; // Level does not exist
- hr = _GLD_DX9_TEX(GetSurfaceLevel(pTex, level, &pSurface);
- if (FAILED(hr))
- return; // Surface level doesn't exist (or just a plain error)
-
- d3dFormat = _gldGLFormatToD3DFormat(texImage->Format);
- tempImage = MALLOC(width * height * texelBytes);
- if (!tempImage) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage2D");
- IDirect3DSurface9_Release(pSurface);
- return;
- }
-
- // unpack image, apply transfer ops and store in tempImage
- texImage->TexFormat->StoreImage(ctx, 2, texImage->Format,
- &_mesa_texformat_argb8888, // dest format
- tempImage,
- width, height, 1, 0, 0, 0,
- width * texelBytes,
- 0, // dstImageStride
- format, type, pixels, packing);
-
- // Source rectangle is whole of input image
- SetRect(&rcSrcRect, 0, 0, width, height);
-
- // Dest rectangle must be offset to dest image
- SetRect(&rcDstRect, 0, 0, width, height);
- OffsetRect(&rcDstRect, xoffset, yoffset);
-
- D3DXLoadSurfaceFromMemory(
- pSurface,
- NULL,
- &rcDstRect,
- tempImage,
- D3DFMT_A8R8G8B8,
- width * texelBytes,
- NULL,
- &rcSrcRect,
- D3DX_FILTER_NONE,
- 0);
-
- FREE(tempImage);
- IDirect3DSurface9_Release(pSurface);
-}
-*/
-
-//---------------------------------------------------------------------------
-
-// Faster, more efficient version.
-// Copies subimage straight to dest texture
-void gld_TexSubImage2D_DX9( struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLint yoffset,
- GLsizei width, GLsizei height,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *tObj,
- struct gl_texture_image *texImage )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- IDirect3DTexture9 *pTex;
- IDirect3DSurface9 *pSurface;
- HRESULT hr;
- RECT rcDstRect;
- D3DLOCKED_RECT d3dLockedRect;
- D3DSURFACE_DESC d3dsd;
-
- if (!tObj || !texImage)
- return;
-
- pTex = (IDirect3DTexture9*)tObj->DriverData;
- if (!pTex)
- return; // Texture has not been created
- if (level >= IDirect3DTexture9_GetLevelCount(pTex))
- return; // Level does not exist
- hr = IDirect3DTexture9_GetSurfaceLevel(pTex, level, &pSurface);
- if (FAILED(hr))
- return; // Surface level doesn't exist (or just a plain error)
-
- IDirect3DSurface9_GetDesc(pSurface, &d3dsd);
-
- // Dest rectangle must be offset to dest image
- SetRect(&rcDstRect, 0, 0, width, height);
- OffsetRect(&rcDstRect, xoffset, yoffset);
-
- // Lock sub-rect of surface
- hr = IDirect3DSurface9_LockRect(pSurface, &d3dLockedRect, &rcDstRect, 0);
- if (FAILED(hr)) {
- IDirect3DSurface9_Release(pSurface);
- return;
- }
-
- // unpack image, apply transfer ops and store directly in texture
- texImage->TexFormat->StoreImage(ctx, 2, texImage->Format,
- _gldMesaFormatForD3DFormat(d3dsd.Format),
- d3dLockedRect.pBits,
- width, height, 1,
- 0, 0, 0, // NOTE: d3dLockedRect.pBits is already offset!!!
- d3dLockedRect.Pitch,
- 0, // dstImageStride
- format, type, pixels, packing);
-
-
- IDirect3DSurface9_UnlockRect(pSurface);
- IDirect3DSurface9_Release(pSurface);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_TexSubImage1D_DX9( struct gl_context *ctx, GLenum target, GLint level,
- GLint xoffset, GLsizei width,
- GLenum format, GLenum type,
- const GLvoid *pixels,
- const struct gl_pixelstore_attrib *packing,
- struct gl_texture_object *texObj,
- struct gl_texture_image *texImage )
-{
- gld_TexSubImage2D_DX9(ctx, target, level, xoffset, 0, width, 1, format, type, pixels, packing, texObj, texImage);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_DeleteTexture_DX9(
- struct gl_context *ctx,
- struct gl_texture_object *tObj)
-{
- GLD_context *gld = (GLD_context*)(ctx->DriverCtx);
-
- if (tObj) {
- IDirect3DTexture9 *pTex = (IDirect3DTexture9*)tObj->DriverData;
- if (pTex) {
-/* // Make sure texture is not bound to a stage before releasing it
- for (int i=0; i<MAX_TEXTURE_UNITS; i++) {
- if (gld->CurrentTexture[i] == pTex) {
- gld->pDev->SetTexture(i, NULL);
- gld->CurrentTexture[i] = NULL;
- }
- }*/
- _GLD_DX9_TEX(Release(pTex));
- tObj->DriverData = NULL;
- }
- }
-}
-
-//---------------------------------------------------------------------------
-
-__inline void _gldSetColorOps(
- const GLD_driver_dx9 *gld,
- GLuint unit,
- DWORD ColorArg1,
- D3DTEXTUREOP ColorOp,
- DWORD ColorArg2)
-{
- _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_COLORARG1, ColorArg1));
- _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_COLOROP, ColorOp));
- _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_COLORARG2, ColorArg2));
-}
-
-//---------------------------------------------------------------------------
-
-__inline void _gldSetAlphaOps(
- const GLD_driver_dx9 *gld,
- GLuint unit,
- DWORD AlphaArg1,
- D3DTEXTUREOP AlphaOp,
- DWORD AlphaArg2)
-{
- _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_ALPHAARG1, AlphaArg1));
- _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_ALPHAOP, AlphaOp));
- _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_ALPHAARG2, AlphaArg2));
-}
-
-//---------------------------------------------------------------------------
-
-void gldUpdateTextureUnit(
- struct gl_context *ctx,
- GLuint unit,
- BOOL bPassThrough)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- D3DTEXTUREFILTERTYPE minfilter;
- D3DTEXTUREFILTERTYPE mipfilter;
- GLenum BaseFormat;
- DWORD dwColorArg0;
- int iTexEnv = 0;
- GLD_texenv *pTexenv;
-
- // NOTE: If bPassThrough is FALSE then texture stage can be
- // disabled otherwise it must pass-through it's current fragment.
-
- const struct gl_texture_unit *pUnit = &ctx->Texture.Unit[unit];
- const struct gl_texture_object *tObj = pUnit->_Current;
-
- IDirect3DTexture9 *pTex = NULL;
- if (tObj) {
- pTex = (IDirect3DTexture9*)tObj->DriverData;
- }
-
- // Enable texturing if unit is enabled and a valid D3D texture exists
- // Mesa 5: TEXTUREn_x altered to TEXTURE_nD_BIT
- //if (pTex && (pUnit->Enabled & (TEXTURE0_1D | TEXTURE0_2D))) {
- if (pTex && (pUnit->_ReallyEnabled & (TEXTURE_1D_BIT | TEXTURE_2D_BIT))) {
- // Enable texturing
- _GLD_DX9_DEV(SetTexture(gld->pDev, unit, pTex));
- } else {
- // Disable texturing, then return
- _GLD_DX9_DEV(SetTexture(gld->pDev, unit, NULL));
- if (bPassThrough) {
- _gldSetColorOps(gld, unit, D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_DIFFUSE);
- _gldSetAlphaOps(gld, unit, D3DTA_TEXTURE, D3DTOP_SELECTARG2, D3DTA_DIFFUSE);
- } else {
- _gldSetColorOps(gld, unit, D3DTA_TEXTURE, D3DTOP_DISABLE, D3DTA_DIFFUSE);
- _gldSetAlphaOps(gld, unit, D3DTA_TEXTURE, D3DTOP_DISABLE, D3DTA_DIFFUSE);
- }
- return;
- }
-
- // Texture parameters
- _gldConvertMinFilter(tObj->MinFilter, &minfilter, &mipfilter);
-// _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_MINFILTER, minfilter));
-// _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_MIPFILTER, mipfilter));
-// _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_MAGFILTER, _gldConvertMagFilter(tObj->MagFilter)));
-// _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_ADDRESSU, _gldConvertWrap(tObj->WrapS)));
-// _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_ADDRESSV, _gldConvertWrap(tObj->WrapT)));
- _GLD_DX9_DEV(SetSamplerState(gld->pDev, unit, D3DSAMP_MINFILTER, minfilter));
- _GLD_DX9_DEV(SetSamplerState(gld->pDev, unit, D3DSAMP_MIPFILTER, mipfilter));
- _GLD_DX9_DEV(SetSamplerState(gld->pDev, unit, D3DSAMP_MAGFILTER, _gldConvertMagFilter(tObj->MagFilter)));
- _GLD_DX9_DEV(SetSamplerState(gld->pDev, unit, D3DSAMP_ADDRESSU, _gldConvertWrap(tObj->WrapS)));
- _GLD_DX9_DEV(SetSamplerState(gld->pDev, unit, D3DSAMP_ADDRESSV, _gldConvertWrap(tObj->WrapT)));
-
- // Texture priority
- _GLD_DX9_TEX(SetPriority(pTex, (DWORD)(tObj->Priority*65535.0f)));
-
- // Texture environment
- // TODO: Examine input texture for alpha and use specific alpha/non-alpha ops.
- // See Page 355 of the Red Book.
- BaseFormat = _gldDecodeBaseFormat(pTex);
-
- switch (BaseFormat) {
- case GL_RGB:
- iTexEnv = 0;
- break;
- case GL_RGBA:
- iTexEnv = 1;
- break;
- case GL_ALPHA:
- iTexEnv = 2;
- break;
- }
-
- switch (pUnit->EnvMode) {
- case GL_DECAL:
- iTexEnv += 0;
- break;
- case GL_REPLACE:
- iTexEnv += 3;
- break;
- case GL_MODULATE:
- iTexEnv += 6;
- break;
- case GL_BLEND:
- // Set blend colour
- dwColorArg0 = D3DCOLOR_COLORVALUE(pUnit->EnvColor[0], pUnit->EnvColor[1], pUnit->EnvColor[2], pUnit->EnvColor[3]);
- _GLD_DX9_DEV(SetTextureStageState(gld->pDev, unit, D3DTSS_COLORARG0, dwColorArg0));
- iTexEnv += 9;
- break;
- case GL_ADD:
- iTexEnv += 12;
- break;
- }
- pTexenv = (GLD_texenv*)&gldTexEnv[iTexEnv];
- _gldSetColorOps(gld, unit, pTexenv->ColorArg1, pTexenv->ColorOp, pTexenv->ColorArg2);
- _gldSetAlphaOps(gld, unit, pTexenv->AlphaArg1, pTexenv->AlphaOp, pTexenv->AlphaArg2);
-}
-
-//---------------------------------------------------------------------------
-
-void gld_NEW_TEXTURE_DX9(
- struct gl_context *ctx)
-{
- // TODO: Support for three (ATI Radeon) or more (nVidia GeForce3) texture units
-
- BOOL bUnit0Enabled;
- BOOL bUnit1Enabled;
-
- if (!ctx)
- return; // Sanity check
-
- if (ctx->Const.MaxTextureUnits == 1) {
- gldUpdateTextureUnit(ctx, 0, TRUE);
- return;
- }
-
- //
- // NOTE: THE FOLLOWING RELATES TO TWO TEXTURE UNITS, AND TWO ONLY!!
- //
-
- // Mesa 5: Texture Units altered
- //bUnit0Enabled = (ctx->Texture._ReallyEnabled & (TEXTURE0_1D | TEXTURE0_2D)) ? TRUE : FALSE;
- //bUnit1Enabled = (ctx->Texture._ReallyEnabled & (TEXTURE1_1D | TEXTURE1_2D)) ? TRUE : FALSE;
- bUnit0Enabled = (ctx->Texture.Unit[0]._ReallyEnabled & (TEXTURE_1D_BIT | TEXTURE_2D_BIT)) ? TRUE : FALSE;
- bUnit1Enabled = (ctx->Texture.Unit[1]._ReallyEnabled & (TEXTURE_1D_BIT | TEXTURE_2D_BIT)) ? TRUE : FALSE;
-
- // If Unit0 is disabled and Unit1 is enabled then we must pass-though
- gldUpdateTextureUnit(ctx, 0, (!bUnit0Enabled && bUnit1Enabled) ? TRUE : FALSE);
- // We can always disable the last texture unit
- gldUpdateTextureUnit(ctx, 1, FALSE);
-
-#ifdef _DEBUG
-#if 0
- {
- // Find out whether device supports current renderstates
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-// GLD_context *gld = GLD_GET_CONTEXT(ctx);
-
- DWORD dwPasses;
- _GLD_DX9_DEV(ValidateDevice(gld->pDev, &dwPasses));
-// if (FAILED(hr)) {
-// gldLogError(GLDLOG_ERROR, "ValidateDevice failed", hr);
-// }
- if (dwPasses != 1) {
- gldLogMessage(GLDLOG_ERROR, "ValidateDevice: Can't do in one pass\n");
- }
- }
-#endif
-#endif
-};
-
-//---------------------------------------------------------------------------
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c
deleted file mode 100644
index 28164a8de..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_d3d_render_dx9.c
+++ /dev/null
@@ -1,263 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: GLDirect fastpath pipeline stage
-*
-****************************************************************************/
-
-//---------------------------------------------------------------------------
-
-//#include "../GLDirect.h"
-//#include "../gld_log.h"
-//#include "gld_dx8.h"
-
-#include "dglcontext.h"
-#include "ddlog.h"
-#include "gld_dx9.h"
-
-//---------------------------------------------------------------------------
-
-#include "glheader.h"
-#include "context.h"
-#include "macros.h"
-// #include "mem.h"
-#include "mtypes.h"
-//#include "mmath.h"
-
-#include "math/m_matrix.h"
-#include "math/m_xform.h"
-
-#include "tnl/t_pipeline.h"
-
-//---------------------------------------------------------------------------
-
-__inline void _gldSetVertexShaderConstants(
- struct gl_context *ctx,
- GLD_driver_dx9 *gld)
-{
- D3DXMATRIX mat, matView, matProj;
- GLfloat *pM;
-
- // Mesa 5: Altered to a Stack
- //pM = ctx->ModelView.m;
- pM = ctx->ModelviewMatrixStack.Top->m;
- matView._11 = pM[0];
- matView._12 = pM[1];
- matView._13 = pM[2];
- matView._14 = pM[3];
- matView._21 = pM[4];
- matView._22 = pM[5];
- matView._23 = pM[6];
- matView._24 = pM[7];
- matView._31 = pM[8];
- matView._32 = pM[9];
- matView._33 = pM[10];
- matView._34 = pM[11];
- matView._41 = pM[12];
- matView._42 = pM[13];
- matView._43 = pM[14];
- matView._44 = pM[15];
-
- // Mesa 5: Altered to a Stack
- //pM = ctx->ProjectionMatrix.m;
- pM = ctx->ProjectionMatrixStack.Top->m;
- matProj._11 = pM[0];
- matProj._12 = pM[1];
- matProj._13 = pM[2];
- matProj._14 = pM[3];
- matProj._21 = pM[4];
- matProj._22 = pM[5];
- matProj._23 = pM[6];
- matProj._24 = pM[7];
- matProj._31 = pM[8];
- matProj._32 = pM[9];
- matProj._33 = pM[10];
- matProj._34 = pM[11];
- matProj._41 = pM[12];
- matProj._42 = pM[13];
- matProj._43 = pM[14];
- matProj._44 = pM[15];
-
- D3DXMatrixMultiply( &mat, &matView, &matProj );
- D3DXMatrixTranspose( &mat, &mat );
-
- _GLD_DX9_DEV(SetVertexShaderConstantF(gld->pDev, 0, (float*)&mat, 4));
-}
-
-//---------------------------------------------------------------------------
-
-static GLboolean gld_d3d_render_stage_run(
- struct gl_context *ctx,
- struct tnl_pipeline_stage *stage)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- TNLcontext *tnl;
- struct vertex_buffer *VB;
- tnl_render_func *tab;
- GLint pass;
- GLD_pb_dx9 *gldPB = &gld->PB3d;
-/*
- static int count = 0;
- count++;
- if (count != 2)
- return GL_FALSE;
-*/
- // The "check" function should disable this stage,
- // but we'll test gld->bUseMesaTnL anyway.
- if (gld->bUseMesaTnL) {
- // Do nothing in this stage, but continue pipeline
- return GL_TRUE;
- }
-
- tnl = TNL_CONTEXT(ctx);
- VB = &tnl->vb;
- pass = 0;
-
- tnl->Driver.Render.Start( ctx );
-
-#if 0
- // For debugging: Useful to see if an app passes colour data in
- // an unusual format.
- switch (VB->AttribPtr[_TNL_ATTRIB_COLOR0]->Type) {
- case GL_FLOAT:
- ddlogMessage(GLDLOG_SYSTEM, "ColorPtr: GL_FLOAT\n");
- break;
- case GL_UNSIGNED_BYTE:
- ddlogMessage(GLDLOG_SYSTEM, "ColorPtr: GL_UNSIGNED_BYTE\n");
- break;
- default:
- ddlogMessage(GLDLOG_SYSTEM, "ColorPtr: *?*\n");
- break;
- }
-#endif
-
- tnl->Driver.Render.Points = gld_Points3D_DX9;
- if (ctx->_TriangleCaps & DD_FLATSHADE) {
- tnl->Driver.Render.Line = gld_Line3DFlat_DX9;
- tnl->Driver.Render.Triangle = gld_Triangle3DFlat_DX9;
- tnl->Driver.Render.Quad = gld_Quad3DFlat_DX9;
- } else {
- tnl->Driver.Render.Line = gld_Line3DSmooth_DX9;
- tnl->Driver.Render.Triangle = gld_Triangle3DSmooth_DX9;
- tnl->Driver.Render.Quad = gld_Quad3DSmooth_DX9;
- }
-
- _GLD_DX9_VB(Lock(gldPB->pVB, 0, 0, &gldPB->pPoints, D3DLOCK_DISCARD));
- gldPB->nPoints = gldPB->nLines = gldPB->nTriangles = 0;
- // Allocate primitive pointers
- // gldPB->pPoints is always first
- gldPB->pLines = gldPB->pPoints + (gldPB->dwStride * gldPB->iFirstLine);
- gldPB->pTriangles = gldPB->pPoints + (gldPB->dwStride * gldPB->iFirstTriangle);
-
- ASSERT(tnl->Driver.Render.BuildVertices);
- ASSERT(tnl->Driver.Render.PrimitiveNotify);
- ASSERT(tnl->Driver.Render.Points);
- ASSERT(tnl->Driver.Render.Line);
- ASSERT(tnl->Driver.Render.Triangle);
- ASSERT(tnl->Driver.Render.Quad);
- ASSERT(tnl->Driver.Render.ResetLineStipple);
- ASSERT(tnl->Driver.Render.Interp);
- ASSERT(tnl->Driver.Render.CopyPV);
- ASSERT(tnl->Driver.Render.ClippedLine);
- ASSERT(tnl->Driver.Render.ClippedPolygon);
- ASSERT(tnl->Driver.Render.Finish);
-
- tab = (VB->Elts ? tnl->Driver.Render.PrimTabElts : tnl->Driver.Render.PrimTabVerts);
-
- do {
- GLuint i, length, flags = 0;
- for (i = 0 ; !(flags & PRIM_END) ; i += length)
- {
- flags = VB->Primitive[i].mode;
- length= VB->Primitive[i].count;
- ASSERT(length || (flags & PRIM_END));
- ASSERT((flags & PRIM_MODE_MASK) <= GL_POLYGON+1);
- if (length)
- tab[flags & PRIM_MODE_MASK]( ctx, i, i + length, flags );
- }
- } while (tnl->Driver.Render.Multipass &&
- tnl->Driver.Render.Multipass( ctx, ++pass ));
-
- _GLD_DX9_VB(Unlock(gldPB->pVB));
-
- _GLD_DX9_DEV(SetStreamSource(gld->pDev, 0, gldPB->pVB, 0, gldPB->dwStride));
-
- _GLD_DX9_DEV(SetTransform(gld->pDev, D3DTS_PROJECTION, &gld->matProjection));
- _GLD_DX9_DEV(SetTransform(gld->pDev, D3DTS_WORLD, &gld->matModelView));
-
- if (gldPB->nPoints) {
- _GLD_DX9_DEV(DrawPrimitive(gld->pDev, D3DPT_POINTLIST, 0, gldPB->nPoints));
- gldPB->nPoints = 0;
- }
-
- if (gldPB->nLines) {
- _GLD_DX9_DEV(DrawPrimitive(gld->pDev, D3DPT_LINELIST, gldPB->iFirstLine, gldPB->nLines));
- gldPB->nLines = 0;
- }
-
- if (gldPB->nTriangles) {
- _GLD_DX9_DEV(DrawPrimitive(gld->pDev, D3DPT_TRIANGLELIST, gldPB->iFirstTriangle, gldPB->nTriangles));
- gldPB->nTriangles = 0;
- }
-
- return GL_FALSE; /* finished the pipe */
-}
-
-//---------------------------------------------------------------------------
-
-static void gld_d3d_render_stage_check(
- struct gl_context *ctx,
- struct tnl_pipeline_stage *stage)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
- // Is this thread safe?
- stage->active = (gld->bUseMesaTnL) ? GL_FALSE : GL_TRUE;
- return;
-}
-
-
-//---------------------------------------------------------------------------
-
-const struct tnl_pipeline_stage _gld_d3d_render_stage =
-{
- "gld_d3d_render_stage",
- NULL,
- NULL,
- NULL,
- NULL,
- gld_d3d_render_stage_run /* run */
-};
-
-//---------------------------------------------------------------------------
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c
deleted file mode 100644
index 4023d547d..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_vb_mesa_render_dx9.c
+++ /dev/null
@@ -1,443 +0,0 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <keithw@valinux.com>
- */
-
-
-/*
- * Render whole vertex buffers, including projection of vertices from
- * clip space and clipping of primitives.
- *
- * This file makes calls to project vertices and to the point, line
- * and triangle rasterizers via the function pointers:
- *
- * context->Driver.Render.*
- *
- */
-
-
-//---------------------------------------------------------------------------
-
-#include "dglcontext.h"
-#include "ddlog.h"
-#include "gld_dx9.h"
-
-//---------------------------------------------------------------------------
-
-#include "glheader.h"
-#include "context.h"
-#include "macros.h"
-#include "mtypes.h"
-//#include "mmath.h"
-
-#include "math/m_matrix.h"
-#include "math/m_xform.h"
-
-#include "tnl/t_pipeline.h"
-
-/**********************************************************************/
-/* Clip single primitives */
-/**********************************************************************/
-
-
-#if defined(USE_IEEE)
-#define NEGATIVE(x) (GET_FLOAT_BITS(x) & (1<<31))
-//#define DIFFERENT_SIGNS(x,y) ((GET_FLOAT_BITS(x) ^ GET_FLOAT_BITS(y)) & (1<<31))
-#else
-#define NEGATIVE(x) (x < 0)
-//#define DIFFERENT_SIGNS(x,y) (x * y <= 0 && x - y != 0)
-/* Could just use (x*y<0) except for the flatshading requirements.
- * Maybe there's a better way?
- */
-#endif
-
-
-#define W(i) coord[i][3]
-#define Z(i) coord[i][2]
-#define Y(i) coord[i][1]
-#define X(i) coord[i][0]
-#define SIZE 4
-#define TAG(x) x##_4
-#include "tnl/t_vb_cliptmp.h"
-
-
-
-/**********************************************************************/
-/* Clip and render whole begin/end objects */
-/**********************************************************************/
-
-#define NEED_EDGEFLAG_SETUP (ctx->_TriangleCaps & DD_TRI_UNFILLED)
-#define EDGEFLAG_GET(idx) VB->EdgeFlag[idx]
-#define EDGEFLAG_SET(idx, val) VB->EdgeFlag[idx] = val
-
-
-/* Vertices, with the possibility of clipping.
- */
-#define RENDER_POINTS( start, count ) \
- tnl->Driver.Render.Points( ctx, start, count )
-
-#define RENDER_LINE( v1, v2 ) \
-do { \
- GLubyte c1 = mask[v1], c2 = mask[v2]; \
- GLubyte ormask = c1|c2; \
- if (!ormask) \
- LineFunc( ctx, v1, v2 ); \
- else if (!(c1 & c2 & 0x3f)) \
- clip_line_4( ctx, v1, v2, ormask ); \
-} while (0)
-
-#define RENDER_TRI( v1, v2, v3 ) \
-do { \
- GLubyte c1 = mask[v1], c2 = mask[v2], c3 = mask[v3]; \
- GLubyte ormask = c1|c2|c3; \
- if (!ormask) \
- TriangleFunc( ctx, v1, v2, v3 ); \
- else if (!(c1 & c2 & c3 & 0x3f)) \
- clip_tri_4( ctx, v1, v2, v3, ormask ); \
-} while (0)
-
-#define RENDER_QUAD( v1, v2, v3, v4 ) \
-do { \
- GLubyte c1 = mask[v1], c2 = mask[v2]; \
- GLubyte c3 = mask[v3], c4 = mask[v4]; \
- GLubyte ormask = c1|c2|c3|c4; \
- if (!ormask) \
- QuadFunc( ctx, v1, v2, v3, v4 ); \
- else if (!(c1 & c2 & c3 & c4 & 0x3f)) \
- clip_quad_4( ctx, v1, v2, v3, v4, ormask ); \
-} while (0)
-
-
-#define LOCAL_VARS \
- TNLcontext *tnl = TNL_CONTEXT(ctx); \
- struct vertex_buffer *VB = &tnl->vb; \
- const GLuint * const elt = VB->Elts; \
- const GLubyte *mask = VB->ClipMask; \
- const GLuint sz = VB->ClipPtr->size; \
- const tnl_line_func LineFunc = tnl->Driver.Render.Line; \
- const tnl_triangle_func TriangleFunc = tnl->Driver.Render.Triangle; \
- const tnl_quad_func QuadFunc = tnl->Driver.Render.Quad; \
- const GLboolean stipple = ctx->Line.StippleFlag; \
- (void) (LineFunc && TriangleFunc && QuadFunc); \
- (void) elt; (void) mask; (void) sz; (void) stipple;
-
-#define TAG(x) clip_##x##_verts
-#define INIT(x) tnl->Driver.Render.PrimitiveNotify( ctx, x )
-#define RESET_STIPPLE if (stipple) tnl->Driver.Render.ResetLineStipple( ctx )
-#define PRESERVE_VB_DEFS
-#include "tnl/t_vb_rendertmp.h"
-
-
-
-/* Elts, with the possibility of clipping.
- */
-#undef ELT
-#undef TAG
-#define ELT(x) elt[x]
-#define TAG(x) clip_##x##_elts
-#include "tnl/t_vb_rendertmp.h"
-
-/* TODO: do this for all primitives, verts and elts:
- */
-static void clip_elt_triangles( struct gl_context *ctx,
- GLuint start,
- GLuint count,
- GLuint flags )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl_render_func render_tris = tnl->Driver.Render.PrimTabElts[GL_TRIANGLES];
- struct vertex_buffer *VB = &tnl->vb;
- const GLuint * const elt = VB->Elts;
- GLubyte *mask = VB->ClipMask;
- GLuint last = count-2;
- GLuint j;
- (void) flags;
-
- tnl->Driver.Render.PrimitiveNotify( ctx, GL_TRIANGLES );
-
- for (j=start; j < last; j+=3 ) {
- GLubyte c1 = mask[elt[j]];
- GLubyte c2 = mask[elt[j+1]];
- GLubyte c3 = mask[elt[j+2]];
- GLubyte ormask = c1|c2|c3;
- if (ormask) {
- if (start < j)
- render_tris( ctx, start, j, 0 );
- if (!(c1&c2&c3&0x3f))
- clip_tri_4( ctx, elt[j], elt[j+1], elt[j+2], ormask );
- start = j+3;
- }
- }
-
- if (start < j)
- render_tris( ctx, start, j, 0 );
-}
-
-/**********************************************************************/
-/* Render whole begin/end objects */
-/**********************************************************************/
-
-#define NEED_EDGEFLAG_SETUP (ctx->_TriangleCaps & DD_TRI_UNFILLED)
-#define EDGEFLAG_GET(idx) VB->EdgeFlag[idx]
-#define EDGEFLAG_SET(idx, val) VB->EdgeFlag[idx] = val
-
-
-/* Vertices, no clipping.
- */
-#define RENDER_POINTS( start, count ) \
- tnl->Driver.Render.Points( ctx, start, count )
-
-#define RENDER_LINE( v1, v2 ) \
- LineFunc( ctx, v1, v2 )
-
-#define RENDER_TRI( v1, v2, v3 ) \
- TriangleFunc( ctx, v1, v2, v3 )
-
-#define RENDER_QUAD( v1, v2, v3, v4 ) \
- QuadFunc( ctx, v1, v2, v3, v4 )
-
-#define TAG(x) _gld_tnl_##x##_verts
-
-#define LOCAL_VARS \
- TNLcontext *tnl = TNL_CONTEXT(ctx); \
- struct vertex_buffer *VB = &tnl->vb; \
- const GLuint * const elt = VB->Elts; \
- const tnl_line_func LineFunc = tnl->Driver.Render.Line; \
- const tnl_triangle_func TriangleFunc = tnl->Driver.Render.Triangle; \
- const tnl_quad_func QuadFunc = tnl->Driver.Render.Quad; \
- (void) (LineFunc && TriangleFunc && QuadFunc); \
- (void) elt;
-
-#define RESET_STIPPLE tnl->Driver.Render.ResetLineStipple( ctx )
-#define INIT(x) tnl->Driver.Render.PrimitiveNotify( ctx, x )
-#define RENDER_TAB_QUALIFIER
-#define PRESERVE_VB_DEFS
-#include "tnl/t_vb_rendertmp.h"
-
-
-/* Elts, no clipping.
- */
-#undef ELT
-#define TAG(x) _gld_tnl_##x##_elts
-#define ELT(x) elt[x]
-#include "tnl/t_vb_rendertmp.h"
-
-
-/**********************************************************************/
-/* Helper functions for drivers */
-/**********************************************************************/
-/*
-void _tnl_RenderClippedPolygon( struct gl_context *ctx, const GLuint *elts, GLuint n )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- GLuint *tmp = VB->Elts;
-
- VB->Elts = (GLuint *)elts;
- tnl->Driver.Render.PrimTabElts[GL_POLYGON]( ctx, 0, n, PRIM_BEGIN|PRIM_END );
- VB->Elts = tmp;
-}
-
-void _tnl_RenderClippedLine( struct gl_context *ctx, GLuint ii, GLuint jj )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- tnl->Driver.Render.Line( ctx, ii, jj );
-}
-*/
-
-
-/**********************************************************************/
-/* Clip and render whole vertex buffers */
-/**********************************************************************/
-
-tnl_points_func _gldSetupPoints[4] = {
- gld_Points2D_DX9,
- gld_Points2D_DX9,
- gld_Points2D_DX9,
- gld_Points2D_DX9
-};
-tnl_line_func _gldSetupLine[4] = {
- gld_Line2DFlat_DX9,
- gld_Line2DSmooth_DX9,
- gld_Line2DFlat_DX9,
- gld_Line2DSmooth_DX9,
-};
-tnl_triangle_func _gldSetupTriangle[4] = {
- gld_Triangle2DFlat_DX9,
- gld_Triangle2DSmooth_DX9,
- gld_Triangle2DFlatExtras_DX9,
- gld_Triangle2DSmoothExtras_DX9
-};
-tnl_quad_func _gldSetupQuad[4] = {
- gld_Quad2DFlat_DX9,
- gld_Quad2DSmooth_DX9,
- gld_Quad2DFlatExtras_DX9,
- gld_Quad2DSmoothExtras_DX9
-};
-
-//---------------------------------------------------------------------------
-
-static GLboolean _gld_mesa_render_stage_run(
- struct gl_context *ctx,
- struct tnl_pipeline_stage *stage)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- GLD_driver_dx9 *gld = GLD_GET_DX9_DRIVER(gldCtx);
-
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- struct vertex_buffer *VB = &tnl->vb;
- tnl_render_func *tab;
- GLint pass = 0;
- GLD_pb_dx9 *gldPB;
-
- /* Allow the drivers to lock before projected verts are built so
- * that window coordinates are guarenteed not to change before
- * rendering.
- */
- ASSERT(tnl->Driver.Render.Start);
-
- tnl->Driver.Render.Start( ctx );
-
- // NOTE: Setting D3DRS_SOFTWAREVERTEXPROCESSING for a mixed-mode device resets
- // stream, indices and shader to default values of NULL or 0.
-/* if ((ctx->_TriangleCaps & DD_TRI_LIGHT_TWOSIDE) &&
- gld->VStwosidelight.hShader &&
- !ctx->Fog.Enabled)
- {
- IDirect3DDevice8_SetRenderState(gld->pDev, D3DRS_SOFTWAREVERTEXPROCESSING, !gld->VStwosidelight.bHardware);
- _GLD_DX9_DEV(SetVertexShader(gld->pDev, gld->VStwosidelight.hShader));
- gldPB = &gld->PBtwosidelight;
- tnl->Driver.Render.Points = gld_Points2DTwoside_DX9;
- if (ctx->_TriangleCaps & DD_FLATSHADE) {
- tnl->Driver.Render.Line = gld_Line2DFlatTwoside_DX9;
- tnl->Driver.Render.Triangle = gld_Triangle2DFlatTwoside_DX9;
- tnl->Driver.Render.Quad = gld_Quad2DFlatTwoside_DX9;
- } else {
- tnl->Driver.Render.Line = gld_Line2DSmoothTwoside_DX9;
- tnl->Driver.Render.Triangle = gld_Triangle2DSmoothTwoside_DX9;
- tnl->Driver.Render.Quad = gld_Quad2DSmoothTwoside_DX9;
- }
- } else {*/
-// IDirect3DDevice8_SetRenderState(gld->pDev, D3DRS_SOFTWAREVERTEXPROCESSING, TRUE);
- IDirect3DDevice9_SetSoftwareVertexProcessing(gld->pDev, TRUE);
- gldPB = &gld->PB2d;
- _GLD_DX9_DEV(SetVertexShader(gld->pDev, NULL));
- _GLD_DX9_DEV(SetFVF(gld->pDev, gldPB->dwFVF));
- tnl->Driver.Render.Points = _gldSetupPoints[gld->iSetupFunc];
- tnl->Driver.Render.Line = _gldSetupLine[gld->iSetupFunc];
- tnl->Driver.Render.Triangle = _gldSetupTriangle[gld->iSetupFunc];
- tnl->Driver.Render.Quad = _gldSetupQuad[gld->iSetupFunc];
-// }
-
- _GLD_DX9_VB(Lock(gldPB->pVB, 0, 0, &gldPB->pPoints, D3DLOCK_DISCARD));
- gldPB->nPoints = gldPB->nLines = gldPB->nTriangles = 0;
- // Allocate primitive pointers
- // gldPB->pPoints is always first
- gldPB->pLines = gldPB->pPoints + (gldPB->dwStride * gldPB->iFirstLine);
- gldPB->pTriangles = gldPB->pPoints + (gldPB->dwStride * gldPB->iFirstTriangle);
-
- ASSERT(tnl->Driver.Render.BuildVertices);
- ASSERT(tnl->Driver.Render.PrimitiveNotify);
- ASSERT(tnl->Driver.Render.Points);
- ASSERT(tnl->Driver.Render.Line);
- ASSERT(tnl->Driver.Render.Triangle);
- ASSERT(tnl->Driver.Render.Quad);
- ASSERT(tnl->Driver.Render.ResetLineStipple);
- ASSERT(tnl->Driver.Render.Interp);
- ASSERT(tnl->Driver.Render.CopyPV);
- ASSERT(tnl->Driver.Render.ClippedLine);
- ASSERT(tnl->Driver.Render.ClippedPolygon);
- ASSERT(tnl->Driver.Render.Finish);
-
- tnl->Driver.Render.BuildVertices( ctx, 0, VB->Count, ~0 );
-
- if (VB->ClipOrMask) {
- tab = VB->Elts ? clip_render_tab_elts : clip_render_tab_verts;
- clip_render_tab_elts[GL_TRIANGLES] = clip_elt_triangles;
- }
- else {
- tab = (VB->Elts ?
- tnl->Driver.Render.PrimTabElts :
- tnl->Driver.Render.PrimTabVerts);
- }
-
- do {
- GLuint i, length, flags = 0;
- for (i = 0 ; !(flags & PRIM_END) ; i += length) {
- flags = VB->Primitive[i].mode;
- length= VB->Primitive[i].count;
- ASSERT(length || (flags & PRIM_END));
- ASSERT((flags & PRIM_MODE_MASK) <= GL_POLYGON+1);
- if (length)
- tab[flags & PRIM_MODE_MASK]( ctx, i, i + length, flags );
- }
- } while (tnl->Driver.Render.Multipass &&
- tnl->Driver.Render.Multipass( ctx, ++pass ));
-
-
-// tnl->Driver.Render.Finish( ctx );
-
- _GLD_DX9_VB(Unlock(gldPB->pVB));
-
- _GLD_DX9_DEV(SetStreamSource(gld->pDev, 0, gldPB->pVB, 0, gldPB->dwStride));
-
- if (gldPB->nPoints) {
- _GLD_DX9_DEV(DrawPrimitive(gld->pDev, D3DPT_POINTLIST, 0, gldPB->nPoints));
- gldPB->nPoints = 0;
- }
-
- if (gldPB->nLines) {
- _GLD_DX9_DEV(DrawPrimitive(gld->pDev, D3DPT_LINELIST, gldPB->iFirstLine, gldPB->nLines));
- gldPB->nLines = 0;
- }
-
- if (gldPB->nTriangles) {
- _GLD_DX9_DEV(DrawPrimitive(gld->pDev, D3DPT_TRIANGLELIST, gldPB->iFirstTriangle, gldPB->nTriangles));
- gldPB->nTriangles = 0;
- }
-
- return GL_FALSE; /* finished the pipe */
-}
-
-
-/**********************************************************************/
-/* Render pipeline stage */
-/**********************************************************************/
-
-
-
-
-const struct tnl_pipeline_stage _gld_mesa_render_stage =
-{
- "gld_mesa_render_stage",
- NULL,
- NULL,
- NULL,
- NULL,
- _gld_mesa_render_stage_run /* run */
-};
-
-//---------------------------------------------------------------------------
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c b/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c
deleted file mode 100644
index 45324128a..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/dx9/gld_wgl_dx9.c
+++ /dev/null
@@ -1,1346 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: GLDirect Direct3D 8.x WGL (WindowsGL)
-*
-****************************************************************************/
-
-#include "dglcontext.h"
-#include "gld_driver.h"
-#include "gld_dxerr9.h"
-#include "gld_dx9.h"
-
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-
-// Copied from dglcontect.c
-#define GLDERR_NONE 0
-#define GLDERR_MEM 1
-#define GLDERR_DDRAW 2
-#define GLDERR_D3D 3
-#define GLDERR_BPP 4
-#define GLDERR_DDS 5
-// This external var keeps track of any error
-extern int nContextError;
-
-#define DDLOG_CRITICAL_OR_WARN DDLOG_CRITICAL
-
-extern void _gld_mesa_warning(struct gl_context *, char *);
-extern void _gld_mesa_fatal(struct gl_context *, char *);
-
-//---------------------------------------------------------------------------
-
-static char szColorDepthWarning[] =
-"GLDirect does not support the current desktop\n\
-color depth.\n\n\
-You may need to change the display resolution to\n\
-16 bits per pixel or higher color depth using\n\
-the Windows Display Settings control panel\n\
-before running this OpenGL application.\n";
-
-// The only depth-stencil formats currently supported by Direct3D
-// Surface Format Depth Stencil Total Bits
-// D3DFMT_D32 32 - 32
-// D3DFMT_D15S1 15 1 16
-// D3DFMT_D24S8 24 8 32
-// D3DFMT_D16 16 - 16
-// D3DFMT_D24X8 24 - 32
-// D3DFMT_D24X4S4 24 4 32
-
-// This pixel format will be used as a template when compiling the list
-// of pixel formats supported by the hardware. Many fields will be
-// filled in at runtime.
-// PFD flag defaults are upgraded to match ChoosePixelFormat() -- DaveM
-static DGL_pixelFormat pfTemplateHW =
-{
- {
- sizeof(PIXELFORMATDESCRIPTOR), // Size of the data structure
- 1, // Structure version - should be 1
- // Flags:
- PFD_DRAW_TO_WINDOW | // The buffer can draw to a window or device surface.
- PFD_DRAW_TO_BITMAP | // The buffer can draw to a bitmap. (DaveM)
- PFD_SUPPORT_GDI | // The buffer supports GDI drawing. (DaveM)
- PFD_SUPPORT_OPENGL | // The buffer supports OpenGL drawing.
- PFD_DOUBLEBUFFER | // The buffer is double-buffered.
- 0, // Placeholder for easy commenting of above flags
- PFD_TYPE_RGBA, // Pixel type RGBA.
- 16, // Total colour bitplanes (excluding alpha bitplanes)
- 5, 0, // Red bits, shift
- 5, 0, // Green bits, shift
- 5, 0, // Blue bits, shift
- 0, 0, // Alpha bits, shift (destination alpha)
- 0, // Accumulator bits (total)
- 0, 0, 0, 0, // Accumulator bits: Red, Green, Blue, Alpha
- 0, // Depth bits
- 0, // Stencil bits
- 0, // Number of auxiliary buffers
- 0, // Layer type
- 0, // Specifies the number of overlay and underlay planes.
- 0, // Layer mask
- 0, // Specifies the transparent color or index of an underlay plane.
- 0 // Damage mask
- },
- D3DFMT_UNKNOWN, // No depth/stencil buffer
-};
-
-//---------------------------------------------------------------------------
-// Vertex Shaders
-//---------------------------------------------------------------------------
-/*
-// Vertex Shader Declaration
-static DWORD dwTwoSidedLightingDecl[] =
-{
- D3DVSD_STREAM(0),
- D3DVSD_REG(0, D3DVSDT_FLOAT3), // XYZ position
- D3DVSD_REG(1, D3DVSDT_FLOAT3), // XYZ normal
- D3DVSD_REG(2, D3DVSDT_D3DCOLOR), // Diffuse color
- D3DVSD_REG(3, D3DVSDT_D3DCOLOR), // Specular color
- D3DVSD_REG(4, D3DVSDT_FLOAT2), // 2D texture unit 0
- D3DVSD_REG(5, D3DVSDT_FLOAT2), // 2D texture unit 1
- D3DVSD_END()
-};
-
-// Vertex Shader for two-sided lighting
-static char *szTwoSidedLightingVS =
-// This is a test shader!
-"vs.1.0\n"
-"m4x4 oPos,v0,c0\n"
-"mov oD0,v2\n"
-"mov oD1,v3\n"
-"mov oT0,v4\n"
-"mov oT1,v5\n"
-;
-*/
-//---------------------------------------------------------------------------
-//---------------------------------------------------------------------------
-
-typedef struct {
- HINSTANCE hD3D9DLL; // Handle to d3d9.dll
- FNDIRECT3DCREATE9 fnDirect3DCreate9; // Direct3DCreate9 function prototype
- BOOL bDirect3D; // Persistant Direct3D9 exists
- BOOL bDirect3DDevice; // Persistant Direct3DDevice9 exists
- IDirect3D9 *pD3D; // Persistant Direct3D9
- IDirect3DDevice9 *pDev; // Persistant Direct3DDevice9
-} GLD_dx9_globals;
-
-// These are "global" to all DX9 contexts. KeithH
-static GLD_dx9_globals dx9Globals;
-
-//---------------------------------------------------------------------------
-//---------------------------------------------------------------------------
-
-BOOL gldGetDXErrorString_DX(
- HRESULT hr,
- char *buf,
- int nBufSize)
-{
- //
- // Return a string describing the input HRESULT error code
- //
-
- const char *pStr = DXGetErrorString9(hr);
-
- if (pStr == NULL)
- return FALSE;
-
- if (strlen(pStr) > nBufSize)
- strncpy(buf, pStr, nBufSize);
- else
- strcpy(buf, pStr);
-
-// D3DXGetErrorString(hr, buf, nBufSize);
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-static D3DMULTISAMPLE_TYPE _gldGetDeviceMultiSampleType(
- IDirect3D9 *pD3D9,
- D3DFORMAT SurfaceFormat,
- D3DDEVTYPE d3dDevType,
- BOOL Windowed)
-{
- int i;
- HRESULT hr;
-
- if (glb.dwMultisample == GLDS_MULTISAMPLE_NONE)
- return D3DMULTISAMPLE_NONE;
-
- if (glb.dwMultisample == GLDS_MULTISAMPLE_FASTEST) {
- // Find fastest multisample
- for (i=2; i<17; i++) {
- hr = IDirect3D9_CheckDeviceMultiSampleType(
- pD3D9,
- glb.dwAdapter,
- d3dDevType,
- SurfaceFormat,
- Windowed,
- (D3DMULTISAMPLE_TYPE)i,
- NULL);
- if (SUCCEEDED(hr)) {
- return (D3DMULTISAMPLE_TYPE)i;
- }
- }
- } else {
- // Find nicest multisample
- for (i=16; i>1; i--) {
- hr = IDirect3D9_CheckDeviceMultiSampleType(
- pD3D9,
- glb.dwAdapter,
- d3dDevType,
- SurfaceFormat,
- Windowed,
- (D3DMULTISAMPLE_TYPE)i,
- NULL);
- if (SUCCEEDED(hr)) {
- return (D3DMULTISAMPLE_TYPE)i;
- }
- }
- }
-
- // Nothing found - return default
- return D3DMULTISAMPLE_NONE;
-}
-
-//---------------------------------------------------------------------------
-
-void _gldDestroyPrimitiveBuffer(
- GLD_pb_dx9 *gldVB)
-{
- SAFE_RELEASE(gldVB->pVB);
-
- // Sanity check...
- gldVB->nLines = gldVB->nPoints = gldVB->nTriangles = 0;
-}
-
-//---------------------------------------------------------------------------
-
-HRESULT _gldCreatePrimitiveBuffer(
- struct gl_context *ctx,
- GLD_driver_dx9 *lpCtx,
- GLD_pb_dx9 *gldVB)
-{
- HRESULT hResult;
- char *szCreateVertexBufferFailed = "CreateVertexBuffer failed";
- DWORD dwMaxVertices; // Max number of vertices in vertex buffer
- DWORD dwVBSize; // Total size of vertex buffer
-
- // If CVA (Compiled Vertex Array) is used by an OpenGL app, then we
- // will need enough vertices to cater for Mesa::Const.MaxArrayLockSize.
- // We'll use IMM_SIZE if it's larger (which it should not be).
- dwMaxVertices = MAX_ARRAY_LOCK_SIZE;
-
- // Now calculate how many vertices to allow for in total
- // 1 per point, 2 per line, 6 per quad = 9
- dwVBSize = dwMaxVertices * 9 * gldVB->dwStride;
-
- hResult = IDirect3DDevice9_CreateVertexBuffer(
- lpCtx->pDev,
- dwVBSize,
- gldVB->dwUsage,
- gldVB->dwFVF,
- gldVB->dwPool,
- &gldVB->pVB,
- NULL);
- if (FAILED(hResult)) {
- ddlogMessage(DDLOG_CRITICAL_OR_WARN, szCreateVertexBufferFailed);
- return hResult;
- }
-
- gldVB->nLines = gldVB->nPoints = gldVB->nTriangles = 0;
- gldVB->pPoints = gldVB->pLines = gldVB->pTriangles = NULL;
- gldVB->iFirstLine = dwMaxVertices; // Index of first line in VB
- gldVB->iFirstTriangle = dwMaxVertices*3; // Index of first triangle in VB
-
- return S_OK;
-}
-
-//---------------------------------------------------------------------------
-// Function: _gldCreateVertexShaders
-// Create DX9 Vertex Shaders.
-//---------------------------------------------------------------------------
-/*
-void _gldCreateVertexShaders(
- GLD_driver_dx9 *gld)
-{
- DWORD dwFlags;
- LPD3DXBUFFER pVSOpcodeBuffer; // Vertex Shader opcode buffer
- HRESULT hr;
-
-#ifdef _DEBUG
- dwFlags = D3DXASM_DEBUG;
-#else
- dwFlags = 0; // D3DXASM_SKIPVALIDATION;
-#endif
-
- ddlogMessage(DDLOG_INFO, "Creating shaders...\n");
-
- // Init the shader handle
- gld->VStwosidelight.hShader = 0;
-
- if (gld->d3dCaps8.MaxStreams == 0) {
- // Lame DX8 driver doesn't support streams
- // Not fatal, as defaults will be used
- ddlogMessage(DDLOG_WARN, "Driver doesn't support Vertex Shaders (MaxStreams==0)\n");
- return;
- }
-
- // ** THIS DISABLES VERTEX SHADER SUPPORT **
-// return;
- // ** THIS DISABLES VERTEX SHADER SUPPORT **
-
- //
- // Two-sided lighting
- //
-
-#if 0
- //
- // DEBUGGING: Load shader from a text file
- //
- {
- LPD3DXBUFFER pVSErrorBuffer; // Vertex Shader error buffer
- hr = D3DXAssembleShaderFromFile(
- "twoside.vsh",
- dwFlags,
- NULL, // No constants
- &pVSOpcodeBuffer,
- &pVSErrorBuffer);
- if (pVSErrorBuffer && pVSErrorBuffer->lpVtbl->GetBufferPointer(pVSErrorBuffer))
- ddlogMessage(DDLOG_INFO, pVSErrorBuffer->lpVtbl->GetBufferPointer(pVSErrorBuffer));
- SAFE_RELEASE(pVSErrorBuffer);
- }
-#else
- {
- LPD3DXBUFFER pVSErrorBuffer; // Vertex Shader error buffer
- // Assemble ascii shader text into shader opcodes
- hr = D3DXAssembleShader(
- szTwoSidedLightingVS,
- strlen(szTwoSidedLightingVS),
- dwFlags,
- NULL, // No constants
- &pVSOpcodeBuffer,
- &pVSErrorBuffer);
- if (pVSErrorBuffer && pVSErrorBuffer->lpVtbl->GetBufferPointer(pVSErrorBuffer))
- ddlogMessage(DDLOG_INFO, pVSErrorBuffer->lpVtbl->GetBufferPointer(pVSErrorBuffer));
- SAFE_RELEASE(pVSErrorBuffer);
- }
-#endif
- if (FAILED(hr)) {
- ddlogError(DDLOG_WARN, "AssembleShader failed", hr);
- SAFE_RELEASE(pVSOpcodeBuffer);
- return;
- }
-
-// This is for debugging. Remove to enable vertex shaders in HW
-#define _GLD_FORCE_SW_VS 0
-
- if (_GLD_FORCE_SW_VS) {
- // _GLD_FORCE_SW_VS should be disabled for Final Release
- ddlogMessage(DDLOG_SYSTEM, "[Forcing shaders in SW]\n");
- }
-
- // Try and create shader in hardware.
- // NOTE: The D3D Ref device appears to succeed when trying to
- // create the device in hardware, but later complains
- // when trying to set it with SetVertexShader(). Go figure.
- if (_GLD_FORCE_SW_VS || glb.dwDriver == GLDS_DRIVER_REF) {
- // Don't try and create a hardware shader with the Ref device
- hr = E_FAIL; // COM error/fail result
- } else {
- gld->VStwosidelight.bHardware = TRUE;
- hr = IDirect3DDevice8_CreateVertexShader(
- gld->pDev,
- dwTwoSidedLightingDecl,
- pVSOpcodeBuffer->lpVtbl->GetBufferPointer(pVSOpcodeBuffer),
- &gld->VStwosidelight.hShader,
- 0);
- }
- if (FAILED(hr)) {
- ddlogMessage(DDLOG_INFO, "... HW failed, trying SW...\n");
- // Failed. Try and create shader for software processing
- hr = IDirect3DDevice8_CreateVertexShader(
- gld->pDev,
- dwTwoSidedLightingDecl,
- pVSOpcodeBuffer->lpVtbl->GetBufferPointer(pVSOpcodeBuffer),
- &gld->VStwosidelight.hShader,
- D3DUSAGE_SOFTWAREPROCESSING);
- if (FAILED(hr)) {
- gld->VStwosidelight.hShader = 0; // Sanity check
- ddlogError(DDLOG_WARN, "CreateVertexShader failed", hr);
- return;
- }
- // Succeeded, but for software processing
- gld->VStwosidelight.bHardware = FALSE;
- }
-
- SAFE_RELEASE(pVSOpcodeBuffer);
-
- ddlogMessage(DDLOG_INFO, "... OK\n");
-}
-
-//---------------------------------------------------------------------------
-
-void _gldDestroyVertexShaders(
- GLD_driver_dx9 *gld)
-{
- if (gld->VStwosidelight.hShader) {
- IDirect3DDevice8_DeleteVertexShader(gld->pDev, gld->VStwosidelight.hShader);
- gld->VStwosidelight.hShader = 0;
- }
-}
-*/
-//---------------------------------------------------------------------------
-
-BOOL gldCreateDrawable_DX(
- DGL_ctx *ctx,
-// BOOL bDefaultDriver,
- BOOL bDirectDrawPersistant,
- BOOL bPersistantBuffers)
-{
- //
- // bDirectDrawPersistant: applies to IDirect3D9
- // bPersistantBuffers: applies to IDirect3DDevice9
- //
-
- HRESULT hResult;
- GLD_driver_dx9 *lpCtx = NULL;
- D3DDEVTYPE d3dDevType;
- D3DPRESENT_PARAMETERS d3dpp;
- D3DDISPLAYMODE d3ddm;
- DWORD dwBehaviourFlags;
- D3DADAPTER_IDENTIFIER9 d3dIdent;
-
- // Error if context is NULL.
- if (ctx == NULL)
- return FALSE;
-
- if (ctx->glPriv) {
- lpCtx = ctx->glPriv;
- // Release any existing interfaces
- SAFE_RELEASE(lpCtx->pDev);
- SAFE_RELEASE(lpCtx->pD3D);
- } else {
- lpCtx = (GLD_driver_dx9*)malloc(sizeof(GLD_driver_dx9));
- ZeroMemory(lpCtx, sizeof(lpCtx));
- }
-
- d3dDevType = (glb.dwDriver == GLDS_DRIVER_HAL) ? D3DDEVTYPE_HAL : D3DDEVTYPE_REF;
- // TODO: Check this
-// if (bDefaultDriver)
-// d3dDevType = D3DDEVTYPE_REF;
-
- // Use persistant interface if needed
- if (bDirectDrawPersistant && dx9Globals.bDirect3D) {
- lpCtx->pD3D = dx9Globals.pD3D;
- IDirect3D9_AddRef(lpCtx->pD3D);
- goto SkipDirectDrawCreate;
- }
-
- // Create Direct3D9 object
- lpCtx->pD3D = dx9Globals.fnDirect3DCreate9(D3D_SDK_VERSION);
- if (lpCtx->pD3D == NULL) {
- MessageBox(NULL, "Unable to initialize Direct3D9", "GLDirect", MB_OK);
- ddlogMessage(DDLOG_CRITICAL_OR_WARN, "Unable to create Direct3D9 interface");
- nContextError = GLDERR_D3D;
- goto return_with_error;
- }
-
- // Cache Direct3D interface for subsequent GLRCs
- if (bDirectDrawPersistant && !dx9Globals.bDirect3D) {
- dx9Globals.pD3D = lpCtx->pD3D;
- IDirect3D9_AddRef(dx9Globals.pD3D);
- dx9Globals.bDirect3D = TRUE;
- }
-SkipDirectDrawCreate:
-
- // Get the display mode so we can make a compatible backbuffer
- hResult = IDirect3D9_GetAdapterDisplayMode(lpCtx->pD3D, glb.dwAdapter, &d3ddm);
- if (FAILED(hResult)) {
- nContextError = GLDERR_D3D;
- goto return_with_error;
- }
-
- // Get device caps
- hResult = IDirect3D9_GetDeviceCaps(lpCtx->pD3D, glb.dwAdapter, d3dDevType, &lpCtx->d3dCaps9);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "IDirect3D9_GetDeviceCaps failed", hResult);
- nContextError = GLDERR_D3D;
- goto return_with_error;
- }
-
- // Check for hardware transform & lighting
- lpCtx->bHasHWTnL = lpCtx->d3dCaps9.DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT ? TRUE : FALSE;
-
-/*
- //
- // GONE FOR DX9?
- //
- // If this flag is present then we can't default to Mesa
- // SW rendering between BeginScene() and EndScene().
- if (lpCtx->d3dCaps9.Caps2 & D3DCAPS2_NO2DDURING3DSCENE) {
- ddlogMessage(DDLOG_WARN,
- "Warning : No 2D allowed during 3D scene.\n");
- }
-*/
-
- //
- // Create the Direct3D context
- //
-
- // Re-use original IDirect3DDevice if persistant buffers exist.
- // Note that we test for persistant IDirect3D9 as well
- // bDirectDrawPersistant == persistant IDirect3D9 (DirectDraw9 does not exist)
- if (bDirectDrawPersistant && bPersistantBuffers && dx9Globals.pD3D && dx9Globals.pDev) {
- lpCtx->pDev = dx9Globals.pDev;
- IDirect3DDevice9_AddRef(dx9Globals.pDev);
- goto skip_direct3ddevice_create;
- }
-
- // Clear the presentation parameters (sets all members to zero)
- ZeroMemory(&d3dpp, sizeof(d3dpp));
-
- // Recommended by MS; needed for MultiSample.
- // Be careful if altering this for FullScreenBlit
- d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
-
- d3dpp.BackBufferFormat = d3ddm.Format;
- d3dpp.BackBufferCount = 2; //1;
- d3dpp.MultiSampleType = _gldGetDeviceMultiSampleType(lpCtx->pD3D, d3ddm.Format, d3dDevType, !ctx->bFullscreen);
- d3dpp.AutoDepthStencilFormat = ctx->lpPF->dwDriverData;
- d3dpp.EnableAutoDepthStencil = (d3dpp.AutoDepthStencilFormat == D3DFMT_UNKNOWN) ? FALSE : TRUE;
-
- if (ctx->bFullscreen) {
- ddlogWarnOption(FALSE); // Don't popup any messages in fullscreen
- d3dpp.Windowed = FALSE;
- d3dpp.BackBufferWidth = d3ddm.Width;
- d3dpp.BackBufferHeight = d3ddm.Height;
- d3dpp.hDeviceWindow = ctx->hWnd;
- d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
-
- // Support for vertical retrace synchronisation.
- // Set default presentation interval in case caps bits are missing
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
- if (glb.bWaitForRetrace) {
- if (lpCtx->d3dCaps9.PresentationIntervals & D3DPRESENT_INTERVAL_ONE)
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
- } else {
- if (lpCtx->d3dCaps9.PresentationIntervals & D3DPRESENT_INTERVAL_IMMEDIATE)
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
- }
- } else {
- ddlogWarnOption(glb.bMessageBoxWarnings); // OK to popup messages
- d3dpp.Windowed = TRUE;
- d3dpp.BackBufferWidth = ctx->dwWidth;
- d3dpp.BackBufferHeight = ctx->dwHeight;
- d3dpp.hDeviceWindow = ctx->hWnd;
- d3dpp.FullScreen_RefreshRateInHz = 0;
- // PresentationInterval Windowed mode is optional now in DX9 (DaveM)
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
- if (glb.bWaitForRetrace) {
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_ONE;
- } else {
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
- }
- }
-
- // Decide if we can use hardware TnL
- dwBehaviourFlags = (lpCtx->bHasHWTnL) ?
- D3DCREATE_MIXED_VERTEXPROCESSING : D3DCREATE_SOFTWARE_VERTEXPROCESSING;
- // Add flag to tell D3D to be thread-safe
- if (glb.bMultiThreaded)
- dwBehaviourFlags |= D3DCREATE_MULTITHREADED;
- // Add flag to tell D3D to be FPU-safe
- if (!glb.bFastFPU)
- dwBehaviourFlags |= D3DCREATE_FPU_PRESERVE;
- hResult = IDirect3D9_CreateDevice(lpCtx->pD3D,
- glb.dwAdapter,
- d3dDevType,
- ctx->hWnd,
- dwBehaviourFlags,
- &d3dpp,
- &lpCtx->pDev);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "IDirect3D9_CreateDevice failed", hResult);
- nContextError = GLDERR_D3D;
- goto return_with_error;
- }
-
- if (bDirectDrawPersistant && bPersistantBuffers && dx9Globals.pD3D) {
- dx9Globals.pDev = lpCtx->pDev;
- dx9Globals.bDirect3DDevice = TRUE;
- }
-
- // Dump some useful stats
- hResult = IDirect3D9_GetAdapterIdentifier(
- lpCtx->pD3D,
- glb.dwAdapter,
- 0, // No WHQL detection (avoid few seconds delay)
- &d3dIdent);
- if (SUCCEEDED(hResult)) {
- ddlogPrintf(DDLOG_INFO, "[Driver Description: %s]", &d3dIdent.Description);
- ddlogPrintf(DDLOG_INFO, "[Driver file: %s %d.%d.%02d.%d]",
- d3dIdent.Driver,
- HIWORD(d3dIdent.DriverVersion.HighPart),
- LOWORD(d3dIdent.DriverVersion.HighPart),
- HIWORD(d3dIdent.DriverVersion.LowPart),
- LOWORD(d3dIdent.DriverVersion.LowPart));
- ddlogPrintf(DDLOG_INFO, "[VendorId: 0x%X, DeviceId: 0x%X, SubSysId: 0x%X, Revision: 0x%X]",
- d3dIdent.VendorId, d3dIdent.DeviceId, d3dIdent.SubSysId, d3dIdent.Revision);
- }
-
- // Test to see if IHV driver exposes Scissor Test (new for DX9)
- lpCtx->bCanScissor = lpCtx->d3dCaps9.RasterCaps & D3DPRASTERCAPS_SCISSORTEST;
- ddlogPrintf(DDLOG_INFO, "Can Scissor: %s", lpCtx->bCanScissor ? "Yes" : "No");
-
- // Init projection matrix for D3D TnL
- D3DXMatrixIdentity(&lpCtx->matProjection);
- lpCtx->matModelView = lpCtx->matProjection;
-// gld->bUseMesaProjection = TRUE;
-
-skip_direct3ddevice_create:
-
- // Create buffers to hold primitives
- lpCtx->PB2d.dwFVF = GLD_FVF_2D_VERTEX;
- lpCtx->PB2d.dwPool = D3DPOOL_SYSTEMMEM;
- lpCtx->PB2d.dwStride = sizeof(GLD_2D_VERTEX);
- lpCtx->PB2d.dwUsage = D3DUSAGE_DONOTCLIP |
- D3DUSAGE_DYNAMIC |
- D3DUSAGE_SOFTWAREPROCESSING |
- D3DUSAGE_WRITEONLY;
- hResult = _gldCreatePrimitiveBuffer(ctx->glCtx, lpCtx, &lpCtx->PB2d);
- if (FAILED(hResult))
- goto return_with_error;
-
- lpCtx->PB3d.dwFVF = GLD_FVF_3D_VERTEX;
- lpCtx->PB3d.dwPool = D3DPOOL_DEFAULT;
- lpCtx->PB3d.dwStride = sizeof(GLD_3D_VERTEX);
- lpCtx->PB3d.dwUsage = D3DUSAGE_DYNAMIC |
-//DaveM D3DUSAGE_SOFTWAREPROCESSING |
- D3DUSAGE_WRITEONLY;
- hResult = _gldCreatePrimitiveBuffer(ctx->glCtx, lpCtx, &lpCtx->PB3d);
- if (FAILED(hResult))
- goto return_with_error;
-
-/* // NOTE: A FVF code of zero indicates a non-FVF vertex buffer (for vertex shaders)
- lpCtx->PBtwosidelight.dwFVF = 0; //GLD_FVF_TWOSIDED_VERTEX;
- lpCtx->PBtwosidelight.dwPool = D3DPOOL_DEFAULT;
- lpCtx->PBtwosidelight.dwStride = sizeof(GLD_TWOSIDED_VERTEX);
- lpCtx->PBtwosidelight.dwUsage = D3DUSAGE_DONOTCLIP |
- D3DUSAGE_DYNAMIC |
- D3DUSAGE_SOFTWAREPROCESSING |
- D3DUSAGE_WRITEONLY;
- hResult = _gldCreatePrimitiveBuffer(ctx->glCtx, lpCtx, &lpCtx->PBtwosidelight);
- if (FAILED(hResult))
- goto return_with_error;*/
-
- // Now try and create the DX9 Vertex Shaders
-// _gldCreateVertexShaders(lpCtx);
-
- // Zero the pipeline usage counters
- lpCtx->PipelineUsage.qwMesa.QuadPart =
-// lpCtx->PipelineUsage.dwD3D2SVS.QuadPart =
- lpCtx->PipelineUsage.qwD3DFVF.QuadPart = 0;
-
- // Assign drawable to GL private
- ctx->glPriv = lpCtx;
- return TRUE;
-
-return_with_error:
- // Clean up and bail
-
-// _gldDestroyVertexShaders(lpCtx);
-
-// _gldDestroyPrimitiveBuffer(&lpCtx->PBtwosidelight);
- _gldDestroyPrimitiveBuffer(&lpCtx->PB3d);
- _gldDestroyPrimitiveBuffer(&lpCtx->PB2d);
-
- SAFE_RELEASE(lpCtx->pDev);
- SAFE_RELEASE(lpCtx->pD3D);
- return FALSE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldResizeDrawable_DX(
- DGL_ctx *ctx,
- BOOL bDefaultDriver,
- BOOL bPersistantInterface,
- BOOL bPersistantBuffers)
-{
- GLD_driver_dx9 *gld = NULL;
- D3DDEVTYPE d3dDevType;
- D3DPRESENT_PARAMETERS d3dpp;
- D3DDISPLAYMODE d3ddm;
- HRESULT hResult;
-
- // Error if context is NULL.
- if (ctx == NULL)
- return FALSE;
-
- gld = ctx->glPriv;
- if (gld == NULL)
- return FALSE;
-
- if (ctx->bSceneStarted) {
- IDirect3DDevice9_EndScene(gld->pDev);
- ctx->bSceneStarted = FALSE;
- }
-
- d3dDevType = (glb.dwDriver == GLDS_DRIVER_HAL) ? D3DDEVTYPE_HAL : D3DDEVTYPE_REF;
- if (!bDefaultDriver)
- d3dDevType = D3DDEVTYPE_REF; // Force Direct3D Reference Rasterise (software)
-
- // Get the display mode so we can make a compatible backbuffer
- hResult = IDirect3D9_GetAdapterDisplayMode(gld->pD3D, glb.dwAdapter, &d3ddm);
- if (FAILED(hResult)) {
- nContextError = GLDERR_D3D;
-// goto return_with_error;
- return FALSE;
- }
-
- // Destroy DX9 Vertex Shaders before Reset()
-// _gldDestroyVertexShaders(gld);
-
- // Release POOL_DEFAULT objects before Reset()
- if (gld->PB2d.dwPool == D3DPOOL_DEFAULT)
- _gldDestroyPrimitiveBuffer(&gld->PB2d);
- if (gld->PB3d.dwPool == D3DPOOL_DEFAULT)
- _gldDestroyPrimitiveBuffer(&gld->PB3d);
-// if (gld->PBtwosidelight.dwPool == D3DPOOL_DEFAULT)
-// _gldDestroyPrimitiveBuffer(&gld->PBtwosidelight);
-
- // Clear the presentation parameters (sets all members to zero)
- ZeroMemory(&d3dpp, sizeof(d3dpp));
-
- // Recommended by MS; needed for MultiSample.
- // Be careful if altering this for FullScreenBlit
- d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
-
- d3dpp.BackBufferFormat = d3ddm.Format;
- d3dpp.BackBufferCount = 1;
- d3dpp.MultiSampleType = _gldGetDeviceMultiSampleType(gld->pD3D, d3ddm.Format, d3dDevType, !ctx->bFullscreen);
- d3dpp.AutoDepthStencilFormat = ctx->lpPF->dwDriverData;
- d3dpp.EnableAutoDepthStencil = (d3dpp.AutoDepthStencilFormat == D3DFMT_UNKNOWN) ? FALSE : TRUE;
-
- // TODO: Sync to refresh
-
- if (ctx->bFullscreen) {
- ddlogWarnOption(FALSE); // Don't popup any messages in fullscreen
- d3dpp.Windowed = FALSE;
- d3dpp.BackBufferWidth = d3ddm.Width;
- d3dpp.BackBufferHeight = d3ddm.Height;
- d3dpp.hDeviceWindow = ctx->hWnd;
- d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
- // Get better benchmark results? KeithH
-// d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_UNLIMITED;
- } else {
- ddlogWarnOption(glb.bMessageBoxWarnings); // OK to popup messages
- d3dpp.Windowed = TRUE;
- d3dpp.BackBufferWidth = ctx->dwWidth;
- d3dpp.BackBufferHeight = ctx->dwHeight;
- d3dpp.hDeviceWindow = ctx->hWnd;
- d3dpp.FullScreen_RefreshRateInHz = 0;
- d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
- }
- hResult = IDirect3DDevice9_Reset(gld->pDev, &d3dpp);
- if (FAILED(hResult)) {
- ddlogError(DDLOG_CRITICAL_OR_WARN, "dglResize: Reset failed", hResult);
- return FALSE;
- //goto cleanup_and_return_with_error;
- }
-
- //
- // Recreate POOL_DEFAULT objects
- //
- if (gld->PB2d.dwPool == D3DPOOL_DEFAULT) {
- _gldCreatePrimitiveBuffer(ctx->glCtx, gld, &gld->PB2d);
- }
- if (gld->PB3d.dwPool == D3DPOOL_DEFAULT) {
- _gldCreatePrimitiveBuffer(ctx->glCtx, gld, &gld->PB3d);
- }
-// if (gld->PBtwosidelight.dwPool == D3DPOOL_DEFAULT) {
-// _gldCreatePrimitiveBuffer(ctx->glCtx, gld, &gld->PB2d);
-// }
-
- // Recreate DX9 Vertex Shaders
-// _gldCreateVertexShaders(gld);
-
- // Signal a complete state update
- ctx->glCtx->Driver.UpdateState(ctx->glCtx, _NEW_ALL);
-
- // Begin a new scene
- IDirect3DDevice9_BeginScene(gld->pDev);
- ctx->bSceneStarted = TRUE;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldDestroyDrawable_DX(
- DGL_ctx *ctx)
-{
- GLD_driver_dx9 *lpCtx = NULL;
-
- // Error if context is NULL.
- if (!ctx)
- return FALSE;
-
- // Error if the drawable does not exist.
- if (!ctx->glPriv)
- return FALSE;
-
- lpCtx = ctx->glPriv;
-
-#ifdef _DEBUG
- // Dump out stats
- ddlogPrintf(DDLOG_SYSTEM, "Usage: M:0x%X%X, D:0x%X%X",
- lpCtx->PipelineUsage.qwMesa.HighPart,
- lpCtx->PipelineUsage.qwMesa.LowPart,
- lpCtx->PipelineUsage.qwD3DFVF.HighPart,
- lpCtx->PipelineUsage.qwD3DFVF.LowPart);
-#endif
-
-// _gldDestroyVertexShaders(lpCtx);
-
-// _gldDestroyPrimitiveBuffer(&lpCtx->PBtwosidelight);
- _gldDestroyPrimitiveBuffer(&lpCtx->PB3d);
- _gldDestroyPrimitiveBuffer(&lpCtx->PB2d);
-
- SAFE_RELEASE(lpCtx->pDev);
- SAFE_RELEASE(lpCtx->pD3D);
-
- // Free the private drawable data
- free(ctx->glPriv);
- ctx->glPriv = NULL;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldCreatePrivateGlobals_DX(void)
-{
- ZeroMemory(&dx9Globals, sizeof(dx9Globals));
-
- // Load d3d9.dll
- dx9Globals.hD3D9DLL = LoadLibrary("D3D9.DLL");
- if (dx9Globals.hD3D9DLL == NULL)
- return FALSE;
-
- // Now try and obtain Direct3DCreate9
- dx9Globals.fnDirect3DCreate9 = (FNDIRECT3DCREATE9)GetProcAddress(dx9Globals.hD3D9DLL, "Direct3DCreate9");
- if (dx9Globals.fnDirect3DCreate9 == NULL) {
- FreeLibrary(dx9Globals.hD3D9DLL);
- return FALSE;
- }
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldDestroyPrivateGlobals_DX(void)
-{
- if (dx9Globals.bDirect3DDevice) {
- SAFE_RELEASE(dx9Globals.pDev);
- dx9Globals.bDirect3DDevice = FALSE;
- }
- if (dx9Globals.bDirect3D) {
- SAFE_RELEASE(dx9Globals.pD3D);
- dx9Globals.bDirect3D = FALSE;
- }
-
- FreeLibrary(dx9Globals.hD3D9DLL);
- dx9Globals.hD3D9DLL = NULL;
- dx9Globals.fnDirect3DCreate9 = NULL;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-static void _BitsFromDisplayFormat(
- D3DFORMAT fmt,
- BYTE *cColorBits,
- BYTE *cRedBits,
- BYTE *cGreenBits,
- BYTE *cBlueBits,
- BYTE *cAlphaBits)
-{
- switch (fmt) {
- case D3DFMT_X1R5G5B5:
- *cColorBits = 16;
- *cRedBits = 5;
- *cGreenBits = 5;
- *cBlueBits = 5;
- *cAlphaBits = 0;
- return;
- case D3DFMT_R5G6B5:
- *cColorBits = 16;
- *cRedBits = 5;
- *cGreenBits = 6;
- *cBlueBits = 5;
- *cAlphaBits = 0;
- return;
- case D3DFMT_X8R8G8B8:
- *cColorBits = 32;
- *cRedBits = 8;
- *cGreenBits = 8;
- *cBlueBits = 8;
- *cAlphaBits = 0;
- return;
- case D3DFMT_A8R8G8B8:
- *cColorBits = 32;
- *cRedBits = 8;
- *cGreenBits = 8;
- *cBlueBits = 8;
- *cAlphaBits = 8;
- return;
- }
-
- // Should not get here!
- *cColorBits = 32;
- *cRedBits = 8;
- *cGreenBits = 8;
- *cBlueBits = 8;
- *cAlphaBits = 0;
-}
-
-//---------------------------------------------------------------------------
-
-static void _BitsFromDepthStencilFormat(
- D3DFORMAT fmt,
- BYTE *cDepthBits,
- BYTE *cStencilBits)
-{
- // NOTE: GL expects either 32 or 16 as depth bits.
- switch (fmt) {
- case D3DFMT_D32:
- *cDepthBits = 32;
- *cStencilBits = 0;
- return;
- case D3DFMT_D15S1:
- *cDepthBits = 16;
- *cStencilBits = 1;
- return;
- case D3DFMT_D24S8:
- *cDepthBits = 32;
- *cStencilBits = 8;
- return;
- case D3DFMT_D16:
- *cDepthBits = 16;
- *cStencilBits = 0;
- return;
- case D3DFMT_D24X8:
- *cDepthBits = 32;
- *cStencilBits = 0;
- return;
- case D3DFMT_D24X4S4:
- *cDepthBits = 32;
- *cStencilBits = 4;
- return;
- }
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldBuildPixelformatList_DX(void)
-{
- D3DDISPLAYMODE d3ddm;
- D3DFORMAT fmt[6];
- IDirect3D9 *pD3D = NULL;
- HRESULT hr;
- int nSupportedFormats = 0;
- int i;
- DGL_pixelFormat *pPF;
- BYTE cColorBits, cRedBits, cGreenBits, cBlueBits, cAlphaBits;
-// char buf[128];
-// char cat[8];
-
- // Direct3D (SW or HW)
- // These are arranged so that 'best' pixelformat
- // is higher in the list (for ChoosePixelFormat).
- const D3DFORMAT DepthStencil[6] = {
-// New order: increaing Z, then increasing stencil
- D3DFMT_D15S1,
- D3DFMT_D16,
- D3DFMT_D24X4S4,
- D3DFMT_D24X8,
- D3DFMT_D24S8,
- D3DFMT_D32,
- };
-
- // Dump DX version
- ddlogMessage(GLDLOG_SYSTEM, "DirectX Version : 9.0\n");
-
- // Release any existing pixelformat list
- if (glb.lpPF) {
- free(glb.lpPF);
- }
-
- glb.nPixelFormatCount = 0;
- glb.lpPF = NULL;
-
- //
- // Pixelformats for Direct3D (SW or HW) rendering
- //
-
- // Get a Direct3D 9.0 interface
- pD3D = dx9Globals.fnDirect3DCreate9(D3D_SDK_VERSION);
- if (!pD3D) {
- return FALSE;
- }
-
- // We will use the display mode format when finding compliant
- // rendertarget/depth-stencil surfaces.
- hr = IDirect3D9_GetAdapterDisplayMode(pD3D, glb.dwAdapter, &d3ddm);
- if (FAILED(hr)) {
- IDirect3D9_Release(pD3D);
- return FALSE;
- }
-
- // Run through the possible formats and detect supported formats
- for (i=0; i<6; i++) {
- hr = IDirect3D9_CheckDeviceFormat(
- pD3D,
- glb.dwAdapter,
- glb.dwDriver==GLDS_DRIVER_HAL ? D3DDEVTYPE_HAL : D3DDEVTYPE_REF,
- d3ddm.Format,
- D3DUSAGE_DEPTHSTENCIL,
- D3DRTYPE_SURFACE,
- DepthStencil[i]);
- if (FAILED(hr))
- // A failure here is not fatal.
- continue;
-
- // Verify that the depth format is compatible.
- hr = IDirect3D9_CheckDepthStencilMatch(
- pD3D,
- glb.dwAdapter,
- glb.dwDriver==GLDS_DRIVER_HAL ? D3DDEVTYPE_HAL : D3DDEVTYPE_REF,
- d3ddm.Format,
- d3ddm.Format,
- DepthStencil[i]);
- if (FAILED(hr))
- // A failure here is not fatal, just means depth-stencil
- // format is not compatible with this display mode.
- continue;
-
- fmt[nSupportedFormats++] = DepthStencil[i];
- }
-
- IDirect3D9_Release(pD3D);
-
- if (nSupportedFormats == 0)
- return FALSE; // Bail: no compliant pixelformats
-
- // Total count of pixelformats is:
- // (nSupportedFormats+1)*2
- // UPDATED: nSupportedFormats*2
- glb.lpPF = (DGL_pixelFormat *)calloc(nSupportedFormats*2, sizeof(DGL_pixelFormat));
- glb.nPixelFormatCount = nSupportedFormats*2;
- if (glb.lpPF == NULL) {
- glb.nPixelFormatCount = 0;
- return FALSE;
- }
-
- // Get a copy of pointer that we can alter
- pPF = glb.lpPF;
-
- // Cache colour bits from display format
- _BitsFromDisplayFormat(d3ddm.Format, &cColorBits, &cRedBits, &cGreenBits, &cBlueBits, &cAlphaBits);
-
- //
- // Add single-buffer formats
- //
-/*
- // NOTE: No longer returning pixelformats that don't contain depth
- // Single-buffer, no depth-stencil buffer
- memcpy(pPF, &pfTemplateHW, sizeof(DGL_pixelFormat));
- pPF->pfd.dwFlags &= ~PFD_DOUBLEBUFFER; // Remove doublebuffer flag
- pPF->pfd.cColorBits = cColorBits;
- pPF->pfd.cRedBits = cRedBits;
- pPF->pfd.cGreenBits = cGreenBits;
- pPF->pfd.cBlueBits = cBlueBits;
- pPF->pfd.cAlphaBits = cAlphaBits;
- pPF->pfd.cDepthBits = 0;
- pPF->pfd.cStencilBits = 0;
- pPF->dwDriverData = D3DFMT_UNKNOWN;
- pPF++;
-*/
- for (i=0; i<nSupportedFormats; i++, pPF++) {
- memcpy(pPF, &pfTemplateHW, sizeof(DGL_pixelFormat));
- pPF->pfd.dwFlags &= ~PFD_DOUBLEBUFFER; // Remove doublebuffer flag
- pPF->pfd.cColorBits = cColorBits;
- pPF->pfd.cRedBits = cRedBits;
- pPF->pfd.cGreenBits = cGreenBits;
- pPF->pfd.cBlueBits = cBlueBits;
- pPF->pfd.cAlphaBits = cAlphaBits;
- _BitsFromDepthStencilFormat(fmt[i], &pPF->pfd.cDepthBits, &pPF->pfd.cStencilBits);
- pPF->dwDriverData = fmt[i];
- }
-
- //
- // Add double-buffer formats
- //
-
- // NOTE: No longer returning pixelformats that don't contain depth
-/*
- memcpy(pPF, &pfTemplateHW, sizeof(DGL_pixelFormat));
- pPF->pfd.cColorBits = cColorBits;
- pPF->pfd.cRedBits = cRedBits;
- pPF->pfd.cGreenBits = cGreenBits;
- pPF->pfd.cBlueBits = cBlueBits;
- pPF->pfd.cAlphaBits = cAlphaBits;
- pPF->pfd.cDepthBits = 0;
- pPF->pfd.cStencilBits = 0;
- pPF->dwDriverData = D3DFMT_UNKNOWN;
- pPF++;
-*/
- for (i=0; i<nSupportedFormats; i++, pPF++) {
- memcpy(pPF, &pfTemplateHW, sizeof(DGL_pixelFormat));
- pPF->pfd.cColorBits = cColorBits;
- pPF->pfd.cRedBits = cRedBits;
- pPF->pfd.cGreenBits = cGreenBits;
- pPF->pfd.cBlueBits = cBlueBits;
- pPF->pfd.cAlphaBits = cAlphaBits;
- _BitsFromDepthStencilFormat(fmt[i], &pPF->pfd.cDepthBits, &pPF->pfd.cStencilBits);
- pPF->dwDriverData = fmt[i];
- }
-
- // Popup warning message if non RGB color mode
- {
- // This is a hack. KeithH
- HDC hdcDesktop = GetDC(NULL);
- DWORD dwDisplayBitDepth = GetDeviceCaps(hdcDesktop, BITSPIXEL);
- ReleaseDC(0, hdcDesktop);
- if (dwDisplayBitDepth <= 8) {
- ddlogPrintf(DDLOG_WARN, "Current Color Depth %d bpp is not supported", dwDisplayBitDepth);
- MessageBox(NULL, szColorDepthWarning, "GLDirect", MB_OK | MB_ICONWARNING);
- }
- }
-
- // Mark list as 'current'
- glb.bPixelformatsDirty = FALSE;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldInitialiseMesa_DX(
- DGL_ctx *lpCtx)
-{
- GLD_driver_dx9 *gld = NULL;
- int MaxTextureSize, TextureLevels;
- BOOL bSoftwareTnL;
-
- if (lpCtx == NULL)
- return FALSE;
-
- gld = lpCtx->glPriv;
- if (gld == NULL)
- return FALSE;
-
- if (glb.bMultitexture) {
- lpCtx->glCtx->Const.MaxTextureUnits = gld->d3dCaps9.MaxSimultaneousTextures;
- // Only support MAX_TEXTURE_UNITS texture units.
- // ** If this is altered then the FVF formats must be reviewed **.
- if (lpCtx->glCtx->Const.MaxTextureUnits > GLD_MAX_TEXTURE_UNITS_DX9)
- lpCtx->glCtx->Const.MaxTextureUnits = GLD_MAX_TEXTURE_UNITS_DX9;
- } else {
- // Multitexture override
- lpCtx->glCtx->Const.MaxTextureUnits = 1;
- }
-
- // max texture size
- MaxTextureSize = min(gld->d3dCaps9.MaxTextureHeight, gld->d3dCaps9.MaxTextureWidth);
- if (MaxTextureSize == 0)
- MaxTextureSize = 256; // Sanity check
-
- //
- // HACK!!
- if (MaxTextureSize > 1024)
- MaxTextureSize = 1024; // HACK - CLAMP TO 1024
- // HACK!!
- //
-
- // Got to set MAX_TEXTURE_SIZE as max levels.
- // Who thought this stupid idea up? ;)
- TextureLevels = 0;
- // Calculate power-of-two.
- while (MaxTextureSize) {
- TextureLevels++;
- MaxTextureSize >>= 1;
- }
- lpCtx->glCtx->Const.MaxTextureLevels = (TextureLevels) ? TextureLevels : 8;
- lpCtx->glCtx->Const.MaxDrawBuffers = 1;
-
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_LIGHTING, FALSE);
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_CULLMODE, D3DCULL_NONE);
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_DITHERENABLE, TRUE);
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
-
- IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_ZENABLE,
- (lpCtx->lpPF->dwDriverData!=D3DFMT_UNKNOWN) ? D3DZB_TRUE : D3DZB_FALSE);
-
- // Set the view matrix
- {
- D3DXMATRIX vm;
-#if 1
- D3DXMatrixIdentity(&vm);
-#else
- D3DXVECTOR3 Eye(0.0f, 0.0f, 0.0f);
- D3DXVECTOR3 At(0.0f, 0.0f, -1.0f);
- D3DXVECTOR3 Up(0.0f, 1.0f, 0.0f);
- D3DXMatrixLookAtRH(&vm, &Eye, &At, &Up);
- vm._31 = -vm._31;
- vm._32 = -vm._32;
- vm._33 = -vm._33;
- vm._34 = -vm._34;
-#endif
- IDirect3DDevice9_SetTransform(gld->pDev, D3DTS_VIEW, &vm);
- }
-
- if (gld->bHasHWTnL) {
- if (glb.dwTnL == GLDS_TNL_DEFAULT)
- bSoftwareTnL = FALSE; // HW TnL
- else {
- bSoftwareTnL = ((glb.dwTnL == GLDS_TNL_MESA) || (glb.dwTnL == GLDS_TNL_D3DSW)) ? TRUE : FALSE;
- }
- } else {
- // No HW TnL, so no choice possible
- bSoftwareTnL = TRUE;
- }
-// IDirect3DDevice9_SetRenderState(gld->pDev, D3DRS_SOFTWAREVERTEXPROCESSING, bSoftwareTnL);
- IDirect3DDevice9_SetSoftwareVertexProcessing(gld->pDev, bSoftwareTnL);
-
-// Dump this in a Release build as well, now.
-//#ifdef _DEBUG
- ddlogPrintf(DDLOG_INFO, "HW TnL: %s",
- gld->bHasHWTnL ? (bSoftwareTnL ? "Disabled" : "Enabled") : "Unavailable");
-//#endif
-
- gldEnableExtensions_DX9(lpCtx->glCtx);
- gldInstallPipeline_DX9(lpCtx->glCtx);
- gldSetupDriverPointers_DX9(lpCtx->glCtx);
-
- // Signal a complete state update
- lpCtx->glCtx->Driver.UpdateState(lpCtx->glCtx, _NEW_ALL);
-
- // Start a scene
- IDirect3DDevice9_BeginScene(gld->pDev);
- lpCtx->bSceneStarted = TRUE;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldSwapBuffers_DX(
- DGL_ctx *ctx,
- HDC hDC,
- HWND hWnd)
-{
- HRESULT hr;
- GLD_driver_dx9 *gld = NULL;
-
- if (ctx == NULL)
- return FALSE;
-
- gld = ctx->glPriv;
- if (gld == NULL)
- return FALSE;
-
- if (ctx->bSceneStarted) {
- IDirect3DDevice9_EndScene(gld->pDev);
- ctx->bSceneStarted = FALSE;
- }
-
- // Swap the buffers. hWnd may override the hWnd used for CreateDevice()
- hr = IDirect3DDevice9_Present(gld->pDev, NULL, NULL, hWnd, NULL);
-
-exit_swap:
-
- IDirect3DDevice9_BeginScene(gld->pDev);
- ctx->bSceneStarted = TRUE;
-
-// Debugging code
-#ifdef _DEBUG
-// ddlogMessage(GLDLOG_WARN, "SwapBuffers\n");
-#endif
-
- return (FAILED(hr)) ? FALSE : TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldGetDisplayMode_DX(
- DGL_ctx *ctx,
- GLD_displayMode *glddm)
-{
- D3DDISPLAYMODE d3ddm;
- HRESULT hr;
- GLD_driver_dx9 *lpCtx = NULL;
- BYTE cColorBits, cRedBits, cGreenBits, cBlueBits, cAlphaBits;
-
- if ((glddm == NULL) || (ctx == NULL))
- return FALSE;
-
- lpCtx = ctx->glPriv;
- if (lpCtx == NULL)
- return FALSE;
-
- if (lpCtx->pD3D == NULL)
- return FALSE;
-
- hr = IDirect3D9_GetAdapterDisplayMode(lpCtx->pD3D, glb.dwAdapter, &d3ddm);
- if (FAILED(hr))
- return FALSE;
-
- // Get info from the display format
- _BitsFromDisplayFormat(d3ddm.Format,
- &cColorBits, &cRedBits, &cGreenBits, &cBlueBits, &cAlphaBits);
-
- glddm->Width = d3ddm.Width;
- glddm->Height = d3ddm.Height;
- glddm->BPP = cColorBits;
- glddm->Refresh = d3ddm.RefreshRate;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_clip.c b/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_clip.c
deleted file mode 100644
index 044d2e66f..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_clip.c
+++ /dev/null
@@ -1,39 +0,0 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Gareth Hughes <gareth@valinux.com>
- */
-
-#ifdef DEBUG /* This code only used for debugging */
-
-// Stub to enable Mesa to build. KeithH
-#pragma message("NOTE: Using gld_debug_clip.c HACK")
-
-void _math_test_all_cliptest_functions( char *description )
-{
-}
-
-
-#endif /* DEBUG */
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_norm.c b/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_norm.c
deleted file mode 100644
index c20362bb2..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_norm.c
+++ /dev/null
@@ -1,39 +0,0 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Gareth Hughes <gareth@valinux.com>
- */
-
-#ifdef DEBUG /* This code only used for debugging */
-
-// Stub to enable Mesa to build. KeithH
-#pragma message("NOTE: Using gld_debug_norm.c HACK")
-
-void _math_test_all_normal_transform_functions( char *description )
-{
-}
-
-
-#endif /* DEBUG */
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_xform.c b/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_xform.c
deleted file mode 100644
index 73439dc3b..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gld_debug_xform.c
+++ /dev/null
@@ -1,41 +0,0 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 3.5
- *
- * Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * Updated for P6 architecture by Gareth Hughes.
- */
-
-
-#ifdef DEBUG /* This code only used for debugging */
-
-// Stub to enable Mesa to build. KeithH
-#pragma message("NOTE: Using gld_debug_xform.c HACK")
-
-void _math_test_all_transform_functions( char *description )
-{
-}
-
-
-#endif /* DEBUG */
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gld_dispatch.c b/mesalib/src/mesa/drivers/windows/gldirect/gld_dispatch.c
deleted file mode 100644
index e05d767e3..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gld_dispatch.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Thread-aware dispatch table.
-*
-****************************************************************************/
-
-#include "glheader.h"
-#include "glapi.h"
-#include "glapitable.h"
-#include "mtypes.h"
-#include "context.h"
-
-#define KEYWORD1
-#define KEYWORD2 GLAPIENTRY
-#if defined(USE_MGL_NAMESPACE)
- #define NAME(func) mgl##func
-#else
- #define NAME(func) gl##func
-#endif
-
-#if 0
-// Altered these to get the dispatch table from
-// the current context of the calling thread.
-#define DISPATCH(FUNC, ARGS, MESSAGE) \
- GET_CURRENT_CONTEXT(gc); \
- (gc->CurrentDispatch->FUNC) ARGS
-#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- GET_CURRENT_CONTEXT(gc); \
- return (gc->CurrentDispatch->FUNC) ARGS
-#else // #if 0
-#define DISPATCH(FUNC, ARGS, MESSAGE) \
- GET_CURRENT_CONTEXT(gc); \
- (_glapi_Dispatch->FUNC) ARGS
-#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE) \
- GET_CURRENT_CONTEXT(gc); \
- return (_glapi_Dispatch->FUNC) ARGS
-#endif // #if 0
-
-#ifndef GLAPIENTRY
-#define GLAPIENTRY
-#endif
-
-#include "glapitemp.h"
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c b/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c
deleted file mode 100644
index 226dc5a5a..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Driver functions and interfaces
-*
-****************************************************************************/
-
-#define STRICT
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-#include "gld_driver.h"
-#include "ddlog.h"
-#include "glheader.h"
-
-// For glGetString().
-#include "common_x86_asm.h"
-
-//---------------------------------------------------------------------------
-
-static char *szDriverError = "Driver used before initialisation!";
-
-// This holds our dynamically created OpenGL renderer string.
-// 256 chars should be plenty - remember that some apps display this.
-static char _gldRendererString[256];
-
-static char *szVendor = "SciTech Software, Inc.";
-
-//---------------------------------------------------------------------------
-
-extern BOOL gldGetDXErrorString_DX(HRESULT hr, char *buf, int nBufSize);
-
-extern BOOL gldCreateDrawable_MesaSW(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers);
-extern BOOL gldResizeDrawable_MesaSW(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers);
-extern BOOL gldDestroyDrawable_MesaSW(DGL_ctx *ctx);
-extern BOOL gldCreatePrivateGlobals_MesaSW(void);
-extern BOOL gldDestroyPrivateGlobals_MesaSW(void);
-extern BOOL gldBuildPixelformatList_MesaSW(void);
-extern BOOL gldInitialiseMesa_MesaSW(DGL_ctx *ctx);
-extern BOOL gldSwapBuffers_MesaSW(DGL_ctx *ctx, HDC hDC, HWND hWnd);
-extern PROC gldGetProcAddress_MesaSW(LPCSTR a);
-extern BOOL gldGetDisplayMode_MesaSW(DGL_ctx *ctx, GLD_displayMode *glddm);
-
-extern BOOL gldCreateDrawable_DX(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers);
-extern BOOL gldResizeDrawable_DX(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers);
-extern BOOL gldDestroyDrawable_DX(DGL_ctx *ctx);
-extern BOOL gldCreatePrivateGlobals_DX(void);
-extern BOOL gldDestroyPrivateGlobals_DX(void);
-extern BOOL gldBuildPixelformatList_DX(void);
-extern BOOL gldInitialiseMesa_DX(DGL_ctx *ctx);
-extern BOOL gldSwapBuffers_DX(DGL_ctx *ctx, HDC hDC, HWND hWnd);
-extern PROC gldGetProcAddress_DX(LPCSTR a);
-extern BOOL gldGetDisplayMode_DX(DGL_ctx *ctx, GLD_displayMode *glddm);
-
-//---------------------------------------------------------------------------
-// NOP functions. Called if proper driver functions are not set.
-//---------------------------------------------------------------------------
-
-static BOOL _gldDriverError(void)
-{
- ddlogMessage(DDLOG_CRITICAL, szDriverError);
- return FALSE;
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _GetDXErrorString_ERROR(
- HRESULT hr,
- char *buf,
- int nBufSize)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _CreateDrawable_ERROR(
- DGL_ctx *ctx,
- BOOL bPersistantInterface,
- BOOL bPersistantBuffers)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _ResizeDrawable_ERROR(
- DGL_ctx *ctx,
- BOOL bDefaultDriver,
- BOOL bPersistantInterface,
- BOOL bPersistantBuffers)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _DestroyDrawable_ERROR(
- DGL_ctx *ctx)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _CreatePrivateGlobals_ERROR(void)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _DestroyPrivateGlobals_ERROR(void)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _BuildPixelformatList_ERROR(void)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-
-static BOOL _InitialiseMesa_ERROR(
- DGL_ctx *ctx)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _SwapBuffers_ERROR(
- DGL_ctx *ctx,
- HDC hDC,
- HWND hWnd)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-
-static PROC _GetProcAddress_ERROR(
- LPCSTR a)
-{
- _gldDriverError();
- return NULL;
-}
-
-//---------------------------------------------------------------------------
-
-static BOOL _GetDisplayMode_ERROR(
- DGL_ctx *ctx,
- GLD_displayMode *glddm)
-{
- return _gldDriverError();
-}
-
-//---------------------------------------------------------------------------
-// Functions useful to all drivers
-//---------------------------------------------------------------------------
-
-const GLubyte* _gldGetStringGeneric(
- struct gl_context *ctx,
- GLenum name)
-{
- if (!ctx)
- return NULL;
-
- switch (name) {
- case GL_RENDERER:
- sprintf(_gldRendererString, "GLDirect 4.0 %s%s%s%s (%s %s)",
- _mesa_x86_cpu_features ? "/x86" : "",
- cpu_has_mmx ? "/MMX" : "",
- cpu_has_3dnow ? "/3DNow!" : "",
- cpu_has_xmm ? "/SSE" : "",
- __DATE__, __TIME__);
- return (const GLubyte *) _gldRendererString;
- case GL_VENDOR:
- return (const GLubyte *) szVendor;
- default:
- return NULL;
- }
-}
-
-//---------------------------------------------------------------------------
-// Global driver function pointers, initially set to functions that
-// will report an error when called.
-//---------------------------------------------------------------------------
-
-GLD_driver _gldDriver = {
- _GetDXErrorString_ERROR,
- _CreateDrawable_ERROR,
- _ResizeDrawable_ERROR,
- _DestroyDrawable_ERROR,
- _CreatePrivateGlobals_ERROR,
- _DestroyPrivateGlobals_ERROR,
- _BuildPixelformatList_ERROR,
- _InitialiseMesa_ERROR,
- _SwapBuffers_ERROR,
- _GetProcAddress_ERROR,
- _GetDisplayMode_ERROR
-};
-
-//---------------------------------------------------------------------------
-// Init function. Should be called as soon as regkeys/ini-settings are read.
-//---------------------------------------------------------------------------
-
-BOOL gldInitDriverPointers(
- DWORD dwDriver)
-{
- _gldDriver.GetDXErrorString = gldGetDXErrorString_DX;
-
- if (dwDriver == GLDS_DRIVER_MESA_SW) {
- // Mesa Software driver
- _gldDriver.CreateDrawable = gldCreateDrawable_MesaSW;
- _gldDriver.ResizeDrawable = gldResizeDrawable_MesaSW;
- _gldDriver.DestroyDrawable = gldDestroyDrawable_MesaSW;
- _gldDriver.CreatePrivateGlobals = gldCreatePrivateGlobals_MesaSW;
- _gldDriver.DestroyPrivateGlobals = gldDestroyPrivateGlobals_MesaSW;
- _gldDriver.BuildPixelformatList = gldBuildPixelformatList_MesaSW;
- _gldDriver.InitialiseMesa = gldInitialiseMesa_MesaSW;
- _gldDriver.SwapBuffers = gldSwapBuffers_MesaSW;
- _gldDriver.wglGetProcAddress = gldGetProcAddress_MesaSW;
- _gldDriver.GetDisplayMode = gldGetDisplayMode_MesaSW;
- return TRUE;
- }
-
- if ((dwDriver == GLDS_DRIVER_REF) || (dwDriver == GLDS_DRIVER_HAL)) {
- // Direct3D driver, either HW or SW
- _gldDriver.CreateDrawable = gldCreateDrawable_DX;
- _gldDriver.ResizeDrawable = gldResizeDrawable_DX;
- _gldDriver.DestroyDrawable = gldDestroyDrawable_DX;
- _gldDriver.CreatePrivateGlobals = gldCreatePrivateGlobals_DX;
- _gldDriver.DestroyPrivateGlobals = gldDestroyPrivateGlobals_DX;
- _gldDriver.BuildPixelformatList = gldBuildPixelformatList_DX;
- _gldDriver.InitialiseMesa = gldInitialiseMesa_DX;
- _gldDriver.SwapBuffers = gldSwapBuffers_DX;
- _gldDriver.wglGetProcAddress = gldGetProcAddress_DX;
- _gldDriver.GetDisplayMode = gldGetDisplayMode_DX;
- return TRUE;
- };
-
- return FALSE;
-}
-
-//---------------------------------------------------------------------------
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.h b/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.h
deleted file mode 100644
index 6067245b8..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gld_driver.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Driver functions and interfaces
-*
-****************************************************************************/
-
-#ifndef _GLD_DRIVER_H
-#define _GLD_DRIVER_H
-
-// This file is only useful is we're using the new GLD3 WGL code.
-#ifdef _USE_GLD3_WGL
-
-#include "dglcontext.h"
-
-// Same as DX8 D3DDISPLAYMODE
-typedef struct {
- DWORD Width;
- DWORD Height;
- DWORD Refresh;
- DWORD BPP;
-} GLD_displayMode;
-
-typedef struct {
- // Returns a string for a given HRESULT error code.
- BOOL (*GetDXErrorString)(HRESULT hr, char *buf, int nBufSize);
-
- // Driver functions for managing drawables.
- // Functions must respect persistant buffers / persistant interface.
- // NOTE: Persistant interface is: DirectDraw, pre-DX8; Direct3D, DX8 and above.
- BOOL (*CreateDrawable)(DGL_ctx *ctx, BOOL bPersistantInterface, BOOL bPersistantBuffers);
- BOOL (*ResizeDrawable)(DGL_ctx *ctx, BOOL bDefaultDriver, BOOL bPersistantInterface, BOOL bPersistantBuffers);
- BOOL (*DestroyDrawable)(DGL_ctx *ctx);
-
- // Create/Destroy private globals belonging to driver
- BOOL (*CreatePrivateGlobals)(void);
- BOOL (*DestroyPrivateGlobals)(void);
-
- // Build pixelformat list
- BOOL (*BuildPixelformatList)(void);
-
- // Initialise Mesa's driver pointers
- BOOL (*InitialiseMesa)(DGL_ctx *ctx);
-
- // Swap buffers
- BOOL (*SwapBuffers)(DGL_ctx *ctx, HDC hDC, HWND hWnd);
-
- // wglGetProcAddress()
- PROC (*wglGetProcAddress)(LPCSTR a);
-
- BOOL (*GetDisplayMode)(DGL_ctx *ctx, GLD_displayMode *glddm);
-} GLD_driver;
-
-extern GLD_driver _gldDriver;
-
-BOOL gldInitDriverPointers(DWORD dwDriver);
-const GLubyte* _gldGetStringGeneric(struct gl_context *ctx, GLenum name);
-
-#endif // _USE_GLD3_WGL
-
-#endif // _GLD_DRIVER_H
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gldirect.rc b/mesalib/src/mesa/drivers/windows/gldirect/gldirect.rc
deleted file mode 100644
index b0a22b281..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gldirect.rc
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: Windows Resource Compiler
-* Environment: Windows 95
-*
-****************************************************************************/
-
-#ifndef WORKSHOP_INVOKED
- #include <windows.h>
-#endif
-
-#define FILE_DESCRIPTION "SciTech GLDirect"
-#define ORIG_FILENAME "opengl32.dll"
-#define FILE_TYPE VFT_DLL
-
-#include "gldirect/gldver.ver"
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/gldlame8.c b/mesalib/src/mesa/drivers/windows/gldirect/gldlame8.c
deleted file mode 100644
index 5ac519c17..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/gldlame8.c
+++ /dev/null
@@ -1,181 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: GLDirect utility for determining lame boards/drivers.
-*
-****************************************************************************/
-
-#define STRICT
-#define WIN32_LEAN_AND_MEAN
-#include <d3d8.h>
-
-/*
-Ack. Broken out from gldlame.c because of broken D3D headers. KeithH
-*/
-
-/****************************************************************************
-REMARKS:
-Scans list of DirectDraw devices for specific device IDs.
-****************************************************************************/
-
-#define VENDORID_ATI 0x1002
-
-static DWORD devATIRagePro[] = {
- 0x4742, // 3D RAGE PRO BGA AGP 1X/2X
- 0x4744, // 3D RAGE PRO BGA AGP 1X only
- 0x4749, // 3D RAGE PRO BGA PCI 33 MHz
- 0x4750, // 3D RAGE PRO PQFP PCI 33 MHz
- 0x4751, // 3D RAGE PRO PQFP PCI 33 MHz limited 3D
- 0x4C42, // 3D RAGE LT PRO BGA-312 AGP 133 MHz
- 0x4C44, // 3D RAGE LT PRO BGA-312 AGP 66 MHz
- 0x4C49, // 3D RAGE LT PRO BGA-312 PCI 33 MHz
- 0x4C50, // 3D RAGE LT PRO BGA-256 PCI 33 MHz
- 0x4C51, // 3D RAGE LT PRO BGA-256 PCI 33 MHz limited 3D
-};
-
-static DWORD devATIRageIIplus[] = {
- 0x4755, // 3D RAGE II+
- 0x4756, // 3D RAGE IIC PQFP PCI
- 0x4757, // 3D RAGE IIC BGA AGP
- 0x475A, // 3D RAGE IIC PQFP AGP
- 0x4C47, // 3D RAGE LT-G
-};
-
-static __inline BOOL IsDevice(
- DWORD *lpDeviceIdList,
- DWORD dwDeviceId,
- int count)
-{
- int i;
-
- for (i=0; i<count; i++)
- if (dwDeviceId == lpDeviceIdList[i])
- return TRUE;
-
- return FALSE;
-}
-
-/****************************************************************************
-REMARKS:
-Test the Direct3D8 device for "lameness" with respect to GLDirect.
-This is done on per-chipset basis, as in GLD CAD driver (DGLCONTEXT.C).
-If bTestForWHQL is set then the device is tested to see if it is
-certified, and bIsWHQL is set to indicate TRUE or FALSE. Otherwise bIsWHQL
-is not set. [WHQL = Windows Hardware Quality Labs]
-
-NOTE: There is a one- or two-second time penalty incurred in determining
- the WHQL certification date.
-****************************************************************************/
-BOOL IsThisD3D8Lame(
- IDirect3D8 *pD3D,
- DWORD dwAdapter,
- BOOL bTestForWHQL,
- BOOL *bIsWHQL)
-{
- DWORD dwFlags = bTestForWHQL ? 0 : D3DENUM_NO_WHQL_LEVEL;
- D3DADAPTER_IDENTIFIER8 d3dai;
- HRESULT hr;
-
- hr = IDirect3D8_GetAdapterIdentifier(pD3D, dwAdapter, dwFlags, &d3dai);
- if (FAILED(hr))
- return TRUE; // Definitely lame if adapter details can't be obtained!
-
- if (bTestForWHQL) {
- *bIsWHQL = d3dai.WHQLLevel ? TRUE : FALSE;
- }
-
- // Vendor 1: ATI
- if (d3dai.VendorId == VENDORID_ATI) {
- // Test A: ATI Rage PRO
- if (IsDevice(devATIRagePro, d3dai.DeviceId, sizeof(devATIRagePro)))
- return TRUE; // bad mipmapping
- // Test B: ATI Rage II+
- if (IsDevice(devATIRageIIplus, d3dai.DeviceId, sizeof(devATIRageIIplus)))
- return TRUE; // bad HW alpha testing
- }
-
- return FALSE;
-}
-
-/****************************************************************************
-REMARKS:
-Test the Direct3DDevice8 device for "lameness" with respect to GLDirect.
-This is done by querying for particular caps, as in GLD CPL (CPLMAIN.CPP).
-****************************************************************************/
-BOOL IsThisD3D8DeviceLame(
- IDirect3DDevice8 *pDev)
-{
- D3DCAPS8 d3dCaps;
- HRESULT hr;
-
- hr = IDirect3DDevice8_GetDeviceCaps(pDev, &d3dCaps);
- if (FAILED(hr))
- return TRUE;
-
- // Test 1: Perspective-correct textures
- // Any card that cannot do perspective-textures is *exceptionally* lame.
- if (!(d3dCaps.TextureCaps & D3DPTEXTURECAPS_PERSPECTIVE)) {
- return TRUE; // Lame!
- }
-
- // Test 2: Bilinear filtering
- if (!(d3dCaps.TextureFilterCaps & D3DPTFILTERCAPS_MINFLINEAR)) {
- return TRUE; // Lame!
- }
-
- // Test 3: Mipmapping
- if (!(d3dCaps.TextureCaps & D3DPTEXTURECAPS_MIPMAP)) {
- return TRUE; // Lame!
- }
-
- // Test 4: Depth-test modes (?)
-
- // Test 5: Blend Modes -- Based on DX7 D3DIM MTEXTURE.CPP caps test
-
- // Accept devices that can do multipass, alpha blending
- if( !((d3dCaps.DestBlendCaps & D3DPBLENDCAPS_INVSRCALPHA) &&
- (d3dCaps.SrcBlendCaps & D3DPBLENDCAPS_SRCALPHA)) )
- return TRUE;
-
- // Accept devices that can do multipass, color blending
- if( !((d3dCaps.DestBlendCaps & D3DPBLENDCAPS_SRCCOLOR) &&
- (d3dCaps.SrcBlendCaps & D3DPBLENDCAPS_ZERO)) )
- return TRUE;
-
- // Accept devices that really support multiple textures.
- if( !((d3dCaps.MaxTextureBlendStages > 1 ) &&
- (d3dCaps.MaxSimultaneousTextures > 1 ) &&
- (d3dCaps.TextureOpCaps & D3DTEXOPCAPS_MODULATE )) )
- return TRUE;
-
- return FALSE; // Not lame
-}
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/mesasw/colors.h b/mesalib/src/mesa/drivers/windows/gldirect/mesasw/colors.h
deleted file mode 100644
index 12b5003bf..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/mesasw/colors.h
+++ /dev/null
@@ -1,520 +0,0 @@
-/* File name : colors.h
- * Version : 2.3
- *
- * Header file for display driver for Mesa 2.3 under
- * Windows95 and WindowsNT
- * This file defines macros and global variables needed
- * for converting color format
- *
- * Copyright (C) 1996- Li Wei
- * Address : Institute of Artificial Intelligence
- * : & Robotics
- * : Xi'an Jiaotong University
- * Email : liwei@aiar.xjtu.edu.cn
- * Web page : http://sun.aiar.xjtu.edu.cn
- *
- * This file and its associations are partially based on the
- * Windows NT driver for Mesa, written by Mark Leaming
- * (mark@rsinc.com).
- */
-
-/*
- * Macros for pixel format defined
- */
-
-/*
- * Revision 1.1 2004/04/20 11:13:11 alanh
- * add SciTech's GLDirect driver for Windows.
- *
- * This code is donated to Mesa which allows the usage of
- * a Direct3D layer (DX7, DX8, DX9 or complete software fallback).
- *
- * No build system exists for this code yet, that will come.....
- *
- * Revision 1.1.1.1 1999/08/19 00:55:42 jtg
- * Imported sources
- *
- * Revision 1.2 1999/01/03 03:08:57 brianp
- * Ted Jump's changes
- *
- * Revision 1.1 1999/01/03 03:08:12 brianp
- * Initial revision
- *
- * Revision 2.0.2 1997/4/30 15:58:00 CST by Li Wei(liwei@aiar.xjtu.edu.cn)
- * Add LUTs need for dithering
- */
-
-/*
- * Revision 1.1 2004/04/20 11:13:11 alanh
- * add SciTech's GLDirect driver for Windows.
- *
- * This code is donated to Mesa which allows the usage of
- * a Direct3D layer (DX7, DX8, DX9 or complete software fallback).
- *
- * No build system exists for this code yet, that will come.....
- *
- * Revision 1.1.1.1 1999/08/19 00:55:42 jtg
- * Imported sources
- *
- * Revision 1.2 1999/01/03 03:08:57 brianp
- * Ted Jump's changes
- *
- * Revision 1.1 1999/01/03 03:08:12 brianp
- * Initial revision
- *
- * Revision 2.0.1 1997/4/29 15:52:00 CST by Li Wei(liwei@aiar.xjtu.edu.cn)
- * Add BGR8 Macro
- */
-
-/*
- * Revision 1.1 2004/04/20 11:13:11 alanh
- * add SciTech's GLDirect driver for Windows.
- *
- * This code is donated to Mesa which allows the usage of
- * a Direct3D layer (DX7, DX8, DX9 or complete software fallback).
- *
- * No build system exists for this code yet, that will come.....
- *
- * Revision 1.1.1.1 1999/08/19 00:55:42 jtg
- * Imported sources
- *
- * Revision 1.2 1999/01/03 03:08:57 brianp
- * Ted Jump's changes
- *
- * Revision 1.1 1999/01/03 03:08:12 brianp
- * Initial revision
- *
- * Revision 2.0 1996/11/15 10:55:00 CST by Li Wei(liwei@aiar.xjtu.edu.cn)
- * Initial revision
- */
-/* Values for wmesa->pixelformat: */
-
-#define PF_8A8B8G8R 3 /* 32-bit TrueColor: 8-A, 8-B, 8-G, 8-R */
-#define PF_8R8G8B 4 /* 32-bit TrueColor: 8-R, 8-G, 8-B */
-#define PF_5R6G5B 5 /* 16-bit TrueColor: 5-R, 6-G, 5-B bits */
-#define PF_DITHER8 6 /* Dithered RGB using a lookup table */
-#define PF_LOOKUP 7 /* Undithered RGB using a lookup table */
-#define PF_GRAYSCALE 10 /* Grayscale or StaticGray */
-#define PF_BADFORMAT 11
-#define PF_INDEX8 12
-
-char ColorMap16[] = {
-0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
-0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
-0x03,0x03,0x03,0x03,0x03,0x03,0x03,0x03,
-0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
-0x05,0x05,0x05,0x05,0x05,0x05,0x05,0x05,
-0x06,0x06,0x06,0x06,0x06,0x06,0x06,0x06,
-0x07,0x07,0x07,0x07,0x07,0x07,0x07,0x07,
-0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,
-0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,
-0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,0x0A,
-0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,0x0B,
-0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,
-0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,0x0D,
-0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,0x0E,
-0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,
-0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,
-0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x12,
-0x13,0x13,0x13,0x13,0x13,0x13,0x13,0x13,
-0x14,0x14,0x14,0x14,0x14,0x14,0x14,0x14,
-0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15,
-0x16,0x16,0x16,0x16,0x16,0x16,0x16,0x16,
-0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,
-0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
-0x19,0x19,0x19,0x19,0x19,0x19,0x19,0x19,
-0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,0x1A,
-0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,0x1B,
-0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,
-0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,0x1D,
-0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,
-0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F};
-
-#define BGR8(r,g,b) (unsigned)(((BYTE)(b & 0xc0 | (g & 0xe0)>>2 | (r & 0xe0)>>5)))
-#ifdef DDRAW
-#define BGR16(r,g,b) ((WORD)(((BYTE)(ColorMap16[b]) | ((BYTE)(g&0xfc) << 3)) | (((WORD)(BYTE)(ColorMap16[r])) << 11)))
-#else
-#define BGR16(r,g,b) ((WORD)(((BYTE)(ColorMap16[b]) | ((BYTE)(ColorMap16[g]) << 5)) | (((WORD)(BYTE)(ColorMap16[r])) << 10)))
-#endif
-#define BGR24(r,g,b) (unsigned long)(((DWORD)(((BYTE)(b)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(r))<<16))) << 8)
-#define BGR32(r,g,b) (unsigned long)((DWORD)(((BYTE)(b)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(r))<<16)))
-
-
-
-/*
- * If pixelformat==PF_8A8B8G8R:
- */
-#define PACK_8A8B8G8R( R, G, B, A ) \
- ( ((A) << 24) | ((B) << 16) | ((G) << 8) | (R) )
-
-
-/*
- * If pixelformat==PF_8R8G8B:
- */
-#define PACK_8R8G8B( R, G, B) ( ((R) << 16) | ((G) << 8) | (B) )
-
-
-/*
- * If pixelformat==PF_5R6G5B:
- */
-
-
-#ifdef DDRAW
-#define PACK_5R6G5B( R, G, B) ((WORD)(((BYTE)(ColorMap16[B]) | ((BYTE)(G&0xfc) << 3)) | (((WORD)(BYTE)(ColorMap16[R])) << 11)))
-#else
-#define PACK_5R6G5B( R, G, B) ((WORD)(((BYTE)(ColorMap16[B]) | ((BYTE)(ColorMap16[G]) << 5)) | (((WORD)(BYTE)(ColorMap16[R])) << 10)))
-#endif
-/*----------------------------------------------------------------------------
-
-Division lookup tables. These tables compute 0-255 divided by 51 and
-modulo 51. These tables could approximate gamma correction.
-
-*/
-
-char unsigned const aDividedBy51Rounded[256] =
-{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
- 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
-};
-
-char unsigned const aDividedBy51[256] =
-{
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
- 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5,
-};
-
-char unsigned const aModulo51[256] =
-{
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 1, 2, 3, 4, 5, 6,
- 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
- 44, 45, 46, 47, 48, 49, 50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
- 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
- 49, 50, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
- 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
- 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0, 1, 2, 3,
- 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
- 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 0,
-};
-
-/*----------------------------------------------------------------------------
-
-Multiplication LUTs. These compute 0-5 times 6 and 36.
-
-*/
-
-char unsigned const aTimes6[6] =
-{
- 0, 6, 12, 18, 24, 30
-};
-
-char unsigned const aTimes36[6] =
-{
- 0, 36, 72, 108, 144, 180
-};
-
-
-/*----------------------------------------------------------------------------
-
-Dither matrices for 8 bit to 2.6 bit halftones.
-
-*/
-
-char unsigned const aHalftone16x16[256] =
-{
- 0, 44, 9, 41, 3, 46, 12, 43, 1, 44, 10, 41, 3, 46, 12, 43,
- 34, 16, 25, 19, 37, 18, 28, 21, 35, 16, 26, 19, 37, 18, 28, 21,
- 38, 6, 47, 3, 40, 9, 50, 6, 38, 7, 47, 4, 40, 9, 49, 6,
- 22, 28, 13, 31, 25, 31, 15, 34, 22, 29, 13, 32, 24, 31, 15, 34,
- 2, 46, 12, 43, 1, 45, 10, 42, 2, 45, 11, 42, 1, 45, 11, 42,
- 37, 18, 27, 21, 35, 17, 26, 20, 36, 17, 27, 20, 36, 17, 26, 20,
- 40, 8, 49, 5, 38, 7, 48, 4, 39, 8, 48, 5, 39, 7, 48, 4,
- 24, 30, 15, 33, 23, 29, 13, 32, 23, 30, 14, 33, 23, 29, 14, 32,
- 2, 46, 12, 43, 0, 44, 10, 41, 3, 47, 12, 44, 0, 44, 10, 41,
- 37, 18, 27, 21, 35, 16, 25, 19, 37, 19, 28, 22, 35, 16, 25, 19,
- 40, 9, 49, 5, 38, 7, 47, 4, 40, 9, 50, 6, 38, 6, 47, 3,
- 24, 30, 15, 34, 22, 29, 13, 32, 25, 31, 15, 34, 22, 28, 13, 31,
- 1, 45, 11, 42, 2, 46, 11, 42, 1, 45, 10, 41, 2, 46, 11, 43,
- 36, 17, 26, 20, 36, 17, 27, 21, 35, 16, 26, 20, 36, 18, 27, 21,
- 39, 8, 48, 4, 39, 8, 49, 5, 38, 7, 48, 4, 39, 8, 49, 5,
- 23, 29, 14, 33, 24, 30, 14, 33, 23, 29, 13, 32, 24, 30, 14, 33,
-};
-
-char unsigned const aHalftone8x8[64] =
-{
- 0, 38, 9, 47, 2, 40, 11, 50,
- 25, 12, 35, 22, 27, 15, 37, 24,
- 6, 44, 3, 41, 8, 47, 5, 43,
- 31, 19, 28, 15, 34, 21, 31, 18,
- 1, 39, 11, 49, 0, 39, 10, 48,
- 27, 14, 36, 23, 26, 13, 35, 23,
- 7, 46, 4, 43, 7, 45, 3, 42,
- 33, 20, 30, 17, 32, 19, 29, 16,
-};
-
-char unsigned const aHalftone4x4_1[16] =
-{
- 0, 25, 6, 31,
- 38, 12, 44, 19,
- 9, 35, 3, 28,
- 47, 22, 41, 15
-};
-
-char unsigned const aHalftone4x4_2[16] =
-{
- 41, 3, 9, 28,
- 35, 15, 22, 47,
- 6, 25, 38, 0,
- 19, 44, 31, 12
-};
-
-/***************************************************************************
- aWinGHalftoneTranslation
-
- Translates a 2.6 bit-per-pixel halftoned representation into the
- slightly rearranged WinG Halftone Palette.
-*/
-
-char unsigned const aWinGHalftoneTranslation[216] =
-{
- 0,
- 29,
- 30,
- 31,
- 32,
- 249,
- 33,
- 34,
- 35,
- 36,
- 37,
- 38,
- 39,
- 40,
- 41,
- 42,
- 43,
- 44,
- 45,
- 46,
- 47,
- 48,
- 49,
- 50,
- 51,
- 52,
- 53,
- 54,
- 55,
- 56,
- 250,
- 250,
- 57,
- 58,
- 59,
- 251,
- 60,
- 61,
- 62,
- 63,
- 64,
- 65,
- 66,
- 67,
- 68,
- 69,
- 70,
- 71,
- 72,
- 73,
- 74,
- 75,
- 76,
- 77,
- 78,
- 79,
- 80,
- 81,
- 82,
- 83,
- 84,
- 85,
- 86,
- 87,
- 88,
- 89,
- 250,
- 90,
- 91,
- 92,
- 93,
- 94,
- 95,
- 96,
- 97,
- 98,
- 99,
- 100,
- 101,
- 102,
- 103,
- 104,
- 105,
- 106,
- 107,
- 108,
- 109,
- 110,
- 111,
- 227,
- 112,
- 113,
- 114,
- 115,
- 116,
- 117,
- 118,
- 119,
- 151,
- 120,
- 121,
- 122,
- 123,
- 124,
- 228,
- 125,
- 126,
- 229,
- 133,
- 162,
- 135,
- 131,
- 132,
- 137,
- 166,
- 134,
- 140,
- 130,
- 136,
- 143,
- 138,
- 139,
- 174,
- 141,
- 142,
- 177,
- 129,
- 144,
- 145,
- 146,
- 147,
- 148,
- 149,
- 150,
- 157,
- 152,
- 153,
- 154,
- 155,
- 156,
- 192,
- 158,
- 159,
- 160,
- 161,
- 196,
- 163,
- 164,
- 165,
- 127,
- 199,
- 167,
- 168,
- 169,
- 170,
- 171,
- 172,
- 173,
- 207,
- 175,
- 176,
- 210,
- 178,
- 179,
- 180,
- 181,
- 182,
- 183,
- 184,
- 185,
- 186,
- 187,
- 188,
- 189,
- 190,
- 191,
- 224,
- 193,
- 194,
- 195,
- 252,
- 252,
- 197,
- 198,
- 128,
- 253,
- 252,
- 200,
- 201,
- 202,
- 203,
- 204,
- 205,
- 206,
- 230,
- 208,
- 209,
- 231,
- 211,
- 212,
- 213,
- 214,
- 215,
- 216,
- 217,
- 218,
- 219,
- 220,
- 221,
- 222,
- 254,
- 223,
- 232,
- 225,
- 226,
- 255,
-};
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c b/mesalib/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c
deleted file mode 100644
index 02f0dfacd..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/mesasw/gld_wgl_mesasw.c
+++ /dev/null
@@ -1,1681 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x/2000/XP/XBox (Win32)
-*
-* Description: Mesa Software WGL (WindowsGL)
-*
-****************************************************************************/
-
-#include <windows.h>
-#define GL_GLEXT_PROTOTYPES
-#include <GL/gl.h>
-#include <GL/glext.h>
-
-#include "glheader.h"
-#include "colors.h"
-#include "context.h"
-#include "colormac.h"
-#include "dd.h"
-#include "depth.h"
-#include "extensions.h"
-#include "macros.h"
-#include "matrix.h"
-// #include "mem.h"
-//#include "mmath.h"
-#include "mtypes.h"
-#include "texformat.h"
-#include "texstore.h"
-#include "teximage.h"
-#include "vbo/vbo.h"
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "swrast/s_context.h"
-#include "swrast/s_depth.h"
-#include "swrast/s_lines.h"
-#include "swrast/s_triangle.h"
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-#include "dglcontext.h"
-#include "gld_driver.h"
-
-//---------------------------------------------------------------------------
-//---------------------------------------------------------------------------
-
-DGL_pixelFormat pfTemplateMesaSW =
-{
- {
- sizeof(PIXELFORMATDESCRIPTOR), // Size of the data structure
- 1, // Structure version - should be 1
- // Flags:
- PFD_DRAW_TO_WINDOW | // The buffer can draw to a window or device surface.
- PFD_DRAW_TO_BITMAP | // The buffer can draw to a bitmap. (DaveM)
- PFD_SUPPORT_GDI | // The buffer supports GDI drawing. (DaveM)
- PFD_SUPPORT_OPENGL | // The buffer supports OpenGL drawing.
- PFD_DOUBLEBUFFER | // The buffer is double-buffered.
- 0, // Placeholder for easy commenting of above flags
- PFD_TYPE_RGBA, // Pixel type RGBA.
- 32, // Total colour bitplanes (excluding alpha bitplanes)
- 8, 0, // Red bits, shift
- 8, 8, // Green bits, shift
- 8, 16, // Blue bits, shift
- 8, 24, // Alpha bits, shift (destination alpha)
- 64, // Accumulator bits (total)
- 16, 16, 16, 16, // Accumulator bits: Red, Green, Blue, Alpha
- 16, // Depth bits
- 8, // Stencil bits
- 0, // Number of auxiliary buffers
- 0, // Layer type
- 0, // Specifies the number of overlay and underlay planes.
- 0, // Layer mask
- 0, // Specifies the transparent color or index of an underlay plane.
- 0 // Damage mask
- },
- 0, // Unused
-};
-
-//---------------------------------------------------------------------------
-// Extensions
-//---------------------------------------------------------------------------
-
-typedef struct {
- PROC proc;
- char *name;
-} GLD_extension;
-
-static GLD_extension GLD_extList[] = {
-#ifdef GL_EXT_polygon_offset
- { (PROC)glPolygonOffsetEXT, "glPolygonOffsetEXT" },
-#endif
- { (PROC)glBlendEquationEXT, "glBlendEquationEXT" },
- { (PROC)glBlendColorEXT, "glBlendColorExt" },
- { (PROC)glVertexPointerEXT, "glVertexPointerEXT" },
- { (PROC)glNormalPointerEXT, "glNormalPointerEXT" },
- { (PROC)glColorPointerEXT, "glColorPointerEXT" },
- { (PROC)glIndexPointerEXT, "glIndexPointerEXT" },
- { (PROC)glTexCoordPointerEXT, "glTexCoordPointer" },
- { (PROC)glEdgeFlagPointerEXT, "glEdgeFlagPointerEXT" },
- { (PROC)glGetPointervEXT, "glGetPointervEXT" },
- { (PROC)glArrayElementEXT, "glArrayElementEXT" },
- { (PROC)glDrawArraysEXT, "glDrawArrayEXT" },
- { (PROC)glAreTexturesResidentEXT, "glAreTexturesResidentEXT" },
- { (PROC)glBindTextureEXT, "glBindTextureEXT" },
- { (PROC)glDeleteTexturesEXT, "glDeleteTexturesEXT" },
- { (PROC)glGenTexturesEXT, "glGenTexturesEXT" },
- { (PROC)glIsTextureEXT, "glIsTextureEXT" },
- { (PROC)glPrioritizeTexturesEXT, "glPrioritizeTexturesEXT" },
- { (PROC)glCopyTexSubImage3DEXT, "glCopyTexSubImage3DEXT" },
- { (PROC)glTexImage3DEXT, "glTexImage3DEXT" },
- { (PROC)glTexSubImage3DEXT, "glTexSubImage3DEXT" },
- { (PROC)glPointParameterfEXT, "glPointParameterfEXT" },
- { (PROC)glPointParameterfvEXT, "glPointParameterfvEXT" },
- { (PROC)glLockArraysEXT, "glLockArraysEXT" },
- { (PROC)glUnlockArraysEXT, "glUnlockArraysEXT" },
- { NULL, "\0" }
-};
-
-//---------------------------------------------------------------------------
-// WMesa Internal Functions
-//---------------------------------------------------------------------------
-
-#define PAGE_FILE 0xffffffff
-
-#define REDBITS 0x03
-#define REDSHIFT 0x00
-#define GREENBITS 0x03
-#define GREENSHIFT 0x03
-#define BLUEBITS 0x02
-#define BLUESHIFT 0x06
-
-typedef struct _dibSection {
- HDC hDC;
- HANDLE hFileMap;
- BOOL fFlushed;
- LPVOID base;
-} WMDIBSECTION, *PWMDIBSECTION;
-
-typedef struct wmesa_context {
- HWND Window;
- HDC hDC;
- HPALETTE hPalette;
- HPALETTE hOldPalette;
- HPEN hPen;
- HPEN hOldPen;
- HCURSOR hOldCursor;
- COLORREF crColor;
- // 3D projection stuff
- RECT drawRect;
- UINT uiDIBoffset;
- // OpenGL stuff
- HPALETTE hGLPalette;
- GLuint width;
- GLuint height;
- GLuint ScanWidth;
- GLboolean db_flag; //* double buffered?
- GLboolean rgb_flag; //* RGB mode?
- GLboolean dither_flag; //* use dither when 256 color mode for RGB?
- GLuint depth; //* bits per pixel (1, 8, 24, etc)
- ULONG pixel; // current color index or RGBA pixel value
- ULONG clearpixel; //* pixel for clearing the color buffers
- PBYTE ScreenMem; // WinG memory
- BITMAPINFO *IndexFormat;
- HPALETTE hPal; // Current Palette
- HPALETTE hPalHalfTone;
-
-
- WMDIBSECTION dib;
- BITMAPINFO bmi;
- HBITMAP hbmDIB;
- HBITMAP hOldBitmap;
- HBITMAP Old_Compat_BM;
- HBITMAP Compat_BM; // Bitmap for double buffering
- PBYTE pbPixels;
- int nColors;
- BYTE cColorBits;
- int pixelformat;
-
- RECT rectOffScreen;
- RECT rectSurface;
-// HWND hwnd;
- DWORD pitch;
- PBYTE addrOffScreen;
-
- // We always double-buffer, for performance reasons, but
- // we need to know which of SwapBuffers() or glFlush() to
- // handle. If we're emulating, then we update on Flush(),
- // otherwise we update on SwapBufers(). KeithH
- BOOL bEmulateSingleBuffer;
-} WMesaContext, *PWMC;
-
-#define GLD_GET_WMESA_DRIVER(c) (WMesaContext*)(c)->glPriv
-
-// TODO:
-GLint stereo_flag = 0 ;
-
-/* If we are double-buffering, we want to get the DC for the
- * off-screen DIB, otherwise the DC for the window.
- */
-#define DD_GETDC ((Current->db_flag) ? Current->dib.hDC : Current->hDC )
-#define DD_RELEASEDC
-
-#define FLIP(Y) (Current->height-(Y)-1)
-
-struct DISPLAY_OPTIONS {
- int stereo;
- int fullScreen;
- int mode;
- int bpp;
-};
-
-struct DISPLAY_OPTIONS displayOptions;
-
-//---------------------------------------------------------------------------
-
-static unsigned char threeto8[8] = {
- 0, 0111>>1, 0222>>1, 0333>>1, 0444>>1, 0555>>1, 0666>>1, 0377
-};
-
-static unsigned char twoto8[4] = {
- 0, 0x55, 0xaa, 0xff
-};
-
-static unsigned char oneto8[2] = {
- 0, 255
-};
-
-//---------------------------------------------------------------------------
-
-BYTE DITHER_RGB_2_8BIT( int red, int green, int blue, int pixel, int scanline)
-{
- char unsigned redtemp, greentemp, bluetemp, paletteindex;
-
- //*** now, look up each value in the halftone matrix
- //*** using an 8x8 ordered dither.
- redtemp = aDividedBy51[red]
- + (aModulo51[red] > aHalftone8x8[(pixel%8)*8
- + scanline%8]);
- greentemp = aDividedBy51[(char unsigned)green]
- + (aModulo51[green] > aHalftone8x8[
- (pixel%8)*8 + scanline%8]);
- bluetemp = aDividedBy51[(char unsigned)blue]
- + (aModulo51[blue] > aHalftone8x8[
- (pixel%8)*8 +scanline%8]);
-
- //*** recombine the halftoned rgb values into a palette index
- paletteindex =
- redtemp + aTimes6[greentemp] + aTimes36[bluetemp];
-
- //*** and translate through the wing halftone palette
- //*** translation vector to give the correct value.
- return aWinGHalftoneTranslation[paletteindex];
-}
-
-//---------------------------------------------------------------------------
-
-static unsigned char componentFromIndex(UCHAR i, UINT nbits, UINT shift)
-{
- unsigned char val;
-
- val = i >> shift;
- switch (nbits) {
-
- case 1:
- val &= 0x1;
- return oneto8[val];
-
- case 2:
- val &= 0x3;
- return twoto8[val];
-
- case 3:
- val &= 0x7;
- return threeto8[val];
-
- default:
- return 0;
- }
-}
-
-//---------------------------------------------------------------------------
-
-
-void wmSetPixel(PWMC pwc, int iScanLine, int iPixel, BYTE r, BYTE g, BYTE b)
-{
- WMesaContext *Current = pwc;
-
- // Test for invalid scanline parameter. KeithH
- if ((iScanLine < 0) || (iScanLine >= pwc->height))
- return;
-
- if (Current->db_flag) {
- LPBYTE lpb = pwc->pbPixels;
- UINT nBypp = pwc->cColorBits >> 3;
- UINT nOffset = iPixel % nBypp;
-
- lpb += pwc->ScanWidth * iScanLine;
- lpb += iPixel * nBypp;
-
- if(nBypp == 1){
- if(pwc->dither_flag)
- *lpb = DITHER_RGB_2_8BIT(r,g,b,iScanLine,iPixel);
- else
- *lpb = BGR8(r,g,b);
- }
- else if(nBypp == 2)
- *((LPWORD)lpb) = BGR16(r,g,b);
- else if (nBypp == 3)
- *((LPDWORD)lpb) = BGR24(r,g,b);
- else if (nBypp == 4)
- *((LPDWORD)lpb) = BGR32(r,g,b);
- }
- else{
- SetPixel(Current->hDC, iPixel, iScanLine, RGB(r,g,b));
- }
-}
-
-//---------------------------------------------------------------------------
-
-void wmCreateDIBSection(
- HDC hDC,
- PWMC pwc, // handle of device context
- CONST BITMAPINFO *pbmi, // bitmap size, format, and color data
- UINT iUsage // color data type indicator: RGB values or palette indices
- )
-{
- DWORD dwSize = 0;
- DWORD dwScanWidth;
- UINT nBypp = pwc->cColorBits / 8;
- HDC hic;
-
- dwScanWidth = (((pwc->ScanWidth * nBypp)+ 3) & ~3);
-
- pwc->ScanWidth =pwc->pitch = dwScanWidth;
-
- if (stereo_flag)
- pwc->ScanWidth = 2* pwc->pitch;
-
- dwSize = sizeof(BITMAPINFO) + (dwScanWidth * pwc->height);
-
- pwc->dib.hFileMap = CreateFileMapping((HANDLE)PAGE_FILE,
- NULL,
- PAGE_READWRITE | SEC_COMMIT,
- 0,
- dwSize,
- NULL);
-
- if (!pwc->dib.hFileMap)
- return;
-
- pwc->dib.base = MapViewOfFile(pwc->dib.hFileMap,
- FILE_MAP_ALL_ACCESS,
- 0,
- 0,
- 0);
-
- if(!pwc->dib.base){
- CloseHandle(pwc->dib.hFileMap);
- return;
- }
-
-
- CopyMemory(pwc->dib.base, pbmi, sizeof(BITMAPINFO));
-
- hic = CreateIC("display", NULL, NULL, NULL);
- pwc->dib.hDC = CreateCompatibleDC(hic);
-
-
- pwc->hbmDIB = CreateDIBSection(hic,
- &(pwc->bmi),
- (iUsage ? DIB_PAL_COLORS : DIB_RGB_COLORS),
- &(pwc->pbPixels),
- pwc->dib.hFileMap,
- 0);
- pwc->ScreenMem = pwc->addrOffScreen = pwc->pbPixels;
- pwc->hOldBitmap = SelectObject(pwc->dib.hDC, pwc->hbmDIB);
-
- DeleteDC(hic);
-
- return;
-
-}
-
-//---------------------------------------------------------------------------
-
-void wmCreatePalette( PWMC pwdc )
-{
- /* Create a compressed and re-expanded 3:3:2 palette */
- int i;
- LOGPALETTE *pPal;
- BYTE rb, rs, gb, gs, bb, bs;
-
- pwdc->nColors = 0x100;
-
- pPal = (PLOGPALETTE)malloc(sizeof(LOGPALETTE) +
- pwdc->nColors * sizeof(PALETTEENTRY));
- memset( pPal, 0, sizeof(LOGPALETTE) + pwdc->nColors * sizeof(PALETTEENTRY) );
-
- pPal->palVersion = 0x300;
-
- rb = REDBITS;
- rs = REDSHIFT;
- gb = GREENBITS;
- gs = GREENSHIFT;
- bb = BLUEBITS;
- bs = BLUESHIFT;
-
- if (pwdc->db_flag) {
-
- /* Need to make two palettes: one for the screen DC and one for the DIB. */
- pPal->palNumEntries = pwdc->nColors;
- for (i = 0; i < pwdc->nColors; i++) {
- pPal->palPalEntry[i].peRed = componentFromIndex( i, rb, rs );
- pPal->palPalEntry[i].peGreen = componentFromIndex( i, gb, gs );
- pPal->palPalEntry[i].peBlue = componentFromIndex( i, bb, bs );
- pPal->palPalEntry[i].peFlags = 0;
- }
- pwdc->hGLPalette = CreatePalette( pPal );
- pwdc->hPalette = CreatePalette( pPal );
- }
-
- else {
- pPal->palNumEntries = pwdc->nColors;
- for (i = 0; i < pwdc->nColors; i++) {
- pPal->palPalEntry[i].peRed = componentFromIndex( i, rb, rs );
- pPal->palPalEntry[i].peGreen = componentFromIndex( i, gb, gs );
- pPal->palPalEntry[i].peBlue = componentFromIndex( i, bb, bs );
- pPal->palPalEntry[i].peFlags = 0;
- }
- pwdc->hGLPalette = CreatePalette( pPal );
- }
-
- free(pPal);
-
-}
-
-//---------------------------------------------------------------------------
-
-/* This function sets the color table of a DIB section
- * to match that of the destination DC
- */
-BOOL wmSetDibColors(PWMC pwc)
-{
- RGBQUAD *pColTab, *pRGB;
- PALETTEENTRY *pPal, *pPE;
- int i, nColors;
- BOOL bRet=TRUE;
- DWORD dwErr=0;
-
- /* Build a color table in the DIB that maps to the
- * selected palette in the DC.
- */
- nColors = 1 << pwc->cColorBits;
- pPal = (PALETTEENTRY *)malloc( nColors * sizeof(PALETTEENTRY));
- memset( pPal, 0, nColors * sizeof(PALETTEENTRY) );
- GetPaletteEntries( pwc->hGLPalette, 0, nColors, pPal );
- pColTab = (RGBQUAD *)malloc( nColors * sizeof(RGBQUAD));
- for (i = 0, pRGB = pColTab, pPE = pPal; i < nColors; i++, pRGB++, pPE++) {
- pRGB->rgbRed = pPE->peRed;
- pRGB->rgbGreen = pPE->peGreen;
- pRGB->rgbBlue = pPE->peBlue;
- }
- if(pwc->db_flag)
- bRet = SetDIBColorTable(pwc->dib.hDC, 0, nColors, pColTab );
-
- if(!bRet)
- dwErr = GetLastError();
-
- free( pColTab );
- free( pPal );
-
- return bRet;
-}
-
-//---------------------------------------------------------------------------
-
-static void wmSetPixelFormat( PWMC wc, HDC hDC)
-{
- if(wc->rgb_flag)
- wc->cColorBits = GetDeviceCaps(hDC, BITSPIXEL);
- else
- wc->cColorBits = 8;
- switch(wc->cColorBits){
- case 8:
- if(wc->dither_flag != GL_TRUE)
- wc->pixelformat = PF_INDEX8;
- else
- wc->pixelformat = PF_DITHER8;
- break;
- case 16:
- wc->pixelformat = PF_5R6G5B;
- break;
- case 32:
- wc->pixelformat = PF_8R8G8B;
- break;
- default:
- wc->pixelformat = PF_BADFORMAT;
- }
-}
-
-//---------------------------------------------------------------------------
-
-/*
- * This function creates the DIB section that is used for combined
- * GL and GDI calls
- */
-BOOL wmCreateBackingStore(PWMC pwc, long lxSize, long lySize)
-{
- HDC hdc = pwc->hDC;
- LPBITMAPINFO pbmi = &(pwc->bmi);
- int iUsage;
-
- pbmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- pbmi->bmiHeader.biWidth = lxSize;
- pbmi->bmiHeader.biHeight= -lySize;
- pbmi->bmiHeader.biPlanes = 1;
- if(pwc->rgb_flag)
- pbmi->bmiHeader.biBitCount = GetDeviceCaps(pwc->hDC, BITSPIXEL);
- else
- pbmi->bmiHeader.biBitCount = 8;
- pbmi->bmiHeader.biCompression = BI_RGB;
- pbmi->bmiHeader.biSizeImage = 0;
- pbmi->bmiHeader.biXPelsPerMeter = 0;
- pbmi->bmiHeader.biYPelsPerMeter = 0;
- pbmi->bmiHeader.biClrUsed = 0;
- pbmi->bmiHeader.biClrImportant = 0;
-
- iUsage = (pbmi->bmiHeader.biBitCount <= 8) ? DIB_PAL_COLORS : DIB_RGB_COLORS;
-
- pwc->cColorBits = pbmi->bmiHeader.biBitCount;
- pwc->ScanWidth = pwc->pitch = lxSize;
- pwc->width = lxSize;
- pwc->height = lySize;
-
- wmCreateDIBSection(hdc, pwc, pbmi, iUsage);
-
- if ((iUsage == DIB_PAL_COLORS) && !(pwc->hGLPalette)) {
- wmCreatePalette( pwc );
- wmSetDibColors( pwc );
- }
- wmSetPixelFormat(pwc, pwc->hDC);
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-/*
- * Free up the dib section that was created
- */
-BOOL wmDeleteBackingStore(PWMC pwc)
-{
- SelectObject(pwc->dib.hDC, pwc->hOldBitmap);
- DeleteDC(pwc->dib.hDC);
- DeleteObject(pwc->hbmDIB);
- UnmapViewOfFile(pwc->dib.base);
- CloseHandle(pwc->dib.hFileMap);
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-/*
- * Blit memory DC to screen DC
- */
-BOOL wmFlush(PWMC pwc, HDC hDC)
-{
- BOOL bRet = 0;
- DWORD dwErr = 0;
-
-// Now using bEmulateSingleBuffer in the calling function. KeithH
-
-// if(pwc->db_flag){
- bRet = BitBlt(hDC, 0, 0, pwc->width, pwc->height,
- pwc->dib.hDC, 0, 0, SRCCOPY);
-// }
-
- return bRet;
-
-}
-
-//---------------------------------------------------------------------------
-// Support Functions
-//---------------------------------------------------------------------------
-
-static void flush(struct gl_context* ctx)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
-/*
- if((Current->rgb_flag &&!(Current->db_flag))
- ||(!Current->rgb_flag))
- {
- wmFlush(Current, Current->hDC);
- }
-*/
- // Only flush if we're not in double-buffer mode. KeithH
- // The demo fractal.c calls glutSwapBuffers() then glFlush()!
- if (Current->bEmulateSingleBuffer) {
- wmFlush(Current, Current->hDC);
- }
-}
-
-
-//---------------------------------------------------------------------------
-
-/*
- * Set the color used to clear the color buffer.
- */
-//static void clear_color( struct gl_context* ctx, const GLchan color[4] )
-// Changed for Mesa 5.x. KeithH
-static void clear_color(
- struct gl_context* ctx,
- const GLfloat color[4])
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLubyte col[4];
- CLAMPED_FLOAT_TO_UBYTE(col[0], color[0]);
- CLAMPED_FLOAT_TO_UBYTE(col[1], color[1]);
- CLAMPED_FLOAT_TO_UBYTE(col[2], color[2]);
- Current->clearpixel = RGB(col[0], col[1], col[2]);
-}
-
-
-//---------------------------------------------------------------------------
-
-
-/*
- * Clear the specified region of the color buffer using the clear color
- * or index as specified by one of the two functions above.
- *
- * This procedure clears either the front and/or the back COLOR buffers.
- * Only the "left" buffer is cleared since we are not stereo.
- * Clearing of the other non-color buffers is left to the swrast.
- * We also only clear the color buffers if the color masks are all 1's.
- * Otherwise, we let swrast do it.
- */
-
-static clear(struct gl_context* ctx, GLbitfield mask,
- GLboolean all, GLint x, GLint y, GLint width, GLint height)
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- DWORD dwColor;
- WORD wColor;
- BYTE bColor;
- LPDWORD lpdw = (LPDWORD)Current->pbPixels;
- LPWORD lpw = (LPWORD)Current->pbPixels;
- LPBYTE lpb = Current->pbPixels;
- int lines;
- const GLuint *colorMask = (GLuint *) &ctx->Color.ColorMask;
-
- if (all){
- x=y=0;
- width=Current->width;
- height=Current->height;
- }
-
-
- /* sanity check - can't have right(stereo) buffers */
- assert((mask & (DD_FRONT_RIGHT_BIT | DD_BACK_RIGHT_BIT)) == 0);
-
- /* clear alpha */
- if ((mask & (DD_FRONT_LEFT_BIT | DD_BACK_RIGHT_BIT)) &&
- ctx->DrawBuffer->UseSoftwareAlphaBuffers &&
- ctx->Color.ColorMask[ACOMP]) {
- _swrast_clear_alpha_buffers( ctx );
- }
-
- if (*colorMask == 0xffffffff && ctx->Color.IndexMask == 0xffffffff) {
- if (mask & DD_BACK_LEFT_BIT) {
- /* Double-buffering - clear back buffer */
- UINT nBypp = Current->cColorBits / 8;
- int i = 0;
- int iSize = 0;
-
- assert(Current->db_flag==GL_TRUE); /* we'd better be double buffer */
- if(nBypp ==1 ){
- iSize = Current->width/4;
- bColor = BGR8(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- wColor = MAKEWORD(bColor,bColor);
- dwColor = MAKELONG(wColor, wColor);
- }
- if(nBypp == 2){
- iSize = Current->width / 2;
- wColor = BGR16(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- dwColor = MAKELONG(wColor, wColor);
- }
- else if(nBypp == 4){
- iSize = Current->width;
- dwColor = BGR32(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- }
-
- /* clear a line */
- while(i < iSize){
- *lpdw = dwColor;
- lpdw++;
- i++;
- }
-
- /* This is the 24bit case */
- if (nBypp == 3) {
- iSize = Current->width *3/4;
- dwColor = BGR24(GetRValue(Current->clearpixel),
- GetGValue(Current->clearpixel),
- GetBValue(Current->clearpixel));
- while(i < iSize){
- *lpdw = dwColor;
- lpb += nBypp;
- lpdw = (LPDWORD)lpb;
- i++;
- }
- }
-
- i = 0;
- if (stereo_flag)
- lines = height /2;
- else
- lines = height;
- /* copy cleared line to other lines in buffer */
- do {
- memcpy(lpb, Current->pbPixels, iSize*4);
- lpb += Current->ScanWidth;
- i++;
- }
- while (i<lines-1);
- mask &= ~DD_BACK_LEFT_BIT;
- } /* double-buffer */
-
- if (mask & DD_FRONT_LEFT_BIT) {
- /* single-buffer */
- HDC DC=DD_GETDC;
- HPEN Pen=CreatePen(PS_SOLID,1,Current->clearpixel);
- HBRUSH Brush=CreateSolidBrush(Current->clearpixel);
- HPEN Old_Pen=SelectObject(DC,Pen);
- HBRUSH Old_Brush=SelectObject(DC,Brush);
- Rectangle(DC,x,y,x+width,y+height);
- SelectObject(DC,Old_Pen);
- SelectObject(DC,Old_Brush);
- DeleteObject(Pen);
- DeleteObject(Brush);
- DD_RELEASEDC;
- mask &= ~DD_FRONT_LEFT_BIT;
- } /* single-buffer */
- } /* if masks are all 1's */
-
- /* Call swrast if there is anything left to clear (like DEPTH) */
- if (mask)
- _swrast_Clear( ctx, mask, all, x, y, width, height );
-}
-
-
-//---------------------------------------------------------------------------
-
-
-static void enable( struct gl_context* ctx, GLenum pname, GLboolean enable )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
-
- if (!Current)
- return;
-
- if (pname == GL_DITHER) {
- if(enable == GL_FALSE){
- Current->dither_flag = GL_FALSE;
- if(Current->cColorBits == 8)
- Current->pixelformat = PF_INDEX8;
- }
- else{
- if (Current->rgb_flag && Current->cColorBits == 8){
- Current->pixelformat = PF_DITHER8;
- Current->dither_flag = GL_TRUE;
- }
- else
- Current->dither_flag = GL_FALSE;
- }
- }
-}
-
-//---------------------------------------------------------------------------
-
-static GLboolean set_draw_buffer( struct gl_context* ctx, GLenum mode )
-{
- /* TODO: this could be better */
- if (mode==GL_FRONT_LEFT || mode==GL_BACK_LEFT) {
- return GL_TRUE;
- }
- else {
- return GL_FALSE;
- }
-}
-
-//---------------------------------------------------------------------------
-
-
-static void set_read_buffer(struct gl_context *ctx, struct gl_framebuffer *colorBuffer,
- GLenum buffer )
-{
- /* XXX todo */
- return;
-}
-
-
-//---------------------------------------------------------------------------
-
-
-/* Return characteristics of the output buffer. */
-//static void buffer_size( struct gl_context* ctx, GLuint *width, GLuint *height )
-// Altered for Mesa 5.x. KeithH
-static void buffer_size(
- struct gl_framebuffer *buffer,
- GLuint *width,
- GLuint *height)
-{
- // For some reason the context is not passed into this function.
- // Therefore we have to explicitly retrieve it.
- GET_CURRENT_CONTEXT(ctx);
-
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- int New_Size;
- RECT CR;
-
- GetClientRect(Current->Window,&CR);
-
- *width=CR.right;
- *height=CR.bottom;
-
- New_Size=((*width)!=Current->width) || ((*height)!=Current->height);
-
- if (New_Size){
- Current->width=*width;
- Current->height=*height;
- Current->ScanWidth=Current->width;
- if ((Current->ScanWidth%sizeof(long))!=0)
- Current->ScanWidth+=(sizeof(long)-(Current->ScanWidth%sizeof(long)));
-
- if (Current->db_flag){
- if (Current->rgb_flag==GL_TRUE && Current->dither_flag!=GL_TRUE){
- wmDeleteBackingStore(Current);
- wmCreateBackingStore(Current, Current->width, Current->height);
- }
- }
-
- }
-}
-
-
-
-/**********************************************************************/
-/***** Accelerated point, line, polygon rendering *****/
-/**********************************************************************/
-
-/* Accelerated routines are not implemented in 4.0. See OSMesa for ideas. */
-
-static void fast_rgb_points( struct gl_context* ctx, GLuint first, GLuint last )
-{
-}
-
-//---------------------------------------------------------------------------
-
-/* Return pointer to accelerated points function */
-extern tnl_points_func choose_points_function( struct gl_context* ctx )
-{
- return NULL;
-}
-
-//---------------------------------------------------------------------------
-
-static void fast_flat_rgb_line( struct gl_context* ctx, GLuint v0,
- GLuint v1, GLuint pv )
-{
-}
-
-//---------------------------------------------------------------------------
-
-static tnl_line_func choose_line_function( struct gl_context* ctx )
-{
-}
-
-
-/**********************************************************************/
-/***** Span-based pixel drawing *****/
-/**********************************************************************/
-
-
-/* Write a horizontal span of 32-bit color-index pixels with a boolean mask. */
-static void write_ci32_span( const struct gl_context* ctx,
- GLuint n, GLint x, GLint y,
- const GLuint index[],
- const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i]=index[i];
-}
-
-
-//---------------------------------------------------------------------------
-
-/* Write a horizontal span of 8-bit color-index pixels with a boolean mask. */
-static void write_ci8_span( const struct gl_context* ctx,
- GLuint n, GLint x, GLint y,
- const GLubyte index[],
- const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- PBYTE Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i]=index[i];
-}
-
-
-//---------------------------------------------------------------------------
-
-
-/*
- * Write a horizontal span of pixels with a boolean mask. The current
- * color index is used for all pixels.
- */
-static void write_mono_ci_span(const struct gl_context* ctx,
- GLuint n,GLint x,GLint y,
- GLuint colorIndex, const GLubyte mask[])
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i]=colorIndex;
-}
-
-//---------------------------------------------------------------------------
-
-/*
- * To improve the performance of this routine, frob the data into an actual
- * scanline and call bitblt on the complete scan line instead of SetPixel.
- */
-
-/* Write a horizontal span of RGBA color pixels with a boolean mask. */
-static void write_rgba_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y,
- const GLubyte rgba[][4], const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- PWMC pwc = Current;
-
- if (pwc->rgb_flag==GL_TRUE)
- {
- GLuint i;
- HDC DC=DD_GETDC;
- y=FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, y, x + i,
- rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]);
- }
- else {
- for (i=0; i<n; i++)
- wmSetPixel(pwc, y, x + i,
- rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP] );
- }
- DD_RELEASEDC;
- }
- else
- {
- GLuint i;
- BYTE *Mem=Current->ScreenMem+y*Current->ScanWidth+x;
- y = FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i] = GetNearestPaletteIndex(Current->hPal,
- RGB(rgba[i][RCOMP],
- rgba[i][GCOMP],
- rgba[i][BCOMP]));
- }
- else {
- for (i=0; i<n; i++)
- Mem[i] = GetNearestPaletteIndex(Current->hPal,
- RGB(rgba[i][RCOMP],
- rgba[i][GCOMP],
- rgba[i][BCOMP]));
- }
- }
-}
-
-//---------------------------------------------------------------------------
-
-/* Write a horizontal span of RGB color pixels with a boolean mask. */
-static void write_rgb_span( const struct gl_context* ctx,
- GLuint n, GLint x, GLint y,
- const GLubyte rgb[][3], const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- PWMC pwc = Current;
-
- if (pwc->rgb_flag==GL_TRUE)
- {
- GLuint i;
- HDC DC=DD_GETDC;
- y=FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, y, x + i,
- rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP]);
- }
- else {
- for (i=0; i<n; i++)
- wmSetPixel(pwc, y, x + i,
- rgb[i][RCOMP], rgb[i][GCOMP], rgb[i][BCOMP] );
- }
- DD_RELEASEDC;
- }
- else
- {
- GLuint i;
- BYTE *Mem=Current->ScreenMem+y*Current->ScanWidth+x;
- y = FLIP(y);
- if (mask) {
- for (i=0; i<n; i++)
- if (mask[i])
- Mem[i] = GetNearestPaletteIndex(Current->hPal,
- RGB(rgb[i][RCOMP],
- rgb[i][GCOMP],
- rgb[i][BCOMP]));
- }
- else {
- for (i=0; i<n; i++)
- Mem[i] = GetNearestPaletteIndex(Current->hPal,
- RGB(rgb[i][RCOMP],
- rgb[i][GCOMP],
- rgb[i][BCOMP]));
- }
- }
-}
-
-//---------------------------------------------------------------------------
-
-/*
- * Write a horizontal span of pixels with a boolean mask. The current color
- * is used for all pixels.
- */
-static void write_mono_rgba_span( const struct gl_context* ctx,
- GLuint n, GLint x, GLint y,
- const GLchan color[4], const GLubyte mask[])
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- ULONG pixel = RGB( color[RCOMP], color[GCOMP], color[BCOMP] );
- GLuint i;
- HDC DC=DD_GETDC;
- PWMC pwc = Current;
- assert(Current->rgb_flag==GL_TRUE);
- y=FLIP(y);
- if(Current->rgb_flag==GL_TRUE){
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc,y,x+i,color[RCOMP], color[GCOMP], color[BCOMP]);
- }
- else {
- for (i=0; i<n; i++)
- if (mask[i])
- SetPixel(DC, y, x+i, pixel);
- }
- DD_RELEASEDC;
-}
-
-
-
-/**********************************************************************/
-/***** Array-based pixel drawing *****/
-/**********************************************************************/
-
-
-/* Write an array of 32-bit index pixels with a boolean mask. */
-static void write_ci32_pixels( const struct gl_context* ctx,
- GLuint n, const GLint x[], const GLint y[],
- const GLuint index[], const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- BYTE *Mem=Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i];
- *Mem = index[i];
- }
- }
-}
-
-
-//---------------------------------------------------------------------------
-
-
-/*
- * Write an array of pixels with a boolean mask. The current color
- * index is used for all pixels.
- */
-static void write_mono_ci_pixels( const struct gl_context* ctx,
- GLuint n,
- const GLint x[], const GLint y[],
- GLuint colorIndex, const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- BYTE *Mem=Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i];
- *Mem = colorIndex;
- }
- }
-}
-
-
-//---------------------------------------------------------------------------
-
-
-/* Write an array of RGBA pixels with a boolean mask. */
-static void write_rgba_pixels( const struct gl_context* ctx,
- GLuint n, const GLint x[], const GLint y[],
- const GLubyte rgba[][4], const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- PWMC pwc = Current;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, FLIP(y[i]), x[i],
- rgba[i][RCOMP], rgba[i][GCOMP], rgba[i][BCOMP]);
- DD_RELEASEDC;
-}
-
-
-//---------------------------------------------------------------------------
-
-
-/*
- * Write an array of pixels with a boolean mask. The current color
- * is used for all pixels.
- */
-static void write_mono_rgba_pixels( const struct gl_context* ctx,
- GLuint n,
- const GLint x[], const GLint y[],
- const GLchan color[4],
- const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- PWMC pwc = Current;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- for (i=0; i<n; i++)
- if (mask[i])
- wmSetPixel(pwc, FLIP(y[i]),x[i],color[RCOMP],
- color[GCOMP], color[BCOMP]);
- DD_RELEASEDC;
-}
-
-/**********************************************************************/
-/***** Read spans/arrays of pixels *****/
-/**********************************************************************/
-
-/* Read a horizontal span of color-index pixels. */
-static void read_ci32_span( const struct gl_context* ctx, GLuint n, GLint x, GLint y,
- GLuint index[])
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- BYTE *Mem=Current->ScreenMem+FLIP(y)*Current->ScanWidth+x;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++)
- index[i]=Mem[i];
-}
-
-//---------------------------------------------------------------------------
-
-/* Read an array of color index pixels. */
-static void read_ci32_pixels( const struct gl_context* ctx,
- GLuint n, const GLint x[], const GLint y[],
- GLuint indx[], const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- assert(Current->rgb_flag==GL_FALSE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- indx[i]=*(Current->ScreenMem+FLIP(y[i])*Current->ScanWidth+x[i]);
- }
- }
-}
-
-//---------------------------------------------------------------------------
-
-/* Read a horizontal span of color pixels. */
-static void read_rgba_span( const struct gl_context* ctx,
- GLuint n, GLint x, GLint y,
- GLubyte rgba[][4] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- UINT i;
- COLORREF Color;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- y = Current->height - y - 1;
- for (i=0; i<n; i++) {
- Color=GetPixel(DC,x+i,y);
- rgba[i][RCOMP] = GetRValue(Color);
- rgba[i][GCOMP] = GetGValue(Color);
- rgba[i][BCOMP] = GetBValue(Color);
- rgba[i][ACOMP] = 255;
- }
- DD_RELEASEDC;
-}
-
-//---------------------------------------------------------------------------
-
-/* Read an array of color pixels. */
-static void read_rgba_pixels( const struct gl_context* ctx,
- GLuint n, const GLint x[], const GLint y[],
- GLubyte rgba[][4], const GLubyte mask[] )
-{
- GLD_context *gldCtx = GLD_GET_CONTEXT(ctx);
- WMesaContext *Current = GLD_GET_WMESA_DRIVER(gldCtx);
- GLuint i;
- COLORREF Color;
- HDC DC=DD_GETDC;
- assert(Current->rgb_flag==GL_TRUE);
- for (i=0; i<n; i++) {
- if (mask[i]) {
- GLint y2 = Current->height - y[i] - 1;
- Color=GetPixel(DC,x[i],y2);
- rgba[i][RCOMP] = GetRValue(Color);
- rgba[i][GCOMP] = GetGValue(Color);
- rgba[i][BCOMP] = GetBValue(Color);
- rgba[i][ACOMP] = 255;
- }
- }
- DD_RELEASEDC;
-}
-
-//---------------------------------------------------------------------------
-
-static void wmesa_update_state(
- struct gl_context *ctx,
- GLuint new_state)
-{
- _swrast_InvalidateState( ctx, new_state );
- _swsetup_InvalidateState( ctx, new_state );
- _vbo_InvalidateState( ctx, new_state );
- _tnl_InvalidateState( ctx, new_state );
-}
-
-//---------------------------------------------------------------------------
-
-static void wmesa_viewport(
- struct gl_context *ctx,
- GLint x,
- GLint y,
- GLsizei w,
- GLsizei h)
-{
-// ctx->Driver.ResizeBuffersMESA(ctx);
-}
-
-//---------------------------------------------------------------------------
-
-static void wmesa_update_state_first_time(
- struct gl_context *ctx,
- GLuint new_state)
-{
- struct swrast_device_driver *swdd = _swrast_GetDeviceDriverReference( ctx );
- TNLcontext *tnl = TNL_CONTEXT(ctx);
-
- _mesa_init_driver_functions(&ctx->Driver);
-
- /*
- * XXX these function pointers could be initialized just once during
- * context creation since they don't depend on any state changes.
- * kws - This is true - this function gets called a lot and it
- * would be good to minimize setting all this when not needed.
- */
- // Good idea, so I'll do it. KeithH. :-)
-
- ctx->Driver.GetString = _gldGetStringGeneric;
- ctx->Driver.UpdateState = wmesa_update_state;
- ctx->Driver.DrawBuffer = set_draw_buffer;
- ctx->Driver.ResizeBuffers = _swrast_alloc_buffers;
- ctx->Driver.GetBufferSize = buffer_size;
-
- ctx->Driver.Viewport = wmesa_viewport;
-
- ctx->Driver.Clear = clear;
-
- ctx->Driver.Flush = flush;
- ctx->Driver.ClearColor = clear_color;
- ctx->Driver.Enable = enable;
-
-
- // Does not apply for Mesa 5.x
- //ctx->Driver.BaseCompressedTexFormat = _mesa_base_compressed_texformat;
- //ctx->Driver.CompressedTextureSize = _mesa_compressed_texture_size;
- //ctx->Driver.GetCompressedTexImage = _mesa_get_compressed_teximage;
-
- swdd->SetBuffer = set_read_buffer;
-
-
- /* Pixel/span writing functions: */
- swdd->WriteRGBASpan = write_rgba_span;
- swdd->WriteRGBSpan = write_rgb_span;
- swdd->WriteMonoRGBASpan = write_mono_rgba_span;
- swdd->WriteRGBAPixels = write_rgba_pixels;
- swdd->WriteMonoRGBAPixels = write_mono_rgba_pixels;
- swdd->WriteCI32Span = write_ci32_span;
- swdd->WriteCI8Span = write_ci8_span;
- swdd->WriteMonoCISpan = write_mono_ci_span;
- swdd->WriteCI32Pixels = write_ci32_pixels;
- swdd->WriteMonoCIPixels = write_mono_ci_pixels;
-
- swdd->ReadCI32Span = read_ci32_span;
- swdd->ReadRGBASpan = read_rgba_span;
- swdd->ReadCI32Pixels = read_ci32_pixels;
- swdd->ReadRGBAPixels = read_rgba_pixels;
-
-
- tnl->Driver.RunPipeline = _tnl_run_pipeline;
-
- wmesa_update_state(ctx, new_state);
-}
-
-//---------------------------------------------------------------------------
-// Driver interface functions
-//---------------------------------------------------------------------------
-
-BOOL gldCreateDrawable_MesaSW(
- DGL_ctx *pCtx,
- BOOL bPersistantInterface,
- BOOL bPersistantBuffers)
-{
- WMesaContext *c;
- GLboolean true_color_flag;
- GLboolean rgb_flag = GL_TRUE;
- GLboolean db_flag = GL_TRUE;
-
- if (pCtx == NULL)
- return FALSE;
-
- c = (struct wmesa_context * ) calloc(1,sizeof(struct wmesa_context));
- if (!c)
- return FALSE;
-
- pCtx->glPriv = c;
-
- c->hDC = pCtx->hDC;
- c->Window = pCtx->hWnd;
-
- true_color_flag = GetDeviceCaps(pCtx->hDC, BITSPIXEL) > 8;
-
-
-#ifdef DITHER
- if ((true_color_flag==GL_FALSE) && (rgb_flag == GL_TRUE)){
- c->dither_flag = GL_TRUE;
- c->hPalHalfTone = WinGCreateHalftonePalette();
- }
- else
- c->dither_flag = GL_FALSE;
-#else
- c->dither_flag = GL_FALSE;
-#endif
-
-
- if (rgb_flag==GL_FALSE)
- {
- c->rgb_flag = GL_FALSE;
-#if 0
- /* Old WinG stuff???? */
- c->db_flag = db_flag =GL_TRUE; /* WinG requires double buffering */
- printf("Single buffer is not supported in color index mode, ",
- "setting to double buffer.\n");
-#endif
- }
- else
- {
- c->rgb_flag = GL_TRUE;
- }
-
-// db_flag = pCtx->lpPF->pfd.dwFlags & PFD_DOUBLEBUFFER ? GL_TRUE : GL_FALSE;
- db_flag = GL_TRUE; // Force double-buffer
- if (db_flag) {
- c->db_flag = 1;
- /* Double buffered */
- {
- wmCreateBackingStore(c, pCtx->dwWidth, pCtx->dwHeight);
-
- }
- } else {
- /* Single Buffered */
- if (c->rgb_flag)
- c->db_flag = 0;
- }
-
- c->bEmulateSingleBuffer = (pCtx->lpPF->pfd.dwFlags & PFD_DOUBLEBUFFER)
- ? FALSE : TRUE;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldResizeDrawable_MesaSW(
- DGL_ctx *ctx,
- BOOL bDefaultDriver,
- BOOL bPersistantInterface,
- BOOL bPersistantBuffers)
-{
- WMesaContext *c;
-
- if (ctx == NULL)
- return FALSE;
-
- c = ctx->glPriv;
- if (c == NULL)
- return FALSE;
-
- c->hDC = ctx->hDC;
- c->Window = ctx->hWnd;
-// c->width = ctx->dwWidth;
-// c->height = ctx->dwHeight;
-
- if (c->db_flag) {
- wmDeleteBackingStore(c);
- wmCreateBackingStore(c, ctx->dwWidth, ctx->dwHeight);
- }
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldDestroyDrawable_MesaSW(
- DGL_ctx *ctx)
-{
- WMesaContext *c;
-
- if (ctx == NULL)
- return FALSE;
-
- c = ctx->glPriv;
- if (c == NULL)
- return FALSE;
-
- if (c->hPalHalfTone != NULL)
- DeleteObject(c->hPalHalfTone);
-
- if (c->db_flag)
- wmDeleteBackingStore(c);
-
- free(c);
-
- ctx->glPriv = NULL;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldCreatePrivateGlobals_MesaSW(void)
-{
- // Mesa Software driver needs no private globals
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldDestroyPrivateGlobals_MesaSW(void)
-{
- // Mesa Software driver needs no private globals
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldBuildPixelformatList_MesaSW(void)
-{
- // Release any existing pixelformat list
- if (glb.lpPF) {
- free(glb.lpPF);
- }
-
- glb.nPixelFormatCount = 0;
- glb.lpPF = NULL;
-
- glb.lpPF = (DGL_pixelFormat *)calloc(2, sizeof(DGL_pixelFormat));
- if (glb.lpPF == NULL)
- return FALSE;
- // Single-buffered
- memcpy(&glb.lpPF[0], &pfTemplateMesaSW, sizeof(DGL_pixelFormat));
- glb.lpPF[0].pfd.dwFlags &= ~PFD_DOUBLEBUFFER; // Remove doublebuffer flag
- // Double-buffered
- memcpy(&glb.lpPF[1], &pfTemplateMesaSW, sizeof(DGL_pixelFormat));
- glb.nPixelFormatCount = 2;
-
- // Mark list as 'current'
- glb.bPixelformatsDirty = FALSE;
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldInitialiseMesa_MesaSW(
- DGL_ctx *gld)
-{
- struct gl_context *ctx;
-
- if (gld == NULL)
- return FALSE;
-
- ctx = gld->glCtx;
-
- // Set max texture size to 256
- ctx->Const.MaxTextureLevels = 8;
-
- // Multitexture enable/disable
- ctx->Const.MaxTextureUnits = (glb.bMultitexture) ? MAX_TEXTURE_UNITS : 1;
-
- /* Initialize the software rasterizer and helper modules.*/
-
- // Added this to force max texture diminsion to 256. KeithH
- ctx->Const.MaxTextureLevels = 8;
- ctx->Const.MaxDrawBuffers = 1;
-
- _mesa_enable_sw_extensions(ctx);
- _mesa_enable_imaging_extensions(ctx);
- _mesa_enable_1_3_extensions(ctx);
-
-// _swrast_CreateContext( ctx );
-// _vbo_CreateContext( ctx );
-// _tnl_CreateContext( ctx );
-// _swsetup_CreateContext( ctx );
-
- _swsetup_Wakeup( ctx );
-
- wmesa_update_state_first_time(ctx, ~0);
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldSwapBuffers_MesaSW(
- DGL_ctx *ctx,
- HDC hDC,
- HWND hWnd)
-{
- WMesaContext *c;
-
- if (ctx == NULL)
- return FALSE;
-
- c = ctx->glPriv;
- if (c == NULL)
- return FALSE;
-
- /* If we're swapping the buffer associated with the current context
- * we have to flush any pending rendering commands first.
- */
-
- // Altered to respect bEmulateSingleBuffer. KeithH
-// if (c->db_flag)
- if (!c->bEmulateSingleBuffer)
- wmFlush(c, hDC);
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
-PROC gldGetProcAddress_MesaSW(
- LPCSTR a)
-{
- int i;
- PROC proc = NULL;
-
- for (i=0; GLD_extList[i].proc; i++) {
- if (!strcmp(a, GLD_extList[i].name)) {
- proc = GLD_extList[i].proc;
- break;
- }
- }
-
- gldLogPrintf(GLDLOG_INFO, "GetProcAddress: %s (%s)", a, proc ? "OK" : "Failed");
-
- return proc;
-}
-
-//---------------------------------------------------------------------------
-
-BOOL gldGetDisplayMode_MesaSW(
- DGL_ctx *ctx,
- GLD_displayMode *glddm)
-{
- HDC hdcDesktop;
-
- if (glddm == NULL)
- return FALSE;
-
- //
- // A bit hacky... KeithH
- //
-
- hdcDesktop = GetDC(NULL);
- glddm->Width = GetDeviceCaps(hdcDesktop, HORZRES);
- glddm->Height = GetDeviceCaps(hdcDesktop, VERTRES);
- glddm->BPP = GetDeviceCaps(hdcDesktop, BITSPIXEL);
- glddm->Refresh = 0;
- ReleaseDC(0, hdcDesktop);
-
- return TRUE;
-}
-
-//---------------------------------------------------------------------------
-
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/opengl32.def b/mesalib/src/mesa/drivers/windows/gldirect/opengl32.def
deleted file mode 100644
index b213b6e04..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/opengl32.def
+++ /dev/null
@@ -1,488 +0,0 @@
-;****************************************************************************
-;*
-;* Mesa 3-D graphics library
-;* Direct3D Driver Interface
-;*
-;* ========================================================================
-;*
-;* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-;*
-;* Permission is hereby granted, free of charge, to any person obtaining a
-;* copy of this software and associated documentation files (the "Software"),
-;* to deal in the Software without restriction, including without limitation
-;* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-;* and/or sell copies of the Software, and to permit persons to whom the
-;* Software is furnished to do so, subject to the following conditions:
-;*
-;* The above copyright notice and this permission notice shall be included
-;* in all copies or substantial portions of the Software.
-;*
-;* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-;* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-;* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-;* SCITECH SOFTWARE INC 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.
-;*
-;* ======================================================================
-;*
-;* Language: ANSI C
-;* Environment: Windows 9x/2000/XP/XBox (Win32)
-;*
-;* Description: DLL Module definition file
-;*
-;****************************************************************************/
-
-DESCRIPTION 'GLDirect'
-
-VERSION 3.0
-
-EXPORTS
- glAccum=glAccum @1
- glAlphaFunc=glAlphaFunc @2
- glAreTexturesResident=glAreTexturesResident @3
- glArrayElement=glArrayElement @4
- glBegin=glBegin @5
- glBindTexture=glBindTexture @6
- glBitmap=glBitmap @7
- glBlendFunc=glBlendFunc @8
- glCallList=glCallList @9
- glCallLists=glCallLists @10
- glClear=glClear @11
- glClearAccum=glClearAccum @12
- glClearIndex=glClearIndex @13
- glClearColor=glClearColor @14
- glClearDepth=glClearDepth @15
- glClearStencil=glClearStencil @16
- glClipPlane=glClipPlane @17
- glColor3b=glColor3b @18
- glColor3d=glColor3d @19
- glColor3f=glColor3f @20
- glColor3i=glColor3i @21
- glColor3s=glColor3s @22
- glColor3ub=glColor3ub @23
- glColor3ui=glColor3ui @24
- glColor3us=glColor3us @25
- glColor4b=glColor4b @26
- glColor4d=glColor4d @27
- glColor4f=glColor4f @28
- glColor4i=glColor4i @29
- glColor4s=glColor4s @30
- glColor4ub=glColor4ub @31
- glColor4ui=glColor4ui @32
- glColor4us=glColor4us @33
- glColor3bv=glColor3bv @34
- glColor3dv=glColor3dv @35
- glColor3fv=glColor3fv @36
- glColor3iv=glColor3iv @37
- glColor3sv=glColor3sv @38
- glColor3ubv=glColor3ubv @39
- glColor3uiv=glColor3uiv @40
- glColor3usv=glColor3usv @41
- glColor4bv=glColor4bv @42
- glColor4dv=glColor4dv @43
- glColor4fv=glColor4fv @44
- glColor4iv=glColor4iv @45
- glColor4sv=glColor4sv @46
- glColor4ubv=glColor4ubv @47
- glColor4uiv=glColor4uiv @48
- glColor4usv=glColor4usv @49
- glColorMask=glColorMask @50
- glColorMaterial=glColorMaterial @51
- glColorPointer=glColorPointer @52
- glColorTableEXT=glColorTableEXT @53
- glColorSubTableEXT=glColorSubTableEXT @54
- glCopyPixels=glCopyPixels @55
- glCopyTexImage1D=glCopyTexImage1D @56
- glCopyTexImage2D=glCopyTexImage2D @57
- glCopyTexSubImage1D=glCopyTexSubImage1D @58
- glCopyTexSubImage2D=glCopyTexSubImage2D @59
- glCullFace=glCullFace @60
- glDepthFunc=glDepthFunc @61
- glDepthMask=glDepthMask @62
- glDepthRange=glDepthRange @63
- glDeleteLists=glDeleteLists @64
- glDeleteTextures=glDeleteTextures @65
- glDisable=glDisable @66
- glDisableClientState=glDisableClientState @67
- glDrawArrays=glDrawArrays @68
- glDrawBuffer=glDrawBuffer @69
- glDrawElements=glDrawElements @70
- glDrawPixels=glDrawPixels @71
- glEnable=glEnable @72
- glEnableClientState=glEnableClientState @73
- glEnd=glEnd @74
- glEndList=glEndList @75
- glEvalCoord1d=glEvalCoord1d @76
- glEvalCoord1f=glEvalCoord1f @77
- glEvalCoord1dv=glEvalCoord1dv @78
- glEvalCoord1fv=glEvalCoord1fv @79
- glEvalCoord2d=glEvalCoord2d @80
- glEvalCoord2f=glEvalCoord2f @81
- glEvalCoord2dv=glEvalCoord2dv @82
- glEvalCoord2fv=glEvalCoord2fv @83
- glEvalPoint1=glEvalPoint1 @84
- glEvalPoint2=glEvalPoint2 @85
- glEvalMesh1=glEvalMesh1 @86
- glEdgeFlag=glEdgeFlag @87
- glEdgeFlagv=glEdgeFlagv @88
- glEdgeFlagPointer=glEdgeFlagPointer @89
- glEvalMesh2=glEvalMesh2 @90
- glFeedbackBuffer=glFeedbackBuffer @91
- glFinish=glFinish @92
- glFlush=glFlush @93
- glFogf=glFogf @94
- glFogi=glFogi @95
- glFogfv=glFogfv @96
- glFogiv=glFogiv @97
- glFrontFace=glFrontFace @98
- glFrustum=glFrustum @99
- glGenLists=glGenLists @100
- glGenTextures=glGenTextures @101
- glGetBooleanv=glGetBooleanv @102
- glGetClipPlane=glGetClipPlane @103
- glGetColorTableEXT=glGetColorTableEXT @104
- glGetColorTableParameterivEXT=glGetColorTableParameterivEXT @105
- glGetColorTableParameterfvEXT=glGetColorTableParameterfvEXT @106
- glGetDoublev=glGetDoublev @107
- glGetError=glGetError @108
- glGetFloatv=glGetFloatv @109
- glGetIntegerv=glGetIntegerv @110
- glGetLightfv=glGetLightfv @111
- glGetLightiv=glGetLightiv @112
- glGetMapdv=glGetMapdv @113
- glGetMapfv=glGetMapfv @114
- glGetMapiv=glGetMapiv @115
- glGetMaterialfv=glGetMaterialfv @116
- glGetMaterialiv=glGetMaterialiv @117
- glGetPixelMapfv=glGetPixelMapfv @118
- glGetPixelMapuiv=glGetPixelMapuiv @119
- glGetPixelMapusv=glGetPixelMapusv @120
- glGetPointerv=glGetPointerv @121
- glGetPolygonStipple=glGetPolygonStipple @122
- glGetString=glGetString @123
- glGetTexEnvfv=glGetTexEnvfv @124
- glGetTexEnviv=glGetTexEnviv @125
- glGetTexGeniv=glGetTexGeniv @126
- glGetTexGendv=glGetTexGendv @127
- glGetTexGenfv=glGetTexGenfv @128
- glGetTexImage=glGetTexImage @129
- glGetTexLevelParameterfv=glGetTexLevelParameterfv @130
- glGetTexLevelParameteriv=glGetTexLevelParameteriv @131
- glGetTexParameterfv=glGetTexParameterfv @132
- glGetTexParameteriv=glGetTexParameteriv @133
- glHint=glHint @134
- glIndexd=glIndexd @135
- glIndexf=glIndexf @136
- glIndexi=glIndexi @137
- glIndexs=glIndexs @138
- glIndexub=glIndexub @139
- glIndexdv=glIndexdv @140
- glIndexfv=glIndexfv @141
- glIndexiv=glIndexiv @142
- glIndexsv=glIndexsv @143
- glIndexubv=glIndexubv @144
- glIndexMask=glIndexMask @145
- glIndexPointer=glIndexPointer @146
- glInterleavedArrays=glInterleavedArrays @147
- glInitNames=glInitNames @148
- glIsList=glIsList @149
- glIsTexture=glIsTexture @150
- glLightf=glLightf @151
- glLighti=glLighti @152
- glLightfv=glLightfv @153
- glLightiv=glLightiv @154
- glLightModelf=glLightModelf @155
- glLightModeli=glLightModeli @156
- glLightModelfv=glLightModelfv @157
- glLightModeliv=glLightModeliv @158
- glLineWidth=glLineWidth @159
- glLineStipple=glLineStipple @160
- glListBase=glListBase @161
- glLoadIdentity=glLoadIdentity @162
- glLoadMatrixd=glLoadMatrixd @163
- glLoadMatrixf=glLoadMatrixf @164
- glLoadName=glLoadName @165
- glLogicOp=glLogicOp @166
- glMap1d=glMap1d @167
- glMap1f=glMap1f @168
- glMap2d=glMap2d @169
- glMap2f=glMap2f @170
- glMapGrid1d=glMapGrid1d @171
- glMapGrid1f=glMapGrid1f @172
- glMapGrid2d=glMapGrid2d @173
- glMapGrid2f=glMapGrid2f @174
- glMaterialf=glMaterialf @175
- glMateriali=glMateriali @176
- glMaterialfv=glMaterialfv @177
- glMaterialiv=glMaterialiv @178
- glMatrixMode=glMatrixMode @179
- glMultMatrixd=glMultMatrixd @180
- glMultMatrixf=glMultMatrixf @181
- glNewList=glNewList @182
- glNormal3b=glNormal3b @183
- glNormal3d=glNormal3d @184
- glNormal3f=glNormal3f @185
- glNormal3i=glNormal3i @186
- glNormal3s=glNormal3s @187
- glNormal3bv=glNormal3bv @188
- glNormal3dv=glNormal3dv @189
- glNormal3fv=glNormal3fv @190
- glNormal3iv=glNormal3iv @191
- glNormal3sv=glNormal3sv @192
- glNormalPointer=glNormalPointer @193
- glOrtho=glOrtho @194
- glPassThrough=glPassThrough @195
- glPixelMapfv=glPixelMapfv @196
- glPixelMapuiv=glPixelMapuiv @197
- glPixelMapusv=glPixelMapusv @198
- glPixelStoref=glPixelStoref @199
- glPixelStorei=glPixelStorei @200
- glPixelTransferf=glPixelTransferf @201
- glPixelTransferi=glPixelTransferi @202
- glPixelZoom=glPixelZoom @203
- glPointSize=glPointSize @204
- glPolygonMode=glPolygonMode @205
- glPolygonOffset=glPolygonOffset @206
- glPolygonOffsetEXT=glPolygonOffsetEXT @207
- glPolygonStipple=glPolygonStipple @208
- glPopAttrib=glPopAttrib @209
- glPopClientAttrib=glPopClientAttrib @210
- glPopMatrix=glPopMatrix @211
- glPopName=glPopName @212
- glPrioritizeTextures=glPrioritizeTextures @213
- glPushMatrix=glPushMatrix @214
- glRasterPos2d=glRasterPos2d @215
- glRasterPos2f=glRasterPos2f @216
- glRasterPos2i=glRasterPos2i @217
- glRasterPos2s=glRasterPos2s @218
- glRasterPos3d=glRasterPos3d @219
- glRasterPos3f=glRasterPos3f @220
- glRasterPos3i=glRasterPos3i @221
- glRasterPos3s=glRasterPos3s @222
- glRasterPos4d=glRasterPos4d @223
- glRasterPos4f=glRasterPos4f @224
- glRasterPos4i=glRasterPos4i @225
- glRasterPos4s=glRasterPos4s @226
- glRasterPos2dv=glRasterPos2dv @227
- glRasterPos2fv=glRasterPos2fv @228
- glRasterPos2iv=glRasterPos2iv @229
- glRasterPos2sv=glRasterPos2sv @230
- glRasterPos3dv=glRasterPos3dv @231
- glRasterPos3fv=glRasterPos3fv @232
- glRasterPos3iv=glRasterPos3iv @233
- glRasterPos3sv=glRasterPos3sv @234
- glRasterPos4dv=glRasterPos4dv @235
- glRasterPos4fv=glRasterPos4fv @236
- glRasterPos4iv=glRasterPos4iv @237
- glRasterPos4sv=glRasterPos4sv @238
- glReadBuffer=glReadBuffer @239
- glReadPixels=glReadPixels @240
- glRectd=glRectd @241
- glRectf=glRectf @242
- glRecti=glRecti @243
- glRects=glRects @244
- glRectdv=glRectdv @245
- glRectfv=glRectfv @246
- glRectiv=glRectiv @247
- glRectsv=glRectsv @248
- glScissor=glScissor @249
- glIsEnabled=glIsEnabled @250
- glPushAttrib=glPushAttrib @251
- glPushClientAttrib=glPushClientAttrib @252
- glPushName=glPushName @253
- glRenderMode=glRenderMode @254
- glRotated=glRotated @255
- glRotatef=glRotatef @256
- glSelectBuffer=glSelectBuffer @257
- glScaled=glScaled @258
- glScalef=glScalef @259
- glShadeModel=glShadeModel @260
- glStencilFunc=glStencilFunc @261
- glStencilMask=glStencilMask @262
- glStencilOp=glStencilOp @263
- glTexCoord1d=glTexCoord1d @264
- glTexCoord1f=glTexCoord1f @265
- glTexCoord1i=glTexCoord1i @266
- glTexCoord1s=glTexCoord1s @267
- glTexCoord2d=glTexCoord2d @268
- glTexCoord2f=glTexCoord2f @269
- glTexCoord2i=glTexCoord2i @270
- glTexCoord2s=glTexCoord2s @271
- glTexCoord3d=glTexCoord3d @272
- glTexCoord3f=glTexCoord3f @273
- glTexCoord3i=glTexCoord3i @274
- glTexCoord3s=glTexCoord3s @275
- glTexCoord4d=glTexCoord4d @276
- glTexCoord4f=glTexCoord4f @277
- glTexCoord4i=glTexCoord4i @278
- glTexCoord4s=glTexCoord4s @279
- glTexCoord1dv=glTexCoord1dv @280
- glTexCoord1fv=glTexCoord1fv @281
- glTexCoord1iv=glTexCoord1iv @282
- glTexCoord1sv=glTexCoord1sv @283
- glTexCoord2dv=glTexCoord2dv @284
- glTexCoord2fv=glTexCoord2fv @285
- glTexCoord2iv=glTexCoord2iv @286
- glTexCoord2sv=glTexCoord2sv @287
- glTexCoord3dv=glTexCoord3dv @288
- glTexCoord3fv=glTexCoord3fv @289
- glTexCoord3iv=glTexCoord3iv @290
- glTexCoord3sv=glTexCoord3sv @291
- glTexCoord4dv=glTexCoord4dv @292
- glTexCoord4fv=glTexCoord4fv @293
- glTexCoord4iv=glTexCoord4iv @294
- glTexCoord4sv=glTexCoord4sv @295
- glTexCoordPointer=glTexCoordPointer @296
- glTexGend=glTexGend @297
- glTexGenf=glTexGenf @298
- glTexGeni=glTexGeni @299
- glTexGendv=glTexGendv @300
- glTexGeniv=glTexGeniv @301
- glTexGenfv=glTexGenfv @302
- glTexEnvf=glTexEnvf @303
- glTexEnvi=glTexEnvi @304
- glTexEnvfv=glTexEnvfv @305
- glTexEnviv=glTexEnviv @306
- glTexImage1D=glTexImage1D @307
- glTexImage2D=glTexImage2D @308
- glTexParameterf=glTexParameterf @309
- glTexParameteri=glTexParameteri @310
- glTexParameterfv=glTexParameterfv @311
- glTexParameteriv=glTexParameteriv @312
- glTexSubImage1D=glTexSubImage1D @313
- glTexSubImage2D=glTexSubImage2D @314
- glTranslated=glTranslated @315
- glTranslatef=glTranslatef @316
- glVertex2d=glVertex2d @317
- glVertex2f=glVertex2f @318
- glVertex2i=glVertex2i @319
- glVertex2s=glVertex2s @320
- glVertex3d=glVertex3d @321
- glVertex3f=glVertex3f @322
- glVertex3i=glVertex3i @323
- glVertex3s=glVertex3s @324
- glVertex4d=glVertex4d @325
- glVertex4f=glVertex4f @326
- glVertex4i=glVertex4i @327
- glVertex4s=glVertex4s @328
- glVertex2dv=glVertex2dv @329
- glVertex2fv=glVertex2fv @330
- glVertex2iv=glVertex2iv @331
- glVertex2sv=glVertex2sv @332
- glVertex3dv=glVertex3dv @333
- glVertex3fv=glVertex3fv @334
- glVertex3iv=glVertex3iv @335
- glVertex3sv=glVertex3sv @336
- glVertex4dv=glVertex4dv @337
- glVertex4fv=glVertex4fv @338
- glVertex4iv=glVertex4iv @339
- glVertex4sv=glVertex4sv @340
- glVertexPointer=glVertexPointer @341
- glViewport=glViewport @342
- glBlendEquationEXT=glBlendEquationEXT @343
- glBlendColorEXT=glBlendColorEXT @344
- glVertexPointerEXT=glVertexPointerEXT @345
- glNormalPointerEXT=glNormalPointerEXT @346
- glColorPointerEXT=glColorPointerEXT @347
- glIndexPointerEXT=glIndexPointerEXT @348
- glTexCoordPointerEXT=glTexCoordPointerEXT @349
- glEdgeFlagPointerEXT=glEdgeFlagPointerEXT @350
- glGetPointervEXT=glGetPointervEXT @351
- glArrayElementEXT=glArrayElementEXT @352
- glDrawArraysEXT=glDrawArraysEXT @353
- glBindTextureEXT=glBindTextureEXT @354
- glDeleteTexturesEXT=glDeleteTexturesEXT @355
- glGenTexturesEXT=glGenTexturesEXT @356
- glPrioritizeTexturesEXT=glPrioritizeTexturesEXT @357
- glCopyTexSubImage3DEXT=glCopyTexSubImage3DEXT @358
- glTexImage3DEXT=glTexImage3DEXT @359
- glTexSubImage3DEXT=glTexSubImage3DEXT @360
- glWindowPos4fMESA=glWindowPos4fMESA @361
- glWindowPos2iMESA=glWindowPos2iMESA @362
- glWindowPos2sMESA=glWindowPos2sMESA @363
- glWindowPos2fMESA=glWindowPos2fMESA @364
- glWindowPos2dMESA=glWindowPos2dMESA @365
- glWindowPos2ivMESA=glWindowPos2ivMESA @366
- glWindowPos2svMESA=glWindowPos2svMESA @367
- glWindowPos2fvMESA=glWindowPos2fvMESA @368
- glWindowPos2dvMESA=glWindowPos2dvMESA @369
- glWindowPos3iMESA=glWindowPos3iMESA @370
- glWindowPos3sMESA=glWindowPos3sMESA @371
- glWindowPos3fMESA=glWindowPos3fMESA @372
- glWindowPos3dMESA=glWindowPos3dMESA @373
- glWindowPos3ivMESA=glWindowPos3ivMESA @374
- glWindowPos3svMESA=glWindowPos3svMESA @375
- glWindowPos3fvMESA=glWindowPos3fvMESA @376
- glWindowPos3dvMESA=glWindowPos3dvMESA @377
- glWindowPos4iMESA=glWindowPos4iMESA @378
- glWindowPos4sMESA=glWindowPos4sMESA @379
- glWindowPos4dMESA=glWindowPos4dMESA @380
- glWindowPos4ivMESA=glWindowPos4ivMESA @381
- glWindowPos4svMESA=glWindowPos4svMESA @382
- glWindowPos4fvMESA=glWindowPos4fvMESA @383
- glWindowPos4dvMESA=glWindowPos4dvMESA @384
- glResizeBuffersMESA=glResizeBuffersMESA @385
- wglCopyContext=wglCopyContext @386
- wglCreateContext=wglCreateContext @387
- wglCreateLayerContext=wglCreateLayerContext @388
- wglDeleteContext=wglDeleteContext @389
- wglDescribeLayerPlane=wglDescribeLayerPlane @390
- wglGetCurrentContext=wglGetCurrentContext @391
- wglGetCurrentDC=wglGetCurrentDC @392
- wglGetLayerPaletteEntries=wglGetLayerPaletteEntries @393
- wglGetProcAddress=wglGetProcAddress @394
- wglMakeCurrent=wglMakeCurrent @395
- wglRealizeLayerPalette=wglRealizeLayerPalette @396
- wglSetLayerPaletteEntries=wglSetLayerPaletteEntries @397
- wglShareLists=wglShareLists @398
- wglSwapLayerBuffers=wglSwapLayerBuffers @399
- wglUseFontBitmapsA=wglUseFontBitmapsA @400
- wglUseFontBitmapsW=wglUseFontBitmapsW @401
- wglUseFontOutlinesA=wglUseFontOutlinesA @402
- wglUseFontOutlinesW=wglUseFontOutlinesW @403
- ChoosePixelFormat=ChoosePixelFormat @404
- DescribePixelFormat=DescribePixelFormat @405
- GetPixelFormat=GetPixelFormat @406
- SetPixelFormat=SetPixelFormat @407
- SwapBuffers=SwapBuffers @408
- wglChoosePixelFormat=wglChoosePixelFormat @409
- wglDescribePixelFormat=wglDescribePixelFormat @410
- wglGetPixelFormat=wglGetPixelFormat @411
- wglSetPixelFormat=wglSetPixelFormat @412
- wglSwapBuffers=wglSwapBuffers @413
- glActiveTextureARB=glActiveTextureARB @414
- glClientActiveTextureARB=glClientActiveTextureARB @415
- glMultiTexCoord1dARB=glMultiTexCoord1dARB @416
- glMultiTexCoord1dvARB=glMultiTexCoord1dvARB @417
- glMultiTexCoord1fARB=glMultiTexCoord1fARB @418
- glMultiTexCoord1fvARB=glMultiTexCoord1fvARB @419
- glMultiTexCoord1iARB=glMultiTexCoord1iARB @420
- glMultiTexCoord1ivARB=glMultiTexCoord1ivARB @421
- glMultiTexCoord1sARB=glMultiTexCoord1sARB @422
- glMultiTexCoord1svARB=glMultiTexCoord1svARB @423
- glMultiTexCoord2dARB=glMultiTexCoord2dARB @424
- glMultiTexCoord2dvARB=glMultiTexCoord2dvARB @425
- glMultiTexCoord2fARB=glMultiTexCoord2fARB @426
- glMultiTexCoord2fvARB=glMultiTexCoord2fvARB @427
- glMultiTexCoord2iARB=glMultiTexCoord2iARB @428
- glMultiTexCoord2ivARB=glMultiTexCoord2ivARB @429
- glMultiTexCoord2sARB=glMultiTexCoord2sARB @430
- glMultiTexCoord2svARB=glMultiTexCoord2svARB @431
- glMultiTexCoord3dARB=glMultiTexCoord3dARB @432
- glMultiTexCoord3dvARB=glMultiTexCoord3dvARB @433
- glMultiTexCoord3fARB=glMultiTexCoord3fARB @434
- glMultiTexCoord3fvARB=glMultiTexCoord3fvARB @435
- glMultiTexCoord3iARB=glMultiTexCoord3iARB @436
- glMultiTexCoord3ivARB=glMultiTexCoord3ivARB @437
- glMultiTexCoord3sARB=glMultiTexCoord3sARB @438
- glMultiTexCoord3svARB=glMultiTexCoord3svARB @439
- glMultiTexCoord4dARB=glMultiTexCoord4dARB @440
- glMultiTexCoord4dvARB=glMultiTexCoord4dvARB @441
- glMultiTexCoord4fARB=glMultiTexCoord4fARB @442
- glMultiTexCoord4fvARB=glMultiTexCoord4fvARB @443
- glMultiTexCoord4iARB=glMultiTexCoord4iARB @444
- glMultiTexCoord4ivARB=glMultiTexCoord4ivARB @445
- glMultiTexCoord4sARB=glMultiTexCoord4sARB @446
- glMultiTexCoord4svARB=glMultiTexCoord4svARB @447
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/opengl32.ref b/mesalib/src/mesa/drivers/windows/gldirect/opengl32.ref
deleted file mode 100644
index 3a4933e54..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/opengl32.ref
+++ /dev/null
@@ -1,495 +0,0 @@
-;****************************************************************************
-;*
-;* Mesa 3-D graphics library
-;* Direct3D Driver Interface
-;*
-;* ========================================================================
-;*
-;* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-;*
-;* Permission is hereby granted, free of charge, to any person obtaining a
-;* copy of this software and associated documentation files (the "Software"),
-;* to deal in the Software without restriction, including without limitation
-;* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-;* and/or sell copies of the Software, and to permit persons to whom the
-;* Software is furnished to do so, subject to the following conditions:
-;*
-;* The above copyright notice and this permission notice shall be included
-;* in all copies or substantial portions of the Software.
-;*
-;* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-;* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-;* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-;* SCITECH SOFTWARE INC 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.
-;*
-;* ======================================================================
-;*
-;* Language: ANSI C
-;* Environment: Windows 9x/2000/XP/XBox (Win32)
-;*
-;* Description: DLL Module definition file
-;*
-;****************************************************************************/
-
-DESCRIPTION 'GLDirect'
-
-VERSION 3.0
-
-EXPORTS
- glAccum
- glAlphaFunc
- glAreTexturesResident
- glArrayElement
- glBegin
- glBindTexture
- glBitmap
- glBlendFunc
- glCallList
- glCallLists
- glClear
- glClearAccum
- glClearIndex
- glClearColor
- glClearDepth
- glClearStencil
- glClipPlane
- glColor3b
- glColor3d
- glColor3f
- glColor3i
- glColor3s
- glColor3ub
- glColor3ui
- glColor3us
- glColor4b
- glColor4d
- glColor4f
- glColor4i
- glColor4s
- glColor4ub
- glColor4ui
- glColor4us
- glColor3bv
- glColor3dv
- glColor3fv
- glColor3iv
- glColor3sv
- glColor3ubv
- glColor3uiv
- glColor3usv
- glColor4bv
- glColor4dv
- glColor4fv
- glColor4iv
- glColor4sv
- glColor4ubv
- glColor4uiv
- glColor4usv
- glColorMask
- glColorMaterial
- glColorPointer
- glColorTableEXT
- glColorSubTableEXT
- glCopyPixels
- glCopyTexImage1D
- glCopyTexImage2D
- glCopyTexSubImage1D
- glCopyTexSubImage2D
- glCullFace
- glDepthFunc
- glDepthMask
- glDepthRange
- glDeleteLists
- glDeleteTextures
- glDisable
- glDisableClientState
- glDrawArrays
- glDrawBuffer
- glDrawElements
- glDrawPixels
- glEnable
- glEnableClientState
- glEnd
- glEndList
- glEvalCoord1d
- glEvalCoord1f
- glEvalCoord1dv
- glEvalCoord1fv
- glEvalCoord2d
- glEvalCoord2f
- glEvalCoord2dv
- glEvalCoord2fv
- glEvalPoint1
- glEvalPoint2
- glEvalMesh1
- glEdgeFlag
- glEdgeFlagv
- glEdgeFlagPointer
- glEvalMesh2
- glFeedbackBuffer
- glFinish
- glFlush
- glFogf
- glFogi
- glFogfv
- glFogiv
- glFrontFace
- glFrustum
- glGenLists
- glGenTextures
- glGetBooleanv
- glGetClipPlane
- glGetColorTableEXT
- glGetColorTableParameterivEXT
- glGetColorTableParameterfvEXT
- glGetDoublev
- glGetError
- glGetFloatv
- glGetIntegerv
- glGetLightfv
- glGetLightiv
- glGetMapdv
- glGetMapfv
- glGetMapiv
- glGetMaterialfv
- glGetMaterialiv
- glGetPixelMapfv
- glGetPixelMapuiv
- glGetPixelMapusv
- glGetPointerv
- glGetPolygonStipple
- glGetString
- glGetTexEnvfv
- glGetTexEnviv
- glGetTexGeniv
- glGetTexGendv
- glGetTexGenfv
- glGetTexImage
- glGetTexLevelParameterfv
- glGetTexLevelParameteriv
- glGetTexParameterfv
- glGetTexParameteriv
- glHint
- glIndexd
- glIndexf
- glIndexi
- glIndexs
- glIndexub
- glIndexdv
- glIndexfv
- glIndexiv
- glIndexsv
- glIndexubv
- glIndexMask
- glIndexPointer
- glInterleavedArrays
- glInitNames
- glIsList
- glIsTexture
- glLightf
- glLighti
- glLightfv
- glLightiv
- glLightModelf
- glLightModeli
- glLightModelfv
- glLightModeliv
- glLineWidth
- glLineStipple
- glListBase
- glLoadIdentity
- glLoadMatrixd
- glLoadMatrixf
- glLoadName
- glLogicOp
- glMap1d
- glMap1f
- glMap2d
- glMap2f
- glMapGrid1d
- glMapGrid1f
- glMapGrid2d
- glMapGrid2f
- glMaterialf
- glMateriali
- glMaterialfv
- glMaterialiv
- glMatrixMode
- glMultMatrixd
- glMultMatrixf
- glNewList
- glNormal3b
- glNormal3d
- glNormal3f
- glNormal3i
- glNormal3s
- glNormal3bv
- glNormal3dv
- glNormal3fv
- glNormal3iv
- glNormal3sv
- glNormalPointer
- glOrtho
- glPassThrough
- glPixelMapfv
- glPixelMapuiv
- glPixelMapusv
- glPixelStoref
- glPixelStorei
- glPixelTransferf
- glPixelTransferi
- glPixelZoom
- glPointSize
- glPolygonMode
- glPolygonOffset
- glPolygonOffsetEXT
- glPolygonStipple
- glPopAttrib
- glPopClientAttrib
- glPopMatrix
- glPopName
- glPrioritizeTextures
- glPushMatrix
- glRasterPos2d
- glRasterPos2f
- glRasterPos2i
- glRasterPos2s
- glRasterPos3d
- glRasterPos3f
- glRasterPos3i
- glRasterPos3s
- glRasterPos4d
- glRasterPos4f
- glRasterPos4i
- glRasterPos4s
- glRasterPos2dv
- glRasterPos2fv
- glRasterPos2iv
- glRasterPos2sv
- glRasterPos3dv
- glRasterPos3fv
- glRasterPos3iv
- glRasterPos3sv
- glRasterPos4dv
- glRasterPos4fv
- glRasterPos4iv
- glRasterPos4sv
- glReadBuffer
- glReadPixels
- glRectd
- glRectf
- glRecti
- glRects
- glRectdv
- glRectfv
- glRectiv
- glRectsv
- glScissor
- glIsEnabled
- glPushAttrib
- glPushClientAttrib
- glPushName
- glRenderMode
- glRotated
- glRotatef
- glSelectBuffer
- glScaled
- glScalef
- glShadeModel
- glStencilFunc
- glStencilMask
- glStencilOp
- glTexCoord1d
- glTexCoord1f
- glTexCoord1i
- glTexCoord1s
- glTexCoord2d
- glTexCoord2f
- glTexCoord2i
- glTexCoord2s
- glTexCoord3d
- glTexCoord3f
- glTexCoord3i
- glTexCoord3s
- glTexCoord4d
- glTexCoord4f
- glTexCoord4i
- glTexCoord4s
- glTexCoord1dv
- glTexCoord1fv
- glTexCoord1iv
- glTexCoord1sv
- glTexCoord2dv
- glTexCoord2fv
- glTexCoord2iv
- glTexCoord2sv
- glTexCoord3dv
- glTexCoord3fv
- glTexCoord3iv
- glTexCoord3sv
- glTexCoord4dv
- glTexCoord4fv
- glTexCoord4iv
- glTexCoord4sv
- glTexCoordPointer
- glTexGend
- glTexGenf
- glTexGeni
- glTexGendv
- glTexGeniv
- glTexGenfv
- glTexEnvf
- glTexEnvi
- glTexEnvfv
- glTexEnviv
- glTexImage1D
- glTexImage2D
- glTexParameterf
- glTexParameteri
- glTexParameterfv
- glTexParameteriv
- glTexSubImage1D
- glTexSubImage2D
- glTranslated
- glTranslatef
- glVertex2d
- glVertex2f
- glVertex2i
- glVertex2s
- glVertex3d
- glVertex3f
- glVertex3i
- glVertex3s
- glVertex4d
- glVertex4f
- glVertex4i
- glVertex4s
- glVertex2dv
- glVertex2fv
- glVertex2iv
- glVertex2sv
- glVertex3dv
- glVertex3fv
- glVertex3iv
- glVertex3sv
- glVertex4dv
- glVertex4fv
- glVertex4iv
- glVertex4sv
- glVertexPointer
- glViewport
-
- glBlendEquationEXT
- glBlendColorEXT
- glVertexPointerEXT
- glNormalPointerEXT
- glColorPointerEXT
- glIndexPointerEXT
- glTexCoordPointerEXT
- glEdgeFlagPointerEXT
- glGetPointervEXT
- glArrayElementEXT
- glDrawArraysEXT
- glBindTextureEXT
- glDeleteTexturesEXT
- glGenTexturesEXT
- glPrioritizeTexturesEXT
- glCopyTexSubImage3DEXT
- glTexImage3DEXT
- glTexSubImage3DEXT
-
- glWindowPos4fMESA
- glWindowPos2iMESA
- glWindowPos2sMESA
- glWindowPos2fMESA
- glWindowPos2dMESA
- glWindowPos2ivMESA
- glWindowPos2svMESA
- glWindowPos2fvMESA
- glWindowPos2dvMESA
- glWindowPos3iMESA
- glWindowPos3sMESA
- glWindowPos3fMESA
- glWindowPos3dMESA
- glWindowPos3ivMESA
- glWindowPos3svMESA
- glWindowPos3fvMESA
- glWindowPos3dvMESA
- glWindowPos4iMESA
- glWindowPos4sMESA
- glWindowPos4dMESA
- glWindowPos4ivMESA
- glWindowPos4svMESA
- glWindowPos4fvMESA
- glWindowPos4dvMESA
- glResizeBuffersMESA
-
- wglCopyContext
- wglCreateContext
- wglCreateLayerContext
- wglDeleteContext
- wglDescribeLayerPlane
- wglGetCurrentContext
- wglGetCurrentDC
- wglGetLayerPaletteEntries
- wglGetProcAddress
- wglMakeCurrent
- wglRealizeLayerPalette
- wglSetLayerPaletteEntries
- wglShareLists
- wglSwapLayerBuffers
- wglUseFontBitmapsA
- wglUseFontBitmapsW
- wglUseFontOutlinesA
- wglUseFontOutlinesW
-
-;These functions are identical and therefore share the same addresses
- ChoosePixelFormat = wglChoosePixelFormat
- DescribePixelFormat = wglDescribePixelFormat
- GetPixelFormat = wglGetPixelFormat
- SetPixelFormat = wglSetPixelFormat
- SwapBuffers = wglSwapBuffers
-
- wglChoosePixelFormat
- wglDescribePixelFormat
- wglGetPixelFormat
- wglSetPixelFormat
- wglSwapBuffers
-
- glActiveTextureARB
- glClientActiveTextureARB
- glMultiTexCoord1dARB
- glMultiTexCoord1dvARB
- glMultiTexCoord1fARB
- glMultiTexCoord1fvARB
- glMultiTexCoord1iARB
- glMultiTexCoord1ivARB
- glMultiTexCoord1sARB
- glMultiTexCoord1svARB
- glMultiTexCoord2dARB
- glMultiTexCoord2dvARB
- glMultiTexCoord2fARB
- glMultiTexCoord2fvARB
- glMultiTexCoord2iARB
- glMultiTexCoord2ivARB
- glMultiTexCoord2sARB
- glMultiTexCoord2svARB
- glMultiTexCoord3dARB
- glMultiTexCoord3dvARB
- glMultiTexCoord3fARB
- glMultiTexCoord3fvARB
- glMultiTexCoord3iARB
- glMultiTexCoord3ivARB
- glMultiTexCoord3sARB
- glMultiTexCoord3svARB
- glMultiTexCoord4dARB
- glMultiTexCoord4dvARB
- glMultiTexCoord4fARB
- glMultiTexCoord4fvARB
- glMultiTexCoord4iARB
- glMultiTexCoord4ivARB
- glMultiTexCoord4sARB
- glMultiTexCoord4svARB
diff --git a/mesalib/src/mesa/drivers/windows/gldirect/pixpack.h b/mesalib/src/mesa/drivers/windows/gldirect/pixpack.h
deleted file mode 100644
index ec848d455..000000000
--- a/mesalib/src/mesa/drivers/windows/gldirect/pixpack.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/****************************************************************************
-*
-* Mesa 3-D graphics library
-* Direct3D Driver Interface
-*
-* ========================================================================
-*
-* Copyright (C) 1991-2004 SciTech Software, Inc. All rights reserved.
-*
-* Permission is hereby granted, free of charge, to any person obtaining a
-* copy of this software and associated documentation files (the "Software"),
-* to deal in the Software without restriction, including without limitation
-* the rights to use, copy, modify, merge, publish, distribute, sublicense,
-* and/or sell copies of the Software, and to permit persons to whom the
-* Software is furnished to do so, subject to the following conditions:
-*
-* The above copyright notice and this permission notice shall be included
-* in all copies or substantial portions of the Software.
-*
-* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
-* SCITECH SOFTWARE INC 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.
-*
-* ======================================================================
-*
-* Language: ANSI C
-* Environment: Windows 9x (Win32)
-*
-* Description: Pixel packing functions.
-*
-****************************************************************************/
-
-#ifndef __PIXPACK_H
-#define __PIXPACK_H
-
-#include <GL\gl.h>
-#include <ddraw.h>
-
-#include "ddlog.h"
-
-/*---------------------- Macros and type definitions ----------------------*/
-
-#define PXAPI
-
-// Typedef that can be used for pixel packing function pointers.
-#define PX_PACK_FUNC(a) void PXAPI (a)(unsigned char *pixdata, void *dst, GLenum Format, const LPDDSURFACEDESC2 lpDDSD2)
-typedef void (PXAPI *PX_packFunc)(unsigned char *pixdata, void *dst, GLenum Format, const LPDDSURFACEDESC2 lpDDSD2);
-
-// Typedef that can be used for pixel unpacking function pointers.
-#define PX_UNPACK_FUNC(a) void PXAPI (a)(unsigned char *pixdata, void *src, GLenum Format, const LPDDSURFACEDESC2 lpDDSD2)
-typedef void (PXAPI *PX_unpackFunc)(unsigned char *pixdata, void *src, GLenum Format, const LPDDSURFACEDESC2 lpDDSD2);
-
-// Typedef that can be used for pixel span packing function pointers.
-#define PX_PACK_SPAN_FUNC(a) void PXAPI (a)(GLuint n, unsigned char *pixdata, unsigned char *dst, GLenum Format, const LPDDSURFACEDESC2 lpDDSD2)
-typedef void (PXAPI *PX_packSpanFunc)(GLuint n, unsigned char *pixdata, unsigned char *dst, GLenum Format, const LPDDSURFACEDESC2 lpDDSD2);
-
-/*------------------------- Function Prototypes ---------------------------*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Function that examines a pixel format and returns the relevent
-// pixel-packing function
-void PXAPI pxClassifyPixelFormat(const LPDDPIXELFORMAT lpddpf, PX_packFunc *lpPackFn ,PX_unpackFunc *lpUnpackFn, PX_packSpanFunc *lpPackSpanFn);
-
-// Packing functions
-PX_PACK_FUNC(pxPackGeneric);
-PX_PACK_FUNC(pxPackRGB555);
-PX_PACK_FUNC(pxPackARGB4444);
-PX_PACK_FUNC(pxPackARGB1555);
-PX_PACK_FUNC(pxPackRGB565);
-PX_PACK_FUNC(pxPackRGB332);
-PX_PACK_FUNC(pxPackRGB888);
-PX_PACK_FUNC(pxPackARGB8888);
-PX_PACK_FUNC(pxPackPAL8);
-
-// Unpacking functions
-PX_UNPACK_FUNC(pxUnpackGeneric);
-PX_UNPACK_FUNC(pxUnpackRGB555);
-PX_UNPACK_FUNC(pxUnpackARGB4444);
-PX_UNPACK_FUNC(pxUnpackARGB1555);
-PX_UNPACK_FUNC(pxUnpackRGB565);
-PX_UNPACK_FUNC(pxUnpackRGB332);
-PX_UNPACK_FUNC(pxUnpackRGB888);
-PX_UNPACK_FUNC(pxUnpackARGB8888);
-PX_UNPACK_FUNC(pxUnpackPAL8);
-
-// Span Packing functions
-PX_PACK_SPAN_FUNC(pxPackSpanGeneric);
-PX_PACK_SPAN_FUNC(pxPackSpanRGB555);
-PX_PACK_SPAN_FUNC(pxPackSpanARGB4444);
-PX_PACK_SPAN_FUNC(pxPackSpanARGB1555);
-PX_PACK_SPAN_FUNC(pxPackSpanRGB565);
-PX_PACK_SPAN_FUNC(pxPackSpanRGB332);
-PX_PACK_SPAN_FUNC(pxPackSpanRGB888);
-PX_PACK_SPAN_FUNC(pxPackSpanARGB8888);
-PX_PACK_SPAN_FUNC(pxPackSpanPAL8);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
diff --git a/mesalib/src/mesa/drivers/windows/icd/icd.c b/mesalib/src/mesa/drivers/windows/icd/icd.c
deleted file mode 100644
index 4bc6176b1..000000000
--- a/mesalib/src/mesa/drivers/windows/icd/icd.c
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.1
- *
- * Copyright (C) 1999-2004 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * File name: icd.c
- * Author: Gregor Anich
- *
- * ICD (Installable Client Driver) interface.
- * Based on the windows GDI/WGL driver.
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <windows.h>
-#define GL_GLEXT_PROTOTYPES
-#include "GL/gl.h"
-#include "GL/glext.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#include <stdio.h>
-#include <tchar.h>
-#include "GL/wmesa.h"
-#include "mtypes.h"
-#include "glapi.h"
-
-#define MAX_MESA_ATTRS 20
-
-typedef struct wmesa_context *PWMC;
-
-typedef struct _icdTable {
- DWORD size;
- PROC table[336];
-} ICDTABLE, *PICDTABLE;
-
-#ifdef USE_MGL_NAMESPACE
-# define GL_FUNC(func) mgl##func
-#else
-# define GL_FUNC(func) gl##func
-#endif
-
-static ICDTABLE icdTable = { 336, {
-#define ICD_ENTRY(func) (PROC)GL_FUNC(func),
-#include "icdlist.h"
-#undef ICD_ENTRY
-} };
-
-struct __pixelformat__
-{
- PIXELFORMATDESCRIPTOR pfd;
- GLboolean doubleBuffered;
-};
-
-struct __pixelformat__ pix[] =
-{
- /* Double Buffer, alpha */
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,
- PFD_TYPE_RGBA,
- 24, 8, 0, 8, 8, 8, 16, 8, 24,
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
- GL_TRUE
- },
- /* Single Buffer, alpha */
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL, /* | PFD_SUPPORT_GDI ? */
- PFD_TYPE_RGBA,
- 24, 8, 0, 8, 8, 8, 16, 8, 24,
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
- GL_FALSE
- },
- /* Double Buffer, no alpha */
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER|PFD_SWAP_COPY,
- PFD_TYPE_RGBA,
- 24, 8, 0, 8, 8, 8, 16, 0, 0,
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
- GL_TRUE
- },
- /* Single Buffer, no alpha */
- { { sizeof(PIXELFORMATDESCRIPTOR), 1,
- PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL, /* | PFD_SUPPORT_GDI ? */
- PFD_TYPE_RGBA,
- 24, 8, 0, 8, 8, 8, 16, 0, 0,
- 0, 0, 0, 0, 0, 16, 8, 0, 0, 0, 0, 0, 0 },
- GL_FALSE
- },
-};
-
-int qt_pix = sizeof(pix) / sizeof(pix[0]);
-
-typedef struct {
- WMesaContext ctx;
- HDC hdc;
-} MesaWglCtx;
-
-#define MESAWGL_CTX_MAX_COUNT 20
-
-static MesaWglCtx wgl_ctx[MESAWGL_CTX_MAX_COUNT];
-
-static unsigned ctx_count = 0;
-static int ctx_current = -1;
-static unsigned curPFD = 0;
-
-WGLAPI BOOL GLAPIENTRY DrvCopyContext(HGLRC hglrcSrc,HGLRC hglrcDst,UINT mask)
-{
- (void) hglrcSrc; (void) hglrcDst; (void) mask;
- return(FALSE);
-}
-
-WGLAPI HGLRC GLAPIENTRY DrvCreateContext(HDC hdc)
-{
- HWND hWnd;
- int i = 0;
-
- if(!(hWnd = WindowFromDC(hdc)))
- {
- SetLastError(0);
- return(NULL);
- }
- if (!ctx_count)
- {
- for(i=0;i<MESAWGL_CTX_MAX_COUNT;i++)
- {
- wgl_ctx[i].ctx = NULL;
- wgl_ctx[i].hdc = NULL;
- }
- }
- for( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
- {
- if ( wgl_ctx[i].ctx == NULL )
- {
- wgl_ctx[i].ctx = WMesaCreateContext( hWnd, NULL, GL_TRUE,
- pix[curPFD-1].doubleBuffered,
- pix[curPFD-1].pfd.cAlphaBits ? GL_TRUE : GL_FALSE);
- if (wgl_ctx[i].ctx == NULL)
- break;
- wgl_ctx[i].hdc = hdc;
- ctx_count++;
- return ((HGLRC)wgl_ctx[i].ctx);
- }
- }
- SetLastError(0);
- return(NULL);
-}
-
-WGLAPI BOOL GLAPIENTRY DrvDeleteContext(HGLRC hglrc)
-{
- int i;
- for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
- {
- if ( wgl_ctx[i].ctx == (PWMC) hglrc )
- {
- WMesaMakeCurrent((PWMC) hglrc);
- WMesaDestroyContext();
- wgl_ctx[i].ctx = NULL;
- wgl_ctx[i].hdc = NULL;
- ctx_count--;
- return(TRUE);
- }
- }
- SetLastError(0);
- return(FALSE);
-}
-
-WGLAPI HGLRC GLAPIENTRY DrvCreateLayerContext(HDC hdc,int iLayerPlane)
-{
- if (iLayerPlane == 0)
- return DrvCreateContext(hdc);
- SetLastError(0);
- return(NULL);
-}
-
-WGLAPI PICDTABLE GLAPIENTRY DrvSetContext(HDC hdc,HGLRC hglrc,void *callback)
-{
- int i;
- (void) callback;
-
- /* new code suggested by Andy Sy */
- if (!hdc || !hglrc) {
- WMesaMakeCurrent(NULL);
- ctx_current = -1;
- return NULL;
- }
-
- for ( i = 0; i < MESAWGL_CTX_MAX_COUNT; i++ )
- {
- if ( wgl_ctx[i].ctx == (PWMC) hglrc )
- {
- wgl_ctx[i].hdc = hdc;
- WMesaMakeCurrent( (PWMC) hglrc );
- ctx_current = i;
- return &icdTable;
- }
- }
- return NULL;
-}
-
-WGLAPI void GLAPIENTRY DrvReleaseContext(HGLRC hglrc)
-{
- (void) hglrc;
- WMesaMakeCurrent(NULL);
- ctx_current = -1;
-}
-
-WGLAPI BOOL GLAPIENTRY DrvShareLists(HGLRC hglrc1,HGLRC hglrc2)
-{
- (void) hglrc1; (void) hglrc2;
- return(TRUE);
-}
-
-WGLAPI BOOL GLAPIENTRY DrvDescribeLayerPlane(HDC hdc,int iPixelFormat,
- int iLayerPlane,UINT nBytes,
- LPLAYERPLANEDESCRIPTOR plpd)
-{
- (void) hdc; (void) iPixelFormat; (void) iLayerPlane; (void) nBytes; (void) plpd;
- SetLastError(0);
- return(FALSE);
-}
-
-WGLAPI int GLAPIENTRY DrvSetLayerPaletteEntries(HDC hdc,int iLayerPlane,
- int iStart,int cEntries,
- CONST COLORREF *pcr)
-{
- (void) hdc; (void) iLayerPlane; (void) iStart; (void) cEntries; (void) pcr;
- SetLastError(0);
- return(0);
-}
-
-WGLAPI int GLAPIENTRY DrvGetLayerPaletteEntries(HDC hdc,int iLayerPlane,
- int iStart,int cEntries,
- COLORREF *pcr)
-{
- (void) hdc; (void) iLayerPlane; (void) iStart; (void) cEntries; (void) pcr;
- SetLastError(0);
- return(0);
-}
-
-WGLAPI BOOL GLAPIENTRY DrvRealizeLayerPalette(HDC hdc,int iLayerPlane,BOOL bRealize)
-{
- (void) hdc; (void) iLayerPlane; (void) bRealize;
- SetLastError(0);
- return(FALSE);
-}
-
-WGLAPI BOOL GLAPIENTRY DrvSwapLayerBuffers(HDC hdc,UINT fuPlanes)
-{
- (void) fuPlanes;
- if( !hdc )
- {
- WMesaSwapBuffers();
- return(TRUE);
- }
- SetLastError(0);
- return(FALSE);
-}
-
-WGLAPI int GLAPIENTRY DrvDescribePixelFormat(HDC hdc,int iPixelFormat,UINT nBytes,
- LPPIXELFORMATDESCRIPTOR ppfd)
-{
- int qt_valid_pix;
- (void) hdc;
-
- qt_valid_pix = qt_pix;
- if(ppfd == NULL)
- return(qt_valid_pix);
- if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix || nBytes != sizeof(PIXELFORMATDESCRIPTOR))
- {
- SetLastError(0);
- return(0);
- }
- *ppfd = pix[iPixelFormat - 1].pfd;
- return(qt_valid_pix);
-}
-
-/*
-* GetProcAddress - return the address of an appropriate extension
-*/
-WGLAPI PROC GLAPIENTRY DrvGetProcAddress(LPCSTR lpszProc)
-{
- PROC p = (PROC) (int) _glapi_get_proc_address((const char *) lpszProc);
- if (p)
- return p;
-
- SetLastError(0);
- return(NULL);
-}
-
-WGLAPI BOOL GLAPIENTRY DrvSetPixelFormat(HDC hdc,int iPixelFormat)
-{
- int qt_valid_pix;
- (void) hdc;
-
- qt_valid_pix = qt_pix;
- if(iPixelFormat < 1 || iPixelFormat > qt_valid_pix)
- {
- SetLastError(0);
- return(FALSE);
- }
- curPFD = iPixelFormat;
- return(TRUE);
-}
-
-WGLAPI BOOL GLAPIENTRY DrvSwapBuffers(HDC hdc)
-{
- (void) hdc;
- if (ctx_current < 0)
- return FALSE;
-
- if(wgl_ctx[ctx_current].ctx == NULL) {
- SetLastError(0);
- return(FALSE);
- }
- WMesaSwapBuffers();
- return(TRUE);
-}
-
-WGLAPI BOOL GLAPIENTRY DrvValidateVersion(DWORD version)
-{
- (void) version;
- return TRUE;
-}
diff --git a/mesalib/src/mesa/drivers/windows/icd/icdlist.h b/mesalib/src/mesa/drivers/windows/icd/icdlist.h
deleted file mode 100644
index 1318804cf..000000000
--- a/mesalib/src/mesa/drivers/windows/icd/icdlist.h
+++ /dev/null
@@ -1,336 +0,0 @@
-ICD_ENTRY(NewList) /* 0 */
-ICD_ENTRY(EndList) /* 1 */
-ICD_ENTRY(CallList) /* 2 */
-ICD_ENTRY(CallLists) /* 3 */
-ICD_ENTRY(DeleteLists) /* 4 */
-ICD_ENTRY(GenLists) /* 5 */
-ICD_ENTRY(ListBase) /* 6 */
-ICD_ENTRY(Begin) /* 7 */
-ICD_ENTRY(Bitmap) /* 8 */
-ICD_ENTRY(Color3b) /* 9 */
-ICD_ENTRY(Color3bv) /* 10 */
-ICD_ENTRY(Color3d) /* 11 */
-ICD_ENTRY(Color3dv) /* 12 */
-ICD_ENTRY(Color3f) /* 13 */
-ICD_ENTRY(Color3fv) /* 14 */
-ICD_ENTRY(Color3i) /* 15 */
-ICD_ENTRY(Color3iv) /* 16 */
-ICD_ENTRY(Color3s) /* 17 */
-ICD_ENTRY(Color3sv) /* 18 */
-ICD_ENTRY(Color3ub) /* 19 */
-ICD_ENTRY(Color3ubv) /* 20 */
-ICD_ENTRY(Color3ui) /* 21 */
-ICD_ENTRY(Color3uiv) /* 22 */
-ICD_ENTRY(Color3us) /* 23 */
-ICD_ENTRY(Color3usv) /* 24 */
-ICD_ENTRY(Color4b) /* 25 */
-ICD_ENTRY(Color4bv) /* 26 */
-ICD_ENTRY(Color4d) /* 27 */
-ICD_ENTRY(Color4dv) /* 28 */
-ICD_ENTRY(Color4f) /* 29 */
-ICD_ENTRY(Color4fv) /* 30 */
-ICD_ENTRY(Color4i) /* 31 */
-ICD_ENTRY(Color4iv) /* 32 */
-ICD_ENTRY(Color4s) /* 33 */
-ICD_ENTRY(Color4sv) /* 34 */
-ICD_ENTRY(Color4ub) /* 35 */
-ICD_ENTRY(Color4ubv) /* 36 */
-ICD_ENTRY(Color4ui) /* 37 */
-ICD_ENTRY(Color4uiv) /* 38 */
-ICD_ENTRY(Color4us) /* 39 */
-ICD_ENTRY(Color4usv) /* 40 */
-ICD_ENTRY(EdgeFlag) /* 41 */
-ICD_ENTRY(EdgeFlagv) /* 42 */
-ICD_ENTRY(End) /* 43 */
-ICD_ENTRY(Indexd) /* 44 */
-ICD_ENTRY(Indexdv) /* 45 */
-ICD_ENTRY(Indexf) /* 46 */
-ICD_ENTRY(Indexfv) /* 47 */
-ICD_ENTRY(Indexi) /* 48 */
-ICD_ENTRY(Indexiv) /* 49 */
-ICD_ENTRY(Indexs) /* 50 */
-ICD_ENTRY(Indexsv) /* 51 */
-ICD_ENTRY(Normal3b) /* 52 */
-ICD_ENTRY(Normal3bv) /* 53 */
-ICD_ENTRY(Normal3d) /* 54 */
-ICD_ENTRY(Normal3dv) /* 55 */
-ICD_ENTRY(Normal3f) /* 56 */
-ICD_ENTRY(Normal3fv) /* 57 */
-ICD_ENTRY(Normal3i) /* 58 */
-ICD_ENTRY(Normal3iv) /* 59 */
-ICD_ENTRY(Normal3s) /* 60 */
-ICD_ENTRY(Normal3sv) /* 61 */
-ICD_ENTRY(RasterPos2d) /* 62 */
-ICD_ENTRY(RasterPos2dv) /* 63 */
-ICD_ENTRY(RasterPos2f) /* 64 */
-ICD_ENTRY(RasterPos2fv) /* 65 */
-ICD_ENTRY(RasterPos2i) /* 66 */
-ICD_ENTRY(RasterPos2iv) /* 67 */
-ICD_ENTRY(RasterPos2s) /* 68 */
-ICD_ENTRY(RasterPos2sv) /* 69 */
-ICD_ENTRY(RasterPos3d) /* 70 */
-ICD_ENTRY(RasterPos3dv) /* 71 */
-ICD_ENTRY(RasterPos3f) /* 72 */
-ICD_ENTRY(RasterPos3fv) /* 73 */
-ICD_ENTRY(RasterPos3i) /* 74 */
-ICD_ENTRY(RasterPos3iv) /* 75 */
-ICD_ENTRY(RasterPos3s) /* 76 */
-ICD_ENTRY(RasterPos3sv) /* 77 */
-ICD_ENTRY(RasterPos4d) /* 78 */
-ICD_ENTRY(RasterPos4dv) /* 79 */
-ICD_ENTRY(RasterPos4f) /* 80 */
-ICD_ENTRY(RasterPos4fv) /* 81 */
-ICD_ENTRY(RasterPos4i) /* 82 */
-ICD_ENTRY(RasterPos4iv) /* 83 */
-ICD_ENTRY(RasterPos4s) /* 84 */
-ICD_ENTRY(RasterPos4sv) /* 85 */
-ICD_ENTRY(Rectd) /* 86 */
-ICD_ENTRY(Rectdv) /* 87 */
-ICD_ENTRY(Rectf) /* 88 */
-ICD_ENTRY(Rectfv) /* 89 */
-ICD_ENTRY(Recti) /* 90 */
-ICD_ENTRY(Rectiv) /* 91 */
-ICD_ENTRY(Rects) /* 92 */
-ICD_ENTRY(Rectsv) /* 93 */
-ICD_ENTRY(TexCoord1d) /* 94 */
-ICD_ENTRY(TexCoord1dv) /* 95 */
-ICD_ENTRY(TexCoord1f) /* 96 */
-ICD_ENTRY(TexCoord1fv) /* 97 */
-ICD_ENTRY(TexCoord1i) /* 98 */
-ICD_ENTRY(TexCoord1iv) /* 99 */
-ICD_ENTRY(TexCoord1s) /* 100 */
-ICD_ENTRY(TexCoord1sv) /* 101 */
-ICD_ENTRY(TexCoord2d) /* 102 */
-ICD_ENTRY(TexCoord2dv) /* 103 */
-ICD_ENTRY(TexCoord2f) /* 104 */
-ICD_ENTRY(TexCoord2fv) /* 105 */
-ICD_ENTRY(TexCoord2i) /* 106 */
-ICD_ENTRY(TexCoord2iv) /* 107 */
-ICD_ENTRY(TexCoord2s) /* 108 */
-ICD_ENTRY(TexCoord2sv) /* 109 */
-ICD_ENTRY(TexCoord3d) /* 110 */
-ICD_ENTRY(TexCoord3dv) /* 111 */
-ICD_ENTRY(TexCoord3f) /* 112 */
-ICD_ENTRY(TexCoord3fv) /* 113 */
-ICD_ENTRY(TexCoord3i) /* 114 */
-ICD_ENTRY(TexCoord3iv) /* 115 */
-ICD_ENTRY(TexCoord3s) /* 116 */
-ICD_ENTRY(TexCoord3sv) /* 117 */
-ICD_ENTRY(TexCoord4d) /* 118 */
-ICD_ENTRY(TexCoord4dv) /* 119 */
-ICD_ENTRY(TexCoord4f) /* 120 */
-ICD_ENTRY(TexCoord4fv) /* 121 */
-ICD_ENTRY(TexCoord4i) /* 122 */
-ICD_ENTRY(TexCoord4iv) /* 123 */
-ICD_ENTRY(TexCoord4s) /* 124 */
-ICD_ENTRY(TexCoord4sv) /* 125 */
-ICD_ENTRY(Vertex2d) /* 126 */
-ICD_ENTRY(Vertex2dv) /* 127 */
-ICD_ENTRY(Vertex2f) /* 128 */
-ICD_ENTRY(Vertex2fv) /* 129 */
-ICD_ENTRY(Vertex2i) /* 130 */
-ICD_ENTRY(Vertex2iv) /* 131 */
-ICD_ENTRY(Vertex2s) /* 132 */
-ICD_ENTRY(Vertex2sv) /* 133 */
-ICD_ENTRY(Vertex3d) /* 134 */
-ICD_ENTRY(Vertex3dv) /* 135 */
-ICD_ENTRY(Vertex3f) /* 136 */
-ICD_ENTRY(Vertex3fv) /* 137 */
-ICD_ENTRY(Vertex3i) /* 138 */
-ICD_ENTRY(Vertex3iv) /* 139 */
-ICD_ENTRY(Vertex3s) /* 140 */
-ICD_ENTRY(Vertex3sv) /* 141 */
-ICD_ENTRY(Vertex4d) /* 142 */
-ICD_ENTRY(Vertex4dv) /* 143 */
-ICD_ENTRY(Vertex4f) /* 144 */
-ICD_ENTRY(Vertex4fv) /* 145 */
-ICD_ENTRY(Vertex4i) /* 146 */
-ICD_ENTRY(Vertex4iv) /* 147 */
-ICD_ENTRY(Vertex4s) /* 148 */
-ICD_ENTRY(Vertex4sv) /* 149 */
-ICD_ENTRY(ClipPlane) /* 150 */
-ICD_ENTRY(ColorMaterial) /* 151 */
-ICD_ENTRY(CullFace) /* 152 */
-ICD_ENTRY(Fogf) /* 153 */
-ICD_ENTRY(Fogfv) /* 154 */
-ICD_ENTRY(Fogi) /* 155 */
-ICD_ENTRY(Fogiv) /* 156 */
-ICD_ENTRY(FrontFace) /* 157 */
-ICD_ENTRY(Hint) /* 158 */
-ICD_ENTRY(Lightf) /* 159 */
-ICD_ENTRY(Lightfv) /* 160 */
-ICD_ENTRY(Lighti) /* 161 */
-ICD_ENTRY(Lightiv) /* 162 */
-ICD_ENTRY(LightModelf) /* 163 */
-ICD_ENTRY(LightModelfv) /* 164 */
-ICD_ENTRY(LightModeli) /* 165 */
-ICD_ENTRY(LightModeliv) /* 166 */
-ICD_ENTRY(LineStipple) /* 167 */
-ICD_ENTRY(LineWidth) /* 168 */
-ICD_ENTRY(Materialf) /* 169 */
-ICD_ENTRY(Materialfv) /* 170 */
-ICD_ENTRY(Materiali) /* 171 */
-ICD_ENTRY(Materialiv) /* 172 */
-ICD_ENTRY(PointSize) /* 173 */
-ICD_ENTRY(PolygonMode) /* 174 */
-ICD_ENTRY(PolygonStipple) /* 175 */
-ICD_ENTRY(Scissor) /* 176 */
-ICD_ENTRY(ShadeModel) /* 177 */
-ICD_ENTRY(TexParameterf) /* 178 */
-ICD_ENTRY(TexParameterfv) /* 179 */
-ICD_ENTRY(TexParameteri) /* 180 */
-ICD_ENTRY(TexParameteriv) /* 181 */
-ICD_ENTRY(TexImage1D) /* 182 */
-ICD_ENTRY(TexImage2D) /* 183 */
-ICD_ENTRY(TexEnvf) /* 184 */
-ICD_ENTRY(TexEnvfv) /* 185 */
-ICD_ENTRY(TexEnvi) /* 186 */
-ICD_ENTRY(TexEnviv) /* 187 */
-ICD_ENTRY(TexGend) /* 188 */
-ICD_ENTRY(TexGendv) /* 189 */
-ICD_ENTRY(TexGenf) /* 190 */
-ICD_ENTRY(TexGenfv) /* 191 */
-ICD_ENTRY(TexGeni) /* 192 */
-ICD_ENTRY(TexGeniv) /* 193 */
-ICD_ENTRY(FeedbackBuffer) /* 194 */
-ICD_ENTRY(SelectBuffer) /* 195 */
-ICD_ENTRY(RenderMode) /* 196 */
-ICD_ENTRY(InitNames) /* 197 */
-ICD_ENTRY(LoadName) /* 198 */
-ICD_ENTRY(PassThrough) /* 199 */
-ICD_ENTRY(PopName) /* 200 */
-ICD_ENTRY(PushName) /* 201 */
-ICD_ENTRY(DrawBuffer) /* 202 */
-ICD_ENTRY(Clear) /* 203 */
-ICD_ENTRY(ClearAccum) /* 204 */
-ICD_ENTRY(ClearIndex) /* 205 */
-ICD_ENTRY(ClearColor) /* 206 */
-ICD_ENTRY(ClearStencil) /* 207 */
-ICD_ENTRY(ClearDepth) /* 208 */
-ICD_ENTRY(StencilMask) /* 209 */
-ICD_ENTRY(ColorMask) /* 210 */
-ICD_ENTRY(DepthMask) /* 211 */
-ICD_ENTRY(IndexMask) /* 212 */
-ICD_ENTRY(Accum) /* 213 */
-ICD_ENTRY(Disable) /* 214 */
-ICD_ENTRY(Enable) /* 215 */
-ICD_ENTRY(Finish) /* 216 */
-ICD_ENTRY(Flush) /* 217 */
-ICD_ENTRY(PopAttrib) /* 218 */
-ICD_ENTRY(PushAttrib) /* 219 */
-ICD_ENTRY(Map1d) /* 220 */
-ICD_ENTRY(Map1f) /* 221 */
-ICD_ENTRY(Map2d) /* 222 */
-ICD_ENTRY(Map2f) /* 223 */
-ICD_ENTRY(MapGrid1d) /* 224 */
-ICD_ENTRY(MapGrid1f) /* 225 */
-ICD_ENTRY(MapGrid2d) /* 226 */
-ICD_ENTRY(MapGrid2f) /* 227 */
-ICD_ENTRY(EvalCoord1d) /* 228 */
-ICD_ENTRY(EvalCoord1dv) /* 229 */
-ICD_ENTRY(EvalCoord1f) /* 230 */
-ICD_ENTRY(EvalCoord1fv) /* 231 */
-ICD_ENTRY(EvalCoord2d) /* 232 */
-ICD_ENTRY(EvalCoord2dv) /* 233 */
-ICD_ENTRY(EvalCoord2f) /* 234 */
-ICD_ENTRY(EvalCoord2fv) /* 235 */
-ICD_ENTRY(EvalMesh1) /* 236 */
-ICD_ENTRY(EvalPoint1) /* 237 */
-ICD_ENTRY(EvalMesh2) /* 238 */
-ICD_ENTRY(EvalPoint2) /* 239 */
-ICD_ENTRY(AlphaFunc) /* 240 */
-ICD_ENTRY(BlendFunc) /* 241 */
-ICD_ENTRY(LogicOp) /* 242 */
-ICD_ENTRY(StencilFunc) /* 243 */
-ICD_ENTRY(StencilOp) /* 244 */
-ICD_ENTRY(DepthFunc) /* 245 */
-ICD_ENTRY(PixelZoom) /* 246 */
-ICD_ENTRY(PixelTransferf) /* 247 */
-ICD_ENTRY(PixelTransferi) /* 248 */
-ICD_ENTRY(PixelStoref) /* 249 */
-ICD_ENTRY(PixelStorei) /* 250 */
-ICD_ENTRY(PixelMapfv) /* 251 */
-ICD_ENTRY(PixelMapuiv) /* 252 */
-ICD_ENTRY(PixelMapusv) /* 253 */
-ICD_ENTRY(ReadBuffer) /* 254 */
-ICD_ENTRY(CopyPixels) /* 255 */
-ICD_ENTRY(ReadPixels) /* 256 */
-ICD_ENTRY(DrawPixels) /* 257 */
-ICD_ENTRY(GetBooleanv) /* 258 */
-ICD_ENTRY(GetClipPlane) /* 259 */
-ICD_ENTRY(GetDoublev) /* 260 */
-ICD_ENTRY(GetError) /* 261 */
-ICD_ENTRY(GetFloatv) /* 262 */
-ICD_ENTRY(GetIntegerv) /* 263 */
-ICD_ENTRY(GetLightfv) /* 264 */
-ICD_ENTRY(GetLightiv) /* 265 */
-ICD_ENTRY(GetMapdv) /* 266 */
-ICD_ENTRY(GetMapfv) /* 267 */
-ICD_ENTRY(GetMapiv) /* 268 */
-ICD_ENTRY(GetMaterialfv) /* 269 */
-ICD_ENTRY(GetMaterialiv) /* 270 */
-ICD_ENTRY(GetPixelMapfv) /* 271 */
-ICD_ENTRY(GetPixelMapuiv) /* 272 */
-ICD_ENTRY(GetPixelMapusv) /* 273 */
-ICD_ENTRY(GetPolygonStipple) /* 274 */
-ICD_ENTRY(GetString) /* 275 */
-ICD_ENTRY(GetTexEnvfv) /* 276 */
-ICD_ENTRY(GetTexEnviv) /* 277 */
-ICD_ENTRY(GetTexGendv) /* 278 */
-ICD_ENTRY(GetTexGenfv) /* 279 */
-ICD_ENTRY(GetTexGeniv) /* 280 */
-ICD_ENTRY(GetTexImage) /* 281 */
-ICD_ENTRY(GetTexParameterfv) /* 282 */
-ICD_ENTRY(GetTexParameteriv) /* 283 */
-ICD_ENTRY(GetTexLevelParameterfv) /* 284 */
-ICD_ENTRY(GetTexLevelParameteriv) /* 285 */
-ICD_ENTRY(IsEnabled) /* 286 */
-ICD_ENTRY(IsList) /* 287 */
-ICD_ENTRY(DepthRange) /* 288 */
-ICD_ENTRY(Frustum) /* 289 */
-ICD_ENTRY(LoadIdentity) /* 290 */
-ICD_ENTRY(LoadMatrixf) /* 291 */
-ICD_ENTRY(LoadMatrixd) /* 292 */
-ICD_ENTRY(MatrixMode) /* 293 */
-ICD_ENTRY(MultMatrixf) /* 294 */
-ICD_ENTRY(MultMatrixd) /* 295 */
-ICD_ENTRY(Ortho) /* 296 */
-ICD_ENTRY(PopMatrix) /* 297 */
-ICD_ENTRY(PushMatrix) /* 298 */
-ICD_ENTRY(Rotated) /* 299 */
-ICD_ENTRY(Rotatef) /* 300 */
-ICD_ENTRY(Scaled) /* 301 */
-ICD_ENTRY(Scalef) /* 302 */
-ICD_ENTRY(Translated) /* 303 */
-ICD_ENTRY(Translatef) /* 304 */
-ICD_ENTRY(Viewport) /* 305 */
-ICD_ENTRY(ArrayElement) /* 306 */
-ICD_ENTRY(BindTexture) /* 307 */
-ICD_ENTRY(ColorPointer) /* 308 */
-ICD_ENTRY(DisableClientState) /* 309 */
-ICD_ENTRY(DrawArrays) /* 310 */
-ICD_ENTRY(DrawElements) /* 311 */
-ICD_ENTRY(EdgeFlagPointer) /* 312 */
-ICD_ENTRY(EnableClientState) /* 313 */
-ICD_ENTRY(IndexPointer) /* 314 */
-ICD_ENTRY(Indexub) /* 315 */
-ICD_ENTRY(Indexubv) /* 316 */
-ICD_ENTRY(InterleavedArrays) /* 317 */
-ICD_ENTRY(NormalPointer) /* 318 */
-ICD_ENTRY(PolygonOffset) /* 319 */
-ICD_ENTRY(TexCoordPointer) /* 320 */
-ICD_ENTRY(VertexPointer) /* 321 */
-ICD_ENTRY(AreTexturesResident) /* 322 */
-ICD_ENTRY(CopyTexImage1D) /* 323 */
-ICD_ENTRY(CopyTexImage2D) /* 324 */
-ICD_ENTRY(CopyTexSubImage1D) /* 325 */
-ICD_ENTRY(CopyTexSubImage2D) /* 326 */
-ICD_ENTRY(DeleteTextures) /* 327 */
-ICD_ENTRY(GenTextures) /* 328 */
-ICD_ENTRY(GetPointerv) /* 329 */
-ICD_ENTRY(IsTexture) /* 330 */
-ICD_ENTRY(PrioritizeTextures) /* 331 */
-ICD_ENTRY(TexSubImage1D) /* 332 */
-ICD_ENTRY(TexSubImage2D) /* 333 */
-ICD_ENTRY(PopClientAttrib) /* 334 */
-ICD_ENTRY(PushClientAttrib) /* 335 */
diff --git a/mesalib/src/mesa/drivers/windows/icd/mesa.def b/mesalib/src/mesa/drivers/windows/icd/mesa.def
deleted file mode 100644
index 6f33d170f..000000000
--- a/mesalib/src/mesa/drivers/windows/icd/mesa.def
+++ /dev/null
@@ -1,102 +0,0 @@
-DESCRIPTION 'Mesa (OpenGL driver) for Win32'
-VERSION 6.1
-
-EXPORTS
-;
-; ICD API
- DrvCopyContext
- DrvCreateContext
- DrvCreateLayerContext
- DrvDeleteContext
- DrvDescribeLayerPlane
- DrvDescribePixelFormat
- DrvGetLayerPaletteEntries
- DrvGetProcAddress
- DrvReleaseContext
- DrvRealizeLayerPalette
- DrvSetContext
- DrvSetLayerPaletteEntries
- DrvSetPixelFormat
- DrvShareLists
- DrvSwapBuffers
- DrvSwapLayerBuffers
- DrvValidateVersion
-
-;
-; Mesa internals - mostly for OSMESA
- _vbo_CreateContext
- _vbo_DestroyContext
- _vbo_InvalidateState
- _glapi_get_context
- _glapi_get_proc_address
- _mesa_buffer_data
- _mesa_buffer_map
- _mesa_buffer_subdata
- _mesa_choose_tex_format
- _mesa_compressed_texture_size
- _mesa_create_framebuffer
- _mesa_create_visual
- _mesa_delete_buffer_object
- _mesa_delete_texture_object
- _mesa_destroy_framebuffer
- _mesa_destroy_visual
- _mesa_enable_1_3_extensions
- _mesa_enable_1_4_extensions
- _mesa_enable_1_5_extensions
- _mesa_enable_sw_extensions
- _mesa_error
- _mesa_free_context_data
- _mesa_get_current_context
- _mesa_init_default_imports
- _mesa_init_driver_functions
- _mesa_initialize_context
- _mesa_make_current
- _mesa_new_buffer_object
- _mesa_new_texture_object
- _mesa_problem
- _mesa_ResizeBuffersMESA
- _mesa_store_compressed_teximage1d
- _mesa_store_compressed_teximage2d
- _mesa_store_compressed_teximage3d
- _mesa_store_compressed_texsubimage1d
- _mesa_store_compressed_texsubimage2d
- _mesa_store_compressed_texsubimage3d
- _mesa_store_teximage1d
- _mesa_store_teximage2d
- _mesa_store_teximage3d
- _mesa_store_texsubimage1d
- _mesa_store_texsubimage2d
- _mesa_store_texsubimage3d
- _mesa_test_proxy_teximage
- _mesa_Viewport
- _mesa_meta_CopyColorSubTable
- _mesa_meta_CopyColorTable
- _mesa_meta_CopyConvolutionFilter1D
- _mesa_meta_CopyConvolutionFilter2D
- _mesa_meta_CopyTexImage1D
- _mesa_meta_CopyTexImage2D
- _mesa_meta_CopyTexSubImage1D
- _mesa_meta_CopyTexSubImage2D
- _mesa_meta_CopyTexSubImage3D
- _swrast_Accum
- _swrast_Bitmap
- _swrast_CopyPixels
- _swrast_DrawBuffer
- _swrast_DrawPixels
- _swrast_GetDeviceDriverReference
- _swrast_Clear
- _swrast_choose_line
- _swrast_choose_triangle
- _swrast_CreateContext
- _swrast_DestroyContext
- _swrast_InvalidateState
- _swrast_ReadPixels
- _swsetup_Wakeup
- _swsetup_CreateContext
- _swsetup_DestroyContext
- _swsetup_InvalidateState
- _tnl_CreateContext
- _tnl_DestroyContext
- _tnl_InvalidateState
- _tnl_MakeCurrent
- _tnl_run_pipeline
diff --git a/mesalib/src/mesa/main/api_arrayelt.c b/mesalib/src/mesa/main/api_arrayelt.c
index 2eb41996d..742816248 100644
--- a/mesalib/src/mesa/main/api_arrayelt.c
+++ b/mesalib/src/mesa/main/api_arrayelt.c
@@ -1602,10 +1602,10 @@ void _ae_map_vbos( struct gl_context *ctx )
_ae_update_state(ctx);
for (i = 0; i < actx->nr_vbos; i++)
- ctx->Driver.MapBuffer(ctx,
- GL_ARRAY_BUFFER_ARB,
- GL_DYNAMIC_DRAW_ARB,
- actx->vbo[i]);
+ ctx->Driver.MapBufferRange(ctx, 0,
+ actx->vbo[i]->Size,
+ GL_MAP_READ_BIT,
+ actx->vbo[i]);
if (actx->nr_vbos)
actx->mapped_vbos = GL_TRUE;
@@ -1622,9 +1622,7 @@ void _ae_unmap_vbos( struct gl_context *ctx )
assert (!actx->NewState);
for (i = 0; i < actx->nr_vbos; i++)
- ctx->Driver.UnmapBuffer(ctx,
- GL_ARRAY_BUFFER_ARB,
- actx->vbo[i]);
+ ctx->Driver.UnmapBuffer(ctx, actx->vbo[i]);
actx->mapped_vbos = GL_FALSE;
}
diff --git a/mesalib/src/mesa/main/api_validate.c b/mesalib/src/mesa/main/api_validate.c
index 2981d4229..699b414f5 100644
--- a/mesalib/src/mesa/main/api_validate.c
+++ b/mesalib/src/mesa/main/api_validate.c
@@ -65,8 +65,8 @@ _mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type,
if (_mesa_is_bufferobj(elementBuf)) {
/* elements are in a user-defined buffer object. need to map it */
- map = ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER,
- GL_READ_ONLY, elementBuf);
+ map = ctx->Driver.MapBufferRange(ctx, 0, elementBuf->Size,
+ GL_MAP_READ_BIT, elementBuf);
/* Actual address is the sum of pointers */
indices = (const GLvoid *) ADD_POINTERS(map, (const GLubyte *) indices);
}
@@ -89,7 +89,7 @@ _mesa_max_buffer_index(struct gl_context *ctx, GLuint count, GLenum type,
}
if (map) {
- ctx->Driver.UnmapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER_ARB, elementBuf);
+ ctx->Driver.UnmapBuffer(ctx, elementBuf);
}
return max;
diff --git a/mesalib/src/mesa/main/bufferobj.c b/mesalib/src/mesa/main/bufferobj.c
index 07b678373..79ca91e04 100644
--- a/mesalib/src/mesa/main/bufferobj.c
+++ b/mesalib/src/mesa/main/bufferobj.c
@@ -386,11 +386,11 @@ _mesa_buffer_data( struct gl_context *ctx, GLenum target, GLsizeiptrARB size,
* \sa glBufferSubDataARB, dd_function_table::BufferSubData.
*/
void
-_mesa_buffer_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset,
+_mesa_buffer_subdata( struct gl_context *ctx, GLintptrARB offset,
GLsizeiptrARB size, const GLvoid * data,
struct gl_buffer_object * bufObj )
{
- (void) ctx; (void) target;
+ (void) ctx;
/* this should have been caught in _mesa_BufferSubData() */
ASSERT(size + offset <= bufObj->Size);
@@ -419,12 +419,11 @@ _mesa_buffer_subdata( struct gl_context *ctx, GLenum target, GLintptrARB offset,
* \sa glBufferGetSubDataARB, dd_function_table::GetBufferSubData.
*/
void
-_mesa_buffer_get_subdata( struct gl_context *ctx,
- GLenum target, GLintptrARB offset,
+_mesa_buffer_get_subdata( struct gl_context *ctx, GLintptrARB offset,
GLsizeiptrARB size, GLvoid * data,
struct gl_buffer_object * bufObj )
{
- (void) ctx; (void) target;
+ (void) ctx;
if (bufObj->Data && ((GLsizeiptrARB) (size + offset) <= bufObj->Size)) {
memcpy( data, (GLubyte *) bufObj->Data + offset, size );
@@ -433,49 +432,15 @@ _mesa_buffer_get_subdata( struct gl_context *ctx,
/**
- * Default callback for \c dd_function_tabel::MapBuffer().
- *
- * The function parameters will have been already tested for errors.
- *
- * \param ctx GL context.
- * \param target Buffer object target on which to operate.
- * \param access Information about how the buffer will be accessed.
- * \param bufObj Object to be mapped.
- * \return A pointer to the object's internal data store that can be accessed
- * by the processor
- *
- * \sa glMapBufferARB, dd_function_table::MapBuffer
- */
-void *
-_mesa_buffer_map( struct gl_context *ctx, GLenum target, GLenum access,
- struct gl_buffer_object *bufObj )
-{
- (void) ctx;
- (void) target;
- (void) access;
- /* Just return a direct pointer to the data */
- if (_mesa_bufferobj_mapped(bufObj)) {
- /* already mapped! */
- return NULL;
- }
- bufObj->Pointer = bufObj->Data;
- bufObj->Length = bufObj->Size;
- bufObj->Offset = 0;
- return bufObj->Pointer;
-}
-
-
-/**
* Default fallback for \c dd_function_table::MapBufferRange().
* Called via glMapBufferRange().
*/
static void *
-_mesa_buffer_map_range( struct gl_context *ctx, GLenum target, GLintptr offset,
+_mesa_buffer_map_range( struct gl_context *ctx, GLintptr offset,
GLsizeiptr length, GLbitfield access,
struct gl_buffer_object *bufObj )
{
(void) ctx;
- (void) target;
assert(!_mesa_bufferobj_mapped(bufObj));
/* Just return a direct pointer to the data */
bufObj->Pointer = bufObj->Data + offset;
@@ -491,12 +456,11 @@ _mesa_buffer_map_range( struct gl_context *ctx, GLenum target, GLintptr offset,
* Called via glFlushMappedBufferRange().
*/
static void
-_mesa_buffer_flush_mapped_range( struct gl_context *ctx, GLenum target,
+_mesa_buffer_flush_mapped_range( struct gl_context *ctx,
GLintptr offset, GLsizeiptr length,
struct gl_buffer_object *obj )
{
(void) ctx;
- (void) target;
(void) offset;
(void) length;
(void) obj;
@@ -512,11 +476,9 @@ _mesa_buffer_flush_mapped_range( struct gl_context *ctx, GLenum target,
* \sa glUnmapBufferARB, dd_function_table::UnmapBuffer
*/
GLboolean
-_mesa_buffer_unmap( struct gl_context *ctx, GLenum target,
- struct gl_buffer_object *bufObj )
+_mesa_buffer_unmap( struct gl_context *ctx, struct gl_buffer_object *bufObj )
{
(void) ctx;
- (void) target;
/* XXX we might assert here that bufObj->Pointer is non-null */
bufObj->Pointer = NULL;
bufObj->Length = 0;
@@ -543,16 +505,16 @@ _mesa_copy_buffer_subdata(struct gl_context *ctx,
assert(!_mesa_bufferobj_mapped(src));
assert(!_mesa_bufferobj_mapped(dst));
- srcPtr = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_COPY_READ_BUFFER,
- GL_READ_ONLY, src);
- dstPtr = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_COPY_WRITE_BUFFER,
- GL_WRITE_ONLY, dst);
+ srcPtr = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, src->Size,
+ GL_MAP_READ_BIT, src);
+ dstPtr = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, dst->Size,
+ GL_MAP_WRITE_BIT, dst);
if (srcPtr && dstPtr)
memcpy(dstPtr + writeOffset, srcPtr + readOffset, size);
- ctx->Driver.UnmapBuffer(ctx, GL_COPY_READ_BUFFER, src);
- ctx->Driver.UnmapBuffer(ctx, GL_COPY_WRITE_BUFFER, dst);
+ ctx->Driver.UnmapBuffer(ctx, src);
+ ctx->Driver.UnmapBuffer(ctx, dst);
}
@@ -712,7 +674,6 @@ _mesa_init_buffer_object_functions(struct dd_function_table *driver)
driver->BufferData = _mesa_buffer_data;
driver->BufferSubData = _mesa_buffer_subdata;
driver->GetBufferSubData = _mesa_buffer_get_subdata;
- driver->MapBuffer = _mesa_buffer_map;
driver->UnmapBuffer = _mesa_buffer_unmap;
/* GL_ARB_map_buffer_range */
@@ -774,7 +735,7 @@ _mesa_DeleteBuffersARB(GLsizei n, const GLuint *ids)
if (_mesa_bufferobj_mapped(bufObj)) {
/* if mapped, unmap it now */
- ctx->Driver.UnmapBuffer(ctx, 0, bufObj);
+ ctx->Driver.UnmapBuffer(ctx, bufObj);
bufObj->AccessFlags = DEFAULT_ACCESS;
bufObj->Pointer = NULL;
}
@@ -934,7 +895,7 @@ _mesa_BufferDataARB(GLenum target, GLsizeiptrARB size,
if (_mesa_bufferobj_mapped(bufObj)) {
/* Unmap the existing buffer. We'll replace it now. Not an error. */
- ctx->Driver.UnmapBuffer(ctx, target, bufObj);
+ ctx->Driver.UnmapBuffer(ctx, bufObj);
bufObj->AccessFlags = DEFAULT_ACCESS;
ASSERT(bufObj->Pointer == NULL);
}
@@ -980,7 +941,7 @@ _mesa_BufferSubDataARB(GLenum target, GLintptrARB offset,
bufObj->Written = GL_TRUE;
ASSERT(ctx->Driver.BufferSubData);
- ctx->Driver.BufferSubData( ctx, target, offset, size, data, bufObj );
+ ctx->Driver.BufferSubData( ctx, offset, size, data, bufObj );
}
@@ -1000,7 +961,7 @@ _mesa_GetBufferSubDataARB(GLenum target, GLintptrARB offset,
}
ASSERT(ctx->Driver.GetBufferSubData);
- ctx->Driver.GetBufferSubData( ctx, target, offset, size, data, bufObj );
+ ctx->Driver.GetBufferSubData( ctx, offset, size, data, bufObj );
}
@@ -1043,8 +1004,8 @@ _mesa_MapBufferARB(GLenum target, GLenum access)
return NULL;
}
- ASSERT(ctx->Driver.MapBuffer);
- map = ctx->Driver.MapBuffer( ctx, target, access, bufObj );
+ ASSERT(ctx->Driver.MapBufferRange);
+ map = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size, accessFlags, bufObj);
if (!map) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glMapBufferARB(map failed)");
return NULL;
@@ -1147,7 +1108,7 @@ _mesa_UnmapBufferARB(GLenum target)
}
#endif
- status = ctx->Driver.UnmapBuffer( ctx, target, bufObj );
+ status = ctx->Driver.UnmapBuffer( ctx, bufObj );
bufObj->AccessFlags = DEFAULT_ACCESS;
ASSERT(bufObj->Pointer == NULL);
ASSERT(bufObj->Offset == 0);
@@ -1451,8 +1412,7 @@ _mesa_MapBufferRange(GLenum target, GLintptr offset, GLsizeiptr length,
}
ASSERT(ctx->Driver.MapBufferRange);
- map = ctx->Driver.MapBufferRange(ctx, target, offset, length,
- access, bufObj);
+ map = ctx->Driver.MapBufferRange(ctx, offset, length, access, bufObj);
if (!map) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glMapBufferARB(map failed)");
}
@@ -1535,7 +1495,7 @@ _mesa_FlushMappedBufferRange(GLenum target, GLintptr offset, GLsizeiptr length)
ASSERT(bufObj->AccessFlags & GL_MAP_WRITE_BIT);
if (ctx->Driver.FlushMappedBufferRange)
- ctx->Driver.FlushMappedBufferRange(ctx, target, offset, length, bufObj);
+ ctx->Driver.FlushMappedBufferRange(ctx, offset, length, bufObj);
}
diff --git a/mesalib/src/mesa/main/compiler.h b/mesalib/src/mesa/main/compiler.h
index f46f72352..942ac6b0a 100644
--- a/mesalib/src/mesa/main/compiler.h
+++ b/mesalib/src/mesa/main/compiler.h
@@ -45,9 +45,6 @@
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
-#if defined(__linux__) && defined(__i386__)
-#include <fpu_control.h>
-#endif
#include <float.h>
#include <stdarg.h>
diff --git a/mesalib/src/mesa/main/dd.h b/mesalib/src/mesa/main/dd.h
index aae68439a..6a0e248a9 100644
--- a/mesalib/src/mesa/main/dd.h
+++ b/mesalib/src/mesa/main/dd.h
@@ -194,7 +194,7 @@ struct dd_function_table {
* cases, srcFormat and srcType can be GL_NONE.
* Called by glTexImage(), etc.
*/
- GLuint (*ChooseTextureFormat)( struct gl_context *ctx, GLint internalFormat,
+ gl_format (*ChooseTextureFormat)( struct gl_context *ctx, GLint internalFormat,
GLenum srcFormat, GLenum srcType );
/**
@@ -698,17 +698,14 @@ struct dd_function_table {
const GLvoid *data, GLenum usage,
struct gl_buffer_object *obj );
- void (*BufferSubData)( struct gl_context *ctx, GLenum target, GLintptrARB offset,
+ void (*BufferSubData)( struct gl_context *ctx, GLintptrARB offset,
GLsizeiptrARB size, const GLvoid *data,
struct gl_buffer_object *obj );
- void (*GetBufferSubData)( struct gl_context *ctx, GLenum target,
+ void (*GetBufferSubData)( struct gl_context *ctx,
GLintptrARB offset, GLsizeiptrARB size,
GLvoid *data, struct gl_buffer_object *obj );
- void * (*MapBuffer)( struct gl_context *ctx, GLenum target, GLenum access,
- struct gl_buffer_object *obj );
-
void (*CopyBufferSubData)( struct gl_context *ctx,
struct gl_buffer_object *src,
struct gl_buffer_object *dst,
@@ -717,15 +714,15 @@ struct dd_function_table {
/* May return NULL if MESA_MAP_NOWAIT_BIT is set in access:
*/
- void * (*MapBufferRange)( struct gl_context *ctx, GLenum target, GLintptr offset,
+ void * (*MapBufferRange)( struct gl_context *ctx, GLintptr offset,
GLsizeiptr length, GLbitfield access,
struct gl_buffer_object *obj);
- void (*FlushMappedBufferRange)(struct gl_context *ctx, GLenum target,
+ void (*FlushMappedBufferRange)(struct gl_context *ctx,
GLintptr offset, GLsizeiptr length,
struct gl_buffer_object *obj);
- GLboolean (*UnmapBuffer)( struct gl_context *ctx, GLenum target,
+ GLboolean (*UnmapBuffer)( struct gl_context *ctx,
struct gl_buffer_object *obj );
/*@}*/
diff --git a/mesalib/src/mesa/main/debug.c b/mesalib/src/mesa/main/debug.c
index 99030ac8e..b1fc096f2 100644
--- a/mesalib/src/mesa/main/debug.c
+++ b/mesalib/src/mesa/main/debug.c
@@ -1,634 +1,623 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-#include "mtypes.h"
-#include "attrib.h"
-#include "colormac.h"
-#include "enums.h"
-#include "formats.h"
-#include "hash.h"
-#include "imports.h"
-#include "debug.h"
-#include "get.h"
-#include "pixelstore.h"
-#include "readpix.h"
-#include "texobj.h"
-
-
-static const char *
-tex_target_name(GLenum tgt)
-{
- static const struct {
- GLenum target;
- const char *name;
- } tex_targets[] = {
- { GL_TEXTURE_1D, "GL_TEXTURE_1D" },
- { GL_TEXTURE_2D, "GL_TEXTURE_2D" },
- { GL_TEXTURE_3D, "GL_TEXTURE_3D" },
- { GL_TEXTURE_CUBE_MAP, "GL_TEXTURE_CUBE_MAP" },
- { GL_TEXTURE_RECTANGLE, "GL_TEXTURE_RECTANGLE" },
- { GL_TEXTURE_1D_ARRAY_EXT, "GL_TEXTURE_1D_ARRAY" },
- { GL_TEXTURE_2D_ARRAY_EXT, "GL_TEXTURE_2D_ARRAY" }
- };
- GLuint i;
- for (i = 0; i < Elements(tex_targets); i++) {
- if (tex_targets[i].target == tgt)
- return tex_targets[i].name;
- }
- return "UNKNOWN TEX TARGET";
-}
-
-
-void
-_mesa_print_state( const char *msg, GLuint state )
-{
- _mesa_debug(NULL,
- "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
- msg,
- state,
- (state & _NEW_MODELVIEW) ? "ctx->ModelView, " : "",
- (state & _NEW_PROJECTION) ? "ctx->Projection, " : "",
- (state & _NEW_TEXTURE_MATRIX) ? "ctx->TextureMatrix, " : "",
- (state & _NEW_COLOR) ? "ctx->Color, " : "",
- (state & _NEW_DEPTH) ? "ctx->Depth, " : "",
- (state & _NEW_EVAL) ? "ctx->Eval/EvalMap, " : "",
- (state & _NEW_FOG) ? "ctx->Fog, " : "",
- (state & _NEW_HINT) ? "ctx->Hint, " : "",
- (state & _NEW_LIGHT) ? "ctx->Light, " : "",
- (state & _NEW_LINE) ? "ctx->Line, " : "",
- (state & _NEW_PIXEL) ? "ctx->Pixel, " : "",
- (state & _NEW_POINT) ? "ctx->Point, " : "",
- (state & _NEW_POLYGON) ? "ctx->Polygon, " : "",
- (state & _NEW_POLYGONSTIPPLE) ? "ctx->PolygonStipple, " : "",
- (state & _NEW_SCISSOR) ? "ctx->Scissor, " : "",
- (state & _NEW_STENCIL) ? "ctx->Stencil, " : "",
- (state & _NEW_TEXTURE) ? "ctx->Texture, " : "",
- (state & _NEW_TRANSFORM) ? "ctx->Transform, " : "",
- (state & _NEW_VIEWPORT) ? "ctx->Viewport, " : "",
- (state & _NEW_PACKUNPACK) ? "ctx->Pack/Unpack, " : "",
- (state & _NEW_ARRAY) ? "ctx->Array, " : "",
- (state & _NEW_RENDERMODE) ? "ctx->RenderMode, " : "",
- (state & _NEW_BUFFERS) ? "ctx->Visual, ctx->DrawBuffer,, " : "");
-}
-
-
-
-void
-_mesa_print_tri_caps( const char *name, GLuint flags )
-{
- _mesa_debug(NULL,
- "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s\n",
- name,
- flags,
- (flags & DD_FLATSHADE) ? "flat-shade, " : "",
- (flags & DD_SEPARATE_SPECULAR) ? "separate-specular, " : "",
- (flags & DD_TRI_LIGHT_TWOSIDE) ? "tri-light-twoside, " : "",
- (flags & DD_TRI_TWOSTENCIL) ? "tri-twostencil, " : "",
- (flags & DD_TRI_UNFILLED) ? "tri-unfilled, " : "",
- (flags & DD_TRI_STIPPLE) ? "tri-stipple, " : "",
- (flags & DD_TRI_OFFSET) ? "tri-offset, " : "",
- (flags & DD_TRI_SMOOTH) ? "tri-smooth, " : "",
- (flags & DD_LINE_SMOOTH) ? "line-smooth, " : "",
- (flags & DD_LINE_STIPPLE) ? "line-stipple, " : "",
- (flags & DD_POINT_SMOOTH) ? "point-smooth, " : "",
- (flags & DD_POINT_ATTEN) ? "point-atten, " : "",
- (flags & DD_TRI_CULL_FRONT_BACK) ? "cull-all, " : ""
- );
-}
-
-
-/**
- * Print information about this Mesa version and build options.
- */
-void _mesa_print_info( void )
-{
- _mesa_debug(NULL, "Mesa GL_VERSION = %s\n",
- (char *) _mesa_GetString(GL_VERSION));
- _mesa_debug(NULL, "Mesa GL_RENDERER = %s\n",
- (char *) _mesa_GetString(GL_RENDERER));
- _mesa_debug(NULL, "Mesa GL_VENDOR = %s\n",
- (char *) _mesa_GetString(GL_VENDOR));
- _mesa_debug(NULL, "Mesa GL_EXTENSIONS = %s\n",
- (char *) _mesa_GetString(GL_EXTENSIONS));
-#if defined(THREADS)
- _mesa_debug(NULL, "Mesa thread-safe: YES\n");
-#else
- _mesa_debug(NULL, "Mesa thread-safe: NO\n");
-#endif
-#if defined(USE_X86_ASM)
- _mesa_debug(NULL, "Mesa x86-optimized: YES\n");
-#else
- _mesa_debug(NULL, "Mesa x86-optimized: NO\n");
-#endif
-#if defined(USE_SPARC_ASM)
- _mesa_debug(NULL, "Mesa sparc-optimized: YES\n");
-#else
- _mesa_debug(NULL, "Mesa sparc-optimized: NO\n");
-#endif
-}
-
-
-/**
- * Set the debugging flags.
- *
- * \param debug debug string
- *
- * If compiled with debugging support then search for keywords in \p debug and
- * enables the verbose debug output of the respective feature.
- */
-static void add_debug_flags( const char *debug )
-{
-#ifdef DEBUG
- struct debug_option {
- const char *name;
- GLbitfield flag;
- };
- static const struct debug_option debug_opt[] = {
- { "varray", VERBOSE_VARRAY },
- { "tex", VERBOSE_TEXTURE },
- { "mat", VERBOSE_MATERIAL },
- { "pipe", VERBOSE_PIPELINE },
- { "driver", VERBOSE_DRIVER },
- { "state", VERBOSE_STATE },
- { "api", VERBOSE_API },
- { "list", VERBOSE_DISPLAY_LIST },
- { "lighting", VERBOSE_LIGHTING },
- { "disassem", VERBOSE_DISASSEM },
- { "draw", VERBOSE_DRAW },
- { "swap", VERBOSE_SWAPBUFFERS }
- };
- GLuint i;
-
- MESA_VERBOSE = 0x0;
- for (i = 0; i < Elements(debug_opt); i++) {
- if (strstr(debug, debug_opt[i].name) || strcmp(debug, "all") == 0)
- MESA_VERBOSE |= debug_opt[i].flag;
- }
-
- /* Debug flag:
- */
- if (strstr(debug, "flush"))
- MESA_DEBUG_FLAGS |= DEBUG_ALWAYS_FLUSH;
-
-#if defined(_FPU_GETCW) && defined(_FPU_SETCW)
- if (strstr(debug, "fpexceptions")) {
- /* raise FP exceptions */
- fpu_control_t mask;
- _FPU_GETCW(mask);
- mask &= ~(_FPU_MASK_IM | _FPU_MASK_DM | _FPU_MASK_ZM
- | _FPU_MASK_OM | _FPU_MASK_UM);
- _FPU_SETCW(mask);
- }
-#endif
-
-#else
- (void) debug;
-#endif
-}
-
-
-void
-_mesa_init_debug( struct gl_context *ctx )
-{
- char *c;
- c = _mesa_getenv("MESA_DEBUG");
- if (c)
- add_debug_flags(c);
-
- c = _mesa_getenv("MESA_VERBOSE");
- if (c)
- add_debug_flags(c);
-}
-
-
-/*
- * Write ppm file
- */
-static void
-write_ppm(const char *filename, const GLubyte *buffer, int width, int height,
- int comps, int rcomp, int gcomp, int bcomp, GLboolean invert)
-{
- FILE *f = fopen( filename, "w" );
- if (f) {
- int x, y;
- const GLubyte *ptr = buffer;
- fprintf(f,"P6\n");
- fprintf(f,"# ppm-file created by osdemo.c\n");
- fprintf(f,"%i %i\n", width,height);
- fprintf(f,"255\n");
- fclose(f);
- f = fopen( filename, "ab" ); /* reopen in binary append mode */
- for (y=0; y < height; y++) {
- for (x = 0; x < width; x++) {
- int yy = invert ? (height - 1 - y) : y;
- int i = (yy * width + x) * comps;
- fputc(ptr[i+rcomp], f); /* write red */
- fputc(ptr[i+gcomp], f); /* write green */
- fputc(ptr[i+bcomp], f); /* write blue */
- }
- }
- fclose(f);
- }
- else {
- fprintf(stderr, "Unable to create %s in write_ppm()\n", filename);
- }
-}
-
-
-/**
- * Write a texture image to a ppm file.
- * \param face cube face in [0,5]
- * \param level mipmap level
- */
-static void
-write_texture_image(struct gl_texture_object *texObj,
- GLuint face, GLuint level)
-{
- struct gl_texture_image *img = texObj->Image[face][level];
- if (img) {
- GET_CURRENT_CONTEXT(ctx);
- struct gl_pixelstore_attrib store;
- GLubyte *buffer;
- char s[100];
-
- buffer = (GLubyte *) malloc(img->Width * img->Height
- * img->Depth * 4);
-
- store = ctx->Pack; /* save */
- ctx->Pack = ctx->DefaultPacking;
-
- ctx->Driver.GetTexImage(ctx, texObj->Target, level,
- GL_RGBA, GL_UNSIGNED_BYTE,
- buffer, texObj, img);
-
- /* make filename */
- _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);
-
- ctx->Pack = store; /* restore */
-
- free(buffer);
- }
-}
-
-
-/**
- * Write renderbuffer image to a ppm file.
- */
-void
-_mesa_write_renderbuffer_image(const struct gl_renderbuffer *rb)
-{
- GET_CURRENT_CONTEXT(ctx);
- GLubyte *buffer;
- char s[100];
- GLenum format, type;
-
- if (rb->_BaseFormat == GL_RGB ||
- rb->_BaseFormat == GL_RGBA) {
- format = GL_RGBA;
- type = GL_UNSIGNED_BYTE;
- }
- else if (rb->_BaseFormat == GL_DEPTH_STENCIL) {
- format = GL_DEPTH_STENCIL;
- type = GL_UNSIGNED_INT_24_8;
- }
- else {
- _mesa_debug(NULL,
- "Unsupported BaseFormat 0x%x in "
- "_mesa_write_renderbuffer_image()\n",
- rb->_BaseFormat);
- return;
- }
-
- buffer = (GLubyte *) malloc(rb->Width * rb->Height * 4);
-
- ctx->Driver.ReadPixels(ctx, 0, 0, rb->Width, rb->Height,
- format, type, &ctx->DefaultPacking, buffer);
-
- /* make filename */
- _mesa_snprintf(s, sizeof(s), "/tmp/renderbuffer%u.ppm", rb->Name);
- _mesa_snprintf(s, sizeof(s), "C:\\renderbuffer%u.ppm", rb->Name);
-
- printf(" Writing renderbuffer image to %s\n", s);
-
- _mesa_debug(NULL, " Writing renderbuffer image to %s\n", s);
-
- write_ppm(s, buffer, rb->Width, rb->Height, 4, 0, 1, 2, GL_TRUE);
-
- free(buffer);
-}
-
-
-/** How many texture images (mipmap levels, faces) to write to files */
-#define WRITE_NONE 0
-#define WRITE_ONE 1
-#define WRITE_ALL 2
-
-static GLuint WriteImages;
-
-
-static void
-dump_texture(struct gl_texture_object *texObj, GLuint writeImages)
-{
- const GLuint numFaces = texObj->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
- GLboolean written = GL_FALSE;
- GLuint i, j;
-
- printf("Texture %u\n", texObj->Name);
- printf(" Target %s\n", tex_target_name(texObj->Target));
- for (i = 0; i < MAX_TEXTURE_LEVELS; i++) {
- for (j = 0; j < numFaces; j++) {
- struct gl_texture_image *texImg = texObj->Image[j][i];
- if (texImg) {
- printf(" Face %u level %u: %d x %d x %d, format %s at %p\n",
- j, i,
- texImg->Width, texImg->Height, texImg->Depth,
- _mesa_get_format_name(texImg->TexFormat),
- texImg->Data);
- if (writeImages == WRITE_ALL ||
- (writeImages == WRITE_ONE && !written)) {
- write_texture_image(texObj, j, i);
- written = GL_TRUE;
- }
- }
- }
- }
-}
-
-
-/**
- * Dump a single texture.
- */
-void
-_mesa_dump_texture(GLuint texture, GLuint writeImages)
-{
- GET_CURRENT_CONTEXT(ctx);
- struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, texture);
- if (texObj) {
- dump_texture(texObj, writeImages);
- }
-}
-
-
-static void
-dump_texture_cb(GLuint id, void *data, void *userData)
-{
- struct gl_texture_object *texObj = (struct gl_texture_object *) data;
- (void) userData;
- dump_texture(texObj, WriteImages);
-}
-
-
-/**
- * Print basic info about all texture objext to stdout.
- * If dumpImages is true, write PPM of level[0] image to a file.
- */
-void
-_mesa_dump_textures(GLuint writeImages)
-{
- GET_CURRENT_CONTEXT(ctx);
- WriteImages = writeImages;
- _mesa_HashWalk(ctx->Shared->TexObjects, dump_texture_cb, ctx);
-}
-
-
-static void
-dump_renderbuffer(const struct gl_renderbuffer *rb, GLboolean writeImage)
-{
- printf("Renderbuffer %u: %u x %u IntFormat = %s\n",
- rb->Name, rb->Width, rb->Height,
- _mesa_lookup_enum_by_nr(rb->InternalFormat));
- if (writeImage) {
- _mesa_write_renderbuffer_image(rb);
- }
-}
-
-
-static void
-dump_renderbuffer_cb(GLuint id, void *data, void *userData)
-{
- const struct gl_renderbuffer *rb = (const struct gl_renderbuffer *) data;
- (void) userData;
- dump_renderbuffer(rb, WriteImages);
-}
-
-
-/**
- * Print basic info about all renderbuffers to stdout.
- * If dumpImages is true, write PPM of level[0] image to a file.
- */
-void
-_mesa_dump_renderbuffers(GLboolean writeImages)
-{
- GET_CURRENT_CONTEXT(ctx);
- WriteImages = writeImages;
- _mesa_HashWalk(ctx->Shared->RenderBuffers, dump_renderbuffer_cb, ctx);
-}
-
-
-
-void
-_mesa_dump_color_buffer(const char *filename)
-{
- GET_CURRENT_CONTEXT(ctx);
- const GLuint w = ctx->DrawBuffer->Width;
- const GLuint h = ctx->DrawBuffer->Height;
- GLubyte *buf;
-
- buf = (GLubyte *) malloc(w * h * 4);
-
- _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
- _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1);
- _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE);
-
- _mesa_ReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, buf);
-
- printf("ReadBuffer %p 0x%x DrawBuffer %p 0x%x\n",
- (void *) ctx->ReadBuffer->_ColorReadBuffer,
- ctx->ReadBuffer->ColorReadBuffer,
- (void *) ctx->DrawBuffer->_ColorDrawBuffers[0],
- ctx->DrawBuffer->ColorDrawBuffer[0]);
- printf("Writing %d x %d color buffer to %s\n", w, h, filename);
- write_ppm(filename, buf, w, h, 4, 0, 1, 2, GL_TRUE);
-
- _mesa_PopClientAttrib();
-
- free(buf);
-}
-
-
-void
-_mesa_dump_depth_buffer(const char *filename)
-{
- GET_CURRENT_CONTEXT(ctx);
- const GLuint w = ctx->DrawBuffer->Width;
- const GLuint h = ctx->DrawBuffer->Height;
- GLuint *buf;
- GLubyte *buf2;
- GLuint i;
-
- buf = (GLuint *) malloc(w * h * 4); /* 4 bpp */
- buf2 = (GLubyte *) malloc(w * h * 3); /* 3 bpp */
-
- _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
- _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1);
- _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE);
-
- _mesa_ReadPixels(0, 0, w, h, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, buf);
-
- /* spread 24 bits of Z across R, G, B */
- for (i = 0; i < w * h; i++) {
- buf2[i*3+0] = (buf[i] >> 24) & 0xff;
- buf2[i*3+1] = (buf[i] >> 16) & 0xff;
- buf2[i*3+2] = (buf[i] >> 8) & 0xff;
- }
-
- printf("Writing %d x %d depth buffer to %s\n", w, h, filename);
- write_ppm(filename, buf2, w, h, 3, 0, 1, 2, GL_TRUE);
-
- _mesa_PopClientAttrib();
-
- free(buf);
- free(buf2);
-}
-
-
-void
-_mesa_dump_stencil_buffer(const char *filename)
-{
- GET_CURRENT_CONTEXT(ctx);
- const GLuint w = ctx->DrawBuffer->Width;
- const GLuint h = ctx->DrawBuffer->Height;
- GLubyte *buf;
- GLubyte *buf2;
- GLuint i;
-
- buf = (GLubyte *) malloc(w * h); /* 1 bpp */
- buf2 = (GLubyte *) malloc(w * h * 3); /* 3 bpp */
-
- _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
- _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1);
- _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE);
-
- _mesa_ReadPixels(0, 0, w, h, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf);
-
- for (i = 0; i < w * h; i++) {
- buf2[i*3+0] = buf[i];
- buf2[i*3+1] = (buf[i] & 127) * 2;
- buf2[i*3+2] = (buf[i] - 128) * 2;
- }
-
- printf("Writing %d x %d stencil buffer to %s\n", w, h, filename);
- write_ppm(filename, buf2, w, h, 3, 0, 1, 2, GL_TRUE);
-
- _mesa_PopClientAttrib();
-
- free(buf);
- free(buf2);
-}
-
-
-void
-_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h,
- GLenum format, GLenum type)
-{
- GLboolean invert = GL_TRUE;
-
- if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) {
- write_ppm(filename, image, w, h, 4, 0, 1, 2, invert);
- }
- else if (format == GL_BGRA && type == GL_UNSIGNED_BYTE) {
- write_ppm(filename, image, w, h, 4, 2, 1, 0, invert);
- }
- else if (format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE) {
- write_ppm(filename, image, w, h, 2, 1, 0, 0, invert);
- }
- else {
- _mesa_problem(NULL, "Unsupported format/type in _mesa_dump_image()");
- }
-}
-
-
-/**
- * Quick and dirty function to "print" a texture to stdout.
- */
-void
-_mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img)
-{
-#if CHAN_TYPE != GL_UNSIGNED_BYTE
- _mesa_problem(NULL, "PrintTexture not supported");
-#else
- GLuint i, j, c;
- const GLubyte *data = (const GLubyte *) img->Data;
-
- if (!data) {
- printf("No texture data\n");
- return;
- }
-
- /* XXX add more formats or make into a new format utility function */
- switch (img->TexFormat) {
- case MESA_FORMAT_A8:
- case MESA_FORMAT_L8:
- case MESA_FORMAT_I8:
- case MESA_FORMAT_CI8:
- c = 1;
- break;
- case MESA_FORMAT_AL88:
- case MESA_FORMAT_AL88_REV:
- c = 2;
- break;
- case MESA_FORMAT_RGB888:
- case MESA_FORMAT_BGR888:
- c = 3;
- break;
- case MESA_FORMAT_RGBA8888:
- case MESA_FORMAT_ARGB8888:
- c = 4;
- break;
- default:
- _mesa_problem(NULL, "error in PrintTexture\n");
- return;
- }
-
- for (i = 0; i < img->Height; i++) {
- for (j = 0; j < img->Width; j++) {
- if (c==1)
- printf("%02x ", data[0]);
- else if (c==2)
- printf("%02x%02x ", data[0], data[1]);
- else if (c==3)
- printf("%02x%02x%02x ", data[0], data[1], data[2]);
- else if (c==4)
- printf("%02x%02x%02x%02x ", data[0], data[1], data[2], data[3]);
- data += (img->RowStride - img->Width) * c;
- }
- /* XXX use img->ImageStride here */
- printf("\n");
- }
-#endif
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2005 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include "mtypes.h"
+#include "attrib.h"
+#include "colormac.h"
+#include "enums.h"
+#include "formats.h"
+#include "hash.h"
+#include "imports.h"
+#include "debug.h"
+#include "get.h"
+#include "pixelstore.h"
+#include "readpix.h"
+#include "texobj.h"
+
+
+static const char *
+tex_target_name(GLenum tgt)
+{
+ static const struct {
+ GLenum target;
+ const char *name;
+ } tex_targets[] = {
+ { GL_TEXTURE_1D, "GL_TEXTURE_1D" },
+ { GL_TEXTURE_2D, "GL_TEXTURE_2D" },
+ { GL_TEXTURE_3D, "GL_TEXTURE_3D" },
+ { GL_TEXTURE_CUBE_MAP, "GL_TEXTURE_CUBE_MAP" },
+ { GL_TEXTURE_RECTANGLE, "GL_TEXTURE_RECTANGLE" },
+ { GL_TEXTURE_1D_ARRAY_EXT, "GL_TEXTURE_1D_ARRAY" },
+ { GL_TEXTURE_2D_ARRAY_EXT, "GL_TEXTURE_2D_ARRAY" }
+ };
+ GLuint i;
+ for (i = 0; i < Elements(tex_targets); i++) {
+ if (tex_targets[i].target == tgt)
+ return tex_targets[i].name;
+ }
+ return "UNKNOWN TEX TARGET";
+}
+
+
+void
+_mesa_print_state( const char *msg, GLuint state )
+{
+ _mesa_debug(NULL,
+ "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ msg,
+ state,
+ (state & _NEW_MODELVIEW) ? "ctx->ModelView, " : "",
+ (state & _NEW_PROJECTION) ? "ctx->Projection, " : "",
+ (state & _NEW_TEXTURE_MATRIX) ? "ctx->TextureMatrix, " : "",
+ (state & _NEW_COLOR) ? "ctx->Color, " : "",
+ (state & _NEW_DEPTH) ? "ctx->Depth, " : "",
+ (state & _NEW_EVAL) ? "ctx->Eval/EvalMap, " : "",
+ (state & _NEW_FOG) ? "ctx->Fog, " : "",
+ (state & _NEW_HINT) ? "ctx->Hint, " : "",
+ (state & _NEW_LIGHT) ? "ctx->Light, " : "",
+ (state & _NEW_LINE) ? "ctx->Line, " : "",
+ (state & _NEW_PIXEL) ? "ctx->Pixel, " : "",
+ (state & _NEW_POINT) ? "ctx->Point, " : "",
+ (state & _NEW_POLYGON) ? "ctx->Polygon, " : "",
+ (state & _NEW_POLYGONSTIPPLE) ? "ctx->PolygonStipple, " : "",
+ (state & _NEW_SCISSOR) ? "ctx->Scissor, " : "",
+ (state & _NEW_STENCIL) ? "ctx->Stencil, " : "",
+ (state & _NEW_TEXTURE) ? "ctx->Texture, " : "",
+ (state & _NEW_TRANSFORM) ? "ctx->Transform, " : "",
+ (state & _NEW_VIEWPORT) ? "ctx->Viewport, " : "",
+ (state & _NEW_PACKUNPACK) ? "ctx->Pack/Unpack, " : "",
+ (state & _NEW_ARRAY) ? "ctx->Array, " : "",
+ (state & _NEW_RENDERMODE) ? "ctx->RenderMode, " : "",
+ (state & _NEW_BUFFERS) ? "ctx->Visual, ctx->DrawBuffer,, " : "");
+}
+
+
+
+void
+_mesa_print_tri_caps( const char *name, GLuint flags )
+{
+ _mesa_debug(NULL,
+ "%s: (0x%x) %s%s%s%s%s%s%s%s%s%s%s%s%s\n",
+ name,
+ flags,
+ (flags & DD_FLATSHADE) ? "flat-shade, " : "",
+ (flags & DD_SEPARATE_SPECULAR) ? "separate-specular, " : "",
+ (flags & DD_TRI_LIGHT_TWOSIDE) ? "tri-light-twoside, " : "",
+ (flags & DD_TRI_TWOSTENCIL) ? "tri-twostencil, " : "",
+ (flags & DD_TRI_UNFILLED) ? "tri-unfilled, " : "",
+ (flags & DD_TRI_STIPPLE) ? "tri-stipple, " : "",
+ (flags & DD_TRI_OFFSET) ? "tri-offset, " : "",
+ (flags & DD_TRI_SMOOTH) ? "tri-smooth, " : "",
+ (flags & DD_LINE_SMOOTH) ? "line-smooth, " : "",
+ (flags & DD_LINE_STIPPLE) ? "line-stipple, " : "",
+ (flags & DD_POINT_SMOOTH) ? "point-smooth, " : "",
+ (flags & DD_POINT_ATTEN) ? "point-atten, " : "",
+ (flags & DD_TRI_CULL_FRONT_BACK) ? "cull-all, " : ""
+ );
+}
+
+
+/**
+ * Print information about this Mesa version and build options.
+ */
+void _mesa_print_info( void )
+{
+ _mesa_debug(NULL, "Mesa GL_VERSION = %s\n",
+ (char *) _mesa_GetString(GL_VERSION));
+ _mesa_debug(NULL, "Mesa GL_RENDERER = %s\n",
+ (char *) _mesa_GetString(GL_RENDERER));
+ _mesa_debug(NULL, "Mesa GL_VENDOR = %s\n",
+ (char *) _mesa_GetString(GL_VENDOR));
+ _mesa_debug(NULL, "Mesa GL_EXTENSIONS = %s\n",
+ (char *) _mesa_GetString(GL_EXTENSIONS));
+#if defined(THREADS)
+ _mesa_debug(NULL, "Mesa thread-safe: YES\n");
+#else
+ _mesa_debug(NULL, "Mesa thread-safe: NO\n");
+#endif
+#if defined(USE_X86_ASM)
+ _mesa_debug(NULL, "Mesa x86-optimized: YES\n");
+#else
+ _mesa_debug(NULL, "Mesa x86-optimized: NO\n");
+#endif
+#if defined(USE_SPARC_ASM)
+ _mesa_debug(NULL, "Mesa sparc-optimized: YES\n");
+#else
+ _mesa_debug(NULL, "Mesa sparc-optimized: NO\n");
+#endif
+}
+
+
+/**
+ * Set the debugging flags.
+ *
+ * \param debug debug string
+ *
+ * If compiled with debugging support then search for keywords in \p debug and
+ * enables the verbose debug output of the respective feature.
+ */
+static void add_debug_flags( const char *debug )
+{
+#ifdef DEBUG
+ struct debug_option {
+ const char *name;
+ GLbitfield flag;
+ };
+ static const struct debug_option debug_opt[] = {
+ { "varray", VERBOSE_VARRAY },
+ { "tex", VERBOSE_TEXTURE },
+ { "mat", VERBOSE_MATERIAL },
+ { "pipe", VERBOSE_PIPELINE },
+ { "driver", VERBOSE_DRIVER },
+ { "state", VERBOSE_STATE },
+ { "api", VERBOSE_API },
+ { "list", VERBOSE_DISPLAY_LIST },
+ { "lighting", VERBOSE_LIGHTING },
+ { "disassem", VERBOSE_DISASSEM },
+ { "draw", VERBOSE_DRAW },
+ { "swap", VERBOSE_SWAPBUFFERS }
+ };
+ GLuint i;
+
+ MESA_VERBOSE = 0x0;
+ for (i = 0; i < Elements(debug_opt); i++) {
+ if (strstr(debug, debug_opt[i].name) || strcmp(debug, "all") == 0)
+ MESA_VERBOSE |= debug_opt[i].flag;
+ }
+
+ /* Debug flag:
+ */
+ if (strstr(debug, "flush"))
+ MESA_DEBUG_FLAGS |= DEBUG_ALWAYS_FLUSH;
+
+#else
+ (void) debug;
+#endif
+}
+
+
+void
+_mesa_init_debug( struct gl_context *ctx )
+{
+ char *c;
+ c = _mesa_getenv("MESA_DEBUG");
+ if (c)
+ add_debug_flags(c);
+
+ c = _mesa_getenv("MESA_VERBOSE");
+ if (c)
+ add_debug_flags(c);
+}
+
+
+/*
+ * Write ppm file
+ */
+static void
+write_ppm(const char *filename, const GLubyte *buffer, int width, int height,
+ int comps, int rcomp, int gcomp, int bcomp, GLboolean invert)
+{
+ FILE *f = fopen( filename, "w" );
+ if (f) {
+ int x, y;
+ const GLubyte *ptr = buffer;
+ fprintf(f,"P6\n");
+ fprintf(f,"# ppm-file created by osdemo.c\n");
+ fprintf(f,"%i %i\n", width,height);
+ fprintf(f,"255\n");
+ fclose(f);
+ f = fopen( filename, "ab" ); /* reopen in binary append mode */
+ for (y=0; y < height; y++) {
+ for (x = 0; x < width; x++) {
+ int yy = invert ? (height - 1 - y) : y;
+ int i = (yy * width + x) * comps;
+ fputc(ptr[i+rcomp], f); /* write red */
+ fputc(ptr[i+gcomp], f); /* write green */
+ fputc(ptr[i+bcomp], f); /* write blue */
+ }
+ }
+ fclose(f);
+ }
+ else {
+ fprintf(stderr, "Unable to create %s in write_ppm()\n", filename);
+ }
+}
+
+
+/**
+ * Write a texture image to a ppm file.
+ * \param face cube face in [0,5]
+ * \param level mipmap level
+ */
+static void
+write_texture_image(struct gl_texture_object *texObj,
+ GLuint face, GLuint level)
+{
+ struct gl_texture_image *img = texObj->Image[face][level];
+ if (img) {
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_pixelstore_attrib store;
+ GLubyte *buffer;
+ char s[100];
+
+ buffer = (GLubyte *) malloc(img->Width * img->Height
+ * img->Depth * 4);
+
+ store = ctx->Pack; /* save */
+ ctx->Pack = ctx->DefaultPacking;
+
+ ctx->Driver.GetTexImage(ctx, texObj->Target, level,
+ GL_RGBA, GL_UNSIGNED_BYTE,
+ buffer, texObj, img);
+
+ /* make filename */
+ _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);
+
+ ctx->Pack = store; /* restore */
+
+ free(buffer);
+ }
+}
+
+
+/**
+ * Write renderbuffer image to a ppm file.
+ */
+void
+_mesa_write_renderbuffer_image(const struct gl_renderbuffer *rb)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLubyte *buffer;
+ char s[100];
+ GLenum format, type;
+
+ if (rb->_BaseFormat == GL_RGB ||
+ rb->_BaseFormat == GL_RGBA) {
+ format = GL_RGBA;
+ type = GL_UNSIGNED_BYTE;
+ }
+ else if (rb->_BaseFormat == GL_DEPTH_STENCIL) {
+ format = GL_DEPTH_STENCIL;
+ type = GL_UNSIGNED_INT_24_8;
+ }
+ else {
+ _mesa_debug(NULL,
+ "Unsupported BaseFormat 0x%x in "
+ "_mesa_write_renderbuffer_image()\n",
+ rb->_BaseFormat);
+ return;
+ }
+
+ buffer = (GLubyte *) malloc(rb->Width * rb->Height * 4);
+
+ ctx->Driver.ReadPixels(ctx, 0, 0, rb->Width, rb->Height,
+ format, type, &ctx->DefaultPacking, buffer);
+
+ /* make filename */
+ _mesa_snprintf(s, sizeof(s), "/tmp/renderbuffer%u.ppm", rb->Name);
+ _mesa_snprintf(s, sizeof(s), "C:\\renderbuffer%u.ppm", rb->Name);
+
+ printf(" Writing renderbuffer image to %s\n", s);
+
+ _mesa_debug(NULL, " Writing renderbuffer image to %s\n", s);
+
+ write_ppm(s, buffer, rb->Width, rb->Height, 4, 0, 1, 2, GL_TRUE);
+
+ free(buffer);
+}
+
+
+/** How many texture images (mipmap levels, faces) to write to files */
+#define WRITE_NONE 0
+#define WRITE_ONE 1
+#define WRITE_ALL 2
+
+static GLuint WriteImages;
+
+
+static void
+dump_texture(struct gl_texture_object *texObj, GLuint writeImages)
+{
+ const GLuint numFaces = texObj->Target == GL_TEXTURE_CUBE_MAP ? 6 : 1;
+ GLboolean written = GL_FALSE;
+ GLuint i, j;
+
+ printf("Texture %u\n", texObj->Name);
+ printf(" Target %s\n", tex_target_name(texObj->Target));
+ for (i = 0; i < MAX_TEXTURE_LEVELS; i++) {
+ for (j = 0; j < numFaces; j++) {
+ struct gl_texture_image *texImg = texObj->Image[j][i];
+ if (texImg) {
+ printf(" Face %u level %u: %d x %d x %d, format %s at %p\n",
+ j, i,
+ texImg->Width, texImg->Height, texImg->Depth,
+ _mesa_get_format_name(texImg->TexFormat),
+ texImg->Data);
+ if (writeImages == WRITE_ALL ||
+ (writeImages == WRITE_ONE && !written)) {
+ write_texture_image(texObj, j, i);
+ written = GL_TRUE;
+ }
+ }
+ }
+ }
+}
+
+
+/**
+ * Dump a single texture.
+ */
+void
+_mesa_dump_texture(GLuint texture, GLuint writeImages)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ struct gl_texture_object *texObj = _mesa_lookup_texture(ctx, texture);
+ if (texObj) {
+ dump_texture(texObj, writeImages);
+ }
+}
+
+
+static void
+dump_texture_cb(GLuint id, void *data, void *userData)
+{
+ struct gl_texture_object *texObj = (struct gl_texture_object *) data;
+ (void) userData;
+ dump_texture(texObj, WriteImages);
+}
+
+
+/**
+ * Print basic info about all texture objext to stdout.
+ * If dumpImages is true, write PPM of level[0] image to a file.
+ */
+void
+_mesa_dump_textures(GLuint writeImages)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ WriteImages = writeImages;
+ _mesa_HashWalk(ctx->Shared->TexObjects, dump_texture_cb, ctx);
+}
+
+
+static void
+dump_renderbuffer(const struct gl_renderbuffer *rb, GLboolean writeImage)
+{
+ printf("Renderbuffer %u: %u x %u IntFormat = %s\n",
+ rb->Name, rb->Width, rb->Height,
+ _mesa_lookup_enum_by_nr(rb->InternalFormat));
+ if (writeImage) {
+ _mesa_write_renderbuffer_image(rb);
+ }
+}
+
+
+static void
+dump_renderbuffer_cb(GLuint id, void *data, void *userData)
+{
+ const struct gl_renderbuffer *rb = (const struct gl_renderbuffer *) data;
+ (void) userData;
+ dump_renderbuffer(rb, WriteImages);
+}
+
+
+/**
+ * Print basic info about all renderbuffers to stdout.
+ * If dumpImages is true, write PPM of level[0] image to a file.
+ */
+void
+_mesa_dump_renderbuffers(GLboolean writeImages)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ WriteImages = writeImages;
+ _mesa_HashWalk(ctx->Shared->RenderBuffers, dump_renderbuffer_cb, ctx);
+}
+
+
+
+void
+_mesa_dump_color_buffer(const char *filename)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ const GLuint w = ctx->DrawBuffer->Width;
+ const GLuint h = ctx->DrawBuffer->Height;
+ GLubyte *buf;
+
+ buf = (GLubyte *) malloc(w * h * 4);
+
+ _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
+ _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1);
+ _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE);
+
+ _mesa_ReadPixels(0, 0, w, h, GL_RGBA, GL_UNSIGNED_BYTE, buf);
+
+ printf("ReadBuffer %p 0x%x DrawBuffer %p 0x%x\n",
+ (void *) ctx->ReadBuffer->_ColorReadBuffer,
+ ctx->ReadBuffer->ColorReadBuffer,
+ (void *) ctx->DrawBuffer->_ColorDrawBuffers[0],
+ ctx->DrawBuffer->ColorDrawBuffer[0]);
+ printf("Writing %d x %d color buffer to %s\n", w, h, filename);
+ write_ppm(filename, buf, w, h, 4, 0, 1, 2, GL_TRUE);
+
+ _mesa_PopClientAttrib();
+
+ free(buf);
+}
+
+
+void
+_mesa_dump_depth_buffer(const char *filename)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ const GLuint w = ctx->DrawBuffer->Width;
+ const GLuint h = ctx->DrawBuffer->Height;
+ GLuint *buf;
+ GLubyte *buf2;
+ GLuint i;
+
+ buf = (GLuint *) malloc(w * h * 4); /* 4 bpp */
+ buf2 = (GLubyte *) malloc(w * h * 3); /* 3 bpp */
+
+ _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
+ _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1);
+ _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE);
+
+ _mesa_ReadPixels(0, 0, w, h, GL_DEPTH_COMPONENT, GL_UNSIGNED_INT, buf);
+
+ /* spread 24 bits of Z across R, G, B */
+ for (i = 0; i < w * h; i++) {
+ buf2[i*3+0] = (buf[i] >> 24) & 0xff;
+ buf2[i*3+1] = (buf[i] >> 16) & 0xff;
+ buf2[i*3+2] = (buf[i] >> 8) & 0xff;
+ }
+
+ printf("Writing %d x %d depth buffer to %s\n", w, h, filename);
+ write_ppm(filename, buf2, w, h, 3, 0, 1, 2, GL_TRUE);
+
+ _mesa_PopClientAttrib();
+
+ free(buf);
+ free(buf2);
+}
+
+
+void
+_mesa_dump_stencil_buffer(const char *filename)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ const GLuint w = ctx->DrawBuffer->Width;
+ const GLuint h = ctx->DrawBuffer->Height;
+ GLubyte *buf;
+ GLubyte *buf2;
+ GLuint i;
+
+ buf = (GLubyte *) malloc(w * h); /* 1 bpp */
+ buf2 = (GLubyte *) malloc(w * h * 3); /* 3 bpp */
+
+ _mesa_PushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
+ _mesa_PixelStorei(GL_PACK_ALIGNMENT, 1);
+ _mesa_PixelStorei(GL_PACK_INVERT_MESA, GL_TRUE);
+
+ _mesa_ReadPixels(0, 0, w, h, GL_STENCIL_INDEX, GL_UNSIGNED_BYTE, buf);
+
+ for (i = 0; i < w * h; i++) {
+ buf2[i*3+0] = buf[i];
+ buf2[i*3+1] = (buf[i] & 127) * 2;
+ buf2[i*3+2] = (buf[i] - 128) * 2;
+ }
+
+ printf("Writing %d x %d stencil buffer to %s\n", w, h, filename);
+ write_ppm(filename, buf2, w, h, 3, 0, 1, 2, GL_TRUE);
+
+ _mesa_PopClientAttrib();
+
+ free(buf);
+ free(buf2);
+}
+
+
+void
+_mesa_dump_image(const char *filename, const void *image, GLuint w, GLuint h,
+ GLenum format, GLenum type)
+{
+ GLboolean invert = GL_TRUE;
+
+ if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) {
+ write_ppm(filename, image, w, h, 4, 0, 1, 2, invert);
+ }
+ else if (format == GL_BGRA && type == GL_UNSIGNED_BYTE) {
+ write_ppm(filename, image, w, h, 4, 2, 1, 0, invert);
+ }
+ else if (format == GL_LUMINANCE_ALPHA && type == GL_UNSIGNED_BYTE) {
+ write_ppm(filename, image, w, h, 2, 1, 0, 0, invert);
+ }
+ else {
+ _mesa_problem(NULL, "Unsupported format/type in _mesa_dump_image()");
+ }
+}
+
+
+/**
+ * Quick and dirty function to "print" a texture to stdout.
+ */
+void
+_mesa_print_texture(struct gl_context *ctx, const struct gl_texture_image *img)
+{
+#if CHAN_TYPE != GL_UNSIGNED_BYTE
+ _mesa_problem(NULL, "PrintTexture not supported");
+#else
+ GLuint i, j, c;
+ const GLubyte *data = (const GLubyte *) img->Data;
+
+ if (!data) {
+ printf("No texture data\n");
+ return;
+ }
+
+ /* XXX add more formats or make into a new format utility function */
+ switch (img->TexFormat) {
+ case MESA_FORMAT_A8:
+ case MESA_FORMAT_L8:
+ case MESA_FORMAT_I8:
+ case MESA_FORMAT_CI8:
+ c = 1;
+ break;
+ case MESA_FORMAT_AL88:
+ case MESA_FORMAT_AL88_REV:
+ c = 2;
+ break;
+ case MESA_FORMAT_RGB888:
+ case MESA_FORMAT_BGR888:
+ c = 3;
+ break;
+ case MESA_FORMAT_RGBA8888:
+ case MESA_FORMAT_ARGB8888:
+ c = 4;
+ break;
+ default:
+ _mesa_problem(NULL, "error in PrintTexture\n");
+ return;
+ }
+
+ for (i = 0; i < img->Height; i++) {
+ for (j = 0; j < img->Width; j++) {
+ if (c==1)
+ printf("%02x ", data[0]);
+ else if (c==2)
+ printf("%02x%02x ", data[0], data[1]);
+ else if (c==3)
+ printf("%02x%02x%02x ", data[0], data[1], data[2]);
+ else if (c==4)
+ printf("%02x%02x%02x%02x ", data[0], data[1], data[2], data[3]);
+ data += (img->RowStride - img->Width) * c;
+ }
+ /* XXX use img->ImageStride here */
+ printf("\n");
+ }
+#endif
+}
diff --git a/mesalib/src/mesa/main/dlist.c b/mesalib/src/mesa/main/dlist.c
index 7aa31ff2b..234fd8ee8 100644
--- a/mesalib/src/mesa/main/dlist.c
+++ b/mesalib/src/mesa/main/dlist.c
@@ -894,8 +894,8 @@ unpack_image(struct gl_context *ctx, GLuint dimensions,
GLvoid *image;
map = (GLubyte *)
- ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
- GL_READ_ONLY_ARB, unpack->BufferObj);
+ ctx->Driver.MapBufferRange(ctx, 0, unpack->BufferObj->Size,
+ GL_MAP_READ_BIT, unpack->BufferObj);
if (!map) {
/* unable to map src buffer! */
_mesa_error(ctx, GL_INVALID_OPERATION, "unable to map PBO");
@@ -906,8 +906,7 @@ unpack_image(struct gl_context *ctx, GLuint dimensions,
image = _mesa_unpack_image(dimensions, width, height, depth,
format, type, src, unpack);
- ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
- unpack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj);
if (!image) {
_mesa_error(ctx, GL_OUT_OF_MEMORY, "display list construction");
diff --git a/mesalib/src/mesa/main/drawtex.c b/mesalib/src/mesa/main/drawtex.c
index e386e90f6..83485a928 100644
--- a/mesalib/src/mesa/main/drawtex.c
+++ b/mesalib/src/mesa/main/drawtex.c
@@ -1,133 +1,137 @@
-/*
- * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- */
-
-#include "main/drawtex.h"
-#include "main/state.h"
-#include "main/imports.h"
-#include "main/mfeatures.h"
-#include "main/mtypes.h"
-
-
-#if FEATURE_OES_draw_texture
-
-
-static void
-draw_texture(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
- GLfloat width, GLfloat height)
-{
- if (!ctx->Extensions.OES_draw_texture) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glDrawTex(unsupported)");
- return;
- }
- if (width <= 0.0f || height <= 0.0f) {
- _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTex(width or height <= 0)");
- return;
- }
-
- if (ctx->NewState)
- _mesa_update_state(ctx);
-
- ASSERT(ctx->Driver.DrawTex);
- ctx->Driver.DrawTex(ctx, x, y, z, width, height);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexf(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx, x, y, z, width, height);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexfv(const GLfloat *coords)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx, coords[0], coords[1], coords[2], coords[3], coords[4]);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexi(GLint x, GLint y, GLint z, GLint width, GLint height)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z,
- (GLfloat) width, (GLfloat) height);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexiv(const GLint *coords)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1],
- (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexs(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z,
- (GLfloat) width, (GLfloat) height);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexsv(const GLshort *coords)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1],
- (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx,
- (GLfloat) x / 65536.0f,
- (GLfloat) y / 65536.0f,
- (GLfloat) z / 65536.0f,
- (GLfloat) width / 65536.0f,
- (GLfloat) height / 65536.0f);
-}
-
-
-void GLAPIENTRY
-_mesa_DrawTexxv(const GLfixed *coords)
-{
- GET_CURRENT_CONTEXT(ctx);
- draw_texture(ctx,
- (GLfloat) coords[0] / 65536.0f,
- (GLfloat) coords[1] / 65536.0f,
- (GLfloat) coords[2] / 65536.0f,
- (GLfloat) coords[3] / 65536.0f,
- (GLfloat) coords[4] / 65536.0f);
-}
-
-#endif /* FEATURE_OES_draw_texture */
+/*
+ * Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#include "main/drawtex.h"
+#include "main/state.h"
+#include "main/imports.h"
+#include "main/mfeatures.h"
+#include "main/mtypes.h"
+
+
+#if FEATURE_OES_draw_texture
+
+
+static void
+draw_texture(struct gl_context *ctx, GLfloat x, GLfloat y, GLfloat z,
+ GLfloat width, GLfloat height)
+{
+ if (!ctx->Extensions.OES_draw_texture) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glDrawTex(unsupported)");
+ return;
+ }
+ if (width <= 0.0f || height <= 0.0f) {
+ _mesa_error(ctx, GL_INVALID_VALUE, "glDrawTex(width or height <= 0)");
+ return;
+ }
+
+ _mesa_set_vp_override(ctx, GL_TRUE);
+
+ if (ctx->NewState)
+ _mesa_update_state(ctx);
+
+ ASSERT(ctx->Driver.DrawTex);
+ ctx->Driver.DrawTex(ctx, x, y, z, width, height);
+
+ _mesa_set_vp_override(ctx, GL_FALSE);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexf(GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx, x, y, z, width, height);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexfv(const GLfloat *coords)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx, coords[0], coords[1], coords[2], coords[3], coords[4]);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexi(GLint x, GLint y, GLint z, GLint width, GLint height)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z,
+ (GLfloat) width, (GLfloat) height);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexiv(const GLint *coords)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1],
+ (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexs(GLshort x, GLshort y, GLshort z, GLshort width, GLshort height)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx, (GLfloat) x, (GLfloat) y, (GLfloat) z,
+ (GLfloat) width, (GLfloat) height);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexsv(const GLshort *coords)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx, (GLfloat) coords[0], (GLfloat) coords[1],
+ (GLfloat) coords[2], (GLfloat) coords[3], (GLfloat) coords[4]);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexx(GLfixed x, GLfixed y, GLfixed z, GLfixed width, GLfixed height)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx,
+ (GLfloat) x / 65536.0f,
+ (GLfloat) y / 65536.0f,
+ (GLfloat) z / 65536.0f,
+ (GLfloat) width / 65536.0f,
+ (GLfloat) height / 65536.0f);
+}
+
+
+void GLAPIENTRY
+_mesa_DrawTexxv(const GLfixed *coords)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ draw_texture(ctx,
+ (GLfloat) coords[0] / 65536.0f,
+ (GLfloat) coords[1] / 65536.0f,
+ (GLfloat) coords[2] / 65536.0f,
+ (GLfloat) coords[3] / 65536.0f,
+ (GLfloat) coords[4] / 65536.0f);
+}
+
+#endif /* FEATURE_OES_draw_texture */
diff --git a/mesalib/src/mesa/main/enums.c b/mesalib/src/mesa/main/enums.c
index 34b102e27..021063fc0 100644
--- a/mesalib/src/mesa/main/enums.c
+++ b/mesalib/src/mesa/main/enums.c
@@ -1285,6 +1285,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_NUM_COMPRESSED_TEXTURE_FORMATS\0"
"GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB\0"
"GL_NUM_EXTENSIONS\0"
+ "GL_NUM_PROGRAM_BINARY_FORMATS\0"
"GL_NUM_PROGRAM_BINARY_FORMATS_OES\0"
"GL_NUM_SHADER_BINARY_FORMATS\0"
"GL_OBJECT_ACTIVE_ATTRIBUTES_ARB\0"
@@ -1493,8 +1494,11 @@ LONGSTRING static const char enum_string_table[] =
"GL_PROGRAM_ADDRESS_REGISTERS_ARB\0"
"GL_PROGRAM_ALU_INSTRUCTIONS_ARB\0"
"GL_PROGRAM_ATTRIBS_ARB\0"
+ "GL_PROGRAM_BINARY_FORMATS\0"
"GL_PROGRAM_BINARY_FORMATS_OES\0"
+ "GL_PROGRAM_BINARY_LENGTH\0"
"GL_PROGRAM_BINARY_LENGTH_OES\0"
+ "GL_PROGRAM_BINARY_RETRIEVABLE_HINT\0"
"GL_PROGRAM_BINDING_ARB\0"
"GL_PROGRAM_ERROR_POSITION_ARB\0"
"GL_PROGRAM_ERROR_POSITION_NV\0"
@@ -2352,7 +2356,7 @@ LONGSTRING static const char enum_string_table[] =
"GL_ZOOM_Y\0"
;
-static const enum_elt all_enums[2313] =
+static const enum_elt all_enums[2317] =
{
{ 0, 0x00000600 }, /* GL_2D */
{ 6, 0x00001407 }, /* GL_2_BYTES */
@@ -3602,1096 +3606,1100 @@ static const enum_elt all_enums[2313] =
{ 27636, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
{ 27670, 0x000086A2 }, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB */
{ 27708, 0x0000821D }, /* GL_NUM_EXTENSIONS */
- { 27726, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
- { 27760, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
- { 27789, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
- { 27821, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
- { 27863, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
- { 27893, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
- { 27933, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
- { 27964, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
- { 27993, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
- { 28021, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
- { 28051, 0x00002401 }, /* GL_OBJECT_LINEAR */
- { 28068, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
- { 28094, 0x00002501 }, /* GL_OBJECT_PLANE */
- { 28110, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
- { 28145, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
- { 28167, 0x00009112 }, /* GL_OBJECT_TYPE */
- { 28182, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
- { 28201, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
- { 28231, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
- { 28252, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
- { 28280, 0x00000001 }, /* GL_ONE */
- { 28287, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
- { 28315, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
- { 28347, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
- { 28375, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
- { 28407, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
- { 28430, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
- { 28453, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
- { 28476, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
- { 28499, 0x00008598 }, /* GL_OPERAND0_ALPHA */
- { 28517, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
- { 28539, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
- { 28561, 0x00008590 }, /* GL_OPERAND0_RGB */
- { 28577, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
- { 28597, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
- { 28617, 0x00008599 }, /* GL_OPERAND1_ALPHA */
- { 28635, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
- { 28657, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
- { 28679, 0x00008591 }, /* GL_OPERAND1_RGB */
- { 28695, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
- { 28715, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
- { 28735, 0x0000859A }, /* GL_OPERAND2_ALPHA */
- { 28753, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
- { 28775, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
- { 28797, 0x00008592 }, /* GL_OPERAND2_RGB */
- { 28813, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
- { 28833, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
- { 28853, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
- { 28874, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
- { 28893, 0x00001507 }, /* GL_OR */
- { 28899, 0x00000A01 }, /* GL_ORDER */
- { 28908, 0x0000150D }, /* GL_OR_INVERTED */
- { 28923, 0x0000150B }, /* GL_OR_REVERSE */
- { 28937, 0x00000505 }, /* GL_OUT_OF_MEMORY */
- { 28954, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
- { 28972, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
- { 28993, 0x00008758 }, /* GL_PACK_INVERT_MESA */
- { 29013, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
- { 29031, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
- { 29050, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
- { 29070, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
- { 29090, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
- { 29108, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
- { 29127, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
- { 29152, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
- { 29176, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
- { 29197, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
- { 29219, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
- { 29241, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
- { 29266, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
- { 29290, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
- { 29311, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
- { 29333, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
- { 29355, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
- { 29377, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
- { 29408, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
- { 29428, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- { 29453, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
- { 29473, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- { 29498, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
- { 29518, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- { 29543, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
- { 29563, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- { 29588, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
- { 29608, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- { 29633, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
- { 29653, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- { 29678, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
- { 29698, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- { 29723, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
- { 29743, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- { 29768, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
- { 29788, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- { 29813, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
- { 29833, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- { 29858, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
- { 29876, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
- { 29897, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
- { 29926, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
- { 29959, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
- { 29984, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
- { 30007, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
- { 30038, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
- { 30073, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
- { 30100, 0x00001B00 }, /* GL_POINT */
- { 30109, 0x00000000 }, /* GL_POINTS */
- { 30119, 0x00000002 }, /* GL_POINT_BIT */
- { 30132, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
- { 30162, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
- { 30196, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
- { 30230, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
- { 30265, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
- { 30294, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
- { 30327, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
- { 30360, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
- { 30394, 0x00000B11 }, /* GL_POINT_SIZE */
- { 30408, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- { 30447, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
- { 30471, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
- { 30503, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- { 30534, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- { 30563, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
- { 30589, 0x00008127 }, /* GL_POINT_SIZE_MAX */
- { 30607, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
- { 30629, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
- { 30651, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
- { 30674, 0x00008126 }, /* GL_POINT_SIZE_MIN */
- { 30692, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
- { 30714, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
- { 30736, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
- { 30759, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
- { 30779, 0x00000B10 }, /* GL_POINT_SMOOTH */
- { 30795, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
- { 30816, 0x00008861 }, /* GL_POINT_SPRITE */
- { 30832, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
- { 30852, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
- { 30881, 0x00008861 }, /* GL_POINT_SPRITE_NV */
- { 30900, 0x00008861 }, /* GL_POINT_SPRITE_OES */
- { 30920, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
- { 30946, 0x00000701 }, /* GL_POINT_TOKEN */
- { 30961, 0x00000009 }, /* GL_POLYGON */
- { 30972, 0x00000008 }, /* GL_POLYGON_BIT */
- { 30987, 0x00000B40 }, /* GL_POLYGON_MODE */
- { 31003, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
- { 31026, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
- { 31051, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
- { 31074, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
- { 31097, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
- { 31121, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
- { 31145, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
- { 31163, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
- { 31186, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
- { 31205, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
- { 31228, 0x00000703 }, /* GL_POLYGON_TOKEN */
- { 31245, 0x00001203 }, /* GL_POSITION */
- { 31257, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- { 31289, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
- { 31325, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- { 31358, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
- { 31395, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- { 31426, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
- { 31461, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- { 31493, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
- { 31529, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- { 31562, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- { 31594, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
- { 31630, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- { 31663, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
- { 31700, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- { 31730, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
- { 31764, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- { 31795, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
- { 31830, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
- { 31861, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
- { 31896, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- { 31928, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
- { 31964, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- { 31994, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
- { 32028, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- { 32059, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
- { 32094, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- { 32126, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- { 32157, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
- { 32192, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- { 32224, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
- { 32260, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
- { 32289, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
- { 32322, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
- { 32352, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
- { 32386, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- { 32425, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- { 32458, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- { 32498, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- { 32532, 0x00008578 }, /* GL_PREVIOUS */
- { 32544, 0x00008578 }, /* GL_PREVIOUS_ARB */
- { 32560, 0x00008578 }, /* GL_PREVIOUS_EXT */
- { 32576, 0x00008577 }, /* GL_PRIMARY_COLOR */
- { 32593, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
- { 32614, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
- { 32635, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */
- { 32659, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
- { 32687, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */
- { 32708, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */
- { 32735, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
- { 32765, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
- { 32789, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
- { 32822, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- { 32854, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
- { 32877, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
- { 32907, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
- { 32936, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
- { 32959, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
- { 32989, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
- { 33018, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
- { 33046, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
- { 33068, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- { 33096, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
- { 33124, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
- { 33146, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
- { 33167, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
- { 33207, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- { 33246, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
- { 33276, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- { 33311, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
- { 33344, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
- { 33378, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- { 33417, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- { 33456, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
- { 33478, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
- { 33504, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
- { 33528, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */
- { 33550, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
- { 33576, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
- { 33599, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
- { 33621, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
- { 33642, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
- { 33663, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
- { 33690, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- { 33722, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- { 33754, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- { 33789, 0x00001701 }, /* GL_PROJECTION */
- { 33803, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
- { 33824, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 33867, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
- { 33893, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
- { 33913, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
- { 33937, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
- { 33958, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
- { 33977, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
- { 34000, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
- { 34039, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- { 34077, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
- { 34097, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */
- { 34123, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
- { 34153, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
- { 34177, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
- { 34197, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */
- { 34223, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
- { 34253, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
- { 34277, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
- { 34297, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- { 34330, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
- { 34356, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
- { 34386, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */
- { 34413, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
- { 34444, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
- { 34474, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
- { 34493, 0x00002003 }, /* GL_Q */
- { 34498, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
- { 34523, 0x00000007 }, /* GL_QUADS */
- { 34532, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
- { 34576, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
- { 34624, 0x00008614 }, /* GL_QUAD_MESH_SUN */
- { 34641, 0x00000008 }, /* GL_QUAD_STRIP */
- { 34655, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */
- { 34682, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
- { 34712, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */
- { 34736, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
- { 34763, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
- { 34785, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
- { 34811, 0x00008E14 }, /* GL_QUERY_NO_WAIT */
- { 34828, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
- { 34848, 0x00008866 }, /* GL_QUERY_RESULT */
- { 34864, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
- { 34884, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
- { 34910, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
- { 34940, 0x00008E13 }, /* GL_QUERY_WAIT */
- { 34954, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
- { 34971, 0x00002002 }, /* GL_R */
- { 34976, 0x00008C3A }, /* GL_R11F_G11F_B10F */
- { 34994, 0x00008F98 }, /* GL_R16_SNORM */
- { 35007, 0x00002A10 }, /* GL_R3_G3_B2 */
- { 35019, 0x00008F94 }, /* GL_R8_SNORM */
- { 35031, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */
- { 35053, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
- { 35079, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
- { 35112, 0x00000C02 }, /* GL_READ_BUFFER */
- { 35127, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
- { 35147, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
- { 35175, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
- { 35207, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
- { 35231, 0x000088B8 }, /* GL_READ_ONLY */
- { 35244, 0x000088B8 }, /* GL_READ_ONLY_ARB */
- { 35261, 0x000088BA }, /* GL_READ_WRITE */
- { 35275, 0x000088BA }, /* GL_READ_WRITE_ARB */
- { 35293, 0x00001903 }, /* GL_RED */
- { 35300, 0x00008016 }, /* GL_REDUCE */
- { 35310, 0x00008016 }, /* GL_REDUCE_EXT */
- { 35324, 0x00000D15 }, /* GL_RED_BIAS */
- { 35336, 0x00000D52 }, /* GL_RED_BITS */
- { 35348, 0x00008D94 }, /* GL_RED_INTEGER */
- { 35363, 0x00008D94 }, /* GL_RED_INTEGER_EXT */
- { 35382, 0x00000D14 }, /* GL_RED_SCALE */
- { 35395, 0x00008F90 }, /* GL_RED_SNORM */
- { 35408, 0x00008512 }, /* GL_REFLECTION_MAP */
- { 35426, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
- { 35448, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
- { 35469, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
- { 35491, 0x00008A19 }, /* GL_RELEASED_APPLE */
- { 35509, 0x00001C00 }, /* GL_RENDER */
- { 35519, 0x00008D41 }, /* GL_RENDERBUFFER */
- { 35535, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
- { 35562, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
- { 35593, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
- { 35617, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
- { 35645, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
- { 35673, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
- { 35699, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
- { 35729, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
- { 35756, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
- { 35787, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
- { 35807, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
- { 35834, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
- { 35865, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
- { 35888, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
- { 35915, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
- { 35942, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- { 35974, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
- { 36010, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
- { 36046, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
- { 36066, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
- { 36091, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
- { 36120, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
- { 36144, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
- { 36172, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
- { 36201, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
- { 36234, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
- { 36256, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
- { 36282, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
- { 36308, 0x00001F01 }, /* GL_RENDERER */
- { 36320, 0x00000C40 }, /* GL_RENDER_MODE */
- { 36335, 0x00002901 }, /* GL_REPEAT */
- { 36345, 0x00001E01 }, /* GL_REPLACE */
- { 36356, 0x00008062 }, /* GL_REPLACE_EXT */
- { 36371, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
- { 36394, 0x0000803A }, /* GL_RESCALE_NORMAL */
- { 36412, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
- { 36434, 0x00008256 }, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
- { 36469, 0x00008A1B }, /* GL_RETAINED_APPLE */
- { 36487, 0x00000102 }, /* GL_RETURN */
- { 36497, 0x00008F99 }, /* GL_RG16_SNORM */
- { 36511, 0x00008F95 }, /* GL_RG8_SNORM */
- { 36524, 0x00001907 }, /* GL_RGB */
- { 36531, 0x00008052 }, /* GL_RGB10 */
- { 36540, 0x00008059 }, /* GL_RGB10_A2 */
- { 36552, 0x00008059 }, /* GL_RGB10_A2_EXT */
- { 36568, 0x00008052 }, /* GL_RGB10_EXT */
- { 36581, 0x00008053 }, /* GL_RGB12 */
- { 36590, 0x00008053 }, /* GL_RGB12_EXT */
- { 36603, 0x00008054 }, /* GL_RGB16 */
- { 36612, 0x0000881B }, /* GL_RGB16F */
- { 36622, 0x00008D89 }, /* GL_RGB16I */
- { 36632, 0x00008D89 }, /* GL_RGB16I_EXT */
- { 36646, 0x00008D77 }, /* GL_RGB16UI */
- { 36657, 0x00008D77 }, /* GL_RGB16UI_EXT */
- { 36672, 0x00008054 }, /* GL_RGB16_EXT */
- { 36685, 0x00008F9A }, /* GL_RGB16_SNORM */
- { 36700, 0x0000804E }, /* GL_RGB2_EXT */
- { 36712, 0x00008815 }, /* GL_RGB32F */
- { 36722, 0x00008D83 }, /* GL_RGB32I */
- { 36732, 0x00008D83 }, /* GL_RGB32I_EXT */
- { 36746, 0x00008D71 }, /* GL_RGB32UI */
- { 36757, 0x00008D71 }, /* GL_RGB32UI_EXT */
- { 36772, 0x0000804F }, /* GL_RGB4 */
- { 36780, 0x0000804F }, /* GL_RGB4_EXT */
- { 36792, 0x000083A1 }, /* GL_RGB4_S3TC */
- { 36805, 0x00008050 }, /* GL_RGB5 */
- { 36813, 0x00008D62 }, /* GL_RGB565 */
- { 36823, 0x00008D62 }, /* GL_RGB565_OES */
- { 36837, 0x00008057 }, /* GL_RGB5_A1 */
- { 36848, 0x00008057 }, /* GL_RGB5_A1_EXT */
- { 36863, 0x00008057 }, /* GL_RGB5_A1_OES */
- { 36878, 0x00008050 }, /* GL_RGB5_EXT */
- { 36890, 0x00008051 }, /* GL_RGB8 */
- { 36898, 0x00008D8F }, /* GL_RGB8I */
- { 36907, 0x00008D8F }, /* GL_RGB8I_EXT */
- { 36920, 0x00008D7D }, /* GL_RGB8UI */
- { 36930, 0x00008D7D }, /* GL_RGB8UI_EXT */
- { 36944, 0x00008051 }, /* GL_RGB8_EXT */
- { 36956, 0x00008051 }, /* GL_RGB8_OES */
- { 36968, 0x00008F96 }, /* GL_RGB8_SNORM */
- { 36982, 0x00008C3D }, /* GL_RGB9_E5 */
- { 36993, 0x00001908 }, /* GL_RGBA */
- { 37001, 0x0000805A }, /* GL_RGBA12 */
- { 37011, 0x0000805A }, /* GL_RGBA12_EXT */
- { 37025, 0x0000805B }, /* GL_RGBA16 */
- { 37035, 0x0000881A }, /* GL_RGBA16F */
- { 37046, 0x00008D88 }, /* GL_RGBA16I */
- { 37057, 0x00008D88 }, /* GL_RGBA16I_EXT */
- { 37072, 0x00008D76 }, /* GL_RGBA16UI */
- { 37084, 0x00008D76 }, /* GL_RGBA16UI_EXT */
- { 37100, 0x0000805B }, /* GL_RGBA16_EXT */
- { 37114, 0x00008F9B }, /* GL_RGBA16_SNORM */
- { 37130, 0x00008055 }, /* GL_RGBA2 */
- { 37139, 0x00008055 }, /* GL_RGBA2_EXT */
- { 37152, 0x00008814 }, /* GL_RGBA32F */
- { 37163, 0x00008D82 }, /* GL_RGBA32I */
- { 37174, 0x00008D82 }, /* GL_RGBA32I_EXT */
- { 37189, 0x00008D70 }, /* GL_RGBA32UI */
- { 37201, 0x00008D70 }, /* GL_RGBA32UI_EXT */
- { 37217, 0x00008056 }, /* GL_RGBA4 */
- { 37226, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
- { 37245, 0x00008056 }, /* GL_RGBA4_EXT */
- { 37258, 0x00008056 }, /* GL_RGBA4_OES */
- { 37271, 0x000083A3 }, /* GL_RGBA4_S3TC */
- { 37285, 0x00008058 }, /* GL_RGBA8 */
- { 37294, 0x00008D8E }, /* GL_RGBA8I */
- { 37304, 0x00008D8E }, /* GL_RGBA8I_EXT */
- { 37318, 0x00008D7C }, /* GL_RGBA8UI */
- { 37329, 0x00008D7C }, /* GL_RGBA8UI_EXT */
- { 37344, 0x00008058 }, /* GL_RGBA8_EXT */
- { 37357, 0x00008058 }, /* GL_RGBA8_OES */
- { 37370, 0x00008F97 }, /* GL_RGBA8_SNORM */
- { 37385, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
- { 37403, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */
- { 37426, 0x00008D99 }, /* GL_RGBA_INTEGER */
- { 37442, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */
- { 37462, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */
- { 37487, 0x00000C31 }, /* GL_RGBA_MODE */
- { 37500, 0x000083A2 }, /* GL_RGBA_S3TC */
- { 37513, 0x00008F93 }, /* GL_RGBA_SNORM */
- { 37527, 0x00008D98 }, /* GL_RGB_INTEGER */
- { 37542, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */
- { 37561, 0x000083A0 }, /* GL_RGB_S3TC */
- { 37573, 0x00008573 }, /* GL_RGB_SCALE */
- { 37586, 0x00008573 }, /* GL_RGB_SCALE_ARB */
- { 37603, 0x00008573 }, /* GL_RGB_SCALE_EXT */
- { 37620, 0x00008F92 }, /* GL_RGB_SNORM */
- { 37633, 0x00008F91 }, /* GL_RG_SNORM */
- { 37645, 0x00000407 }, /* GL_RIGHT */
- { 37654, 0x00002000 }, /* GL_S */
- { 37659, 0x00008B5D }, /* GL_SAMPLER_1D */
- { 37673, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */
- { 37693, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */
- { 37717, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */
- { 37744, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */
- { 37775, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
- { 37796, 0x00008B5E }, /* GL_SAMPLER_2D */
- { 37810, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */
- { 37830, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */
- { 37854, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */
- { 37881, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */
- { 37912, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */
- { 37931, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */
- { 37957, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
- { 37978, 0x00008B5F }, /* GL_SAMPLER_3D */
- { 37992, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
- { 38010, 0x00008919 }, /* GL_SAMPLER_BINDING */
- { 38029, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */
- { 38047, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */
- { 38069, 0x00008B60 }, /* GL_SAMPLER_CUBE */
- { 38085, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */
- { 38108, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */
- { 38135, 0x000080A9 }, /* GL_SAMPLES */
- { 38146, 0x000086B4 }, /* GL_SAMPLES_3DFX */
- { 38162, 0x000080A9 }, /* GL_SAMPLES_ARB */
- { 38177, 0x00008914 }, /* GL_SAMPLES_PASSED */
- { 38195, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
- { 38217, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- { 38245, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
- { 38277, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
- { 38300, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
- { 38327, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
- { 38345, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
- { 38368, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
- { 38390, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
- { 38409, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
- { 38432, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
- { 38458, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
- { 38488, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
- { 38513, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
- { 38542, 0x00080000 }, /* GL_SCISSOR_BIT */
- { 38557, 0x00000C10 }, /* GL_SCISSOR_BOX */
- { 38572, 0x00000C11 }, /* GL_SCISSOR_TEST */
- { 38588, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
- { 38613, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
- { 38653, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
- { 38697, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- { 38730, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- { 38760, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- { 38792, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- { 38822, 0x00001C02 }, /* GL_SELECT */
- { 38832, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
- { 38860, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
- { 38885, 0x00008012 }, /* GL_SEPARABLE_2D */
- { 38901, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */
- { 38921, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
- { 38945, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
- { 38972, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
- { 39003, 0x0000150F }, /* GL_SET */
- { 39010, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
- { 39035, 0x00008DFA }, /* GL_SHADER_COMPILER */
- { 39054, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
- { 39075, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
- { 39099, 0x00008B4F }, /* GL_SHADER_TYPE */
- { 39114, 0x00000B54 }, /* GL_SHADE_MODEL */
- { 39129, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
- { 39157, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
- { 39180, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
- { 39210, 0x00001601 }, /* GL_SHININESS */
- { 39223, 0x00001402 }, /* GL_SHORT */
- { 39232, 0x00009119 }, /* GL_SIGNALED */
- { 39244, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
- { 39265, 0x000081F9 }, /* GL_SINGLE_COLOR */
- { 39281, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
- { 39301, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
- { 39320, 0x00008C46 }, /* GL_SLUMINANCE */
- { 39334, 0x00008C47 }, /* GL_SLUMINANCE8 */
- { 39349, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
- { 39371, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
- { 39391, 0x00001D01 }, /* GL_SMOOTH */
- { 39401, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
- { 39434, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
- { 39461, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
- { 39494, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
- { 39521, 0x00008588 }, /* GL_SOURCE0_ALPHA */
- { 39538, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
- { 39559, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
- { 39580, 0x00008580 }, /* GL_SOURCE0_RGB */
- { 39595, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
- { 39614, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
- { 39633, 0x00008589 }, /* GL_SOURCE1_ALPHA */
- { 39650, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
- { 39671, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
- { 39692, 0x00008581 }, /* GL_SOURCE1_RGB */
- { 39707, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
- { 39726, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
- { 39745, 0x0000858A }, /* GL_SOURCE2_ALPHA */
- { 39762, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
- { 39783, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
- { 39804, 0x00008582 }, /* GL_SOURCE2_RGB */
- { 39819, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
- { 39838, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
- { 39857, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
- { 39877, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
- { 39895, 0x00001202 }, /* GL_SPECULAR */
- { 39907, 0x00002402 }, /* GL_SPHERE_MAP */
- { 39921, 0x00001206 }, /* GL_SPOT_CUTOFF */
- { 39936, 0x00001204 }, /* GL_SPOT_DIRECTION */
- { 39954, 0x00001205 }, /* GL_SPOT_EXPONENT */
- { 39971, 0x00008588 }, /* GL_SRC0_ALPHA */
- { 39985, 0x00008580 }, /* GL_SRC0_RGB */
- { 39997, 0x00008589 }, /* GL_SRC1_ALPHA */
- { 40011, 0x00008581 }, /* GL_SRC1_RGB */
- { 40023, 0x0000858A }, /* GL_SRC2_ALPHA */
- { 40037, 0x00008582 }, /* GL_SRC2_RGB */
- { 40049, 0x00000302 }, /* GL_SRC_ALPHA */
- { 40062, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
- { 40084, 0x00000300 }, /* GL_SRC_COLOR */
- { 40097, 0x00008C40 }, /* GL_SRGB */
- { 40105, 0x00008C41 }, /* GL_SRGB8 */
- { 40114, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
- { 40130, 0x00008C42 }, /* GL_SRGB_ALPHA */
- { 40144, 0x00000503 }, /* GL_STACK_OVERFLOW */
- { 40162, 0x00000504 }, /* GL_STACK_UNDERFLOW */
- { 40181, 0x000088E6 }, /* GL_STATIC_COPY */
- { 40196, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
- { 40215, 0x000088E4 }, /* GL_STATIC_DRAW */
- { 40230, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
- { 40249, 0x000088E5 }, /* GL_STATIC_READ */
- { 40264, 0x000088E5 }, /* GL_STATIC_READ_ARB */
- { 40283, 0x00001802 }, /* GL_STENCIL */
- { 40294, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
- { 40316, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
- { 40342, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
- { 40368, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
- { 40389, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
- { 40414, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
- { 40435, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
- { 40460, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- { 40492, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
- { 40528, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
- { 40560, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
- { 40596, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
- { 40616, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
- { 40643, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
- { 40669, 0x00000D57 }, /* GL_STENCIL_BITS */
- { 40685, 0x00008224 }, /* GL_STENCIL_BUFFER */
- { 40703, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
- { 40725, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
- { 40748, 0x00000B94 }, /* GL_STENCIL_FAIL */
- { 40764, 0x00000B92 }, /* GL_STENCIL_FUNC */
- { 40780, 0x00001901 }, /* GL_STENCIL_INDEX */
- { 40797, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
- { 40815, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
- { 40834, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
- { 40857, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
- { 40879, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
- { 40901, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
- { 40919, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
- { 40941, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
- { 40963, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
- { 40981, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
- { 41003, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
- { 41025, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
- { 41046, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
- { 41073, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
- { 41100, 0x00000B97 }, /* GL_STENCIL_REF */
- { 41115, 0x00000B90 }, /* GL_STENCIL_TEST */
- { 41131, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
- { 41160, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
- { 41182, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
- { 41203, 0x00000C33 }, /* GL_STEREO */
- { 41213, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
- { 41237, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
- { 41262, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
- { 41286, 0x000088E2 }, /* GL_STREAM_COPY */
- { 41301, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
- { 41320, 0x000088E0 }, /* GL_STREAM_DRAW */
- { 41335, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
- { 41354, 0x000088E1 }, /* GL_STREAM_READ */
- { 41369, 0x000088E1 }, /* GL_STREAM_READ_ARB */
- { 41388, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
- { 41405, 0x000084E7 }, /* GL_SUBTRACT */
- { 41417, 0x000084E7 }, /* GL_SUBTRACT_ARB */
- { 41433, 0x00009113 }, /* GL_SYNC_CONDITION */
- { 41451, 0x00009116 }, /* GL_SYNC_FENCE */
- { 41465, 0x00009115 }, /* GL_SYNC_FLAGS */
- { 41479, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
- { 41506, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- { 41536, 0x00009114 }, /* GL_SYNC_STATUS */
- { 41551, 0x00002001 }, /* GL_T */
- { 41556, 0x00002A2A }, /* GL_T2F_C3F_V3F */
- { 41571, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
- { 41590, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
- { 41606, 0x00002A2B }, /* GL_T2F_N3F_V3F */
- { 41621, 0x00002A27 }, /* GL_T2F_V3F */
- { 41632, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
- { 41651, 0x00002A28 }, /* GL_T4F_V4F */
- { 41662, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
- { 41685, 0x00001702 }, /* GL_TEXTURE */
- { 41696, 0x000084C0 }, /* GL_TEXTURE0 */
- { 41708, 0x000084C0 }, /* GL_TEXTURE0_ARB */
- { 41724, 0x000084C1 }, /* GL_TEXTURE1 */
- { 41736, 0x000084CA }, /* GL_TEXTURE10 */
- { 41749, 0x000084CA }, /* GL_TEXTURE10_ARB */
- { 41766, 0x000084CB }, /* GL_TEXTURE11 */
- { 41779, 0x000084CB }, /* GL_TEXTURE11_ARB */
- { 41796, 0x000084CC }, /* GL_TEXTURE12 */
- { 41809, 0x000084CC }, /* GL_TEXTURE12_ARB */
- { 41826, 0x000084CD }, /* GL_TEXTURE13 */
- { 41839, 0x000084CD }, /* GL_TEXTURE13_ARB */
- { 41856, 0x000084CE }, /* GL_TEXTURE14 */
- { 41869, 0x000084CE }, /* GL_TEXTURE14_ARB */
- { 41886, 0x000084CF }, /* GL_TEXTURE15 */
- { 41899, 0x000084CF }, /* GL_TEXTURE15_ARB */
- { 41916, 0x000084D0 }, /* GL_TEXTURE16 */
- { 41929, 0x000084D0 }, /* GL_TEXTURE16_ARB */
- { 41946, 0x000084D1 }, /* GL_TEXTURE17 */
- { 41959, 0x000084D1 }, /* GL_TEXTURE17_ARB */
- { 41976, 0x000084D2 }, /* GL_TEXTURE18 */
- { 41989, 0x000084D2 }, /* GL_TEXTURE18_ARB */
- { 42006, 0x000084D3 }, /* GL_TEXTURE19 */
- { 42019, 0x000084D3 }, /* GL_TEXTURE19_ARB */
- { 42036, 0x000084C1 }, /* GL_TEXTURE1_ARB */
- { 42052, 0x000084C2 }, /* GL_TEXTURE2 */
- { 42064, 0x000084D4 }, /* GL_TEXTURE20 */
- { 42077, 0x000084D4 }, /* GL_TEXTURE20_ARB */
- { 42094, 0x000084D5 }, /* GL_TEXTURE21 */
- { 42107, 0x000084D5 }, /* GL_TEXTURE21_ARB */
- { 42124, 0x000084D6 }, /* GL_TEXTURE22 */
- { 42137, 0x000084D6 }, /* GL_TEXTURE22_ARB */
- { 42154, 0x000084D7 }, /* GL_TEXTURE23 */
- { 42167, 0x000084D7 }, /* GL_TEXTURE23_ARB */
- { 42184, 0x000084D8 }, /* GL_TEXTURE24 */
- { 42197, 0x000084D8 }, /* GL_TEXTURE24_ARB */
- { 42214, 0x000084D9 }, /* GL_TEXTURE25 */
- { 42227, 0x000084D9 }, /* GL_TEXTURE25_ARB */
- { 42244, 0x000084DA }, /* GL_TEXTURE26 */
- { 42257, 0x000084DA }, /* GL_TEXTURE26_ARB */
- { 42274, 0x000084DB }, /* GL_TEXTURE27 */
- { 42287, 0x000084DB }, /* GL_TEXTURE27_ARB */
- { 42304, 0x000084DC }, /* GL_TEXTURE28 */
- { 42317, 0x000084DC }, /* GL_TEXTURE28_ARB */
- { 42334, 0x000084DD }, /* GL_TEXTURE29 */
- { 42347, 0x000084DD }, /* GL_TEXTURE29_ARB */
- { 42364, 0x000084C2 }, /* GL_TEXTURE2_ARB */
- { 42380, 0x000084C3 }, /* GL_TEXTURE3 */
- { 42392, 0x000084DE }, /* GL_TEXTURE30 */
- { 42405, 0x000084DE }, /* GL_TEXTURE30_ARB */
- { 42422, 0x000084DF }, /* GL_TEXTURE31 */
- { 42435, 0x000084DF }, /* GL_TEXTURE31_ARB */
- { 42452, 0x000084C3 }, /* GL_TEXTURE3_ARB */
- { 42468, 0x000084C4 }, /* GL_TEXTURE4 */
- { 42480, 0x000084C4 }, /* GL_TEXTURE4_ARB */
- { 42496, 0x000084C5 }, /* GL_TEXTURE5 */
- { 42508, 0x000084C5 }, /* GL_TEXTURE5_ARB */
- { 42524, 0x000084C6 }, /* GL_TEXTURE6 */
- { 42536, 0x000084C6 }, /* GL_TEXTURE6_ARB */
- { 42552, 0x000084C7 }, /* GL_TEXTURE7 */
- { 42564, 0x000084C7 }, /* GL_TEXTURE7_ARB */
- { 42580, 0x000084C8 }, /* GL_TEXTURE8 */
- { 42592, 0x000084C8 }, /* GL_TEXTURE8_ARB */
- { 42608, 0x000084C9 }, /* GL_TEXTURE9 */
- { 42620, 0x000084C9 }, /* GL_TEXTURE9_ARB */
- { 42636, 0x00000DE0 }, /* GL_TEXTURE_1D */
- { 42650, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */
- { 42670, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
- { 42694, 0x00000DE1 }, /* GL_TEXTURE_2D */
- { 42708, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */
- { 42728, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
- { 42752, 0x0000806F }, /* GL_TEXTURE_3D */
- { 42766, 0x0000806F }, /* GL_TEXTURE_3D_OES */
- { 42784, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
- { 42806, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
- { 42832, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
- { 42854, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
- { 42876, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */
- { 42904, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
- { 42936, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
- { 42958, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */
- { 42986, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
- { 43018, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
- { 43040, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
- { 43066, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */
- { 43092, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */
- { 43122, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
- { 43150, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
- { 43182, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
- { 43214, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */
- { 43243, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
- { 43276, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
- { 43308, 0x00040000 }, /* GL_TEXTURE_BIT */
- { 43323, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
- { 43344, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
- { 43369, 0x00001005 }, /* GL_TEXTURE_BORDER */
- { 43387, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
- { 43411, 0x00008C2A }, /* GL_TEXTURE_BUFFER */
- { 43429, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */
- { 43451, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
- { 43488, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */
- { 43529, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */
- { 43554, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */
- { 43583, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- { 43614, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
- { 43644, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- { 43674, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- { 43709, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- { 43740, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- { 43778, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
- { 43805, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
- { 43837, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
- { 43871, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
- { 43895, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
- { 43923, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
- { 43947, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
- { 43975, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- { 44008, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
- { 44032, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
- { 44054, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
- { 44076, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
- { 44102, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
- { 44136, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- { 44169, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
- { 44206, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
- { 44234, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
- { 44266, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
- { 44289, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
- { 44327, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
- { 44369, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
- { 44400, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- { 44428, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
- { 44458, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- { 44486, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
- { 44511, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
- { 44531, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
- { 44555, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- { 44586, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
- { 44621, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
- { 44656, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- { 44687, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
- { 44722, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
- { 44757, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- { 44788, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
- { 44823, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
- { 44858, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
- { 44882, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- { 44913, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
- { 44948, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
- { 44983, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- { 45014, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
- { 45049, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
- { 45084, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- { 45115, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
- { 45150, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
- { 45185, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
- { 45214, 0x00008071 }, /* GL_TEXTURE_DEPTH */
- { 45231, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
- { 45253, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
- { 45279, 0x00002300 }, /* GL_TEXTURE_ENV */
- { 45294, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
- { 45315, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
- { 45335, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
- { 45361, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
- { 45391, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
- { 45411, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
- { 45435, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
- { 45452, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
- { 45469, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
- { 45486, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
- { 45509, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
- { 45526, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
- { 45551, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
- { 45573, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
- { 45599, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
- { 45617, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
- { 45643, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
- { 45669, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
- { 45699, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
- { 45726, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
- { 45751, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
- { 45771, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
- { 45795, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
- { 45822, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- { 45849, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- { 45876, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
- { 45902, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
- { 45932, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
- { 45954, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
- { 45972, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
- { 46012, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
- { 46042, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
- { 46070, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- { 46098, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- { 46126, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
- { 46147, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
- { 46166, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
- { 46188, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
- { 46207, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
- { 46227, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- { 46257, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- { 46288, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */
- { 46309, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
- { 46334, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
- { 46358, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
- { 46378, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
- { 46402, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
- { 46422, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */
- { 46445, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
- { 46468, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
- { 46492, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
- { 46520, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- { 46550, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
- { 46575, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
- { 46609, 0x00001000 }, /* GL_TEXTURE_WIDTH */
- { 46626, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
- { 46644, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
- { 46666, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
- { 46684, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
- { 46702, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
- { 46721, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
- { 46741, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
- { 46760, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- { 46789, 0x00001000 }, /* GL_TRANSFORM_BIT */
- { 46806, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
- { 46828, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
- { 46858, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */
- { 46887, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- { 46923, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
- { 46960, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
- { 47001, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
- { 47034, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
- { 47068, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
- { 47106, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- { 47142, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
- { 47176, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
- { 47214, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
- { 47249, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
- { 47288, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
- { 47329, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
- { 47374, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
- { 47405, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
- { 47440, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
- { 47481, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
- { 47526, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
- { 47552, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
- { 47582, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- { 47614, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- { 47644, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
- { 47678, 0x0000862C }, /* GL_TRANSPOSE_NV */
- { 47694, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- { 47725, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
- { 47760, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- { 47788, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
- { 47820, 0x00000004 }, /* GL_TRIANGLES */
- { 47833, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */
- { 47856, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
- { 47883, 0x00000006 }, /* GL_TRIANGLE_FAN */
- { 47899, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
- { 47920, 0x00000005 }, /* GL_TRIANGLE_STRIP */
- { 47938, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */
- { 47966, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
- { 47998, 0x00000001 }, /* GL_TRUE */
- { 48006, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
- { 48025, 0x00008255 }, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
- { 48054, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
- { 48074, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
- { 48097, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
- { 48117, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
- { 48138, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
- { 48160, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
- { 48182, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
- { 48202, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
- { 48223, 0x00009118 }, /* GL_UNSIGNALED */
- { 48237, 0x00001401 }, /* GL_UNSIGNED_BYTE */
- { 48254, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- { 48281, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
- { 48304, 0x00001405 }, /* GL_UNSIGNED_INT */
- { 48320, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
- { 48352, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
- { 48379, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
- { 48410, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
- { 48431, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
- { 48456, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
- { 48480, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
- { 48505, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- { 48536, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
- { 48571, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */
- { 48599, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
- { 48623, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- { 48651, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */
- { 48678, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
- { 48711, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */
- { 48748, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */
- { 48779, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */
- { 48806, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
- { 48839, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */
- { 48876, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */
- { 48907, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
- { 48939, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */
- { 48975, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */
- { 49002, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */
- { 49033, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
- { 49064, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */
- { 49099, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
- { 49128, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */
- { 49161, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */
- { 49182, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */
- { 49207, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */
- { 49228, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */
- { 49253, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */
- { 49274, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */
- { 49299, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
- { 49322, 0x00001403 }, /* GL_UNSIGNED_SHORT */
- { 49340, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- { 49370, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
- { 49404, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- { 49430, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- { 49460, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
- { 49494, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- { 49520, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
- { 49544, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- { 49572, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- { 49600, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
- { 49627, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- { 49659, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
- { 49690, 0x00008CA2 }, /* GL_UPPER_LEFT */
- { 49704, 0x00002A20 }, /* GL_V2F */
- { 49711, 0x00002A21 }, /* GL_V3F */
- { 49718, 0x00008B83 }, /* GL_VALIDATE_STATUS */
- { 49737, 0x00001F00 }, /* GL_VENDOR */
- { 49747, 0x00001F02 }, /* GL_VERSION */
- { 49758, 0x00008074 }, /* GL_VERTEX_ARRAY */
- { 49774, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
- { 49798, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
- { 49828, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
- { 49859, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
- { 49894, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
- { 49918, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
- { 49939, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
- { 49962, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
- { 49983, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- { 50010, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- { 50038, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- { 50066, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- { 50094, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- { 50122, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- { 50150, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
- { 50178, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- { 50205, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- { 50232, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- { 50259, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- { 50286, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- { 50313, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- { 50340, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- { 50367, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- { 50394, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- { 50421, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- { 50459, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
- { 50501, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
- { 50536, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- { 50567, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
- { 50602, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
- { 50633, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */
- { 50668, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
- { 50702, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
- { 50740, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- { 50771, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
- { 50806, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- { 50834, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
- { 50866, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- { 50896, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
- { 50930, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
- { 50958, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
- { 50990, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
- { 51010, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
- { 51032, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
- { 51061, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
- { 51082, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
- { 51111, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
- { 51144, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
- { 51176, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- { 51203, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
- { 51234, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
- { 51264, 0x00008B31 }, /* GL_VERTEX_SHADER */
- { 51281, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
- { 51302, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
- { 51329, 0x00000BA2 }, /* GL_VIEWPORT */
- { 51341, 0x00000800 }, /* GL_VIEWPORT_BIT */
- { 51357, 0x00008A1A }, /* GL_VOLATILE_APPLE */
- { 51375, 0x0000911D }, /* GL_WAIT_FAILED */
- { 51390, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
- { 51410, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- { 51441, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
- { 51476, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
- { 51511, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
- { 51531, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- { 51559, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
- { 51587, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- { 51612, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
- { 51637, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- { 51664, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
- { 51691, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- { 51716, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
- { 51741, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
- { 51765, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
- { 51784, 0x000088B9 }, /* GL_WRITE_ONLY */
- { 51798, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
- { 51816, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
- { 51834, 0x00001506 }, /* GL_XOR */
- { 51841, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
- { 51860, 0x00008757 }, /* GL_YCBCR_MESA */
- { 51874, 0x00000000 }, /* GL_ZERO */
- { 51882, 0x00000D16 }, /* GL_ZOOM_X */
- { 51892, 0x00000D17 }, /* GL_ZOOM_Y */
+ { 27726, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS */
+ { 27756, 0x000087FE }, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
+ { 27790, 0x00008DF9 }, /* GL_NUM_SHADER_BINARY_FORMATS */
+ { 27819, 0x00008B89 }, /* GL_OBJECT_ACTIVE_ATTRIBUTES_ARB */
+ { 27851, 0x00008B8A }, /* GL_OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB */
+ { 27893, 0x00008B86 }, /* GL_OBJECT_ACTIVE_UNIFORMS_ARB */
+ { 27923, 0x00008B87 }, /* GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB */
+ { 27963, 0x00008B85 }, /* GL_OBJECT_ATTACHED_OBJECTS_ARB */
+ { 27994, 0x00008B81 }, /* GL_OBJECT_COMPILE_STATUS_ARB */
+ { 28023, 0x00008B80 }, /* GL_OBJECT_DELETE_STATUS_ARB */
+ { 28051, 0x00008B84 }, /* GL_OBJECT_INFO_LOG_LENGTH_ARB */
+ { 28081, 0x00002401 }, /* GL_OBJECT_LINEAR */
+ { 28098, 0x00008B82 }, /* GL_OBJECT_LINK_STATUS_ARB */
+ { 28124, 0x00002501 }, /* GL_OBJECT_PLANE */
+ { 28140, 0x00008B88 }, /* GL_OBJECT_SHADER_SOURCE_LENGTH_ARB */
+ { 28175, 0x00008B4F }, /* GL_OBJECT_SUBTYPE_ARB */
+ { 28197, 0x00009112 }, /* GL_OBJECT_TYPE */
+ { 28212, 0x00008B4E }, /* GL_OBJECT_TYPE_ARB */
+ { 28231, 0x00008B83 }, /* GL_OBJECT_VALIDATE_STATUS_ARB */
+ { 28261, 0x00008165 }, /* GL_OCCLUSION_TEST_HP */
+ { 28282, 0x00008166 }, /* GL_OCCLUSION_TEST_RESULT_HP */
+ { 28310, 0x00000001 }, /* GL_ONE */
+ { 28317, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ { 28345, 0x00008004 }, /* GL_ONE_MINUS_CONSTANT_ALPHA_EXT */
+ { 28377, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ { 28405, 0x00008002 }, /* GL_ONE_MINUS_CONSTANT_COLOR_EXT */
+ { 28437, 0x00000305 }, /* GL_ONE_MINUS_DST_ALPHA */
+ { 28460, 0x00000307 }, /* GL_ONE_MINUS_DST_COLOR */
+ { 28483, 0x00000303 }, /* GL_ONE_MINUS_SRC_ALPHA */
+ { 28506, 0x00000301 }, /* GL_ONE_MINUS_SRC_COLOR */
+ { 28529, 0x00008598 }, /* GL_OPERAND0_ALPHA */
+ { 28547, 0x00008598 }, /* GL_OPERAND0_ALPHA_ARB */
+ { 28569, 0x00008598 }, /* GL_OPERAND0_ALPHA_EXT */
+ { 28591, 0x00008590 }, /* GL_OPERAND0_RGB */
+ { 28607, 0x00008590 }, /* GL_OPERAND0_RGB_ARB */
+ { 28627, 0x00008590 }, /* GL_OPERAND0_RGB_EXT */
+ { 28647, 0x00008599 }, /* GL_OPERAND1_ALPHA */
+ { 28665, 0x00008599 }, /* GL_OPERAND1_ALPHA_ARB */
+ { 28687, 0x00008599 }, /* GL_OPERAND1_ALPHA_EXT */
+ { 28709, 0x00008591 }, /* GL_OPERAND1_RGB */
+ { 28725, 0x00008591 }, /* GL_OPERAND1_RGB_ARB */
+ { 28745, 0x00008591 }, /* GL_OPERAND1_RGB_EXT */
+ { 28765, 0x0000859A }, /* GL_OPERAND2_ALPHA */
+ { 28783, 0x0000859A }, /* GL_OPERAND2_ALPHA_ARB */
+ { 28805, 0x0000859A }, /* GL_OPERAND2_ALPHA_EXT */
+ { 28827, 0x00008592 }, /* GL_OPERAND2_RGB */
+ { 28843, 0x00008592 }, /* GL_OPERAND2_RGB_ARB */
+ { 28863, 0x00008592 }, /* GL_OPERAND2_RGB_EXT */
+ { 28883, 0x0000859B }, /* GL_OPERAND3_ALPHA_NV */
+ { 28904, 0x00008593 }, /* GL_OPERAND3_RGB_NV */
+ { 28923, 0x00001507 }, /* GL_OR */
+ { 28929, 0x00000A01 }, /* GL_ORDER */
+ { 28938, 0x0000150D }, /* GL_OR_INVERTED */
+ { 28953, 0x0000150B }, /* GL_OR_REVERSE */
+ { 28967, 0x00000505 }, /* GL_OUT_OF_MEMORY */
+ { 28984, 0x00000D05 }, /* GL_PACK_ALIGNMENT */
+ { 29002, 0x0000806C }, /* GL_PACK_IMAGE_HEIGHT */
+ { 29023, 0x00008758 }, /* GL_PACK_INVERT_MESA */
+ { 29043, 0x00000D01 }, /* GL_PACK_LSB_FIRST */
+ { 29061, 0x00000D02 }, /* GL_PACK_ROW_LENGTH */
+ { 29080, 0x0000806B }, /* GL_PACK_SKIP_IMAGES */
+ { 29100, 0x00000D04 }, /* GL_PACK_SKIP_PIXELS */
+ { 29120, 0x00000D03 }, /* GL_PACK_SKIP_ROWS */
+ { 29138, 0x00000D00 }, /* GL_PACK_SWAP_BYTES */
+ { 29157, 0x00008B92 }, /* GL_PALETTE4_R5_G6_B5_OES */
+ { 29182, 0x00008B94 }, /* GL_PALETTE4_RGB5_A1_OES */
+ { 29206, 0x00008B90 }, /* GL_PALETTE4_RGB8_OES */
+ { 29227, 0x00008B93 }, /* GL_PALETTE4_RGBA4_OES */
+ { 29249, 0x00008B91 }, /* GL_PALETTE4_RGBA8_OES */
+ { 29271, 0x00008B97 }, /* GL_PALETTE8_R5_G6_B5_OES */
+ { 29296, 0x00008B99 }, /* GL_PALETTE8_RGB5_A1_OES */
+ { 29320, 0x00008B95 }, /* GL_PALETTE8_RGB8_OES */
+ { 29341, 0x00008B98 }, /* GL_PALETTE8_RGBA4_OES */
+ { 29363, 0x00008B96 }, /* GL_PALETTE8_RGBA8_OES */
+ { 29385, 0x00000700 }, /* GL_PASS_THROUGH_TOKEN */
+ { 29407, 0x00000C50 }, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ { 29438, 0x00000C79 }, /* GL_PIXEL_MAP_A_TO_A */
+ { 29458, 0x00000CB9 }, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ { 29483, 0x00000C78 }, /* GL_PIXEL_MAP_B_TO_B */
+ { 29503, 0x00000CB8 }, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ { 29528, 0x00000C77 }, /* GL_PIXEL_MAP_G_TO_G */
+ { 29548, 0x00000CB7 }, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ { 29573, 0x00000C75 }, /* GL_PIXEL_MAP_I_TO_A */
+ { 29593, 0x00000CB5 }, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ { 29618, 0x00000C74 }, /* GL_PIXEL_MAP_I_TO_B */
+ { 29638, 0x00000CB4 }, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ { 29663, 0x00000C73 }, /* GL_PIXEL_MAP_I_TO_G */
+ { 29683, 0x00000CB3 }, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ { 29708, 0x00000C70 }, /* GL_PIXEL_MAP_I_TO_I */
+ { 29728, 0x00000CB0 }, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ { 29753, 0x00000C72 }, /* GL_PIXEL_MAP_I_TO_R */
+ { 29773, 0x00000CB2 }, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ { 29798, 0x00000C76 }, /* GL_PIXEL_MAP_R_TO_R */
+ { 29818, 0x00000CB6 }, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ { 29843, 0x00000C71 }, /* GL_PIXEL_MAP_S_TO_S */
+ { 29863, 0x00000CB1 }, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ { 29888, 0x00000020 }, /* GL_PIXEL_MODE_BIT */
+ { 29906, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER */
+ { 29927, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ { 29956, 0x000088ED }, /* GL_PIXEL_PACK_BUFFER_BINDING_EXT */
+ { 29989, 0x000088EB }, /* GL_PIXEL_PACK_BUFFER_EXT */
+ { 30014, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER */
+ { 30037, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ { 30068, 0x000088EF }, /* GL_PIXEL_UNPACK_BUFFER_BINDING_EXT */
+ { 30103, 0x000088EC }, /* GL_PIXEL_UNPACK_BUFFER_EXT */
+ { 30130, 0x00001B00 }, /* GL_POINT */
+ { 30139, 0x00000000 }, /* GL_POINTS */
+ { 30149, 0x00000002 }, /* GL_POINT_BIT */
+ { 30162, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION */
+ { 30192, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_ARB */
+ { 30226, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_EXT */
+ { 30260, 0x00008129 }, /* GL_POINT_DISTANCE_ATTENUATION_SGIS */
+ { 30295, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ { 30324, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_ARB */
+ { 30357, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_EXT */
+ { 30390, 0x00008128 }, /* GL_POINT_FADE_THRESHOLD_SIZE_SGIS */
+ { 30424, 0x00000B11 }, /* GL_POINT_SIZE */
+ { 30438, 0x00008B9F }, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ { 30477, 0x00008B9C }, /* GL_POINT_SIZE_ARRAY_OES */
+ { 30501, 0x0000898C }, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ { 30533, 0x0000898B }, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ { 30564, 0x0000898A }, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ { 30593, 0x00000B13 }, /* GL_POINT_SIZE_GRANULARITY */
+ { 30619, 0x00008127 }, /* GL_POINT_SIZE_MAX */
+ { 30637, 0x00008127 }, /* GL_POINT_SIZE_MAX_ARB */
+ { 30659, 0x00008127 }, /* GL_POINT_SIZE_MAX_EXT */
+ { 30681, 0x00008127 }, /* GL_POINT_SIZE_MAX_SGIS */
+ { 30704, 0x00008126 }, /* GL_POINT_SIZE_MIN */
+ { 30722, 0x00008126 }, /* GL_POINT_SIZE_MIN_ARB */
+ { 30744, 0x00008126 }, /* GL_POINT_SIZE_MIN_EXT */
+ { 30766, 0x00008126 }, /* GL_POINT_SIZE_MIN_SGIS */
+ { 30789, 0x00000B12 }, /* GL_POINT_SIZE_RANGE */
+ { 30809, 0x00000B10 }, /* GL_POINT_SMOOTH */
+ { 30825, 0x00000C51 }, /* GL_POINT_SMOOTH_HINT */
+ { 30846, 0x00008861 }, /* GL_POINT_SPRITE */
+ { 30862, 0x00008861 }, /* GL_POINT_SPRITE_ARB */
+ { 30882, 0x00008CA0 }, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ { 30911, 0x00008861 }, /* GL_POINT_SPRITE_NV */
+ { 30930, 0x00008861 }, /* GL_POINT_SPRITE_OES */
+ { 30950, 0x00008863 }, /* GL_POINT_SPRITE_R_MODE_NV */
+ { 30976, 0x00000701 }, /* GL_POINT_TOKEN */
+ { 30991, 0x00000009 }, /* GL_POLYGON */
+ { 31002, 0x00000008 }, /* GL_POLYGON_BIT */
+ { 31017, 0x00000B40 }, /* GL_POLYGON_MODE */
+ { 31033, 0x00008039 }, /* GL_POLYGON_OFFSET_BIAS */
+ { 31056, 0x00008038 }, /* GL_POLYGON_OFFSET_FACTOR */
+ { 31081, 0x00008037 }, /* GL_POLYGON_OFFSET_FILL */
+ { 31104, 0x00002A02 }, /* GL_POLYGON_OFFSET_LINE */
+ { 31127, 0x00002A01 }, /* GL_POLYGON_OFFSET_POINT */
+ { 31151, 0x00002A00 }, /* GL_POLYGON_OFFSET_UNITS */
+ { 31175, 0x00000B41 }, /* GL_POLYGON_SMOOTH */
+ { 31193, 0x00000C53 }, /* GL_POLYGON_SMOOTH_HINT */
+ { 31216, 0x00000B42 }, /* GL_POLYGON_STIPPLE */
+ { 31235, 0x00000010 }, /* GL_POLYGON_STIPPLE_BIT */
+ { 31258, 0x00000703 }, /* GL_POLYGON_TOKEN */
+ { 31275, 0x00001203 }, /* GL_POSITION */
+ { 31287, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ { 31319, 0x000080BB }, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI */
+ { 31355, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ { 31388, 0x000080B7 }, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI */
+ { 31425, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ { 31456, 0x000080BA }, /* GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI */
+ { 31491, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ { 31523, 0x000080B6 }, /* GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI */
+ { 31559, 0x000080D2 }, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 31592, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ { 31624, 0x000080B9 }, /* GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI */
+ { 31660, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ { 31693, 0x000080B5 }, /* GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI */
+ { 31730, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ { 31760, 0x000080B8 }, /* GL_POST_COLOR_MATRIX_RED_BIAS_SGI */
+ { 31794, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ { 31825, 0x000080B4 }, /* GL_POST_COLOR_MATRIX_RED_SCALE_SGI */
+ { 31860, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ { 31891, 0x00008023 }, /* GL_POST_CONVOLUTION_ALPHA_BIAS_EXT */
+ { 31926, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ { 31958, 0x0000801F }, /* GL_POST_CONVOLUTION_ALPHA_SCALE_EXT */
+ { 31994, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ { 32024, 0x00008022 }, /* GL_POST_CONVOLUTION_BLUE_BIAS_EXT */
+ { 32058, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ { 32089, 0x0000801E }, /* GL_POST_CONVOLUTION_BLUE_SCALE_EXT */
+ { 32124, 0x000080D1 }, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ { 32156, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ { 32187, 0x00008021 }, /* GL_POST_CONVOLUTION_GREEN_BIAS_EXT */
+ { 32222, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ { 32254, 0x0000801D }, /* GL_POST_CONVOLUTION_GREEN_SCALE_EXT */
+ { 32290, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS */
+ { 32319, 0x00008020 }, /* GL_POST_CONVOLUTION_RED_BIAS_EXT */
+ { 32352, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE */
+ { 32382, 0x0000801C }, /* GL_POST_CONVOLUTION_RED_SCALE_EXT */
+ { 32416, 0x0000817B }, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ { 32455, 0x00008179 }, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ { 32488, 0x0000817C }, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ { 32528, 0x0000817A }, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ { 32562, 0x00008578 }, /* GL_PREVIOUS */
+ { 32574, 0x00008578 }, /* GL_PREVIOUS_ARB */
+ { 32590, 0x00008578 }, /* GL_PREVIOUS_EXT */
+ { 32606, 0x00008577 }, /* GL_PRIMARY_COLOR */
+ { 32623, 0x00008577 }, /* GL_PRIMARY_COLOR_ARB */
+ { 32644, 0x00008577 }, /* GL_PRIMARY_COLOR_EXT */
+ { 32665, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED */
+ { 32689, 0x00008C87 }, /* GL_PRIMITIVES_GENERATED_EXT */
+ { 32717, 0x00008F9D }, /* GL_PRIMITIVE_RESTART */
+ { 32738, 0x00008F9E }, /* GL_PRIMITIVE_RESTART_INDEX */
+ { 32765, 0x00008559 }, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ { 32795, 0x00008558 }, /* GL_PRIMITIVE_RESTART_NV */
+ { 32819, 0x000088B0 }, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ { 32852, 0x00008805 }, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ { 32884, 0x000088AC }, /* GL_PROGRAM_ATTRIBS_ARB */
+ { 32907, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS */
+ { 32933, 0x000087FF }, /* GL_PROGRAM_BINARY_FORMATS_OES */
+ { 32963, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH */
+ { 32988, 0x00008741 }, /* GL_PROGRAM_BINARY_LENGTH_OES */
+ { 33017, 0x00008257 }, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */
+ { 33052, 0x00008677 }, /* GL_PROGRAM_BINDING_ARB */
+ { 33075, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ { 33105, 0x0000864B }, /* GL_PROGRAM_ERROR_POSITION_NV */
+ { 33134, 0x00008874 }, /* GL_PROGRAM_ERROR_STRING_ARB */
+ { 33162, 0x00008876 }, /* GL_PROGRAM_FORMAT_ARB */
+ { 33184, 0x00008875 }, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ { 33212, 0x000088A0 }, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ { 33240, 0x00008627 }, /* GL_PROGRAM_LENGTH_ARB */
+ { 33262, 0x00008627 }, /* GL_PROGRAM_LENGTH_NV */
+ { 33283, 0x000088B2 }, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ { 33323, 0x00008808 }, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ { 33362, 0x000088AE }, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ { 33392, 0x000088A2 }, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ { 33427, 0x000088AA }, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ { 33460, 0x000088A6 }, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ { 33494, 0x0000880A }, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ { 33533, 0x00008809 }, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ { 33572, 0x00008B40 }, /* GL_PROGRAM_OBJECT_ARB */
+ { 33594, 0x000088A8 }, /* GL_PROGRAM_PARAMETERS_ARB */
+ { 33620, 0x00008644 }, /* GL_PROGRAM_PARAMETER_NV */
+ { 33644, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE */
+ { 33666, 0x00008642 }, /* GL_PROGRAM_POINT_SIZE_ARB */
+ { 33692, 0x00008647 }, /* GL_PROGRAM_RESIDENT_NV */
+ { 33715, 0x00008628 }, /* GL_PROGRAM_STRING_ARB */
+ { 33737, 0x00008628 }, /* GL_PROGRAM_STRING_NV */
+ { 33758, 0x00008646 }, /* GL_PROGRAM_TARGET_NV */
+ { 33779, 0x000088A4 }, /* GL_PROGRAM_TEMPORARIES_ARB */
+ { 33806, 0x00008807 }, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ { 33838, 0x00008806 }, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ { 33870, 0x000088B6 }, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ { 33905, 0x00001701 }, /* GL_PROJECTION */
+ { 33919, 0x00000BA7 }, /* GL_PROJECTION_MATRIX */
+ { 33940, 0x0000898E }, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 33983, 0x00000BA4 }, /* GL_PROJECTION_STACK_DEPTH */
+ { 34009, 0x00008E4F }, /* GL_PROVOKING_VERTEX */
+ { 34029, 0x00008E4F }, /* GL_PROVOKING_VERTEX_EXT */
+ { 34053, 0x000080D3 }, /* GL_PROXY_COLOR_TABLE */
+ { 34074, 0x00008025 }, /* GL_PROXY_HISTOGRAM */
+ { 34093, 0x00008025 }, /* GL_PROXY_HISTOGRAM_EXT */
+ { 34116, 0x000080D5 }, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ { 34155, 0x000080D4 }, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ { 34193, 0x00008063 }, /* GL_PROXY_TEXTURE_1D */
+ { 34213, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ { 34239, 0x00008C19 }, /* GL_PROXY_TEXTURE_1D_ARRAY_EXT */
+ { 34269, 0x00008063 }, /* GL_PROXY_TEXTURE_1D_EXT */
+ { 34293, 0x00008064 }, /* GL_PROXY_TEXTURE_2D */
+ { 34313, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ { 34339, 0x00008C1B }, /* GL_PROXY_TEXTURE_2D_ARRAY_EXT */
+ { 34369, 0x00008064 }, /* GL_PROXY_TEXTURE_2D_EXT */
+ { 34393, 0x00008070 }, /* GL_PROXY_TEXTURE_3D */
+ { 34413, 0x000080BD }, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ { 34446, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ { 34472, 0x0000851B }, /* GL_PROXY_TEXTURE_CUBE_MAP_ARB */
+ { 34502, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE */
+ { 34529, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_ARB */
+ { 34560, 0x000084F7 }, /* GL_PROXY_TEXTURE_RECTANGLE_NV */
+ { 34590, 0x00008A1D }, /* GL_PURGEABLE_APPLE */
+ { 34609, 0x00002003 }, /* GL_Q */
+ { 34614, 0x00001209 }, /* GL_QUADRATIC_ATTENUATION */
+ { 34639, 0x00000007 }, /* GL_QUADS */
+ { 34648, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ { 34692, 0x00008E4C }, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT */
+ { 34740, 0x00008614 }, /* GL_QUAD_MESH_SUN */
+ { 34757, 0x00000008 }, /* GL_QUAD_STRIP */
+ { 34771, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT */
+ { 34798, 0x00008E16 }, /* GL_QUERY_BY_REGION_NO_WAIT_NV */
+ { 34828, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT */
+ { 34852, 0x00008E15 }, /* GL_QUERY_BY_REGION_WAIT_NV */
+ { 34879, 0x00008864 }, /* GL_QUERY_COUNTER_BITS */
+ { 34901, 0x00008864 }, /* GL_QUERY_COUNTER_BITS_ARB */
+ { 34927, 0x00008E14 }, /* GL_QUERY_NO_WAIT */
+ { 34944, 0x00008E14 }, /* GL_QUERY_NO_WAIT_NV */
+ { 34964, 0x00008866 }, /* GL_QUERY_RESULT */
+ { 34980, 0x00008866 }, /* GL_QUERY_RESULT_ARB */
+ { 35000, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE */
+ { 35026, 0x00008867 }, /* GL_QUERY_RESULT_AVAILABLE_ARB */
+ { 35056, 0x00008E13 }, /* GL_QUERY_WAIT */
+ { 35070, 0x00008E13 }, /* GL_QUERY_WAIT_NV */
+ { 35087, 0x00002002 }, /* GL_R */
+ { 35092, 0x00008C3A }, /* GL_R11F_G11F_B10F */
+ { 35110, 0x00008F98 }, /* GL_R16_SNORM */
+ { 35123, 0x00002A10 }, /* GL_R3_G3_B2 */
+ { 35135, 0x00008F94 }, /* GL_R8_SNORM */
+ { 35147, 0x00008C89 }, /* GL_RASTERIZER_DISCARD */
+ { 35169, 0x00008C89 }, /* GL_RASTERIZER_DISCARD_EXT */
+ { 35195, 0x00019262 }, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ { 35228, 0x00000C02 }, /* GL_READ_BUFFER */
+ { 35243, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER */
+ { 35263, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING */
+ { 35291, 0x00008CAA }, /* GL_READ_FRAMEBUFFER_BINDING_EXT */
+ { 35323, 0x00008CA8 }, /* GL_READ_FRAMEBUFFER_EXT */
+ { 35347, 0x000088B8 }, /* GL_READ_ONLY */
+ { 35360, 0x000088B8 }, /* GL_READ_ONLY_ARB */
+ { 35377, 0x000088BA }, /* GL_READ_WRITE */
+ { 35391, 0x000088BA }, /* GL_READ_WRITE_ARB */
+ { 35409, 0x00001903 }, /* GL_RED */
+ { 35416, 0x00008016 }, /* GL_REDUCE */
+ { 35426, 0x00008016 }, /* GL_REDUCE_EXT */
+ { 35440, 0x00000D15 }, /* GL_RED_BIAS */
+ { 35452, 0x00000D52 }, /* GL_RED_BITS */
+ { 35464, 0x00008D94 }, /* GL_RED_INTEGER */
+ { 35479, 0x00008D94 }, /* GL_RED_INTEGER_EXT */
+ { 35498, 0x00000D14 }, /* GL_RED_SCALE */
+ { 35511, 0x00008F90 }, /* GL_RED_SNORM */
+ { 35524, 0x00008512 }, /* GL_REFLECTION_MAP */
+ { 35542, 0x00008512 }, /* GL_REFLECTION_MAP_ARB */
+ { 35564, 0x00008512 }, /* GL_REFLECTION_MAP_NV */
+ { 35585, 0x00008512 }, /* GL_REFLECTION_MAP_OES */
+ { 35607, 0x00008A19 }, /* GL_RELEASED_APPLE */
+ { 35625, 0x00001C00 }, /* GL_RENDER */
+ { 35635, 0x00008D41 }, /* GL_RENDERBUFFER */
+ { 35651, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ { 35678, 0x00008D53 }, /* GL_RENDERBUFFER_ALPHA_SIZE_OES */
+ { 35709, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING */
+ { 35733, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_EXT */
+ { 35761, 0x00008CA7 }, /* GL_RENDERBUFFER_BINDING_OES */
+ { 35789, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE */
+ { 35815, 0x00008D52 }, /* GL_RENDERBUFFER_BLUE_SIZE_OES */
+ { 35845, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ { 35872, 0x00008D54 }, /* GL_RENDERBUFFER_DEPTH_SIZE_OES */
+ { 35903, 0x00008D41 }, /* GL_RENDERBUFFER_EXT */
+ { 35923, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE */
+ { 35950, 0x00008D51 }, /* GL_RENDERBUFFER_GREEN_SIZE_OES */
+ { 35981, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT */
+ { 36004, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_EXT */
+ { 36031, 0x00008D43 }, /* GL_RENDERBUFFER_HEIGHT_OES */
+ { 36058, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ { 36090, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_EXT */
+ { 36126, 0x00008D44 }, /* GL_RENDERBUFFER_INTERNAL_FORMAT_OES */
+ { 36162, 0x00008D41 }, /* GL_RENDERBUFFER_OES */
+ { 36182, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE */
+ { 36207, 0x00008D50 }, /* GL_RENDERBUFFER_RED_SIZE_OES */
+ { 36236, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES */
+ { 36260, 0x00008CAB }, /* GL_RENDERBUFFER_SAMPLES_EXT */
+ { 36288, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ { 36317, 0x00008D55 }, /* GL_RENDERBUFFER_STENCIL_SIZE_OES */
+ { 36350, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH */
+ { 36372, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_EXT */
+ { 36398, 0x00008D42 }, /* GL_RENDERBUFFER_WIDTH_OES */
+ { 36424, 0x00001F01 }, /* GL_RENDERER */
+ { 36436, 0x00000C40 }, /* GL_RENDER_MODE */
+ { 36451, 0x00002901 }, /* GL_REPEAT */
+ { 36461, 0x00001E01 }, /* GL_REPLACE */
+ { 36472, 0x00008062 }, /* GL_REPLACE_EXT */
+ { 36487, 0x00008153 }, /* GL_REPLICATE_BORDER_HP */
+ { 36510, 0x0000803A }, /* GL_RESCALE_NORMAL */
+ { 36528, 0x0000803A }, /* GL_RESCALE_NORMAL_EXT */
+ { 36550, 0x00008256 }, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
+ { 36585, 0x00008A1B }, /* GL_RETAINED_APPLE */
+ { 36603, 0x00000102 }, /* GL_RETURN */
+ { 36613, 0x00008F99 }, /* GL_RG16_SNORM */
+ { 36627, 0x00008F95 }, /* GL_RG8_SNORM */
+ { 36640, 0x00001907 }, /* GL_RGB */
+ { 36647, 0x00008052 }, /* GL_RGB10 */
+ { 36656, 0x00008059 }, /* GL_RGB10_A2 */
+ { 36668, 0x00008059 }, /* GL_RGB10_A2_EXT */
+ { 36684, 0x00008052 }, /* GL_RGB10_EXT */
+ { 36697, 0x00008053 }, /* GL_RGB12 */
+ { 36706, 0x00008053 }, /* GL_RGB12_EXT */
+ { 36719, 0x00008054 }, /* GL_RGB16 */
+ { 36728, 0x0000881B }, /* GL_RGB16F */
+ { 36738, 0x00008D89 }, /* GL_RGB16I */
+ { 36748, 0x00008D89 }, /* GL_RGB16I_EXT */
+ { 36762, 0x00008D77 }, /* GL_RGB16UI */
+ { 36773, 0x00008D77 }, /* GL_RGB16UI_EXT */
+ { 36788, 0x00008054 }, /* GL_RGB16_EXT */
+ { 36801, 0x00008F9A }, /* GL_RGB16_SNORM */
+ { 36816, 0x0000804E }, /* GL_RGB2_EXT */
+ { 36828, 0x00008815 }, /* GL_RGB32F */
+ { 36838, 0x00008D83 }, /* GL_RGB32I */
+ { 36848, 0x00008D83 }, /* GL_RGB32I_EXT */
+ { 36862, 0x00008D71 }, /* GL_RGB32UI */
+ { 36873, 0x00008D71 }, /* GL_RGB32UI_EXT */
+ { 36888, 0x0000804F }, /* GL_RGB4 */
+ { 36896, 0x0000804F }, /* GL_RGB4_EXT */
+ { 36908, 0x000083A1 }, /* GL_RGB4_S3TC */
+ { 36921, 0x00008050 }, /* GL_RGB5 */
+ { 36929, 0x00008D62 }, /* GL_RGB565 */
+ { 36939, 0x00008D62 }, /* GL_RGB565_OES */
+ { 36953, 0x00008057 }, /* GL_RGB5_A1 */
+ { 36964, 0x00008057 }, /* GL_RGB5_A1_EXT */
+ { 36979, 0x00008057 }, /* GL_RGB5_A1_OES */
+ { 36994, 0x00008050 }, /* GL_RGB5_EXT */
+ { 37006, 0x00008051 }, /* GL_RGB8 */
+ { 37014, 0x00008D8F }, /* GL_RGB8I */
+ { 37023, 0x00008D8F }, /* GL_RGB8I_EXT */
+ { 37036, 0x00008D7D }, /* GL_RGB8UI */
+ { 37046, 0x00008D7D }, /* GL_RGB8UI_EXT */
+ { 37060, 0x00008051 }, /* GL_RGB8_EXT */
+ { 37072, 0x00008051 }, /* GL_RGB8_OES */
+ { 37084, 0x00008F96 }, /* GL_RGB8_SNORM */
+ { 37098, 0x00008C3D }, /* GL_RGB9_E5 */
+ { 37109, 0x00001908 }, /* GL_RGBA */
+ { 37117, 0x0000805A }, /* GL_RGBA12 */
+ { 37127, 0x0000805A }, /* GL_RGBA12_EXT */
+ { 37141, 0x0000805B }, /* GL_RGBA16 */
+ { 37151, 0x0000881A }, /* GL_RGBA16F */
+ { 37162, 0x00008D88 }, /* GL_RGBA16I */
+ { 37173, 0x00008D88 }, /* GL_RGBA16I_EXT */
+ { 37188, 0x00008D76 }, /* GL_RGBA16UI */
+ { 37200, 0x00008D76 }, /* GL_RGBA16UI_EXT */
+ { 37216, 0x0000805B }, /* GL_RGBA16_EXT */
+ { 37230, 0x00008F9B }, /* GL_RGBA16_SNORM */
+ { 37246, 0x00008055 }, /* GL_RGBA2 */
+ { 37255, 0x00008055 }, /* GL_RGBA2_EXT */
+ { 37268, 0x00008814 }, /* GL_RGBA32F */
+ { 37279, 0x00008D82 }, /* GL_RGBA32I */
+ { 37290, 0x00008D82 }, /* GL_RGBA32I_EXT */
+ { 37305, 0x00008D70 }, /* GL_RGBA32UI */
+ { 37317, 0x00008D70 }, /* GL_RGBA32UI_EXT */
+ { 37333, 0x00008056 }, /* GL_RGBA4 */
+ { 37342, 0x000083A5 }, /* GL_RGBA4_DXT5_S3TC */
+ { 37361, 0x00008056 }, /* GL_RGBA4_EXT */
+ { 37374, 0x00008056 }, /* GL_RGBA4_OES */
+ { 37387, 0x000083A3 }, /* GL_RGBA4_S3TC */
+ { 37401, 0x00008058 }, /* GL_RGBA8 */
+ { 37410, 0x00008D8E }, /* GL_RGBA8I */
+ { 37420, 0x00008D8E }, /* GL_RGBA8I_EXT */
+ { 37434, 0x00008D7C }, /* GL_RGBA8UI */
+ { 37445, 0x00008D7C }, /* GL_RGBA8UI_EXT */
+ { 37460, 0x00008058 }, /* GL_RGBA8_EXT */
+ { 37473, 0x00008058 }, /* GL_RGBA8_OES */
+ { 37486, 0x00008F97 }, /* GL_RGBA8_SNORM */
+ { 37501, 0x000083A4 }, /* GL_RGBA_DXT5_S3TC */
+ { 37519, 0x00008820 }, /* GL_RGBA_FLOAT_MODE_ARB */
+ { 37542, 0x00008D99 }, /* GL_RGBA_INTEGER */
+ { 37558, 0x00008D99 }, /* GL_RGBA_INTEGER_EXT */
+ { 37578, 0x00008D9E }, /* GL_RGBA_INTEGER_MODE_EXT */
+ { 37603, 0x00000C31 }, /* GL_RGBA_MODE */
+ { 37616, 0x000083A2 }, /* GL_RGBA_S3TC */
+ { 37629, 0x00008F93 }, /* GL_RGBA_SNORM */
+ { 37643, 0x00008D98 }, /* GL_RGB_INTEGER */
+ { 37658, 0x00008D98 }, /* GL_RGB_INTEGER_EXT */
+ { 37677, 0x000083A0 }, /* GL_RGB_S3TC */
+ { 37689, 0x00008573 }, /* GL_RGB_SCALE */
+ { 37702, 0x00008573 }, /* GL_RGB_SCALE_ARB */
+ { 37719, 0x00008573 }, /* GL_RGB_SCALE_EXT */
+ { 37736, 0x00008F92 }, /* GL_RGB_SNORM */
+ { 37749, 0x00008F91 }, /* GL_RG_SNORM */
+ { 37761, 0x00000407 }, /* GL_RIGHT */
+ { 37770, 0x00002000 }, /* GL_S */
+ { 37775, 0x00008B5D }, /* GL_SAMPLER_1D */
+ { 37789, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY */
+ { 37809, 0x00008DC0 }, /* GL_SAMPLER_1D_ARRAY_EXT */
+ { 37833, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ { 37860, 0x00008DC3 }, /* GL_SAMPLER_1D_ARRAY_SHADOW_EXT */
+ { 37891, 0x00008B61 }, /* GL_SAMPLER_1D_SHADOW */
+ { 37912, 0x00008B5E }, /* GL_SAMPLER_2D */
+ { 37926, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY */
+ { 37946, 0x00008DC1 }, /* GL_SAMPLER_2D_ARRAY_EXT */
+ { 37970, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ { 37997, 0x00008DC4 }, /* GL_SAMPLER_2D_ARRAY_SHADOW_EXT */
+ { 38028, 0x00008B63 }, /* GL_SAMPLER_2D_RECT */
+ { 38047, 0x00008B64 }, /* GL_SAMPLER_2D_RECT_SHADOW */
+ { 38073, 0x00008B62 }, /* GL_SAMPLER_2D_SHADOW */
+ { 38094, 0x00008B5F }, /* GL_SAMPLER_3D */
+ { 38108, 0x00008B5F }, /* GL_SAMPLER_3D_OES */
+ { 38126, 0x00008919 }, /* GL_SAMPLER_BINDING */
+ { 38145, 0x00008DC2 }, /* GL_SAMPLER_BUFFER */
+ { 38163, 0x00008DC2 }, /* GL_SAMPLER_BUFFER_EXT */
+ { 38185, 0x00008B60 }, /* GL_SAMPLER_CUBE */
+ { 38201, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW */
+ { 38224, 0x00008DC5 }, /* GL_SAMPLER_CUBE_SHADOW_EXT */
+ { 38251, 0x000080A9 }, /* GL_SAMPLES */
+ { 38262, 0x000086B4 }, /* GL_SAMPLES_3DFX */
+ { 38278, 0x000080A9 }, /* GL_SAMPLES_ARB */
+ { 38293, 0x00008914 }, /* GL_SAMPLES_PASSED */
+ { 38311, 0x00008914 }, /* GL_SAMPLES_PASSED_ARB */
+ { 38333, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ { 38361, 0x0000809E }, /* GL_SAMPLE_ALPHA_TO_COVERAGE_ARB */
+ { 38393, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE */
+ { 38416, 0x0000809F }, /* GL_SAMPLE_ALPHA_TO_ONE_ARB */
+ { 38443, 0x000080A8 }, /* GL_SAMPLE_BUFFERS */
+ { 38461, 0x000086B3 }, /* GL_SAMPLE_BUFFERS_3DFX */
+ { 38484, 0x000080A8 }, /* GL_SAMPLE_BUFFERS_ARB */
+ { 38506, 0x000080A0 }, /* GL_SAMPLE_COVERAGE */
+ { 38525, 0x000080A0 }, /* GL_SAMPLE_COVERAGE_ARB */
+ { 38548, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT */
+ { 38574, 0x000080AB }, /* GL_SAMPLE_COVERAGE_INVERT_ARB */
+ { 38604, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE */
+ { 38629, 0x000080AA }, /* GL_SAMPLE_COVERAGE_VALUE_ARB */
+ { 38658, 0x00080000 }, /* GL_SCISSOR_BIT */
+ { 38673, 0x00000C10 }, /* GL_SCISSOR_BOX */
+ { 38688, 0x00000C11 }, /* GL_SCISSOR_TEST */
+ { 38704, 0x0000845E }, /* GL_SECONDARY_COLOR_ARRAY */
+ { 38729, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ { 38769, 0x0000889C }, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB */
+ { 38813, 0x0000845D }, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ { 38846, 0x0000845A }, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ { 38876, 0x0000845C }, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ { 38908, 0x0000845B }, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ { 38938, 0x00001C02 }, /* GL_SELECT */
+ { 38948, 0x00000DF3 }, /* GL_SELECTION_BUFFER_POINTER */
+ { 38976, 0x00000DF4 }, /* GL_SELECTION_BUFFER_SIZE */
+ { 39001, 0x00008012 }, /* GL_SEPARABLE_2D */
+ { 39017, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS */
+ { 39037, 0x00008C8D }, /* GL_SEPARATE_ATTRIBS_EXT */
+ { 39061, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR */
+ { 39088, 0x000081FA }, /* GL_SEPARATE_SPECULAR_COLOR_EXT */
+ { 39119, 0x0000150F }, /* GL_SET */
+ { 39126, 0x00008DF8 }, /* GL_SHADER_BINARY_FORMATS */
+ { 39151, 0x00008DFA }, /* GL_SHADER_COMPILER */
+ { 39170, 0x00008B48 }, /* GL_SHADER_OBJECT_ARB */
+ { 39191, 0x00008B88 }, /* GL_SHADER_SOURCE_LENGTH */
+ { 39215, 0x00008B4F }, /* GL_SHADER_TYPE */
+ { 39230, 0x00000B54 }, /* GL_SHADE_MODEL */
+ { 39245, 0x00008B8C }, /* GL_SHADING_LANGUAGE_VERSION */
+ { 39273, 0x000080BF }, /* GL_SHADOW_AMBIENT_SGIX */
+ { 39296, 0x000081FB }, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ { 39326, 0x00001601 }, /* GL_SHININESS */
+ { 39339, 0x00001402 }, /* GL_SHORT */
+ { 39348, 0x00009119 }, /* GL_SIGNALED */
+ { 39360, 0x00008F9C }, /* GL_SIGNED_NORMALIZED */
+ { 39381, 0x000081F9 }, /* GL_SINGLE_COLOR */
+ { 39397, 0x000081F9 }, /* GL_SINGLE_COLOR_EXT */
+ { 39417, 0x000085CC }, /* GL_SLICE_ACCUM_SUN */
+ { 39436, 0x00008C46 }, /* GL_SLUMINANCE */
+ { 39450, 0x00008C47 }, /* GL_SLUMINANCE8 */
+ { 39465, 0x00008C45 }, /* GL_SLUMINANCE8_ALPHA8 */
+ { 39487, 0x00008C44 }, /* GL_SLUMINANCE_ALPHA */
+ { 39507, 0x00001D01 }, /* GL_SMOOTH */
+ { 39517, 0x00000B23 }, /* GL_SMOOTH_LINE_WIDTH_GRANULARITY */
+ { 39550, 0x00000B22 }, /* GL_SMOOTH_LINE_WIDTH_RANGE */
+ { 39577, 0x00000B13 }, /* GL_SMOOTH_POINT_SIZE_GRANULARITY */
+ { 39610, 0x00000B12 }, /* GL_SMOOTH_POINT_SIZE_RANGE */
+ { 39637, 0x00008588 }, /* GL_SOURCE0_ALPHA */
+ { 39654, 0x00008588 }, /* GL_SOURCE0_ALPHA_ARB */
+ { 39675, 0x00008588 }, /* GL_SOURCE0_ALPHA_EXT */
+ { 39696, 0x00008580 }, /* GL_SOURCE0_RGB */
+ { 39711, 0x00008580 }, /* GL_SOURCE0_RGB_ARB */
+ { 39730, 0x00008580 }, /* GL_SOURCE0_RGB_EXT */
+ { 39749, 0x00008589 }, /* GL_SOURCE1_ALPHA */
+ { 39766, 0x00008589 }, /* GL_SOURCE1_ALPHA_ARB */
+ { 39787, 0x00008589 }, /* GL_SOURCE1_ALPHA_EXT */
+ { 39808, 0x00008581 }, /* GL_SOURCE1_RGB */
+ { 39823, 0x00008581 }, /* GL_SOURCE1_RGB_ARB */
+ { 39842, 0x00008581 }, /* GL_SOURCE1_RGB_EXT */
+ { 39861, 0x0000858A }, /* GL_SOURCE2_ALPHA */
+ { 39878, 0x0000858A }, /* GL_SOURCE2_ALPHA_ARB */
+ { 39899, 0x0000858A }, /* GL_SOURCE2_ALPHA_EXT */
+ { 39920, 0x00008582 }, /* GL_SOURCE2_RGB */
+ { 39935, 0x00008582 }, /* GL_SOURCE2_RGB_ARB */
+ { 39954, 0x00008582 }, /* GL_SOURCE2_RGB_EXT */
+ { 39973, 0x0000858B }, /* GL_SOURCE3_ALPHA_NV */
+ { 39993, 0x00008583 }, /* GL_SOURCE3_RGB_NV */
+ { 40011, 0x00001202 }, /* GL_SPECULAR */
+ { 40023, 0x00002402 }, /* GL_SPHERE_MAP */
+ { 40037, 0x00001206 }, /* GL_SPOT_CUTOFF */
+ { 40052, 0x00001204 }, /* GL_SPOT_DIRECTION */
+ { 40070, 0x00001205 }, /* GL_SPOT_EXPONENT */
+ { 40087, 0x00008588 }, /* GL_SRC0_ALPHA */
+ { 40101, 0x00008580 }, /* GL_SRC0_RGB */
+ { 40113, 0x00008589 }, /* GL_SRC1_ALPHA */
+ { 40127, 0x00008581 }, /* GL_SRC1_RGB */
+ { 40139, 0x0000858A }, /* GL_SRC2_ALPHA */
+ { 40153, 0x00008582 }, /* GL_SRC2_RGB */
+ { 40165, 0x00000302 }, /* GL_SRC_ALPHA */
+ { 40178, 0x00000308 }, /* GL_SRC_ALPHA_SATURATE */
+ { 40200, 0x00000300 }, /* GL_SRC_COLOR */
+ { 40213, 0x00008C40 }, /* GL_SRGB */
+ { 40221, 0x00008C41 }, /* GL_SRGB8 */
+ { 40230, 0x00008C43 }, /* GL_SRGB8_ALPHA8 */
+ { 40246, 0x00008C42 }, /* GL_SRGB_ALPHA */
+ { 40260, 0x00000503 }, /* GL_STACK_OVERFLOW */
+ { 40278, 0x00000504 }, /* GL_STACK_UNDERFLOW */
+ { 40297, 0x000088E6 }, /* GL_STATIC_COPY */
+ { 40312, 0x000088E6 }, /* GL_STATIC_COPY_ARB */
+ { 40331, 0x000088E4 }, /* GL_STATIC_DRAW */
+ { 40346, 0x000088E4 }, /* GL_STATIC_DRAW_ARB */
+ { 40365, 0x000088E5 }, /* GL_STATIC_READ */
+ { 40380, 0x000088E5 }, /* GL_STATIC_READ_ARB */
+ { 40399, 0x00001802 }, /* GL_STENCIL */
+ { 40410, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT */
+ { 40432, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_EXT */
+ { 40458, 0x00008D20 }, /* GL_STENCIL_ATTACHMENT_OES */
+ { 40484, 0x00008801 }, /* GL_STENCIL_BACK_FAIL */
+ { 40505, 0x00008801 }, /* GL_STENCIL_BACK_FAIL_ATI */
+ { 40530, 0x00008800 }, /* GL_STENCIL_BACK_FUNC */
+ { 40551, 0x00008800 }, /* GL_STENCIL_BACK_FUNC_ATI */
+ { 40576, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ { 40608, 0x00008802 }, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL_ATI */
+ { 40644, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ { 40676, 0x00008803 }, /* GL_STENCIL_BACK_PASS_DEPTH_PASS_ATI */
+ { 40712, 0x00008CA3 }, /* GL_STENCIL_BACK_REF */
+ { 40732, 0x00008CA4 }, /* GL_STENCIL_BACK_VALUE_MASK */
+ { 40759, 0x00008CA5 }, /* GL_STENCIL_BACK_WRITEMASK */
+ { 40785, 0x00000D57 }, /* GL_STENCIL_BITS */
+ { 40801, 0x00008224 }, /* GL_STENCIL_BUFFER */
+ { 40819, 0x00000400 }, /* GL_STENCIL_BUFFER_BIT */
+ { 40841, 0x00000B91 }, /* GL_STENCIL_CLEAR_VALUE */
+ { 40864, 0x00000B94 }, /* GL_STENCIL_FAIL */
+ { 40880, 0x00000B92 }, /* GL_STENCIL_FUNC */
+ { 40896, 0x00001901 }, /* GL_STENCIL_INDEX */
+ { 40913, 0x00008D46 }, /* GL_STENCIL_INDEX1 */
+ { 40931, 0x00008D49 }, /* GL_STENCIL_INDEX16 */
+ { 40950, 0x00008D49 }, /* GL_STENCIL_INDEX16_EXT */
+ { 40973, 0x00008D46 }, /* GL_STENCIL_INDEX1_EXT */
+ { 40995, 0x00008D46 }, /* GL_STENCIL_INDEX1_OES */
+ { 41017, 0x00008D47 }, /* GL_STENCIL_INDEX4 */
+ { 41035, 0x00008D47 }, /* GL_STENCIL_INDEX4_EXT */
+ { 41057, 0x00008D47 }, /* GL_STENCIL_INDEX4_OES */
+ { 41079, 0x00008D48 }, /* GL_STENCIL_INDEX8 */
+ { 41097, 0x00008D48 }, /* GL_STENCIL_INDEX8_EXT */
+ { 41119, 0x00008D48 }, /* GL_STENCIL_INDEX8_OES */
+ { 41141, 0x00008D45 }, /* GL_STENCIL_INDEX_EXT */
+ { 41162, 0x00000B95 }, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ { 41189, 0x00000B96 }, /* GL_STENCIL_PASS_DEPTH_PASS */
+ { 41216, 0x00000B97 }, /* GL_STENCIL_REF */
+ { 41231, 0x00000B90 }, /* GL_STENCIL_TEST */
+ { 41247, 0x00008910 }, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ { 41276, 0x00000B93 }, /* GL_STENCIL_VALUE_MASK */
+ { 41298, 0x00000B98 }, /* GL_STENCIL_WRITEMASK */
+ { 41319, 0x00000C33 }, /* GL_STEREO */
+ { 41329, 0x000085BE }, /* GL_STORAGE_CACHED_APPLE */
+ { 41353, 0x000085BD }, /* GL_STORAGE_PRIVATE_APPLE */
+ { 41378, 0x000085BF }, /* GL_STORAGE_SHARED_APPLE */
+ { 41402, 0x000088E2 }, /* GL_STREAM_COPY */
+ { 41417, 0x000088E2 }, /* GL_STREAM_COPY_ARB */
+ { 41436, 0x000088E0 }, /* GL_STREAM_DRAW */
+ { 41451, 0x000088E0 }, /* GL_STREAM_DRAW_ARB */
+ { 41470, 0x000088E1 }, /* GL_STREAM_READ */
+ { 41485, 0x000088E1 }, /* GL_STREAM_READ_ARB */
+ { 41504, 0x00000D50 }, /* GL_SUBPIXEL_BITS */
+ { 41521, 0x000084E7 }, /* GL_SUBTRACT */
+ { 41533, 0x000084E7 }, /* GL_SUBTRACT_ARB */
+ { 41549, 0x00009113 }, /* GL_SYNC_CONDITION */
+ { 41567, 0x00009116 }, /* GL_SYNC_FENCE */
+ { 41581, 0x00009115 }, /* GL_SYNC_FLAGS */
+ { 41595, 0x00000001 }, /* GL_SYNC_FLUSH_COMMANDS_BIT */
+ { 41622, 0x00009117 }, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ { 41652, 0x00009114 }, /* GL_SYNC_STATUS */
+ { 41667, 0x00002001 }, /* GL_T */
+ { 41672, 0x00002A2A }, /* GL_T2F_C3F_V3F */
+ { 41687, 0x00002A2C }, /* GL_T2F_C4F_N3F_V3F */
+ { 41706, 0x00002A29 }, /* GL_T2F_C4UB_V3F */
+ { 41722, 0x00002A2B }, /* GL_T2F_N3F_V3F */
+ { 41737, 0x00002A27 }, /* GL_T2F_V3F */
+ { 41748, 0x00002A2D }, /* GL_T4F_C4F_N3F_V4F */
+ { 41767, 0x00002A28 }, /* GL_T4F_V4F */
+ { 41778, 0x00008031 }, /* GL_TABLE_TOO_LARGE_EXT */
+ { 41801, 0x00001702 }, /* GL_TEXTURE */
+ { 41812, 0x000084C0 }, /* GL_TEXTURE0 */
+ { 41824, 0x000084C0 }, /* GL_TEXTURE0_ARB */
+ { 41840, 0x000084C1 }, /* GL_TEXTURE1 */
+ { 41852, 0x000084CA }, /* GL_TEXTURE10 */
+ { 41865, 0x000084CA }, /* GL_TEXTURE10_ARB */
+ { 41882, 0x000084CB }, /* GL_TEXTURE11 */
+ { 41895, 0x000084CB }, /* GL_TEXTURE11_ARB */
+ { 41912, 0x000084CC }, /* GL_TEXTURE12 */
+ { 41925, 0x000084CC }, /* GL_TEXTURE12_ARB */
+ { 41942, 0x000084CD }, /* GL_TEXTURE13 */
+ { 41955, 0x000084CD }, /* GL_TEXTURE13_ARB */
+ { 41972, 0x000084CE }, /* GL_TEXTURE14 */
+ { 41985, 0x000084CE }, /* GL_TEXTURE14_ARB */
+ { 42002, 0x000084CF }, /* GL_TEXTURE15 */
+ { 42015, 0x000084CF }, /* GL_TEXTURE15_ARB */
+ { 42032, 0x000084D0 }, /* GL_TEXTURE16 */
+ { 42045, 0x000084D0 }, /* GL_TEXTURE16_ARB */
+ { 42062, 0x000084D1 }, /* GL_TEXTURE17 */
+ { 42075, 0x000084D1 }, /* GL_TEXTURE17_ARB */
+ { 42092, 0x000084D2 }, /* GL_TEXTURE18 */
+ { 42105, 0x000084D2 }, /* GL_TEXTURE18_ARB */
+ { 42122, 0x000084D3 }, /* GL_TEXTURE19 */
+ { 42135, 0x000084D3 }, /* GL_TEXTURE19_ARB */
+ { 42152, 0x000084C1 }, /* GL_TEXTURE1_ARB */
+ { 42168, 0x000084C2 }, /* GL_TEXTURE2 */
+ { 42180, 0x000084D4 }, /* GL_TEXTURE20 */
+ { 42193, 0x000084D4 }, /* GL_TEXTURE20_ARB */
+ { 42210, 0x000084D5 }, /* GL_TEXTURE21 */
+ { 42223, 0x000084D5 }, /* GL_TEXTURE21_ARB */
+ { 42240, 0x000084D6 }, /* GL_TEXTURE22 */
+ { 42253, 0x000084D6 }, /* GL_TEXTURE22_ARB */
+ { 42270, 0x000084D7 }, /* GL_TEXTURE23 */
+ { 42283, 0x000084D7 }, /* GL_TEXTURE23_ARB */
+ { 42300, 0x000084D8 }, /* GL_TEXTURE24 */
+ { 42313, 0x000084D8 }, /* GL_TEXTURE24_ARB */
+ { 42330, 0x000084D9 }, /* GL_TEXTURE25 */
+ { 42343, 0x000084D9 }, /* GL_TEXTURE25_ARB */
+ { 42360, 0x000084DA }, /* GL_TEXTURE26 */
+ { 42373, 0x000084DA }, /* GL_TEXTURE26_ARB */
+ { 42390, 0x000084DB }, /* GL_TEXTURE27 */
+ { 42403, 0x000084DB }, /* GL_TEXTURE27_ARB */
+ { 42420, 0x000084DC }, /* GL_TEXTURE28 */
+ { 42433, 0x000084DC }, /* GL_TEXTURE28_ARB */
+ { 42450, 0x000084DD }, /* GL_TEXTURE29 */
+ { 42463, 0x000084DD }, /* GL_TEXTURE29_ARB */
+ { 42480, 0x000084C2 }, /* GL_TEXTURE2_ARB */
+ { 42496, 0x000084C3 }, /* GL_TEXTURE3 */
+ { 42508, 0x000084DE }, /* GL_TEXTURE30 */
+ { 42521, 0x000084DE }, /* GL_TEXTURE30_ARB */
+ { 42538, 0x000084DF }, /* GL_TEXTURE31 */
+ { 42551, 0x000084DF }, /* GL_TEXTURE31_ARB */
+ { 42568, 0x000084C3 }, /* GL_TEXTURE3_ARB */
+ { 42584, 0x000084C4 }, /* GL_TEXTURE4 */
+ { 42596, 0x000084C4 }, /* GL_TEXTURE4_ARB */
+ { 42612, 0x000084C5 }, /* GL_TEXTURE5 */
+ { 42624, 0x000084C5 }, /* GL_TEXTURE5_ARB */
+ { 42640, 0x000084C6 }, /* GL_TEXTURE6 */
+ { 42652, 0x000084C6 }, /* GL_TEXTURE6_ARB */
+ { 42668, 0x000084C7 }, /* GL_TEXTURE7 */
+ { 42680, 0x000084C7 }, /* GL_TEXTURE7_ARB */
+ { 42696, 0x000084C8 }, /* GL_TEXTURE8 */
+ { 42708, 0x000084C8 }, /* GL_TEXTURE8_ARB */
+ { 42724, 0x000084C9 }, /* GL_TEXTURE9 */
+ { 42736, 0x000084C9 }, /* GL_TEXTURE9_ARB */
+ { 42752, 0x00000DE0 }, /* GL_TEXTURE_1D */
+ { 42766, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY */
+ { 42786, 0x00008C18 }, /* GL_TEXTURE_1D_ARRAY_EXT */
+ { 42810, 0x00000DE1 }, /* GL_TEXTURE_2D */
+ { 42824, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY */
+ { 42844, 0x00008C1A }, /* GL_TEXTURE_2D_ARRAY_EXT */
+ { 42868, 0x0000806F }, /* GL_TEXTURE_3D */
+ { 42882, 0x0000806F }, /* GL_TEXTURE_3D_OES */
+ { 42900, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE */
+ { 42922, 0x0000805F }, /* GL_TEXTURE_ALPHA_SIZE_EXT */
+ { 42948, 0x0000813C }, /* GL_TEXTURE_BASE_LEVEL */
+ { 42970, 0x00008068 }, /* GL_TEXTURE_BINDING_1D */
+ { 42992, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ { 43020, 0x00008C1C }, /* GL_TEXTURE_BINDING_1D_ARRAY_EXT */
+ { 43052, 0x00008069 }, /* GL_TEXTURE_BINDING_2D */
+ { 43074, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ { 43102, 0x00008C1D }, /* GL_TEXTURE_BINDING_2D_ARRAY_EXT */
+ { 43134, 0x0000806A }, /* GL_TEXTURE_BINDING_3D */
+ { 43156, 0x0000806A }, /* GL_TEXTURE_BINDING_3D_OES */
+ { 43182, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER */
+ { 43208, 0x00008C2C }, /* GL_TEXTURE_BINDING_BUFFER_ARB */
+ { 43238, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ { 43266, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_ARB */
+ { 43298, 0x00008514 }, /* GL_TEXTURE_BINDING_CUBE_MAP_OES */
+ { 43330, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE */
+ { 43359, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_ARB */
+ { 43392, 0x000084F6 }, /* GL_TEXTURE_BINDING_RECTANGLE_NV */
+ { 43424, 0x00040000 }, /* GL_TEXTURE_BIT */
+ { 43439, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE */
+ { 43460, 0x0000805E }, /* GL_TEXTURE_BLUE_SIZE_EXT */
+ { 43485, 0x00001005 }, /* GL_TEXTURE_BORDER */
+ { 43503, 0x00001004 }, /* GL_TEXTURE_BORDER_COLOR */
+ { 43527, 0x00008C2A }, /* GL_TEXTURE_BUFFER */
+ { 43545, 0x00008C2A }, /* GL_TEXTURE_BUFFER_ARB */
+ { 43567, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ { 43604, 0x00008C2D }, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING_ARB */
+ { 43645, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT */
+ { 43670, 0x00008C2E }, /* GL_TEXTURE_BUFFER_FORMAT_ARB */
+ { 43699, 0x00008171 }, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ { 43730, 0x00008176 }, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ { 43760, 0x00008172 }, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ { 43790, 0x00008175 }, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ { 43825, 0x00008173 }, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ { 43856, 0x00008174 }, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ { 43894, 0x000080BC }, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ { 43921, 0x000081EF }, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ { 43953, 0x000080BF }, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ { 43987, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC */
+ { 44011, 0x0000884D }, /* GL_TEXTURE_COMPARE_FUNC_ARB */
+ { 44039, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE */
+ { 44063, 0x0000884C }, /* GL_TEXTURE_COMPARE_MODE_ARB */
+ { 44091, 0x0000819B }, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ { 44124, 0x0000819A }, /* GL_TEXTURE_COMPARE_SGIX */
+ { 44148, 0x00001003 }, /* GL_TEXTURE_COMPONENTS */
+ { 44170, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED */
+ { 44192, 0x000086A1 }, /* GL_TEXTURE_COMPRESSED_ARB */
+ { 44218, 0x000086A3 }, /* GL_TEXTURE_COMPRESSED_FORMATS_ARB */
+ { 44252, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ { 44285, 0x000086A0 }, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE_ARB */
+ { 44322, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT */
+ { 44350, 0x000084EF }, /* GL_TEXTURE_COMPRESSION_HINT_ARB */
+ { 44382, 0x00008078 }, /* GL_TEXTURE_COORD_ARRAY */
+ { 44405, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ { 44443, 0x0000889A }, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB */
+ { 44485, 0x00008092 }, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ { 44516, 0x00008088 }, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ { 44544, 0x0000808A }, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ { 44574, 0x00008089 }, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ { 44602, 0x00008B9D }, /* GL_TEXTURE_CROP_RECT_OES */
+ { 44627, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP */
+ { 44647, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_ARB */
+ { 44671, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ { 44702, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB */
+ { 44737, 0x00008516 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES */
+ { 44772, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ { 44803, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB */
+ { 44838, 0x00008518 }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES */
+ { 44873, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ { 44904, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB */
+ { 44939, 0x0000851A }, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES */
+ { 44974, 0x00008513 }, /* GL_TEXTURE_CUBE_MAP_OES */
+ { 44998, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ { 45029, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB */
+ { 45064, 0x00008515 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES */
+ { 45099, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ { 45130, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB */
+ { 45165, 0x00008517 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES */
+ { 45200, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ { 45231, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB */
+ { 45266, 0x00008519 }, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES */
+ { 45301, 0x000088F4 }, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ { 45330, 0x00008071 }, /* GL_TEXTURE_DEPTH */
+ { 45347, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE */
+ { 45369, 0x0000884A }, /* GL_TEXTURE_DEPTH_SIZE_ARB */
+ { 45395, 0x00002300 }, /* GL_TEXTURE_ENV */
+ { 45410, 0x00002201 }, /* GL_TEXTURE_ENV_COLOR */
+ { 45431, 0x00002200 }, /* GL_TEXTURE_ENV_MODE */
+ { 45451, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL */
+ { 45477, 0x00008500 }, /* GL_TEXTURE_FILTER_CONTROL_EXT */
+ { 45507, 0x00002500 }, /* GL_TEXTURE_GEN_MODE */
+ { 45527, 0x00002500 }, /* GL_TEXTURE_GEN_MODE_OES */
+ { 45551, 0x00000C63 }, /* GL_TEXTURE_GEN_Q */
+ { 45568, 0x00000C62 }, /* GL_TEXTURE_GEN_R */
+ { 45585, 0x00000C60 }, /* GL_TEXTURE_GEN_S */
+ { 45602, 0x00008D60 }, /* GL_TEXTURE_GEN_STR_OES */
+ { 45625, 0x00000C61 }, /* GL_TEXTURE_GEN_T */
+ { 45642, 0x0000819D }, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ { 45667, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE */
+ { 45689, 0x0000805D }, /* GL_TEXTURE_GREEN_SIZE_EXT */
+ { 45715, 0x00001001 }, /* GL_TEXTURE_HEIGHT */
+ { 45733, 0x000080ED }, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ { 45759, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE */
+ { 45785, 0x00008061 }, /* GL_TEXTURE_INTENSITY_SIZE_EXT */
+ { 45815, 0x00001003 }, /* GL_TEXTURE_INTERNAL_FORMAT */
+ { 45842, 0x0000819C }, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ { 45867, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS */
+ { 45887, 0x00008501 }, /* GL_TEXTURE_LOD_BIAS_EXT */
+ { 45911, 0x00008190 }, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ { 45938, 0x0000818E }, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ { 45965, 0x0000818F }, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ { 45992, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE */
+ { 46018, 0x00008060 }, /* GL_TEXTURE_LUMINANCE_SIZE_EXT */
+ { 46048, 0x00002800 }, /* GL_TEXTURE_MAG_FILTER */
+ { 46070, 0x00000BA8 }, /* GL_TEXTURE_MATRIX */
+ { 46088, 0x0000898F }, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ { 46128, 0x000084FE }, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ { 46158, 0x0000836B }, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ { 46186, 0x00008369 }, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ { 46214, 0x0000836A }, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ { 46242, 0x0000813D }, /* GL_TEXTURE_MAX_LEVEL */
+ { 46263, 0x0000813B }, /* GL_TEXTURE_MAX_LOD */
+ { 46282, 0x00002801 }, /* GL_TEXTURE_MIN_FILTER */
+ { 46304, 0x0000813A }, /* GL_TEXTURE_MIN_LOD */
+ { 46323, 0x00008066 }, /* GL_TEXTURE_PRIORITY */
+ { 46343, 0x000085B7 }, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ { 46373, 0x000085B8 }, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ { 46404, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE */
+ { 46425, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_ARB */
+ { 46450, 0x000084F5 }, /* GL_TEXTURE_RECTANGLE_NV */
+ { 46474, 0x0000805C }, /* GL_TEXTURE_RED_SIZE */
+ { 46494, 0x0000805C }, /* GL_TEXTURE_RED_SIZE_EXT */
+ { 46518, 0x00008067 }, /* GL_TEXTURE_RESIDENT */
+ { 46538, 0x00008C3F }, /* GL_TEXTURE_SHARED_SIZE */
+ { 46561, 0x00000BA5 }, /* GL_TEXTURE_STACK_DEPTH */
+ { 46584, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE */
+ { 46608, 0x000088F1 }, /* GL_TEXTURE_STENCIL_SIZE_EXT */
+ { 46636, 0x000085BC }, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ { 46666, 0x00008065 }, /* GL_TEXTURE_TOO_LARGE_EXT */
+ { 46691, 0x0000888F }, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ { 46725, 0x00001000 }, /* GL_TEXTURE_WIDTH */
+ { 46742, 0x00008072 }, /* GL_TEXTURE_WRAP_R */
+ { 46760, 0x00008072 }, /* GL_TEXTURE_WRAP_R_OES */
+ { 46782, 0x00002802 }, /* GL_TEXTURE_WRAP_S */
+ { 46800, 0x00002803 }, /* GL_TEXTURE_WRAP_T */
+ { 46818, 0x0000911B }, /* GL_TIMEOUT_EXPIRED */
+ { 46837, 0x000088BF }, /* GL_TIME_ELAPSED_EXT */
+ { 46857, 0x00008648 }, /* GL_TRACK_MATRIX_NV */
+ { 46876, 0x00008649 }, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ { 46905, 0x00001000 }, /* GL_TRANSFORM_BIT */
+ { 46922, 0x00008E22 }, /* GL_TRANSFORM_FEEDBACK */
+ { 46944, 0x00008E25 }, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ { 46974, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ { 47003, 0x00008E24 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ { 47039, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ { 47076, 0x00008C8F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT */
+ { 47117, 0x00008C8E }, /* GL_TRANSFORM_FEEDBACK_BUFFER_EXT */
+ { 47150, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ { 47184, 0x00008C7F }, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE_EXT */
+ { 47222, 0x00008E23 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ { 47258, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ { 47292, 0x00008C85 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT */
+ { 47330, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ { 47365, 0x00008C84 }, /* GL_TRANSFORM_FEEDBACK_BUFFER_START_EXT */
+ { 47404, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ { 47445, 0x00008C88 }, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT */
+ { 47490, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ { 47521, 0x00008C83 }, /* GL_TRANSFORM_FEEDBACK_VARYINGS_EXT */
+ { 47556, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ { 47597, 0x00008C76 }, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT */
+ { 47642, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX */
+ { 47668, 0x000084E6 }, /* GL_TRANSPOSE_COLOR_MATRIX_ARB */
+ { 47698, 0x000088B7 }, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ { 47730, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ { 47760, 0x000084E3 }, /* GL_TRANSPOSE_MODELVIEW_MATRIX_ARB */
+ { 47794, 0x0000862C }, /* GL_TRANSPOSE_NV */
+ { 47810, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ { 47841, 0x000084E4 }, /* GL_TRANSPOSE_PROJECTION_MATRIX_ARB */
+ { 47876, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ { 47904, 0x000084E5 }, /* GL_TRANSPOSE_TEXTURE_MATRIX_ARB */
+ { 47936, 0x00000004 }, /* GL_TRIANGLES */
+ { 47949, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY */
+ { 47972, 0x0000000C }, /* GL_TRIANGLES_ADJACENCY_ARB */
+ { 47999, 0x00000006 }, /* GL_TRIANGLE_FAN */
+ { 48015, 0x00008615 }, /* GL_TRIANGLE_MESH_SUN */
+ { 48036, 0x00000005 }, /* GL_TRIANGLE_STRIP */
+ { 48054, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ { 48082, 0x0000000D }, /* GL_TRIANGLE_STRIP_ADJACENCY_ARB */
+ { 48114, 0x00000001 }, /* GL_TRUE */
+ { 48122, 0x00008A1C }, /* GL_UNDEFINED_APPLE */
+ { 48141, 0x00008255 }, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
+ { 48170, 0x00000CF5 }, /* GL_UNPACK_ALIGNMENT */
+ { 48190, 0x0000806E }, /* GL_UNPACK_IMAGE_HEIGHT */
+ { 48213, 0x00000CF1 }, /* GL_UNPACK_LSB_FIRST */
+ { 48233, 0x00000CF2 }, /* GL_UNPACK_ROW_LENGTH */
+ { 48254, 0x0000806D }, /* GL_UNPACK_SKIP_IMAGES */
+ { 48276, 0x00000CF4 }, /* GL_UNPACK_SKIP_PIXELS */
+ { 48298, 0x00000CF3 }, /* GL_UNPACK_SKIP_ROWS */
+ { 48318, 0x00000CF0 }, /* GL_UNPACK_SWAP_BYTES */
+ { 48339, 0x00009118 }, /* GL_UNSIGNALED */
+ { 48353, 0x00001401 }, /* GL_UNSIGNED_BYTE */
+ { 48370, 0x00008362 }, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ { 48397, 0x00008032 }, /* GL_UNSIGNED_BYTE_3_3_2 */
+ { 48420, 0x00001405 }, /* GL_UNSIGNED_INT */
+ { 48436, 0x00008C3B }, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ { 48468, 0x00008036 }, /* GL_UNSIGNED_INT_10_10_10_2 */
+ { 48495, 0x00008DF6 }, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ { 48526, 0x000084FA }, /* GL_UNSIGNED_INT_24_8 */
+ { 48547, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_EXT */
+ { 48572, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_NV */
+ { 48596, 0x000084FA }, /* GL_UNSIGNED_INT_24_8_OES */
+ { 48621, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ { 48652, 0x00008368 }, /* GL_UNSIGNED_INT_2_10_10_10_REV_EXT */
+ { 48687, 0x00008C3E }, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ { 48715, 0x00008035 }, /* GL_UNSIGNED_INT_8_8_8_8 */
+ { 48739, 0x00008367 }, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ { 48767, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ { 48794, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ { 48827, 0x00008DD6 }, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY_EXT */
+ { 48864, 0x00008DD1 }, /* GL_UNSIGNED_INT_SAMPLER_1D_EXT */
+ { 48895, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ { 48922, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ { 48955, 0x00008DD7 }, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY_EXT */
+ { 48992, 0x00008DD2 }, /* GL_UNSIGNED_INT_SAMPLER_2D_EXT */
+ { 49023, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ { 49055, 0x00008DD5 }, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT_EXT */
+ { 49091, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ { 49118, 0x00008DD3 }, /* GL_UNSIGNED_INT_SAMPLER_3D_EXT */
+ { 49149, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ { 49180, 0x00008DD8 }, /* GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT */
+ { 49215, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ { 49244, 0x00008DD4 }, /* GL_UNSIGNED_INT_SAMPLER_CUBE_EXT */
+ { 49277, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2 */
+ { 49298, 0x00008DC6 }, /* GL_UNSIGNED_INT_VEC2_EXT */
+ { 49323, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3 */
+ { 49344, 0x00008DC7 }, /* GL_UNSIGNED_INT_VEC3_EXT */
+ { 49369, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4 */
+ { 49390, 0x00008DC8 }, /* GL_UNSIGNED_INT_VEC4_EXT */
+ { 49415, 0x00008C17 }, /* GL_UNSIGNED_NORMALIZED */
+ { 49438, 0x00001403 }, /* GL_UNSIGNED_SHORT */
+ { 49456, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ { 49486, 0x00008366 }, /* GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT */
+ { 49520, 0x00008033 }, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ { 49546, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ { 49576, 0x00008365 }, /* GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT */
+ { 49610, 0x00008034 }, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ { 49636, 0x00008363 }, /* GL_UNSIGNED_SHORT_5_6_5 */
+ { 49660, 0x00008364 }, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ { 49688, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ { 49716, 0x000085BA }, /* GL_UNSIGNED_SHORT_8_8_MESA */
+ { 49743, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ { 49775, 0x000085BB }, /* GL_UNSIGNED_SHORT_8_8_REV_MESA */
+ { 49806, 0x00008CA2 }, /* GL_UPPER_LEFT */
+ { 49820, 0x00002A20 }, /* GL_V2F */
+ { 49827, 0x00002A21 }, /* GL_V3F */
+ { 49834, 0x00008B83 }, /* GL_VALIDATE_STATUS */
+ { 49853, 0x00001F00 }, /* GL_VENDOR */
+ { 49863, 0x00001F02 }, /* GL_VERSION */
+ { 49874, 0x00008074 }, /* GL_VERTEX_ARRAY */
+ { 49890, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING */
+ { 49914, 0x000085B5 }, /* GL_VERTEX_ARRAY_BINDING_APPLE */
+ { 49944, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ { 49975, 0x00008896 }, /* GL_VERTEX_ARRAY_BUFFER_BINDING_ARB */
+ { 50010, 0x0000808E }, /* GL_VERTEX_ARRAY_POINTER */
+ { 50034, 0x0000807A }, /* GL_VERTEX_ARRAY_SIZE */
+ { 50055, 0x0000807C }, /* GL_VERTEX_ARRAY_STRIDE */
+ { 50078, 0x0000807B }, /* GL_VERTEX_ARRAY_TYPE */
+ { 50099, 0x00008650 }, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ { 50126, 0x0000865A }, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ { 50154, 0x0000865B }, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ { 50182, 0x0000865C }, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ { 50210, 0x0000865D }, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ { 50238, 0x0000865E }, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ { 50266, 0x0000865F }, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ { 50294, 0x00008651 }, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ { 50321, 0x00008652 }, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ { 50348, 0x00008653 }, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ { 50375, 0x00008654 }, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ { 50402, 0x00008655 }, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ { 50429, 0x00008656 }, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ { 50456, 0x00008657 }, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ { 50483, 0x00008658 }, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ { 50510, 0x00008659 }, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ { 50537, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ { 50575, 0x0000889F }, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB */
+ { 50617, 0x000088FE }, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
+ { 50652, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ { 50683, 0x00008622 }, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED_ARB */
+ { 50718, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ { 50749, 0x000088FD }, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER_EXT */
+ { 50784, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ { 50818, 0x0000886A }, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB */
+ { 50856, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ { 50887, 0x00008645 }, /* GL_VERTEX_ATTRIB_ARRAY_POINTER_ARB */
+ { 50922, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ { 50950, 0x00008623 }, /* GL_VERTEX_ATTRIB_ARRAY_SIZE_ARB */
+ { 50982, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ { 51012, 0x00008624 }, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE_ARB */
+ { 51046, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ { 51074, 0x00008625 }, /* GL_VERTEX_ATTRIB_ARRAY_TYPE_ARB */
+ { 51106, 0x000086A7 }, /* GL_VERTEX_BLEND_ARB */
+ { 51126, 0x00008620 }, /* GL_VERTEX_PROGRAM_ARB */
+ { 51148, 0x0000864A }, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ { 51177, 0x00008620 }, /* GL_VERTEX_PROGRAM_NV */
+ { 51198, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE */
+ { 51227, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_ARB */
+ { 51260, 0x00008642 }, /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
+ { 51292, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ { 51319, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_ARB */
+ { 51350, 0x00008643 }, /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+ { 51380, 0x00008B31 }, /* GL_VERTEX_SHADER */
+ { 51397, 0x00008B31 }, /* GL_VERTEX_SHADER_ARB */
+ { 51418, 0x00008621 }, /* GL_VERTEX_STATE_PROGRAM_NV */
+ { 51445, 0x00000BA2 }, /* GL_VIEWPORT */
+ { 51457, 0x00000800 }, /* GL_VIEWPORT_BIT */
+ { 51473, 0x00008A1A }, /* GL_VOLATILE_APPLE */
+ { 51491, 0x0000911D }, /* GL_WAIT_FAILED */
+ { 51506, 0x000086AD }, /* GL_WEIGHT_ARRAY_ARB */
+ { 51526, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ { 51557, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB */
+ { 51592, 0x0000889E }, /* GL_WEIGHT_ARRAY_BUFFER_BINDING_OES */
+ { 51627, 0x000086AD }, /* GL_WEIGHT_ARRAY_OES */
+ { 51647, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ { 51675, 0x000086AC }, /* GL_WEIGHT_ARRAY_POINTER_OES */
+ { 51703, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ { 51728, 0x000086AB }, /* GL_WEIGHT_ARRAY_SIZE_OES */
+ { 51753, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ { 51780, 0x000086AA }, /* GL_WEIGHT_ARRAY_STRIDE_OES */
+ { 51807, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ { 51832, 0x000086A9 }, /* GL_WEIGHT_ARRAY_TYPE_OES */
+ { 51857, 0x000086A6 }, /* GL_WEIGHT_SUM_UNITY_ARB */
+ { 51881, 0x000081D4 }, /* GL_WRAP_BORDER_SUN */
+ { 51900, 0x000088B9 }, /* GL_WRITE_ONLY */
+ { 51914, 0x000088B9 }, /* GL_WRITE_ONLY_ARB */
+ { 51932, 0x000088B9 }, /* GL_WRITE_ONLY_OES */
+ { 51950, 0x00001506 }, /* GL_XOR */
+ { 51957, 0x000085B9 }, /* GL_YCBCR_422_APPLE */
+ { 51976, 0x00008757 }, /* GL_YCBCR_MESA */
+ { 51990, 0x00000000 }, /* GL_ZERO */
+ { 51998, 0x00000D16 }, /* GL_ZOOM_X */
+ { 52008, 0x00000D17 }, /* GL_ZOOM_Y */
};
-static const unsigned reduced_enums[1562] =
+static const unsigned reduced_enums[1563] =
{
539, /* GL_FALSE */
834, /* GL_LINES */
838, /* GL_LINE_LOOP */
845, /* GL_LINE_STRIP */
- 2152, /* GL_TRIANGLES */
- 2157, /* GL_TRIANGLE_STRIP */
- 2155, /* GL_TRIANGLE_FAN */
- 1517, /* GL_QUADS */
- 1521, /* GL_QUAD_STRIP */
- 1388, /* GL_POLYGON */
+ 2156, /* GL_TRIANGLES */
+ 2161, /* GL_TRIANGLE_STRIP */
+ 2159, /* GL_TRIANGLE_FAN */
+ 1521, /* GL_QUADS */
+ 1525, /* GL_QUAD_STRIP */
+ 1389, /* GL_POLYGON */
835, /* GL_LINES_ADJACENCY */
846, /* GL_LINE_STRIP_ADJACENCY */
- 2153, /* GL_TRIANGLES_ADJACENCY */
- 2158, /* GL_TRIANGLE_STRIP_ADJACENCY */
- 1400, /* GL_POLYGON_STIPPLE_BIT */
- 1343, /* GL_PIXEL_MODE_BIT */
+ 2157, /* GL_TRIANGLES_ADJACENCY */
+ 2162, /* GL_TRIANGLE_STRIP_ADJACENCY */
+ 1401, /* GL_POLYGON_STIPPLE_BIT */
+ 1344, /* GL_PIXEL_MODE_BIT */
821, /* GL_LIGHTING_BIT */
573, /* GL_FOG_BIT */
8, /* GL_ACCUM */
857, /* GL_LOAD */
- 1607, /* GL_RETURN */
+ 1611, /* GL_RETURN */
1209, /* GL_MULT */
24, /* GL_ADD */
1225, /* GL_NEVER */
@@ -4702,15 +4710,15 @@ static const unsigned reduced_enums[1562] =
1242, /* GL_NOTEQUAL */
695, /* GL_GEQUAL */
55, /* GL_ALWAYS */
- 1816, /* GL_SRC_COLOR */
- 1276, /* GL_ONE_MINUS_SRC_COLOR */
- 1814, /* GL_SRC_ALPHA */
- 1275, /* GL_ONE_MINUS_SRC_ALPHA */
+ 1820, /* GL_SRC_COLOR */
+ 1277, /* GL_ONE_MINUS_SRC_COLOR */
+ 1818, /* GL_SRC_ALPHA */
+ 1276, /* GL_ONE_MINUS_SRC_ALPHA */
508, /* GL_DST_ALPHA */
- 1273, /* GL_ONE_MINUS_DST_ALPHA */
+ 1274, /* GL_ONE_MINUS_DST_ALPHA */
509, /* GL_DST_COLOR */
- 1274, /* GL_ONE_MINUS_DST_COLOR */
- 1815, /* GL_SRC_ALPHA_SATURATE */
+ 1275, /* GL_ONE_MINUS_DST_COLOR */
+ 1819, /* GL_SRC_ALPHA_SATURATE */
672, /* GL_FRONT_LEFT */
673, /* GL_FRONT_RIGHT */
77, /* GL_BACK_LEFT */
@@ -4718,7 +4726,7 @@ static const unsigned reduced_enums[1562] =
669, /* GL_FRONT */
76, /* GL_BACK */
809, /* GL_LEFT */
- 1697, /* GL_RIGHT */
+ 1701, /* GL_RIGHT */
670, /* GL_FRONT_AND_BACK */
71, /* GL_AUX0 */
72, /* GL_AUX1 */
@@ -4727,19 +4735,19 @@ static const unsigned reduced_enums[1562] =
797, /* GL_INVALID_ENUM */
802, /* GL_INVALID_VALUE */
801, /* GL_INVALID_OPERATION */
- 1821, /* GL_STACK_OVERFLOW */
- 1822, /* GL_STACK_UNDERFLOW */
- 1301, /* GL_OUT_OF_MEMORY */
+ 1825, /* GL_STACK_OVERFLOW */
+ 1826, /* GL_STACK_UNDERFLOW */
+ 1302, /* GL_OUT_OF_MEMORY */
798, /* GL_INVALID_FRAMEBUFFER_OPERATION */
0, /* GL_2D */
2, /* GL_3D */
3, /* GL_3D_COLOR */
4, /* GL_3D_COLOR_TEXTURE */
6, /* GL_4D_COLOR_TEXTURE */
- 1321, /* GL_PASS_THROUGH_TOKEN */
- 1387, /* GL_POINT_TOKEN */
+ 1322, /* GL_PASS_THROUGH_TOKEN */
+ 1388, /* GL_POINT_TOKEN */
848, /* GL_LINE_TOKEN */
- 1401, /* GL_POLYGON_TOKEN */
+ 1402, /* GL_POLYGON_TOKEN */
87, /* GL_BITMAP_TOKEN */
507, /* GL_DRAW_PIXEL_TOKEN */
353, /* GL_COPY_PIXEL_TOKEN */
@@ -4749,7 +4757,7 @@ static const unsigned reduced_enums[1562] =
390, /* GL_CW */
154, /* GL_CCW */
187, /* GL_COEFF */
- 1298, /* GL_ORDER */
+ 1299, /* GL_ORDER */
444, /* GL_DOMAIN */
363, /* GL_CURRENT_COLOR */
366, /* GL_CURRENT_INDEX */
@@ -4761,10 +4769,10 @@ static const unsigned reduced_enums[1562] =
381, /* GL_CURRENT_RASTER_POSITION */
382, /* GL_CURRENT_RASTER_POSITION_VALID */
379, /* GL_CURRENT_RASTER_DISTANCE */
- 1379, /* GL_POINT_SMOOTH */
- 1363, /* GL_POINT_SIZE */
- 1378, /* GL_POINT_SIZE_RANGE */
- 1369, /* GL_POINT_SIZE_GRANULARITY */
+ 1380, /* GL_POINT_SMOOTH */
+ 1364, /* GL_POINT_SIZE */
+ 1379, /* GL_POINT_SIZE_RANGE */
+ 1370, /* GL_POINT_SIZE_GRANULARITY */
840, /* GL_LINE_SMOOTH */
849, /* GL_LINE_WIDTH */
851, /* GL_LINE_WIDTH_RANGE */
@@ -4776,9 +4784,9 @@ static const unsigned reduced_enums[1562] =
1064, /* GL_MAX_LIST_NESTING */
853, /* GL_LIST_BASE */
855, /* GL_LIST_INDEX */
- 1390, /* GL_POLYGON_MODE */
- 1397, /* GL_POLYGON_SMOOTH */
- 1399, /* GL_POLYGON_STIPPLE */
+ 1391, /* GL_POLYGON_MODE */
+ 1398, /* GL_POLYGON_SMOOTH */
+ 1400, /* GL_POLYGON_STIPPLE */
518, /* GL_EDGE_FLAG */
356, /* GL_CULL_FACE */
357, /* GL_CULL_FACE_MODE */
@@ -4787,7 +4795,7 @@ static const unsigned reduced_enums[1562] =
825, /* GL_LIGHT_MODEL_LOCAL_VIEWER */
826, /* GL_LIGHT_MODEL_TWO_SIDE */
822, /* GL_LIGHT_MODEL_AMBIENT */
- 1763, /* GL_SHADE_MODEL */
+ 1767, /* GL_SHADE_MODEL */
235, /* GL_COLOR_MATERIAL_FACE */
236, /* GL_COLOR_MATERIAL_PARAMETER */
234, /* GL_COLOR_MATERIAL */
@@ -4804,24 +4812,24 @@ static const unsigned reduced_enums[1562] =
414, /* GL_DEPTH_CLEAR_VALUE */
428, /* GL_DEPTH_FUNC */
12, /* GL_ACCUM_CLEAR_VALUE */
- 1866, /* GL_STENCIL_TEST */
- 1847, /* GL_STENCIL_CLEAR_VALUE */
- 1849, /* GL_STENCIL_FUNC */
- 1868, /* GL_STENCIL_VALUE_MASK */
- 1848, /* GL_STENCIL_FAIL */
- 1863, /* GL_STENCIL_PASS_DEPTH_FAIL */
- 1864, /* GL_STENCIL_PASS_DEPTH_PASS */
- 1865, /* GL_STENCIL_REF */
- 1869, /* GL_STENCIL_WRITEMASK */
+ 1870, /* GL_STENCIL_TEST */
+ 1851, /* GL_STENCIL_CLEAR_VALUE */
+ 1853, /* GL_STENCIL_FUNC */
+ 1872, /* GL_STENCIL_VALUE_MASK */
+ 1852, /* GL_STENCIL_FAIL */
+ 1867, /* GL_STENCIL_PASS_DEPTH_FAIL */
+ 1868, /* GL_STENCIL_PASS_DEPTH_PASS */
+ 1869, /* GL_STENCIL_REF */
+ 1873, /* GL_STENCIL_WRITEMASK */
1014, /* GL_MATRIX_MODE */
1231, /* GL_NORMALIZE */
- 2285, /* GL_VIEWPORT */
+ 2289, /* GL_VIEWPORT */
1204, /* GL_MODELVIEW_STACK_DEPTH */
- 1491, /* GL_PROJECTION_STACK_DEPTH */
- 2106, /* GL_TEXTURE_STACK_DEPTH */
+ 1495, /* GL_PROJECTION_STACK_DEPTH */
+ 2110, /* GL_TEXTURE_STACK_DEPTH */
1201, /* GL_MODELVIEW_MATRIX */
- 1489, /* GL_PROJECTION_MATRIX */
- 2086, /* GL_TEXTURE_MATRIX */
+ 1493, /* GL_PROJECTION_MATRIX */
+ 2090, /* GL_TEXTURE_MATRIX */
69, /* GL_ATTRIB_STACK_DEPTH */
169, /* GL_CLIENT_ATTRIB_STACK_DEPTH */
51, /* GL_ALPHA_TEST */
@@ -4836,67 +4844,67 @@ static const unsigned reduced_enums[1562] =
233, /* GL_COLOR_LOGIC_OP */
75, /* GL_AUX_BUFFERS */
454, /* GL_DRAW_BUFFER */
- 1544, /* GL_READ_BUFFER */
- 1740, /* GL_SCISSOR_BOX */
- 1741, /* GL_SCISSOR_TEST */
+ 1548, /* GL_READ_BUFFER */
+ 1744, /* GL_SCISSOR_BOX */
+ 1745, /* GL_SCISSOR_TEST */
744, /* GL_INDEX_CLEAR_VALUE */
749, /* GL_INDEX_WRITEMASK */
230, /* GL_COLOR_CLEAR_VALUE */
272, /* GL_COLOR_WRITEMASK */
746, /* GL_INDEX_MODE */
- 1686, /* GL_RGBA_MODE */
+ 1690, /* GL_RGBA_MODE */
453, /* GL_DOUBLEBUFFER */
- 1870, /* GL_STEREO */
- 1598, /* GL_RENDER_MODE */
- 1322, /* GL_PERSPECTIVE_CORRECTION_HINT */
- 1380, /* GL_POINT_SMOOTH_HINT */
+ 1874, /* GL_STEREO */
+ 1602, /* GL_RENDER_MODE */
+ 1323, /* GL_PERSPECTIVE_CORRECTION_HINT */
+ 1381, /* GL_POINT_SMOOTH_HINT */
841, /* GL_LINE_SMOOTH_HINT */
- 1398, /* GL_POLYGON_SMOOTH_HINT */
+ 1399, /* GL_POLYGON_SMOOTH_HINT */
593, /* GL_FOG_HINT */
- 2066, /* GL_TEXTURE_GEN_S */
- 2068, /* GL_TEXTURE_GEN_T */
- 2065, /* GL_TEXTURE_GEN_R */
- 2064, /* GL_TEXTURE_GEN_Q */
- 1335, /* GL_PIXEL_MAP_I_TO_I */
- 1341, /* GL_PIXEL_MAP_S_TO_S */
- 1337, /* GL_PIXEL_MAP_I_TO_R */
- 1333, /* GL_PIXEL_MAP_I_TO_G */
- 1331, /* GL_PIXEL_MAP_I_TO_B */
- 1329, /* GL_PIXEL_MAP_I_TO_A */
- 1339, /* GL_PIXEL_MAP_R_TO_R */
- 1327, /* GL_PIXEL_MAP_G_TO_G */
- 1325, /* GL_PIXEL_MAP_B_TO_B */
- 1323, /* GL_PIXEL_MAP_A_TO_A */
- 1336, /* GL_PIXEL_MAP_I_TO_I_SIZE */
- 1342, /* GL_PIXEL_MAP_S_TO_S_SIZE */
- 1338, /* GL_PIXEL_MAP_I_TO_R_SIZE */
- 1334, /* GL_PIXEL_MAP_I_TO_G_SIZE */
- 1332, /* GL_PIXEL_MAP_I_TO_B_SIZE */
- 1330, /* GL_PIXEL_MAP_I_TO_A_SIZE */
- 1340, /* GL_PIXEL_MAP_R_TO_R_SIZE */
- 1328, /* GL_PIXEL_MAP_G_TO_G_SIZE */
- 1326, /* GL_PIXEL_MAP_B_TO_B_SIZE */
- 1324, /* GL_PIXEL_MAP_A_TO_A_SIZE */
- 2170, /* GL_UNPACK_SWAP_BYTES */
- 2165, /* GL_UNPACK_LSB_FIRST */
- 2166, /* GL_UNPACK_ROW_LENGTH */
- 2169, /* GL_UNPACK_SKIP_ROWS */
- 2168, /* GL_UNPACK_SKIP_PIXELS */
- 2163, /* GL_UNPACK_ALIGNMENT */
- 1310, /* GL_PACK_SWAP_BYTES */
- 1305, /* GL_PACK_LSB_FIRST */
- 1306, /* GL_PACK_ROW_LENGTH */
- 1309, /* GL_PACK_SKIP_ROWS */
- 1308, /* GL_PACK_SKIP_PIXELS */
- 1302, /* GL_PACK_ALIGNMENT */
+ 2070, /* GL_TEXTURE_GEN_S */
+ 2072, /* GL_TEXTURE_GEN_T */
+ 2069, /* GL_TEXTURE_GEN_R */
+ 2068, /* GL_TEXTURE_GEN_Q */
+ 1336, /* GL_PIXEL_MAP_I_TO_I */
+ 1342, /* GL_PIXEL_MAP_S_TO_S */
+ 1338, /* GL_PIXEL_MAP_I_TO_R */
+ 1334, /* GL_PIXEL_MAP_I_TO_G */
+ 1332, /* GL_PIXEL_MAP_I_TO_B */
+ 1330, /* GL_PIXEL_MAP_I_TO_A */
+ 1340, /* GL_PIXEL_MAP_R_TO_R */
+ 1328, /* GL_PIXEL_MAP_G_TO_G */
+ 1326, /* GL_PIXEL_MAP_B_TO_B */
+ 1324, /* GL_PIXEL_MAP_A_TO_A */
+ 1337, /* GL_PIXEL_MAP_I_TO_I_SIZE */
+ 1343, /* GL_PIXEL_MAP_S_TO_S_SIZE */
+ 1339, /* GL_PIXEL_MAP_I_TO_R_SIZE */
+ 1335, /* GL_PIXEL_MAP_I_TO_G_SIZE */
+ 1333, /* GL_PIXEL_MAP_I_TO_B_SIZE */
+ 1331, /* GL_PIXEL_MAP_I_TO_A_SIZE */
+ 1341, /* GL_PIXEL_MAP_R_TO_R_SIZE */
+ 1329, /* GL_PIXEL_MAP_G_TO_G_SIZE */
+ 1327, /* GL_PIXEL_MAP_B_TO_B_SIZE */
+ 1325, /* GL_PIXEL_MAP_A_TO_A_SIZE */
+ 2174, /* GL_UNPACK_SWAP_BYTES */
+ 2169, /* GL_UNPACK_LSB_FIRST */
+ 2170, /* GL_UNPACK_ROW_LENGTH */
+ 2173, /* GL_UNPACK_SKIP_ROWS */
+ 2172, /* GL_UNPACK_SKIP_PIXELS */
+ 2167, /* GL_UNPACK_ALIGNMENT */
+ 1311, /* GL_PACK_SWAP_BYTES */
+ 1306, /* GL_PACK_LSB_FIRST */
+ 1307, /* GL_PACK_ROW_LENGTH */
+ 1310, /* GL_PACK_SKIP_ROWS */
+ 1309, /* GL_PACK_SKIP_PIXELS */
+ 1303, /* GL_PACK_ALIGNMENT */
955, /* GL_MAP_COLOR */
960, /* GL_MAP_STENCIL */
748, /* GL_INDEX_SHIFT */
747, /* GL_INDEX_OFFSET */
- 1560, /* GL_RED_SCALE */
- 1556, /* GL_RED_BIAS */
- 2311, /* GL_ZOOM_X */
- 2312, /* GL_ZOOM_Y */
+ 1564, /* GL_RED_SCALE */
+ 1560, /* GL_RED_BIAS */
+ 2315, /* GL_ZOOM_X */
+ 2316, /* GL_ZOOM_Y */
702, /* GL_GREEN_SCALE */
698, /* GL_GREEN_BIAS */
115, /* GL_BLUE_SCALE */
@@ -4917,14 +4925,14 @@ static const unsigned reduced_enums[1562] =
1120, /* GL_MAX_TEXTURE_STACK_DEPTH */
1146, /* GL_MAX_VIEWPORT_DIMS */
1023, /* GL_MAX_CLIENT_ATTRIB_STACK_DEPTH */
- 1880, /* GL_SUBPIXEL_BITS */
+ 1884, /* GL_SUBPIXEL_BITS */
743, /* GL_INDEX_BITS */
- 1557, /* GL_RED_BITS */
+ 1561, /* GL_RED_BITS */
699, /* GL_GREEN_BITS */
112, /* GL_BLUE_BITS */
48, /* GL_ALPHA_BITS */
407, /* GL_DEPTH_BITS */
- 1844, /* GL_STENCIL_BITS */
+ 1848, /* GL_STENCIL_BITS */
14, /* GL_ACCUM_RED_BITS */
13, /* GL_ACCUM_GREEN_BITS */
10, /* GL_ACCUM_BLUE_BITS */
@@ -4953,39 +4961,39 @@ static const unsigned reduced_enums[1562] =
903, /* GL_MAP1_GRID_SEGMENTS */
929, /* GL_MAP2_GRID_DOMAIN */
930, /* GL_MAP2_GRID_SEGMENTS */
- 1963, /* GL_TEXTURE_1D */
- 1966, /* GL_TEXTURE_2D */
+ 1967, /* GL_TEXTURE_1D */
+ 1970, /* GL_TEXTURE_2D */
542, /* GL_FEEDBACK_BUFFER_POINTER */
543, /* GL_FEEDBACK_BUFFER_SIZE */
544, /* GL_FEEDBACK_BUFFER_TYPE */
- 1750, /* GL_SELECTION_BUFFER_POINTER */
- 1751, /* GL_SELECTION_BUFFER_SIZE */
- 2112, /* GL_TEXTURE_WIDTH */
- 2072, /* GL_TEXTURE_HEIGHT */
- 2016, /* GL_TEXTURE_COMPONENTS */
- 1994, /* GL_TEXTURE_BORDER_COLOR */
- 1993, /* GL_TEXTURE_BORDER */
+ 1754, /* GL_SELECTION_BUFFER_POINTER */
+ 1755, /* GL_SELECTION_BUFFER_SIZE */
+ 2116, /* GL_TEXTURE_WIDTH */
+ 2076, /* GL_TEXTURE_HEIGHT */
+ 2020, /* GL_TEXTURE_COMPONENTS */
+ 1998, /* GL_TEXTURE_BORDER_COLOR */
+ 1997, /* GL_TEXTURE_BORDER */
445, /* GL_DONT_CARE */
540, /* GL_FASTEST */
1226, /* GL_NICEST */
56, /* GL_AMBIENT */
442, /* GL_DIFFUSE */
- 1803, /* GL_SPECULAR */
- 1402, /* GL_POSITION */
- 1806, /* GL_SPOT_DIRECTION */
- 1807, /* GL_SPOT_EXPONENT */
- 1805, /* GL_SPOT_CUTOFF */
+ 1807, /* GL_SPECULAR */
+ 1403, /* GL_POSITION */
+ 1810, /* GL_SPOT_DIRECTION */
+ 1811, /* GL_SPOT_EXPONENT */
+ 1809, /* GL_SPOT_CUTOFF */
320, /* GL_CONSTANT_ATTENUATION */
829, /* GL_LINEAR_ATTENUATION */
- 1516, /* GL_QUADRATIC_ATTENUATION */
+ 1520, /* GL_QUADRATIC_ATTENUATION */
287, /* GL_COMPILE */
288, /* GL_COMPILE_AND_EXECUTE */
149, /* GL_BYTE */
- 2172, /* GL_UNSIGNED_BYTE */
- 1768, /* GL_SHORT */
- 2211, /* GL_UNSIGNED_SHORT */
+ 2176, /* GL_UNSIGNED_BYTE */
+ 1772, /* GL_SHORT */
+ 2215, /* GL_UNSIGNED_SHORT */
752, /* GL_INT */
- 2175, /* GL_UNSIGNED_INT */
+ 2179, /* GL_UNSIGNED_INT */
553, /* GL_FLOAT */
1, /* GL_2_BYTES */
5, /* GL_3_BYTES */
@@ -4999,68 +5007,68 @@ static const unsigned reduced_enums[1562] =
351, /* GL_COPY */
59, /* GL_AND_INVERTED */
1229, /* GL_NOOP */
- 2307, /* GL_XOR */
- 1297, /* GL_OR */
+ 2311, /* GL_XOR */
+ 1298, /* GL_OR */
1230, /* GL_NOR */
530, /* GL_EQUIV */
805, /* GL_INVERT */
- 1300, /* GL_OR_REVERSE */
+ 1301, /* GL_OR_REVERSE */
352, /* GL_COPY_INVERTED */
- 1299, /* GL_OR_INVERTED */
+ 1300, /* GL_OR_INVERTED */
1219, /* GL_NAND */
- 1757, /* GL_SET */
+ 1761, /* GL_SET */
527, /* GL_EMISSION */
- 1767, /* GL_SHININESS */
+ 1771, /* GL_SHININESS */
57, /* GL_AMBIENT_AND_DIFFUSE */
232, /* GL_COLOR_INDEXES */
1168, /* GL_MODELVIEW */
- 1488, /* GL_PROJECTION */
- 1898, /* GL_TEXTURE */
+ 1492, /* GL_PROJECTION */
+ 1902, /* GL_TEXTURE */
188, /* GL_COLOR */
399, /* GL_DEPTH */
- 1829, /* GL_STENCIL */
+ 1833, /* GL_STENCIL */
231, /* GL_COLOR_INDEX */
- 1850, /* GL_STENCIL_INDEX */
+ 1854, /* GL_STENCIL_INDEX */
415, /* GL_DEPTH_COMPONENT */
- 1553, /* GL_RED */
+ 1557, /* GL_RED */
697, /* GL_GREEN */
110, /* GL_BLUE */
32, /* GL_ALPHA */
- 1610, /* GL_RGB */
- 1650, /* GL_RGBA */
+ 1614, /* GL_RGB */
+ 1654, /* GL_RGBA */
864, /* GL_LUMINANCE */
891, /* GL_LUMINANCE_ALPHA */
86, /* GL_BITMAP */
- 1352, /* GL_POINT */
+ 1353, /* GL_POINT */
827, /* GL_LINE */
545, /* GL_FILL */
- 1567, /* GL_RENDER */
+ 1571, /* GL_RENDER */
541, /* GL_FEEDBACK */
- 1749, /* GL_SELECT */
+ 1753, /* GL_SELECT */
552, /* GL_FLAT */
- 1778, /* GL_SMOOTH */
+ 1782, /* GL_SMOOTH */
806, /* GL_KEEP */
- 1600, /* GL_REPLACE */
+ 1604, /* GL_REPLACE */
733, /* GL_INCR */
395, /* GL_DECR */
- 2228, /* GL_VENDOR */
- 1597, /* GL_RENDERER */
- 2229, /* GL_VERSION */
+ 2232, /* GL_VENDOR */
+ 1601, /* GL_RENDERER */
+ 2233, /* GL_VERSION */
534, /* GL_EXTENSIONS */
- 1698, /* GL_S */
- 1889, /* GL_T */
- 1536, /* GL_R */
- 1515, /* GL_Q */
+ 1702, /* GL_S */
+ 1893, /* GL_T */
+ 1540, /* GL_R */
+ 1519, /* GL_Q */
1205, /* GL_MODULATE */
394, /* GL_DECAL */
- 2059, /* GL_TEXTURE_ENV_MODE */
- 2058, /* GL_TEXTURE_ENV_COLOR */
- 2057, /* GL_TEXTURE_ENV */
+ 2063, /* GL_TEXTURE_ENV_MODE */
+ 2062, /* GL_TEXTURE_ENV_COLOR */
+ 2061, /* GL_TEXTURE_ENV */
535, /* GL_EYE_LINEAR */
- 1258, /* GL_OBJECT_LINEAR */
- 1804, /* GL_SPHERE_MAP */
- 2062, /* GL_TEXTURE_GEN_MODE */
- 1260, /* GL_OBJECT_PLANE */
+ 1259, /* GL_OBJECT_LINEAR */
+ 1808, /* GL_SPHERE_MAP */
+ 2066, /* GL_TEXTURE_GEN_MODE */
+ 1261, /* GL_OBJECT_PLANE */
536, /* GL_EYE_PLANE */
1220, /* GL_NEAREST */
828, /* GL_LINEAR */
@@ -5068,30 +5076,30 @@ static const unsigned reduced_enums[1562] =
833, /* GL_LINEAR_MIPMAP_NEAREST */
1223, /* GL_NEAREST_MIPMAP_LINEAR */
832, /* GL_LINEAR_MIPMAP_LINEAR */
- 2085, /* GL_TEXTURE_MAG_FILTER */
- 2094, /* GL_TEXTURE_MIN_FILTER */
- 2115, /* GL_TEXTURE_WRAP_S */
- 2116, /* GL_TEXTURE_WRAP_T */
+ 2089, /* GL_TEXTURE_MAG_FILTER */
+ 2098, /* GL_TEXTURE_MIN_FILTER */
+ 2119, /* GL_TEXTURE_WRAP_S */
+ 2120, /* GL_TEXTURE_WRAP_T */
155, /* GL_CLAMP */
- 1599, /* GL_REPEAT */
- 1396, /* GL_POLYGON_OFFSET_UNITS */
- 1395, /* GL_POLYGON_OFFSET_POINT */
- 1394, /* GL_POLYGON_OFFSET_LINE */
- 1539, /* GL_R3_G3_B2 */
- 2225, /* GL_V2F */
- 2226, /* GL_V3F */
+ 1603, /* GL_REPEAT */
+ 1397, /* GL_POLYGON_OFFSET_UNITS */
+ 1396, /* GL_POLYGON_OFFSET_POINT */
+ 1395, /* GL_POLYGON_OFFSET_LINE */
+ 1543, /* GL_R3_G3_B2 */
+ 2229, /* GL_V2F */
+ 2230, /* GL_V3F */
152, /* GL_C4UB_V2F */
153, /* GL_C4UB_V3F */
150, /* GL_C3F_V3F */
1217, /* GL_N3F_V3F */
151, /* GL_C4F_N3F_V3F */
- 1894, /* GL_T2F_V3F */
- 1896, /* GL_T4F_V4F */
- 1892, /* GL_T2F_C4UB_V3F */
- 1890, /* GL_T2F_C3F_V3F */
- 1893, /* GL_T2F_N3F_V3F */
- 1891, /* GL_T2F_C4F_N3F_V3F */
- 1895, /* GL_T4F_C4F_N3F_V4F */
+ 1898, /* GL_T2F_V3F */
+ 1900, /* GL_T4F_V4F */
+ 1896, /* GL_T2F_C4UB_V3F */
+ 1894, /* GL_T2F_C3F_V3F */
+ 1897, /* GL_T2F_N3F_V3F */
+ 1895, /* GL_T2F_C4F_N3F_V3F */
+ 1899, /* GL_T4F_C4F_N3F_V4F */
172, /* GL_CLIP_DISTANCE0 */
173, /* GL_CLIP_DISTANCE1 */
174, /* GL_CLIP_DISTANCE2 */
@@ -5110,9 +5118,9 @@ static const unsigned reduced_enums[1562] =
819, /* GL_LIGHT7 */
708, /* GL_HINT_BIT */
322, /* GL_CONSTANT_COLOR */
- 1271, /* GL_ONE_MINUS_CONSTANT_COLOR */
+ 1272, /* GL_ONE_MINUS_CONSTANT_COLOR */
317, /* GL_CONSTANT_ALPHA */
- 1269, /* GL_ONE_MINUS_CONSTANT_ALPHA */
+ 1270, /* GL_ONE_MINUS_CONSTANT_ALPHA */
89, /* GL_BLEND_COLOR */
674, /* GL_FUNC_ADD */
1149, /* GL_MIN */
@@ -5122,26 +5130,26 @@ static const unsigned reduced_enums[1562] =
677, /* GL_FUNC_REVERSE_SUBTRACT */
331, /* GL_CONVOLUTION_1D */
332, /* GL_CONVOLUTION_2D */
- 1752, /* GL_SEPARABLE_2D */
+ 1756, /* GL_SEPARABLE_2D */
335, /* GL_CONVOLUTION_BORDER_MODE */
339, /* GL_CONVOLUTION_FILTER_SCALE */
337, /* GL_CONVOLUTION_FILTER_BIAS */
- 1554, /* GL_REDUCE */
+ 1558, /* GL_REDUCE */
341, /* GL_CONVOLUTION_FORMAT */
345, /* GL_CONVOLUTION_WIDTH */
343, /* GL_CONVOLUTION_HEIGHT */
1036, /* GL_MAX_CONVOLUTION_WIDTH */
1034, /* GL_MAX_CONVOLUTION_HEIGHT */
- 1435, /* GL_POST_CONVOLUTION_RED_SCALE */
- 1431, /* GL_POST_CONVOLUTION_GREEN_SCALE */
- 1426, /* GL_POST_CONVOLUTION_BLUE_SCALE */
- 1422, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
- 1433, /* GL_POST_CONVOLUTION_RED_BIAS */
- 1429, /* GL_POST_CONVOLUTION_GREEN_BIAS */
- 1424, /* GL_POST_CONVOLUTION_BLUE_BIAS */
- 1420, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
+ 1436, /* GL_POST_CONVOLUTION_RED_SCALE */
+ 1432, /* GL_POST_CONVOLUTION_GREEN_SCALE */
+ 1427, /* GL_POST_CONVOLUTION_BLUE_SCALE */
+ 1423, /* GL_POST_CONVOLUTION_ALPHA_SCALE */
+ 1434, /* GL_POST_CONVOLUTION_RED_BIAS */
+ 1430, /* GL_POST_CONVOLUTION_GREEN_BIAS */
+ 1425, /* GL_POST_CONVOLUTION_BLUE_BIAS */
+ 1421, /* GL_POST_CONVOLUTION_ALPHA_BIAS */
709, /* GL_HISTOGRAM */
- 1495, /* GL_PROXY_HISTOGRAM */
+ 1499, /* GL_PROXY_HISTOGRAM */
725, /* GL_HISTOGRAM_WIDTH */
715, /* GL_HISTOGRAM_FORMAT */
721, /* GL_HISTOGRAM_RED_SIZE */
@@ -5153,16 +5161,16 @@ static const unsigned reduced_enums[1562] =
1150, /* GL_MINMAX */
1152, /* GL_MINMAX_FORMAT */
1154, /* GL_MINMAX_SINK */
- 1897, /* GL_TABLE_TOO_LARGE_EXT */
- 2174, /* GL_UNSIGNED_BYTE_3_3_2 */
- 2214, /* GL_UNSIGNED_SHORT_4_4_4_4 */
- 2217, /* GL_UNSIGNED_SHORT_5_5_5_1 */
- 2186, /* GL_UNSIGNED_INT_8_8_8_8 */
- 2177, /* GL_UNSIGNED_INT_10_10_10_2 */
- 1393, /* GL_POLYGON_OFFSET_FILL */
- 1392, /* GL_POLYGON_OFFSET_FACTOR */
- 1391, /* GL_POLYGON_OFFSET_BIAS */
- 1603, /* GL_RESCALE_NORMAL */
+ 1901, /* GL_TABLE_TOO_LARGE_EXT */
+ 2178, /* GL_UNSIGNED_BYTE_3_3_2 */
+ 2218, /* GL_UNSIGNED_SHORT_4_4_4_4 */
+ 2221, /* GL_UNSIGNED_SHORT_5_5_5_1 */
+ 2190, /* GL_UNSIGNED_INT_8_8_8_8 */
+ 2181, /* GL_UNSIGNED_INT_10_10_10_2 */
+ 1394, /* GL_POLYGON_OFFSET_FILL */
+ 1393, /* GL_POLYGON_OFFSET_FACTOR */
+ 1392, /* GL_POLYGON_OFFSET_BIAS */
+ 1607, /* GL_RESCALE_NORMAL */
41, /* GL_ALPHA4 */
43, /* GL_ALPHA8 */
33, /* GL_ALPHA12 */
@@ -5182,53 +5190,53 @@ static const unsigned reduced_enums[1562] =
764, /* GL_INTENSITY8 */
754, /* GL_INTENSITY12 */
756, /* GL_INTENSITY16 */
- 1625, /* GL_RGB2_EXT */
- 1631, /* GL_RGB4 */
- 1634, /* GL_RGB5 */
- 1641, /* GL_RGB8 */
- 1611, /* GL_RGB10 */
- 1615, /* GL_RGB12 */
- 1617, /* GL_RGB16 */
- 1661, /* GL_RGBA2 */
- 1668, /* GL_RGBA4 */
- 1637, /* GL_RGB5_A1 */
- 1673, /* GL_RGBA8 */
- 1612, /* GL_RGB10_A2 */
- 1651, /* GL_RGBA12 */
- 1653, /* GL_RGBA16 */
- 2102, /* GL_TEXTURE_RED_SIZE */
- 2070, /* GL_TEXTURE_GREEN_SIZE */
- 1991, /* GL_TEXTURE_BLUE_SIZE */
- 1971, /* GL_TEXTURE_ALPHA_SIZE */
- 2083, /* GL_TEXTURE_LUMINANCE_SIZE */
- 2074, /* GL_TEXTURE_INTENSITY_SIZE */
- 1601, /* GL_REPLACE_EXT */
- 1499, /* GL_PROXY_TEXTURE_1D */
- 1503, /* GL_PROXY_TEXTURE_2D */
- 2110, /* GL_TEXTURE_TOO_LARGE_EXT */
- 2096, /* GL_TEXTURE_PRIORITY */
- 2104, /* GL_TEXTURE_RESIDENT */
- 1974, /* GL_TEXTURE_BINDING_1D */
- 1977, /* GL_TEXTURE_BINDING_2D */
- 1980, /* GL_TEXTURE_BINDING_3D */
- 1307, /* GL_PACK_SKIP_IMAGES */
- 1303, /* GL_PACK_IMAGE_HEIGHT */
- 2167, /* GL_UNPACK_SKIP_IMAGES */
- 2164, /* GL_UNPACK_IMAGE_HEIGHT */
- 1969, /* GL_TEXTURE_3D */
- 1507, /* GL_PROXY_TEXTURE_3D */
- 2054, /* GL_TEXTURE_DEPTH */
- 2113, /* GL_TEXTURE_WRAP_R */
+ 1629, /* GL_RGB2_EXT */
+ 1635, /* GL_RGB4 */
+ 1638, /* GL_RGB5 */
+ 1645, /* GL_RGB8 */
+ 1615, /* GL_RGB10 */
+ 1619, /* GL_RGB12 */
+ 1621, /* GL_RGB16 */
+ 1665, /* GL_RGBA2 */
+ 1672, /* GL_RGBA4 */
+ 1641, /* GL_RGB5_A1 */
+ 1677, /* GL_RGBA8 */
+ 1616, /* GL_RGB10_A2 */
+ 1655, /* GL_RGBA12 */
+ 1657, /* GL_RGBA16 */
+ 2106, /* GL_TEXTURE_RED_SIZE */
+ 2074, /* GL_TEXTURE_GREEN_SIZE */
+ 1995, /* GL_TEXTURE_BLUE_SIZE */
+ 1975, /* GL_TEXTURE_ALPHA_SIZE */
+ 2087, /* GL_TEXTURE_LUMINANCE_SIZE */
+ 2078, /* GL_TEXTURE_INTENSITY_SIZE */
+ 1605, /* GL_REPLACE_EXT */
+ 1503, /* GL_PROXY_TEXTURE_1D */
+ 1507, /* GL_PROXY_TEXTURE_2D */
+ 2114, /* GL_TEXTURE_TOO_LARGE_EXT */
+ 2100, /* GL_TEXTURE_PRIORITY */
+ 2108, /* GL_TEXTURE_RESIDENT */
+ 1978, /* GL_TEXTURE_BINDING_1D */
+ 1981, /* GL_TEXTURE_BINDING_2D */
+ 1984, /* GL_TEXTURE_BINDING_3D */
+ 1308, /* GL_PACK_SKIP_IMAGES */
+ 1304, /* GL_PACK_IMAGE_HEIGHT */
+ 2171, /* GL_UNPACK_SKIP_IMAGES */
+ 2168, /* GL_UNPACK_IMAGE_HEIGHT */
+ 1973, /* GL_TEXTURE_3D */
+ 1511, /* GL_PROXY_TEXTURE_3D */
+ 2058, /* GL_TEXTURE_DEPTH */
+ 2117, /* GL_TEXTURE_WRAP_R */
1018, /* GL_MAX_3D_TEXTURE_SIZE */
- 2230, /* GL_VERTEX_ARRAY */
+ 2234, /* GL_VERTEX_ARRAY */
1232, /* GL_NORMAL_ARRAY */
189, /* GL_COLOR_ARRAY */
737, /* GL_INDEX_ARRAY */
- 2024, /* GL_TEXTURE_COORD_ARRAY */
+ 2028, /* GL_TEXTURE_COORD_ARRAY */
519, /* GL_EDGE_FLAG_ARRAY */
- 2236, /* GL_VERTEX_ARRAY_SIZE */
- 2238, /* GL_VERTEX_ARRAY_TYPE */
- 2237, /* GL_VERTEX_ARRAY_STRIDE */
+ 2240, /* GL_VERTEX_ARRAY_SIZE */
+ 2242, /* GL_VERTEX_ARRAY_TYPE */
+ 2241, /* GL_VERTEX_ARRAY_STRIDE */
1237, /* GL_NORMAL_ARRAY_TYPE */
1236, /* GL_NORMAL_ARRAY_STRIDE */
193, /* GL_COLOR_ARRAY_SIZE */
@@ -5236,48 +5244,48 @@ static const unsigned reduced_enums[1562] =
194, /* GL_COLOR_ARRAY_STRIDE */
742, /* GL_INDEX_ARRAY_TYPE */
741, /* GL_INDEX_ARRAY_STRIDE */
- 2028, /* GL_TEXTURE_COORD_ARRAY_SIZE */
- 2030, /* GL_TEXTURE_COORD_ARRAY_TYPE */
- 2029, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
+ 2032, /* GL_TEXTURE_COORD_ARRAY_SIZE */
+ 2034, /* GL_TEXTURE_COORD_ARRAY_TYPE */
+ 2033, /* GL_TEXTURE_COORD_ARRAY_STRIDE */
523, /* GL_EDGE_FLAG_ARRAY_STRIDE */
- 2235, /* GL_VERTEX_ARRAY_POINTER */
+ 2239, /* GL_VERTEX_ARRAY_POINTER */
1235, /* GL_NORMAL_ARRAY_POINTER */
192, /* GL_COLOR_ARRAY_POINTER */
740, /* GL_INDEX_ARRAY_POINTER */
- 2027, /* GL_TEXTURE_COORD_ARRAY_POINTER */
+ 2031, /* GL_TEXTURE_COORD_ARRAY_POINTER */
522, /* GL_EDGE_FLAG_ARRAY_POINTER */
1210, /* GL_MULTISAMPLE */
- 1726, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
- 1728, /* GL_SAMPLE_ALPHA_TO_ONE */
- 1733, /* GL_SAMPLE_COVERAGE */
- 1730, /* GL_SAMPLE_BUFFERS */
- 1721, /* GL_SAMPLES */
- 1737, /* GL_SAMPLE_COVERAGE_VALUE */
- 1735, /* GL_SAMPLE_COVERAGE_INVERT */
+ 1730, /* GL_SAMPLE_ALPHA_TO_COVERAGE */
+ 1732, /* GL_SAMPLE_ALPHA_TO_ONE */
+ 1737, /* GL_SAMPLE_COVERAGE */
+ 1734, /* GL_SAMPLE_BUFFERS */
+ 1725, /* GL_SAMPLES */
+ 1741, /* GL_SAMPLE_COVERAGE_VALUE */
+ 1739, /* GL_SAMPLE_COVERAGE_INVERT */
237, /* GL_COLOR_MATRIX */
239, /* GL_COLOR_MATRIX_STACK_DEPTH */
1030, /* GL_MAX_COLOR_MATRIX_STACK_DEPTH */
- 1418, /* GL_POST_COLOR_MATRIX_RED_SCALE */
- 1414, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
- 1409, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
- 1405, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
- 1416, /* GL_POST_COLOR_MATRIX_RED_BIAS */
- 1412, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
- 1407, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
- 1403, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
- 2007, /* GL_TEXTURE_COLOR_TABLE_SGI */
- 1508, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
- 2009, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
+ 1419, /* GL_POST_COLOR_MATRIX_RED_SCALE */
+ 1415, /* GL_POST_COLOR_MATRIX_GREEN_SCALE */
+ 1410, /* GL_POST_COLOR_MATRIX_BLUE_SCALE */
+ 1406, /* GL_POST_COLOR_MATRIX_ALPHA_SCALE */
+ 1417, /* GL_POST_COLOR_MATRIX_RED_BIAS */
+ 1413, /* GL_POST_COLOR_MATRIX_GREEN_BIAS */
+ 1408, /* GL_POST_COLOR_MATRIX_BLUE_BIAS */
+ 1404, /* GL_POST_COLOR_MATRIX_ALPHA_BIAS */
+ 2011, /* GL_TEXTURE_COLOR_TABLE_SGI */
+ 1512, /* GL_PROXY_TEXTURE_COLOR_TABLE_SGI */
+ 2013, /* GL_TEXTURE_COMPARE_FAIL_VALUE_ARB */
94, /* GL_BLEND_DST_RGB */
108, /* GL_BLEND_SRC_RGB */
92, /* GL_BLEND_DST_ALPHA */
106, /* GL_BLEND_SRC_ALPHA */
243, /* GL_COLOR_TABLE */
- 1428, /* GL_POST_CONVOLUTION_COLOR_TABLE */
- 1411, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
- 1494, /* GL_PROXY_COLOR_TABLE */
- 1498, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
- 1497, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
+ 1429, /* GL_POST_CONVOLUTION_COLOR_TABLE */
+ 1412, /* GL_POST_COLOR_MATRIX_COLOR_TABLE */
+ 1498, /* GL_PROXY_COLOR_TABLE */
+ 1502, /* GL_PROXY_POST_CONVOLUTION_COLOR_TABLE */
+ 1501, /* GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE */
267, /* GL_COLOR_TABLE_SCALE */
247, /* GL_COLOR_TABLE_BIAS */
252, /* GL_COLOR_TABLE_FORMAT */
@@ -5292,60 +5300,60 @@ static const unsigned reduced_enums[1562] =
80, /* GL_BGRA */
1045, /* GL_MAX_ELEMENTS_VERTICES */
1044, /* GL_MAX_ELEMENTS_INDICES */
- 2073, /* GL_TEXTURE_INDEX_SIZE_EXT */
+ 2077, /* GL_TEXTURE_INDEX_SIZE_EXT */
186, /* GL_CLIP_VOLUME_CLIPPING_HINT_EXT */
- 1374, /* GL_POINT_SIZE_MIN */
- 1370, /* GL_POINT_SIZE_MAX */
- 1359, /* GL_POINT_FADE_THRESHOLD_SIZE */
- 1355, /* GL_POINT_DISTANCE_ATTENUATION */
+ 1375, /* GL_POINT_SIZE_MIN */
+ 1371, /* GL_POINT_SIZE_MAX */
+ 1360, /* GL_POINT_FADE_THRESHOLD_SIZE */
+ 1356, /* GL_POINT_DISTANCE_ATTENUATION */
159, /* GL_CLAMP_TO_BORDER */
162, /* GL_CLAMP_TO_EDGE */
- 2095, /* GL_TEXTURE_MIN_LOD */
- 2093, /* GL_TEXTURE_MAX_LOD */
- 1973, /* GL_TEXTURE_BASE_LEVEL */
- 2092, /* GL_TEXTURE_MAX_LEVEL */
+ 2099, /* GL_TEXTURE_MIN_LOD */
+ 2097, /* GL_TEXTURE_MAX_LOD */
+ 1977, /* GL_TEXTURE_BASE_LEVEL */
+ 2096, /* GL_TEXTURE_MAX_LEVEL */
728, /* GL_IGNORE_BORDER_HP */
321, /* GL_CONSTANT_BORDER_HP */
- 1602, /* GL_REPLICATE_BORDER_HP */
+ 1606, /* GL_REPLICATE_BORDER_HP */
333, /* GL_CONVOLUTION_BORDER_COLOR */
- 1266, /* GL_OCCLUSION_TEST_HP */
- 1267, /* GL_OCCLUSION_TEST_RESULT_HP */
+ 1267, /* GL_OCCLUSION_TEST_HP */
+ 1268, /* GL_OCCLUSION_TEST_RESULT_HP */
830, /* GL_LINEAR_CLIPMAP_LINEAR_SGIX */
- 2001, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
- 2003, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
- 2005, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
- 2006, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 2004, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
- 2002, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
+ 2005, /* GL_TEXTURE_CLIPMAP_CENTER_SGIX */
+ 2007, /* GL_TEXTURE_CLIPMAP_FRAME_SGIX */
+ 2009, /* GL_TEXTURE_CLIPMAP_OFFSET_SGIX */
+ 2010, /* GL_TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX */
+ 2008, /* GL_TEXTURE_CLIPMAP_LOD_OFFSET_SGIX */
+ 2006, /* GL_TEXTURE_CLIPMAP_DEPTH_SGIX */
1024, /* GL_MAX_CLIPMAP_DEPTH_SGIX */
1025, /* GL_MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX */
- 1438, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
- 1440, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
- 1437, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
- 1439, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
- 2081, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
- 2082, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
- 2080, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
+ 1439, /* GL_POST_TEXTURE_FILTER_BIAS_SGIX */
+ 1441, /* GL_POST_TEXTURE_FILTER_SCALE_SGIX */
+ 1438, /* GL_POST_TEXTURE_FILTER_BIAS_RANGE_SGIX */
+ 1440, /* GL_POST_TEXTURE_FILTER_SCALE_RANGE_SGIX */
+ 2085, /* GL_TEXTURE_LOD_BIAS_S_SGIX */
+ 2086, /* GL_TEXTURE_LOD_BIAS_T_SGIX */
+ 2084, /* GL_TEXTURE_LOD_BIAS_R_SGIX */
683, /* GL_GENERATE_MIPMAP */
684, /* GL_GENERATE_MIPMAP_HINT */
596, /* GL_FOG_OFFSET_SGIX */
597, /* GL_FOG_OFFSET_VALUE_SGIX */
- 2015, /* GL_TEXTURE_COMPARE_SGIX */
- 2014, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
- 2077, /* GL_TEXTURE_LEQUAL_R_SGIX */
- 2069, /* GL_TEXTURE_GEQUAL_R_SGIX */
+ 2019, /* GL_TEXTURE_COMPARE_SGIX */
+ 2018, /* GL_TEXTURE_COMPARE_OPERATOR_SGIX */
+ 2081, /* GL_TEXTURE_LEQUAL_R_SGIX */
+ 2073, /* GL_TEXTURE_GEQUAL_R_SGIX */
416, /* GL_DEPTH_COMPONENT16 */
420, /* GL_DEPTH_COMPONENT24 */
424, /* GL_DEPTH_COMPONENT32 */
358, /* GL_CULL_VERTEX_EXT */
360, /* GL_CULL_VERTEX_OBJECT_POSITION_EXT */
359, /* GL_CULL_VERTEX_EYE_POSITION_EXT */
- 2303, /* GL_WRAP_BORDER_SUN */
- 2008, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
+ 2307, /* GL_WRAP_BORDER_SUN */
+ 2012, /* GL_TEXTURE_COLOR_WRITEMASK_SGIS */
823, /* GL_LIGHT_MODEL_COLOR_CONTROL */
- 1771, /* GL_SINGLE_COLOR */
- 1755, /* GL_SEPARATE_SPECULAR_COLOR */
- 1766, /* GL_SHARED_TEXTURE_PALETTE_EXT */
+ 1775, /* GL_SINGLE_COLOR */
+ 1759, /* GL_SEPARATE_SPECULAR_COLOR */
+ 1770, /* GL_SHARED_TEXTURE_PALETTE_EXT */
608, /* GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING */
609, /* GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE */
620, /* GL_FRAMEBUFFER_ATTACHMENT_RED_SIZE */
@@ -5363,32 +5371,33 @@ static const unsigned reduced_enums[1562] =
327, /* GL_CONTEXT_FLAGS */
736, /* GL_INDEX */
410, /* GL_DEPTH_BUFFER */
- 1845, /* GL_STENCIL_BUFFER */
+ 1849, /* GL_STENCIL_BUFFER */
298, /* GL_COMPRESSED_RED */
299, /* GL_COMPRESSED_RG */
860, /* GL_LOSE_CONTEXT_ON_RESET_ARB */
703, /* GL_GUILTY_CONTEXT_RESET_ARB */
751, /* GL_INNOCENT_CONTEXT_RESET_ARB */
- 2162, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
- 1605, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
+ 2166, /* GL_UNKNOWN_CONTEXT_RESET_ARB */
+ 1609, /* GL_RESET_NOTIFICATION_STRATEGY_ARB */
+ 1461, /* GL_PROGRAM_BINARY_RETRIEVABLE_HINT */
1244, /* GL_NO_RESET_NOTIFICATION_ARB */
- 2173, /* GL_UNSIGNED_BYTE_2_3_3_REV */
- 2218, /* GL_UNSIGNED_SHORT_5_6_5 */
- 2219, /* GL_UNSIGNED_SHORT_5_6_5_REV */
- 2215, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
- 2212, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
- 2187, /* GL_UNSIGNED_INT_8_8_8_8_REV */
- 2183, /* GL_UNSIGNED_INT_2_10_10_10_REV */
- 2090, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
- 2091, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
- 2089, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
+ 2177, /* GL_UNSIGNED_BYTE_2_3_3_REV */
+ 2222, /* GL_UNSIGNED_SHORT_5_6_5 */
+ 2223, /* GL_UNSIGNED_SHORT_5_6_5_REV */
+ 2219, /* GL_UNSIGNED_SHORT_4_4_4_4_REV */
+ 2216, /* GL_UNSIGNED_SHORT_1_5_5_5_REV */
+ 2191, /* GL_UNSIGNED_INT_8_8_8_8_REV */
+ 2187, /* GL_UNSIGNED_INT_2_10_10_10_REV */
+ 2094, /* GL_TEXTURE_MAX_CLAMP_S_SGIX */
+ 2095, /* GL_TEXTURE_MAX_CLAMP_T_SGIX */
+ 2093, /* GL_TEXTURE_MAX_CLAMP_R_SGIX */
1160, /* GL_MIRRORED_REPEAT */
- 1691, /* GL_RGB_S3TC */
- 1633, /* GL_RGB4_S3TC */
- 1687, /* GL_RGBA_S3TC */
- 1672, /* GL_RGBA4_S3TC */
- 1681, /* GL_RGBA_DXT5_S3TC */
- 1669, /* GL_RGBA4_DXT5_S3TC */
+ 1695, /* GL_RGB_S3TC */
+ 1637, /* GL_RGB4_S3TC */
+ 1691, /* GL_RGBA_S3TC */
+ 1676, /* GL_RGBA4_S3TC */
+ 1685, /* GL_RGBA_DXT5_S3TC */
+ 1673, /* GL_RGBA4_DXT5_S3TC */
309, /* GL_COMPRESSED_RGB_S3TC_DXT1_EXT */
304, /* GL_COMPRESSED_RGBA_S3TC_DXT1_EXT */
305, /* GL_COMPRESSED_RGBA_S3TC_DXT3_EXT */
@@ -5406,54 +5415,54 @@ static const unsigned reduced_enums[1562] =
577, /* GL_FOG_COORDINATE_ARRAY */
241, /* GL_COLOR_SUM */
385, /* GL_CURRENT_SECONDARY_COLOR */
- 1746, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
- 1748, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
- 1747, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
- 1745, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
- 1742, /* GL_SECONDARY_COLOR_ARRAY */
+ 1750, /* GL_SECONDARY_COLOR_ARRAY_SIZE */
+ 1752, /* GL_SECONDARY_COLOR_ARRAY_TYPE */
+ 1751, /* GL_SECONDARY_COLOR_ARRAY_STRIDE */
+ 1749, /* GL_SECONDARY_COLOR_ARRAY_POINTER */
+ 1746, /* GL_SECONDARY_COLOR_ARRAY */
383, /* GL_CURRENT_RASTER_SECONDARY_COLOR */
29, /* GL_ALIASED_POINT_SIZE_RANGE */
28, /* GL_ALIASED_LINE_WIDTH_RANGE */
- 1899, /* GL_TEXTURE0 */
- 1901, /* GL_TEXTURE1 */
- 1923, /* GL_TEXTURE2 */
- 1945, /* GL_TEXTURE3 */
- 1951, /* GL_TEXTURE4 */
- 1953, /* GL_TEXTURE5 */
- 1955, /* GL_TEXTURE6 */
- 1957, /* GL_TEXTURE7 */
- 1959, /* GL_TEXTURE8 */
- 1961, /* GL_TEXTURE9 */
- 1902, /* GL_TEXTURE10 */
- 1904, /* GL_TEXTURE11 */
- 1906, /* GL_TEXTURE12 */
- 1908, /* GL_TEXTURE13 */
- 1910, /* GL_TEXTURE14 */
- 1912, /* GL_TEXTURE15 */
- 1914, /* GL_TEXTURE16 */
- 1916, /* GL_TEXTURE17 */
- 1918, /* GL_TEXTURE18 */
- 1920, /* GL_TEXTURE19 */
- 1924, /* GL_TEXTURE20 */
- 1926, /* GL_TEXTURE21 */
- 1928, /* GL_TEXTURE22 */
- 1930, /* GL_TEXTURE23 */
- 1932, /* GL_TEXTURE24 */
- 1934, /* GL_TEXTURE25 */
- 1936, /* GL_TEXTURE26 */
- 1938, /* GL_TEXTURE27 */
- 1940, /* GL_TEXTURE28 */
- 1942, /* GL_TEXTURE29 */
- 1946, /* GL_TEXTURE30 */
- 1948, /* GL_TEXTURE31 */
+ 1903, /* GL_TEXTURE0 */
+ 1905, /* GL_TEXTURE1 */
+ 1927, /* GL_TEXTURE2 */
+ 1949, /* GL_TEXTURE3 */
+ 1955, /* GL_TEXTURE4 */
+ 1957, /* GL_TEXTURE5 */
+ 1959, /* GL_TEXTURE6 */
+ 1961, /* GL_TEXTURE7 */
+ 1963, /* GL_TEXTURE8 */
+ 1965, /* GL_TEXTURE9 */
+ 1906, /* GL_TEXTURE10 */
+ 1908, /* GL_TEXTURE11 */
+ 1910, /* GL_TEXTURE12 */
+ 1912, /* GL_TEXTURE13 */
+ 1914, /* GL_TEXTURE14 */
+ 1916, /* GL_TEXTURE15 */
+ 1918, /* GL_TEXTURE16 */
+ 1920, /* GL_TEXTURE17 */
+ 1922, /* GL_TEXTURE18 */
+ 1924, /* GL_TEXTURE19 */
+ 1928, /* GL_TEXTURE20 */
+ 1930, /* GL_TEXTURE21 */
+ 1932, /* GL_TEXTURE22 */
+ 1934, /* GL_TEXTURE23 */
+ 1936, /* GL_TEXTURE24 */
+ 1938, /* GL_TEXTURE25 */
+ 1940, /* GL_TEXTURE26 */
+ 1942, /* GL_TEXTURE27 */
+ 1944, /* GL_TEXTURE28 */
+ 1946, /* GL_TEXTURE29 */
+ 1950, /* GL_TEXTURE30 */
+ 1952, /* GL_TEXTURE31 */
19, /* GL_ACTIVE_TEXTURE */
166, /* GL_CLIENT_ACTIVE_TEXTURE */
1121, /* GL_MAX_TEXTURE_UNITS */
- 2145, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
- 2148, /* GL_TRANSPOSE_PROJECTION_MATRIX */
- 2150, /* GL_TRANSPOSE_TEXTURE_MATRIX */
- 2142, /* GL_TRANSPOSE_COLOR_MATRIX */
- 1881, /* GL_SUBTRACT */
+ 2149, /* GL_TRANSPOSE_MODELVIEW_MATRIX */
+ 2152, /* GL_TRANSPOSE_PROJECTION_MATRIX */
+ 2154, /* GL_TRANSPOSE_TEXTURE_MATRIX */
+ 2146, /* GL_TRANSPOSE_COLOR_MATRIX */
+ 1885, /* GL_SUBTRACT */
1102, /* GL_MAX_RENDERBUFFER_SIZE */
290, /* GL_COMPRESSED_ALPHA */
294, /* GL_COMPRESSED_LUMINANCE */
@@ -5461,18 +5470,18 @@ static const unsigned reduced_enums[1562] =
292, /* GL_COMPRESSED_INTENSITY */
300, /* GL_COMPRESSED_RGB */
301, /* GL_COMPRESSED_RGBA */
- 2022, /* GL_TEXTURE_COMPRESSION_HINT */
- 2099, /* GL_TEXTURE_RECTANGLE */
- 1987, /* GL_TEXTURE_BINDING_RECTANGLE */
- 1511, /* GL_PROXY_TEXTURE_RECTANGLE */
+ 2026, /* GL_TEXTURE_COMPRESSION_HINT */
+ 2103, /* GL_TEXTURE_RECTANGLE */
+ 1991, /* GL_TEXTURE_BINDING_RECTANGLE */
+ 1515, /* GL_PROXY_TEXTURE_RECTANGLE */
1099, /* GL_MAX_RECTANGLE_TEXTURE_SIZE */
431, /* GL_DEPTH_STENCIL */
- 2179, /* GL_UNSIGNED_INT_24_8 */
+ 2183, /* GL_UNSIGNED_INT_24_8 */
1116, /* GL_MAX_TEXTURE_LOD_BIAS */
- 2088, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
+ 2092, /* GL_TEXTURE_MAX_ANISOTROPY_EXT */
1118, /* GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT */
- 2060, /* GL_TEXTURE_FILTER_CONTROL */
- 2078, /* GL_TEXTURE_LOD_BIAS */
+ 2064, /* GL_TEXTURE_FILTER_CONTROL */
+ 2082, /* GL_TEXTURE_LOD_BIAS */
274, /* GL_COMBINE4 */
1108, /* GL_MAX_SHININESS_NV */
1109, /* GL_MAX_SPOT_EXPONENT_NV */
@@ -5480,75 +5489,75 @@ static const unsigned reduced_enums[1562] =
396, /* GL_DECR_WRAP */
1180, /* GL_MODELVIEW1_ARB */
1238, /* GL_NORMAL_MAP */
- 1562, /* GL_REFLECTION_MAP */
- 2032, /* GL_TEXTURE_CUBE_MAP */
- 1984, /* GL_TEXTURE_BINDING_CUBE_MAP */
- 2044, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
- 2034, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
- 2047, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
- 2037, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
- 2050, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
- 2040, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
- 1509, /* GL_PROXY_TEXTURE_CUBE_MAP */
+ 1566, /* GL_REFLECTION_MAP */
+ 2036, /* GL_TEXTURE_CUBE_MAP */
+ 1988, /* GL_TEXTURE_BINDING_CUBE_MAP */
+ 2048, /* GL_TEXTURE_CUBE_MAP_POSITIVE_X */
+ 2038, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_X */
+ 2051, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Y */
+ 2041, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Y */
+ 2054, /* GL_TEXTURE_CUBE_MAP_POSITIVE_Z */
+ 2044, /* GL_TEXTURE_CUBE_MAP_NEGATIVE_Z */
+ 1513, /* GL_PROXY_TEXTURE_CUBE_MAP */
1038, /* GL_MAX_CUBE_MAP_TEXTURE_SIZE */
1216, /* GL_MULTISAMPLE_FILTER_HINT_NV */
- 1452, /* GL_PRIMITIVE_RESTART_NV */
- 1451, /* GL_PRIMITIVE_RESTART_INDEX_NV */
+ 1453, /* GL_PRIMITIVE_RESTART_NV */
+ 1452, /* GL_PRIMITIVE_RESTART_INDEX_NV */
591, /* GL_FOG_DISTANCE_MODE_NV */
538, /* GL_EYE_RADIAL_NV */
537, /* GL_EYE_PLANE_ABSOLUTE_NV */
273, /* GL_COMBINE */
280, /* GL_COMBINE_RGB */
275, /* GL_COMBINE_ALPHA */
- 1692, /* GL_RGB_SCALE */
+ 1696, /* GL_RGB_SCALE */
25, /* GL_ADD_SIGNED */
771, /* GL_INTERPOLATE */
316, /* GL_CONSTANT */
- 1444, /* GL_PRIMARY_COLOR */
- 1441, /* GL_PREVIOUS */
- 1786, /* GL_SOURCE0_RGB */
- 1792, /* GL_SOURCE1_RGB */
- 1798, /* GL_SOURCE2_RGB */
- 1802, /* GL_SOURCE3_RGB_NV */
- 1783, /* GL_SOURCE0_ALPHA */
- 1789, /* GL_SOURCE1_ALPHA */
- 1795, /* GL_SOURCE2_ALPHA */
- 1801, /* GL_SOURCE3_ALPHA_NV */
- 1280, /* GL_OPERAND0_RGB */
- 1286, /* GL_OPERAND1_RGB */
- 1292, /* GL_OPERAND2_RGB */
- 1296, /* GL_OPERAND3_RGB_NV */
- 1277, /* GL_OPERAND0_ALPHA */
- 1283, /* GL_OPERAND1_ALPHA */
- 1289, /* GL_OPERAND2_ALPHA */
- 1295, /* GL_OPERAND3_ALPHA_NV */
+ 1445, /* GL_PRIMARY_COLOR */
+ 1442, /* GL_PREVIOUS */
+ 1790, /* GL_SOURCE0_RGB */
+ 1796, /* GL_SOURCE1_RGB */
+ 1802, /* GL_SOURCE2_RGB */
+ 1806, /* GL_SOURCE3_RGB_NV */
+ 1787, /* GL_SOURCE0_ALPHA */
+ 1793, /* GL_SOURCE1_ALPHA */
+ 1799, /* GL_SOURCE2_ALPHA */
+ 1805, /* GL_SOURCE3_ALPHA_NV */
+ 1281, /* GL_OPERAND0_RGB */
+ 1287, /* GL_OPERAND1_RGB */
+ 1293, /* GL_OPERAND2_RGB */
+ 1297, /* GL_OPERAND3_RGB_NV */
+ 1278, /* GL_OPERAND0_ALPHA */
+ 1284, /* GL_OPERAND1_ALPHA */
+ 1290, /* GL_OPERAND2_ALPHA */
+ 1296, /* GL_OPERAND3_ALPHA_NV */
137, /* GL_BUFFER_OBJECT_APPLE */
- 2231, /* GL_VERTEX_ARRAY_BINDING */
- 2097, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
- 2098, /* GL_TEXTURE_RANGE_POINTER_APPLE */
- 2308, /* GL_YCBCR_422_APPLE */
- 2220, /* GL_UNSIGNED_SHORT_8_8_APPLE */
- 2222, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
- 2109, /* GL_TEXTURE_STORAGE_HINT_APPLE */
- 1872, /* GL_STORAGE_PRIVATE_APPLE */
- 1871, /* GL_STORAGE_CACHED_APPLE */
- 1873, /* GL_STORAGE_SHARED_APPLE */
- 1773, /* GL_SLICE_ACCUM_SUN */
- 1520, /* GL_QUAD_MESH_SUN */
- 2156, /* GL_TRIANGLE_MESH_SUN */
- 2273, /* GL_VERTEX_PROGRAM_ARB */
- 2284, /* GL_VERTEX_STATE_PROGRAM_NV */
- 2258, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
- 2266, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
- 2268, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
- 2270, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
+ 2235, /* GL_VERTEX_ARRAY_BINDING */
+ 2101, /* GL_TEXTURE_RANGE_LENGTH_APPLE */
+ 2102, /* GL_TEXTURE_RANGE_POINTER_APPLE */
+ 2312, /* GL_YCBCR_422_APPLE */
+ 2224, /* GL_UNSIGNED_SHORT_8_8_APPLE */
+ 2226, /* GL_UNSIGNED_SHORT_8_8_REV_APPLE */
+ 2113, /* GL_TEXTURE_STORAGE_HINT_APPLE */
+ 1876, /* GL_STORAGE_PRIVATE_APPLE */
+ 1875, /* GL_STORAGE_CACHED_APPLE */
+ 1877, /* GL_STORAGE_SHARED_APPLE */
+ 1777, /* GL_SLICE_ACCUM_SUN */
+ 1524, /* GL_QUAD_MESH_SUN */
+ 2160, /* GL_TRIANGLE_MESH_SUN */
+ 2277, /* GL_VERTEX_PROGRAM_ARB */
+ 2288, /* GL_VERTEX_STATE_PROGRAM_NV */
+ 2262, /* GL_VERTEX_ATTRIB_ARRAY_ENABLED */
+ 2270, /* GL_VERTEX_ATTRIB_ARRAY_SIZE */
+ 2272, /* GL_VERTEX_ATTRIB_ARRAY_STRIDE */
+ 2274, /* GL_VERTEX_ATTRIB_ARRAY_TYPE */
387, /* GL_CURRENT_VERTEX_ATTRIB */
- 1465, /* GL_PROGRAM_LENGTH_ARB */
- 1481, /* GL_PROGRAM_STRING_ARB */
+ 1469, /* GL_PROGRAM_LENGTH_ARB */
+ 1485, /* GL_PROGRAM_STRING_ARB */
1203, /* GL_MODELVIEW_PROJECTION_NV */
727, /* GL_IDENTITY_NV */
803, /* GL_INVERSE_NV */
- 2147, /* GL_TRANSPOSE_NV */
+ 2151, /* GL_TRANSPOSE_NV */
804, /* GL_INVERSE_TRANSPOSE_NV */
1083, /* GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB */
1082, /* GL_MAX_PROGRAM_MATRICES_ARB */
@@ -5562,33 +5571,33 @@ static const unsigned reduced_enums[1562] =
1000, /* GL_MATRIX7_NV */
370, /* GL_CURRENT_MATRIX_STACK_DEPTH_ARB */
367, /* GL_CURRENT_MATRIX_ARB */
- 1478, /* GL_PROGRAM_POINT_SIZE */
- 2279, /* GL_VERTEX_PROGRAM_TWO_SIDE */
- 1477, /* GL_PROGRAM_PARAMETER_NV */
- 2264, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
- 1483, /* GL_PROGRAM_TARGET_NV */
- 1480, /* GL_PROGRAM_RESIDENT_NV */
- 2119, /* GL_TRACK_MATRIX_NV */
- 2120, /* GL_TRACK_MATRIX_TRANSFORM_NV */
- 2274, /* GL_VERTEX_PROGRAM_BINDING_NV */
- 1459, /* GL_PROGRAM_ERROR_POSITION_ARB */
+ 1482, /* GL_PROGRAM_POINT_SIZE */
+ 2283, /* GL_VERTEX_PROGRAM_TWO_SIDE */
+ 1481, /* GL_PROGRAM_PARAMETER_NV */
+ 2268, /* GL_VERTEX_ATTRIB_ARRAY_POINTER */
+ 1487, /* GL_PROGRAM_TARGET_NV */
+ 1484, /* GL_PROGRAM_RESIDENT_NV */
+ 2123, /* GL_TRACK_MATRIX_NV */
+ 2124, /* GL_TRACK_MATRIX_TRANSFORM_NV */
+ 2278, /* GL_VERTEX_PROGRAM_BINDING_NV */
+ 1463, /* GL_PROGRAM_ERROR_POSITION_ARB */
412, /* GL_DEPTH_CLAMP */
- 2239, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
- 2246, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
- 2247, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
- 2248, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
- 2249, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
- 2250, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
- 2251, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
- 2252, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
- 2253, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
- 2254, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
- 2240, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
- 2241, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
- 2242, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
- 2243, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
- 2244, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
- 2245, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
+ 2243, /* GL_VERTEX_ATTRIB_ARRAY0_NV */
+ 2250, /* GL_VERTEX_ATTRIB_ARRAY1_NV */
+ 2251, /* GL_VERTEX_ATTRIB_ARRAY2_NV */
+ 2252, /* GL_VERTEX_ATTRIB_ARRAY3_NV */
+ 2253, /* GL_VERTEX_ATTRIB_ARRAY4_NV */
+ 2254, /* GL_VERTEX_ATTRIB_ARRAY5_NV */
+ 2255, /* GL_VERTEX_ATTRIB_ARRAY6_NV */
+ 2256, /* GL_VERTEX_ATTRIB_ARRAY7_NV */
+ 2257, /* GL_VERTEX_ATTRIB_ARRAY8_NV */
+ 2258, /* GL_VERTEX_ATTRIB_ARRAY9_NV */
+ 2244, /* GL_VERTEX_ATTRIB_ARRAY10_NV */
+ 2245, /* GL_VERTEX_ATTRIB_ARRAY11_NV */
+ 2246, /* GL_VERTEX_ATTRIB_ARRAY12_NV */
+ 2247, /* GL_VERTEX_ATTRIB_ARRAY13_NV */
+ 2248, /* GL_VERTEX_ATTRIB_ARRAY14_NV */
+ 2249, /* GL_VERTEX_ATTRIB_ARRAY15_NV */
912, /* GL_MAP1_VERTEX_ATTRIB0_4_NV */
919, /* GL_MAP1_VERTEX_ATTRIB1_4_NV */
920, /* GL_MAP1_VERTEX_ATTRIB2_4_NV */
@@ -5612,7 +5621,7 @@ static const unsigned reduced_enums[1562] =
949, /* GL_MAP2_VERTEX_ATTRIB4_4_NV */
950, /* GL_MAP2_VERTEX_ATTRIB5_4_NV */
951, /* GL_MAP2_VERTEX_ATTRIB6_4_NV */
- 1458, /* GL_PROGRAM_BINDING_ARB */
+ 1462, /* GL_PROGRAM_BINDING_ARB */
953, /* GL_MAP2_VERTEX_ATTRIB8_4_NV */
954, /* GL_MAP2_VERTEX_ATTRIB9_4_NV */
940, /* GL_MAP2_VERTEX_ATTRIB10_4_NV */
@@ -5621,27 +5630,27 @@ static const unsigned reduced_enums[1562] =
943, /* GL_MAP2_VERTEX_ATTRIB13_4_NV */
944, /* GL_MAP2_VERTEX_ATTRIB14_4_NV */
945, /* GL_MAP2_VERTEX_ATTRIB15_4_NV */
- 2020, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
- 2017, /* GL_TEXTURE_COMPRESSED */
+ 2024, /* GL_TEXTURE_COMPRESSED_IMAGE_SIZE */
+ 2021, /* GL_TEXTURE_COMPRESSED */
1245, /* GL_NUM_COMPRESSED_TEXTURE_FORMATS */
314, /* GL_COMPRESSED_TEXTURE_FORMATS */
1143, /* GL_MAX_VERTEX_UNITS_ARB */
23, /* GL_ACTIVE_VERTEX_UNITS_ARB */
- 2302, /* GL_WEIGHT_SUM_UNITY_ARB */
- 2272, /* GL_VERTEX_BLEND_ARB */
+ 2306, /* GL_WEIGHT_SUM_UNITY_ARB */
+ 2276, /* GL_VERTEX_BLEND_ARB */
389, /* GL_CURRENT_WEIGHT_ARB */
- 2300, /* GL_WEIGHT_ARRAY_TYPE_ARB */
- 2298, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
- 2296, /* GL_WEIGHT_ARRAY_SIZE_ARB */
- 2294, /* GL_WEIGHT_ARRAY_POINTER_ARB */
- 2289, /* GL_WEIGHT_ARRAY_ARB */
+ 2304, /* GL_WEIGHT_ARRAY_TYPE_ARB */
+ 2302, /* GL_WEIGHT_ARRAY_STRIDE_ARB */
+ 2300, /* GL_WEIGHT_ARRAY_SIZE_ARB */
+ 2298, /* GL_WEIGHT_ARRAY_POINTER_ARB */
+ 2293, /* GL_WEIGHT_ARRAY_ARB */
446, /* GL_DOT3_RGB */
447, /* GL_DOT3_RGBA */
308, /* GL_COMPRESSED_RGB_FXT1_3DFX */
303, /* GL_COMPRESSED_RGBA_FXT1_3DFX */
1211, /* GL_MULTISAMPLE_3DFX */
- 1731, /* GL_SAMPLE_BUFFERS_3DFX */
- 1722, /* GL_SAMPLES_3DFX */
+ 1735, /* GL_SAMPLE_BUFFERS_3DFX */
+ 1726, /* GL_SAMPLES_3DFX */
1191, /* GL_MODELVIEW2_ARB */
1194, /* GL_MODELVIEW3_ARB */
1195, /* GL_MODELVIEW4_ARB */
@@ -5673,14 +5682,14 @@ static const unsigned reduced_enums[1562] =
1192, /* GL_MODELVIEW30_ARB */
1193, /* GL_MODELVIEW31_ARB */
451, /* GL_DOT3_RGB_EXT */
- 449, /* GL_DOT3_RGBA_EXT */
+ 1459, /* GL_PROGRAM_BINARY_LENGTH */
1164, /* GL_MIRROR_CLAMP_EXT */
1167, /* GL_MIRROR_CLAMP_TO_EDGE_EXT */
1206, /* GL_MODULATE_ADD_ATI */
1207, /* GL_MODULATE_SIGNED_ADD_ATI */
1208, /* GL_MODULATE_SUBTRACT_ATI */
- 2309, /* GL_YCBCR_MESA */
- 1304, /* GL_PACK_INVERT_MESA */
+ 2313, /* GL_YCBCR_MESA */
+ 1305, /* GL_PACK_INVERT_MESA */
392, /* GL_DEBUG_OBJECT_MESA */
393, /* GL_DEBUG_PRINT_MESA */
391, /* GL_DEBUG_ASSERT_MESA */
@@ -5694,30 +5703,30 @@ static const unsigned reduced_enums[1562] =
510, /* GL_DU8DV8_ATI */
143, /* GL_BUMP_ENVMAP_ATI */
147, /* GL_BUMP_TARGET_ATI */
- 1248, /* GL_NUM_PROGRAM_BINARY_FORMATS_OES */
- 1456, /* GL_PROGRAM_BINARY_FORMATS_OES */
- 1835, /* GL_STENCIL_BACK_FUNC */
- 1833, /* GL_STENCIL_BACK_FAIL */
- 1837, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
- 1839, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
+ 1248, /* GL_NUM_PROGRAM_BINARY_FORMATS */
+ 1457, /* GL_PROGRAM_BINARY_FORMATS */
+ 1839, /* GL_STENCIL_BACK_FUNC */
+ 1837, /* GL_STENCIL_BACK_FAIL */
+ 1841, /* GL_STENCIL_BACK_PASS_DEPTH_FAIL */
+ 1843, /* GL_STENCIL_BACK_PASS_DEPTH_PASS */
600, /* GL_FRAGMENT_PROGRAM_ARB */
- 1454, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
- 1486, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
- 1485, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
- 1468, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
- 1474, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
- 1473, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
+ 1455, /* GL_PROGRAM_ALU_INSTRUCTIONS_ARB */
+ 1490, /* GL_PROGRAM_TEX_INSTRUCTIONS_ARB */
+ 1489, /* GL_PROGRAM_TEX_INDIRECTIONS_ARB */
+ 1472, /* GL_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
+ 1478, /* GL_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
+ 1477, /* GL_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
1072, /* GL_MAX_PROGRAM_ALU_INSTRUCTIONS_ARB */
1097, /* GL_MAX_PROGRAM_TEX_INSTRUCTIONS_ARB */
1096, /* GL_MAX_PROGRAM_TEX_INDIRECTIONS_ARB */
1085, /* GL_MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB */
1091, /* GL_MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB */
1090, /* GL_MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB */
- 1663, /* GL_RGBA32F */
- 1626, /* GL_RGB32F */
- 1654, /* GL_RGBA16F */
- 1618, /* GL_RGB16F */
- 1682, /* GL_RGBA_FLOAT_MODE_ARB */
+ 1667, /* GL_RGBA32F */
+ 1630, /* GL_RGB32F */
+ 1658, /* GL_RGBA16F */
+ 1622, /* GL_RGB16F */
+ 1686, /* GL_RGBA_FLOAT_MODE_ARB */
1041, /* GL_MAX_DRAW_BUFFERS */
455, /* GL_DRAW_BUFFER0 */
458, /* GL_DRAW_BUFFER1 */
@@ -5746,75 +5755,75 @@ static const unsigned reduced_enums[1562] =
1012, /* GL_MATRIX_INDEX_ARRAY_TYPE_ARB */
1010, /* GL_MATRIX_INDEX_ARRAY_STRIDE_ARB */
1006, /* GL_MATRIX_INDEX_ARRAY_POINTER_ARB */
- 2055, /* GL_TEXTURE_DEPTH_SIZE */
+ 2059, /* GL_TEXTURE_DEPTH_SIZE */
439, /* GL_DEPTH_TEXTURE_MODE */
- 2012, /* GL_TEXTURE_COMPARE_MODE */
- 2010, /* GL_TEXTURE_COMPARE_FUNC */
+ 2016, /* GL_TEXTURE_COMPARE_MODE */
+ 2014, /* GL_TEXTURE_COMPARE_FUNC */
284, /* GL_COMPARE_REF_TO_TEXTURE */
- 1381, /* GL_POINT_SPRITE */
+ 1382, /* GL_POINT_SPRITE */
347, /* GL_COORD_REPLACE */
- 1386, /* GL_POINT_SPRITE_R_MODE_NV */
- 1526, /* GL_QUERY_COUNTER_BITS */
+ 1387, /* GL_POINT_SPRITE_R_MODE_NV */
+ 1530, /* GL_QUERY_COUNTER_BITS */
376, /* GL_CURRENT_QUERY */
- 1530, /* GL_QUERY_RESULT */
- 1532, /* GL_QUERY_RESULT_AVAILABLE */
+ 1534, /* GL_QUERY_RESULT */
+ 1536, /* GL_QUERY_RESULT_AVAILABLE */
1135, /* GL_MAX_VERTEX_ATTRIBS */
- 2262, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
+ 2266, /* GL_VERTEX_ATTRIB_ARRAY_NORMALIZED */
437, /* GL_DEPTH_STENCIL_TO_RGBA_NV */
436, /* GL_DEPTH_STENCIL_TO_BGRA_NV */
1112, /* GL_MAX_TEXTURE_COORDS */
1114, /* GL_MAX_TEXTURE_IMAGE_UNITS */
- 1461, /* GL_PROGRAM_ERROR_STRING_ARB */
- 1463, /* GL_PROGRAM_FORMAT_ASCII_ARB */
- 1462, /* GL_PROGRAM_FORMAT_ARB */
- 2111, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
+ 1465, /* GL_PROGRAM_ERROR_STRING_ARB */
+ 1467, /* GL_PROGRAM_FORMAT_ASCII_ARB */
+ 1466, /* GL_PROGRAM_FORMAT_ARB */
+ 2115, /* GL_TEXTURE_UNSIGNED_REMAP_MODE_NV */
409, /* GL_DEPTH_BOUNDS_TEST_EXT */
408, /* GL_DEPTH_BOUNDS_EXT */
61, /* GL_ARRAY_BUFFER */
524, /* GL_ELEMENT_ARRAY_BUFFER */
62, /* GL_ARRAY_BUFFER_BINDING */
525, /* GL_ELEMENT_ARRAY_BUFFER_BINDING */
- 2233, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
+ 2237, /* GL_VERTEX_ARRAY_BUFFER_BINDING */
1233, /* GL_NORMAL_ARRAY_BUFFER_BINDING */
190, /* GL_COLOR_ARRAY_BUFFER_BINDING */
738, /* GL_INDEX_ARRAY_BUFFER_BINDING */
- 2025, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
+ 2029, /* GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING */
520, /* GL_EDGE_FLAG_ARRAY_BUFFER_BINDING */
- 1743, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
+ 1747, /* GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING */
578, /* GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING */
- 2290, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
- 2255, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
- 1464, /* GL_PROGRAM_INSTRUCTIONS_ARB */
+ 2294, /* GL_WEIGHT_ARRAY_BUFFER_BINDING */
+ 2259, /* GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING */
+ 1468, /* GL_PROGRAM_INSTRUCTIONS_ARB */
1078, /* GL_MAX_PROGRAM_INSTRUCTIONS_ARB */
- 1470, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
+ 1474, /* GL_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
1087, /* GL_MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB */
- 1484, /* GL_PROGRAM_TEMPORARIES_ARB */
+ 1488, /* GL_PROGRAM_TEMPORARIES_ARB */
1093, /* GL_MAX_PROGRAM_TEMPORARIES_ARB */
- 1472, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
+ 1476, /* GL_PROGRAM_NATIVE_TEMPORARIES_ARB */
1089, /* GL_MAX_PROGRAM_NATIVE_TEMPORARIES_ARB */
- 1476, /* GL_PROGRAM_PARAMETERS_ARB */
+ 1480, /* GL_PROGRAM_PARAMETERS_ARB */
1092, /* GL_MAX_PROGRAM_PARAMETERS_ARB */
- 1471, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
+ 1475, /* GL_PROGRAM_NATIVE_PARAMETERS_ARB */
1088, /* GL_MAX_PROGRAM_NATIVE_PARAMETERS_ARB */
- 1455, /* GL_PROGRAM_ATTRIBS_ARB */
+ 1456, /* GL_PROGRAM_ATTRIBS_ARB */
1073, /* GL_MAX_PROGRAM_ATTRIBS_ARB */
- 1469, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
+ 1473, /* GL_PROGRAM_NATIVE_ATTRIBS_ARB */
1086, /* GL_MAX_PROGRAM_NATIVE_ATTRIBS_ARB */
- 1453, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
+ 1454, /* GL_PROGRAM_ADDRESS_REGISTERS_ARB */
1071, /* GL_MAX_PROGRAM_ADDRESS_REGISTERS_ARB */
- 1467, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
+ 1471, /* GL_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
1084, /* GL_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB */
1079, /* GL_MAX_PROGRAM_LOCAL_PARAMETERS_ARB */
1075, /* GL_MAX_PROGRAM_ENV_PARAMETERS_ARB */
- 1487, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
- 2144, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
- 1549, /* GL_READ_ONLY */
- 2304, /* GL_WRITE_ONLY */
- 1551, /* GL_READ_WRITE */
+ 1491, /* GL_PROGRAM_UNDER_NATIVE_LIMITS_ARB */
+ 2148, /* GL_TRANSPOSE_CURRENT_MATRIX_ARB */
+ 1553, /* GL_READ_ONLY */
+ 2308, /* GL_WRITE_ONLY */
+ 1555, /* GL_READ_WRITE */
124, /* GL_BUFFER_ACCESS */
129, /* GL_BUFFER_MAPPED */
134, /* GL_BUFFER_MAP_POINTER */
- 2118, /* GL_TIME_ELAPSED_EXT */
+ 2122, /* GL_TIME_ELAPSED_EXT */
963, /* GL_MATRIX0_ARB */
975, /* GL_MATRIX1_ARB */
987, /* GL_MATRIX2_ARB */
@@ -5847,67 +5856,67 @@ static const unsigned reduced_enums[1562] =
986, /* GL_MATRIX29_ARB */
989, /* GL_MATRIX30_ARB */
990, /* GL_MATRIX31_ARB */
- 1876, /* GL_STREAM_DRAW */
- 1878, /* GL_STREAM_READ */
- 1874, /* GL_STREAM_COPY */
- 1825, /* GL_STATIC_DRAW */
- 1827, /* GL_STATIC_READ */
- 1823, /* GL_STATIC_COPY */
+ 1880, /* GL_STREAM_DRAW */
+ 1882, /* GL_STREAM_READ */
+ 1878, /* GL_STREAM_COPY */
+ 1829, /* GL_STATIC_DRAW */
+ 1831, /* GL_STATIC_READ */
+ 1827, /* GL_STATIC_COPY */
514, /* GL_DYNAMIC_DRAW */
516, /* GL_DYNAMIC_READ */
512, /* GL_DYNAMIC_COPY */
- 1344, /* GL_PIXEL_PACK_BUFFER */
- 1348, /* GL_PIXEL_UNPACK_BUFFER */
- 1345, /* GL_PIXEL_PACK_BUFFER_BINDING */
- 1349, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
+ 1345, /* GL_PIXEL_PACK_BUFFER */
+ 1349, /* GL_PIXEL_UNPACK_BUFFER */
+ 1346, /* GL_PIXEL_PACK_BUFFER_BINDING */
+ 1350, /* GL_PIXEL_UNPACK_BUFFER_BINDING */
400, /* GL_DEPTH24_STENCIL8 */
- 2107, /* GL_TEXTURE_STENCIL_SIZE */
- 2053, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
+ 2111, /* GL_TEXTURE_STENCIL_SIZE */
+ 2057, /* GL_TEXTURE_CUBE_MAP_SEAMLESS */
1074, /* GL_MAX_PROGRAM_CALL_DEPTH_NV */
1077, /* GL_MAX_PROGRAM_IF_DEPTH_NV */
1081, /* GL_MAX_PROGRAM_LOOP_DEPTH_NV */
1080, /* GL_MAX_PROGRAM_LOOP_COUNT_NV */
- 2260, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
- 2257, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
+ 2264, /* GL_VERTEX_ATTRIB_ARRAY_INTEGER */
+ 2261, /* GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ARB */
1020, /* GL_MAX_ARRAY_TEXTURE_LAYERS */
1158, /* GL_MIN_PROGRAM_TEXEL_OFFSET */
1094, /* GL_MAX_PROGRAM_TEXEL_OFFSET */
- 1867, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
+ 1871, /* GL_STENCIL_TEST_TWO_SIDE_EXT */
18, /* GL_ACTIVE_STENCIL_FACE_EXT */
1165, /* GL_MIRROR_CLAMP_TO_BORDER_EXT */
- 1724, /* GL_SAMPLES_PASSED */
+ 1728, /* GL_SAMPLES_PASSED */
693, /* GL_GEOMETRY_VERTICES_OUT */
687, /* GL_GEOMETRY_INPUT_TYPE */
689, /* GL_GEOMETRY_OUTPUT_TYPE */
- 1715, /* GL_SAMPLER_BINDING */
+ 1719, /* GL_SAMPLER_BINDING */
164, /* GL_CLAMP_VERTEX_COLOR_ARB */
156, /* GL_CLAMP_FRAGMENT_COLOR_ARB */
157, /* GL_CLAMP_READ_COLOR */
550, /* GL_FIXED_ONLY */
- 1368, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
- 1367, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
- 1366, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
+ 1369, /* GL_POINT_SIZE_ARRAY_TYPE_OES */
+ 1368, /* GL_POINT_SIZE_ARRAY_STRIDE_OES */
+ 1367, /* GL_POINT_SIZE_ARRAY_POINTER_OES */
1202, /* GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES */
- 1490, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
- 2087, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 1494, /* GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES */
+ 2091, /* GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES */
138, /* GL_BUFFER_SERIALIZED_MODIFY_APPLE */
128, /* GL_BUFFER_FLUSHING_UNMAP_APPLE */
- 1566, /* GL_RELEASED_APPLE */
- 2287, /* GL_VOLATILE_APPLE */
- 1606, /* GL_RETAINED_APPLE */
- 2161, /* GL_UNDEFINED_APPLE */
- 1514, /* GL_PURGEABLE_APPLE */
+ 1570, /* GL_RELEASED_APPLE */
+ 2291, /* GL_VOLATILE_APPLE */
+ 1610, /* GL_RETAINED_APPLE */
+ 2165, /* GL_UNDEFINED_APPLE */
+ 1518, /* GL_PURGEABLE_APPLE */
601, /* GL_FRAGMENT_SHADER */
- 2282, /* GL_VERTEX_SHADER */
- 1475, /* GL_PROGRAM_OBJECT_ARB */
- 1760, /* GL_SHADER_OBJECT_ARB */
+ 2286, /* GL_VERTEX_SHADER */
+ 1479, /* GL_PROGRAM_OBJECT_ARB */
+ 1764, /* GL_SHADER_OBJECT_ARB */
1049, /* GL_MAX_FRAGMENT_UNIFORM_COMPONENTS */
1140, /* GL_MAX_VERTEX_UNIFORM_COMPONENTS */
1131, /* GL_MAX_VARYING_COMPONENTS */
1138, /* GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS */
1032, /* GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS */
- 1264, /* GL_OBJECT_TYPE_ARB */
- 1762, /* GL_SHADER_TYPE */
+ 1265, /* GL_OBJECT_TYPE_ARB */
+ 1766, /* GL_SHADER_TYPE */
566, /* GL_FLOAT_VEC2 */
568, /* GL_FLOAT_VEC3 */
570, /* GL_FLOAT_VEC4 */
@@ -5921,14 +5930,14 @@ static const unsigned reduced_enums[1562] =
554, /* GL_FLOAT_MAT2 */
558, /* GL_FLOAT_MAT3 */
562, /* GL_FLOAT_MAT4 */
- 1699, /* GL_SAMPLER_1D */
- 1705, /* GL_SAMPLER_2D */
- 1713, /* GL_SAMPLER_3D */
- 1718, /* GL_SAMPLER_CUBE */
- 1704, /* GL_SAMPLER_1D_SHADOW */
- 1712, /* GL_SAMPLER_2D_SHADOW */
- 1710, /* GL_SAMPLER_2D_RECT */
- 1711, /* GL_SAMPLER_2D_RECT_SHADOW */
+ 1703, /* GL_SAMPLER_1D */
+ 1709, /* GL_SAMPLER_2D */
+ 1717, /* GL_SAMPLER_3D */
+ 1722, /* GL_SAMPLER_CUBE */
+ 1708, /* GL_SAMPLER_1D_SHADOW */
+ 1716, /* GL_SAMPLER_2D_SHADOW */
+ 1714, /* GL_SAMPLER_2D_RECT */
+ 1715, /* GL_SAMPLER_2D_RECT_SHADOW */
556, /* GL_FLOAT_MAT2x3 */
557, /* GL_FLOAT_MAT2x4 */
560, /* GL_FLOAT_MAT3x2 */
@@ -5938,90 +5947,90 @@ static const unsigned reduced_enums[1562] =
398, /* GL_DELETE_STATUS */
289, /* GL_COMPILE_STATUS */
852, /* GL_LINK_STATUS */
- 2227, /* GL_VALIDATE_STATUS */
+ 2231, /* GL_VALIDATE_STATUS */
750, /* GL_INFO_LOG_LENGTH */
64, /* GL_ATTACHED_SHADERS */
21, /* GL_ACTIVE_UNIFORMS */
22, /* GL_ACTIVE_UNIFORM_MAX_LENGTH */
- 1761, /* GL_SHADER_SOURCE_LENGTH */
+ 1765, /* GL_SHADER_SOURCE_LENGTH */
15, /* GL_ACTIVE_ATTRIBUTES */
16, /* GL_ACTIVE_ATTRIBUTE_MAX_LENGTH */
603, /* GL_FRAGMENT_SHADER_DERIVATIVE_HINT */
- 1764, /* GL_SHADING_LANGUAGE_VERSION */
+ 1768, /* GL_SHADING_LANGUAGE_VERSION */
375, /* GL_CURRENT_PROGRAM */
- 1313, /* GL_PALETTE4_RGB8_OES */
- 1315, /* GL_PALETTE4_RGBA8_OES */
- 1311, /* GL_PALETTE4_R5_G6_B5_OES */
- 1314, /* GL_PALETTE4_RGBA4_OES */
- 1312, /* GL_PALETTE4_RGB5_A1_OES */
- 1318, /* GL_PALETTE8_RGB8_OES */
- 1320, /* GL_PALETTE8_RGBA8_OES */
- 1316, /* GL_PALETTE8_R5_G6_B5_OES */
- 1319, /* GL_PALETTE8_RGBA4_OES */
- 1317, /* GL_PALETTE8_RGB5_A1_OES */
+ 1314, /* GL_PALETTE4_RGB8_OES */
+ 1316, /* GL_PALETTE4_RGBA8_OES */
+ 1312, /* GL_PALETTE4_R5_G6_B5_OES */
+ 1315, /* GL_PALETTE4_RGBA4_OES */
+ 1313, /* GL_PALETTE4_RGB5_A1_OES */
+ 1319, /* GL_PALETTE8_RGB8_OES */
+ 1321, /* GL_PALETTE8_RGBA8_OES */
+ 1317, /* GL_PALETTE8_R5_G6_B5_OES */
+ 1320, /* GL_PALETTE8_RGBA4_OES */
+ 1318, /* GL_PALETTE8_RGB5_A1_OES */
731, /* GL_IMPLEMENTATION_COLOR_READ_TYPE */
729, /* GL_IMPLEMENTATION_COLOR_READ_FORMAT */
- 1365, /* GL_POINT_SIZE_ARRAY_OES */
- 2031, /* GL_TEXTURE_CROP_RECT_OES */
+ 1366, /* GL_POINT_SIZE_ARRAY_OES */
+ 2035, /* GL_TEXTURE_CROP_RECT_OES */
1004, /* GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES */
- 1364, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
- 2210, /* GL_UNSIGNED_NORMALIZED */
- 1964, /* GL_TEXTURE_1D_ARRAY */
- 1500, /* GL_PROXY_TEXTURE_1D_ARRAY */
- 1967, /* GL_TEXTURE_2D_ARRAY */
- 1504, /* GL_PROXY_TEXTURE_2D_ARRAY */
- 1975, /* GL_TEXTURE_BINDING_1D_ARRAY */
- 1978, /* GL_TEXTURE_BINDING_2D_ARRAY */
+ 1365, /* GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES */
+ 2214, /* GL_UNSIGNED_NORMALIZED */
+ 1968, /* GL_TEXTURE_1D_ARRAY */
+ 1504, /* GL_PROXY_TEXTURE_1D_ARRAY */
+ 1971, /* GL_TEXTURE_2D_ARRAY */
+ 1508, /* GL_PROXY_TEXTURE_2D_ARRAY */
+ 1979, /* GL_TEXTURE_BINDING_1D_ARRAY */
+ 1982, /* GL_TEXTURE_BINDING_2D_ARRAY */
1056, /* GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS */
- 1995, /* GL_TEXTURE_BUFFER */
+ 1999, /* GL_TEXTURE_BUFFER */
1110, /* GL_MAX_TEXTURE_BUFFER_SIZE */
- 1982, /* GL_TEXTURE_BINDING_BUFFER */
- 1997, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
- 1999, /* GL_TEXTURE_BUFFER_FORMAT */
- 1537, /* GL_R11F_G11F_B10F */
- 2176, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
- 1649, /* GL_RGB9_E5 */
- 2185, /* GL_UNSIGNED_INT_5_9_9_9_REV */
- 2105, /* GL_TEXTURE_SHARED_SIZE */
- 1817, /* GL_SRGB */
- 1818, /* GL_SRGB8 */
- 1820, /* GL_SRGB_ALPHA */
- 1819, /* GL_SRGB8_ALPHA8 */
- 1777, /* GL_SLUMINANCE_ALPHA */
- 1776, /* GL_SLUMINANCE8_ALPHA8 */
- 1774, /* GL_SLUMINANCE */
- 1775, /* GL_SLUMINANCE8 */
+ 1986, /* GL_TEXTURE_BINDING_BUFFER */
+ 2001, /* GL_TEXTURE_BUFFER_DATA_STORE_BINDING */
+ 2003, /* GL_TEXTURE_BUFFER_FORMAT */
+ 1541, /* GL_R11F_G11F_B10F */
+ 2180, /* GL_UNSIGNED_INT_10F_11F_11F_REV */
+ 1653, /* GL_RGB9_E5 */
+ 2189, /* GL_UNSIGNED_INT_5_9_9_9_REV */
+ 2109, /* GL_TEXTURE_SHARED_SIZE */
+ 1821, /* GL_SRGB */
+ 1822, /* GL_SRGB8 */
+ 1824, /* GL_SRGB_ALPHA */
+ 1823, /* GL_SRGB8_ALPHA8 */
+ 1781, /* GL_SLUMINANCE_ALPHA */
+ 1780, /* GL_SLUMINANCE8_ALPHA8 */
+ 1778, /* GL_SLUMINANCE */
+ 1779, /* GL_SLUMINANCE8 */
312, /* GL_COMPRESSED_SRGB */
313, /* GL_COMPRESSED_SRGB_ALPHA */
310, /* GL_COMPRESSED_SLUMINANCE */
311, /* GL_COMPRESSED_SLUMINANCE_ALPHA */
- 2140, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
- 2129, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
+ 2144, /* GL_TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH */
+ 2133, /* GL_TRANSFORM_FEEDBACK_BUFFER_MODE */
1129, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS */
- 2138, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
- 2134, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
- 2132, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
- 1447, /* GL_PRIMITIVES_GENERATED */
- 2136, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
- 1541, /* GL_RASTERIZER_DISCARD */
+ 2142, /* GL_TRANSFORM_FEEDBACK_VARYINGS */
+ 2138, /* GL_TRANSFORM_FEEDBACK_BUFFER_START */
+ 2136, /* GL_TRANSFORM_FEEDBACK_BUFFER_SIZE */
+ 1448, /* GL_PRIMITIVES_GENERATED */
+ 2140, /* GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN */
+ 1545, /* GL_RASTERIZER_DISCARD */
1125, /* GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS */
1127, /* GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS */
769, /* GL_INTERLEAVED_ATTRIBS */
- 1753, /* GL_SEPARATE_ATTRIBS */
- 2124, /* GL_TRANSFORM_FEEDBACK_BUFFER */
- 2126, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
- 1383, /* GL_POINT_SPRITE_COORD_ORIGIN */
+ 1757, /* GL_SEPARATE_ATTRIBS */
+ 2128, /* GL_TRANSFORM_FEEDBACK_BUFFER */
+ 2130, /* GL_TRANSFORM_FEEDBACK_BUFFER_BINDING */
+ 1384, /* GL_POINT_SPRITE_COORD_ORIGIN */
861, /* GL_LOWER_LEFT */
- 2224, /* GL_UPPER_LEFT */
- 1841, /* GL_STENCIL_BACK_REF */
- 1842, /* GL_STENCIL_BACK_VALUE_MASK */
- 1843, /* GL_STENCIL_BACK_WRITEMASK */
+ 2228, /* GL_UPPER_LEFT */
+ 1845, /* GL_STENCIL_BACK_REF */
+ 1846, /* GL_STENCIL_BACK_VALUE_MASK */
+ 1847, /* GL_STENCIL_BACK_WRITEMASK */
504, /* GL_DRAW_FRAMEBUFFER_BINDING */
- 1571, /* GL_RENDERBUFFER_BINDING */
- 1545, /* GL_READ_FRAMEBUFFER */
+ 1575, /* GL_RENDERBUFFER_BINDING */
+ 1549, /* GL_READ_FRAMEBUFFER */
503, /* GL_DRAW_FRAMEBUFFER */
- 1546, /* GL_READ_FRAMEBUFFER_BINDING */
- 1590, /* GL_RENDERBUFFER_SAMPLES */
+ 1550, /* GL_READ_FRAMEBUFFER_BINDING */
+ 1594, /* GL_RENDERBUFFER_SAMPLES */
617, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE */
614, /* GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME */
629, /* GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL */
@@ -6055,87 +6064,87 @@ static const unsigned reduced_enums[1562] =
208, /* GL_COLOR_ATTACHMENT14 */
210, /* GL_COLOR_ATTACHMENT15 */
403, /* GL_DEPTH_ATTACHMENT */
- 1830, /* GL_STENCIL_ATTACHMENT */
+ 1834, /* GL_STENCIL_ATTACHMENT */
605, /* GL_FRAMEBUFFER */
- 1568, /* GL_RENDERBUFFER */
- 1594, /* GL_RENDERBUFFER_WIDTH */
- 1581, /* GL_RENDERBUFFER_HEIGHT */
- 1584, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
- 1862, /* GL_STENCIL_INDEX_EXT */
- 1851, /* GL_STENCIL_INDEX1 */
- 1856, /* GL_STENCIL_INDEX4 */
- 1859, /* GL_STENCIL_INDEX8 */
- 1852, /* GL_STENCIL_INDEX16 */
- 1588, /* GL_RENDERBUFFER_RED_SIZE */
- 1579, /* GL_RENDERBUFFER_GREEN_SIZE */
- 1574, /* GL_RENDERBUFFER_BLUE_SIZE */
- 1569, /* GL_RENDERBUFFER_ALPHA_SIZE */
- 1576, /* GL_RENDERBUFFER_DEPTH_SIZE */
- 1592, /* GL_RENDERBUFFER_STENCIL_SIZE */
+ 1572, /* GL_RENDERBUFFER */
+ 1598, /* GL_RENDERBUFFER_WIDTH */
+ 1585, /* GL_RENDERBUFFER_HEIGHT */
+ 1588, /* GL_RENDERBUFFER_INTERNAL_FORMAT */
+ 1866, /* GL_STENCIL_INDEX_EXT */
+ 1855, /* GL_STENCIL_INDEX1 */
+ 1860, /* GL_STENCIL_INDEX4 */
+ 1863, /* GL_STENCIL_INDEX8 */
+ 1856, /* GL_STENCIL_INDEX16 */
+ 1592, /* GL_RENDERBUFFER_RED_SIZE */
+ 1583, /* GL_RENDERBUFFER_GREEN_SIZE */
+ 1578, /* GL_RENDERBUFFER_BLUE_SIZE */
+ 1573, /* GL_RENDERBUFFER_ALPHA_SIZE */
+ 1580, /* GL_RENDERBUFFER_DEPTH_SIZE */
+ 1596, /* GL_RENDERBUFFER_STENCIL_SIZE */
658, /* GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE */
1105, /* GL_MAX_SAMPLES */
- 2067, /* GL_TEXTURE_GEN_STR_OES */
+ 2071, /* GL_TEXTURE_GEN_STR_OES */
705, /* GL_HALF_FLOAT_OES */
- 1636, /* GL_RGB565_OES */
- 1666, /* GL_RGBA32UI */
- 1629, /* GL_RGB32UI */
+ 1639, /* GL_RGB565 */
+ 1670, /* GL_RGBA32UI */
+ 1633, /* GL_RGB32UI */
40, /* GL_ALPHA32UI_EXT */
761, /* GL_INTENSITY32UI_EXT */
878, /* GL_LUMINANCE32UI_EXT */
895, /* GL_LUMINANCE_ALPHA32UI_EXT */
- 1657, /* GL_RGBA16UI */
- 1621, /* GL_RGB16UI */
+ 1661, /* GL_RGBA16UI */
+ 1625, /* GL_RGB16UI */
37, /* GL_ALPHA16UI_EXT */
758, /* GL_INTENSITY16UI_EXT */
873, /* GL_LUMINANCE16UI_EXT */
893, /* GL_LUMINANCE_ALPHA16UI_EXT */
- 1676, /* GL_RGBA8UI */
- 1644, /* GL_RGB8UI */
+ 1680, /* GL_RGBA8UI */
+ 1648, /* GL_RGB8UI */
45, /* GL_ALPHA8UI_EXT */
766, /* GL_INTENSITY8UI_EXT */
887, /* GL_LUMINANCE8UI_EXT */
897, /* GL_LUMINANCE_ALPHA8UI_EXT */
- 1664, /* GL_RGBA32I */
- 1627, /* GL_RGB32I */
+ 1668, /* GL_RGBA32I */
+ 1631, /* GL_RGB32I */
39, /* GL_ALPHA32I_EXT */
760, /* GL_INTENSITY32I_EXT */
877, /* GL_LUMINANCE32I_EXT */
894, /* GL_LUMINANCE_ALPHA32I_EXT */
- 1655, /* GL_RGBA16I */
- 1619, /* GL_RGB16I */
+ 1659, /* GL_RGBA16I */
+ 1623, /* GL_RGB16I */
36, /* GL_ALPHA16I_EXT */
757, /* GL_INTENSITY16I_EXT */
872, /* GL_LUMINANCE16I_EXT */
892, /* GL_LUMINANCE_ALPHA16I_EXT */
- 1674, /* GL_RGBA8I */
- 1642, /* GL_RGB8I */
+ 1678, /* GL_RGBA8I */
+ 1646, /* GL_RGB8I */
44, /* GL_ALPHA8I_EXT */
765, /* GL_INTENSITY8I_EXT */
886, /* GL_LUMINANCE8I_EXT */
896, /* GL_LUMINANCE_ALPHA8I_EXT */
- 1558, /* GL_RED_INTEGER */
+ 1562, /* GL_RED_INTEGER */
700, /* GL_GREEN_INTEGER */
113, /* GL_BLUE_INTEGER */
49, /* GL_ALPHA_INTEGER_EXT */
- 1689, /* GL_RGB_INTEGER */
- 1683, /* GL_RGBA_INTEGER */
+ 1693, /* GL_RGB_INTEGER */
+ 1687, /* GL_RGBA_INTEGER */
84, /* GL_BGR_INTEGER */
82, /* GL_BGRA_INTEGER */
899, /* GL_LUMINANCE_INTEGER_EXT */
898, /* GL_LUMINANCE_ALPHA_INTEGER_EXT */
- 1685, /* GL_RGBA_INTEGER_MODE_EXT */
+ 1689, /* GL_RGBA_INTEGER_MODE_EXT */
612, /* GL_FRAMEBUFFER_ATTACHMENT_LAYERED */
653, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS */
652, /* GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB */
- 1700, /* GL_SAMPLER_1D_ARRAY */
- 1706, /* GL_SAMPLER_2D_ARRAY */
- 1716, /* GL_SAMPLER_BUFFER */
- 1702, /* GL_SAMPLER_1D_ARRAY_SHADOW */
- 1708, /* GL_SAMPLER_2D_ARRAY_SHADOW */
- 1719, /* GL_SAMPLER_CUBE_SHADOW */
- 2204, /* GL_UNSIGNED_INT_VEC2 */
- 2206, /* GL_UNSIGNED_INT_VEC3 */
- 2208, /* GL_UNSIGNED_INT_VEC4 */
+ 1704, /* GL_SAMPLER_1D_ARRAY */
+ 1710, /* GL_SAMPLER_2D_ARRAY */
+ 1720, /* GL_SAMPLER_BUFFER */
+ 1706, /* GL_SAMPLER_1D_ARRAY_SHADOW */
+ 1712, /* GL_SAMPLER_2D_ARRAY_SHADOW */
+ 1723, /* GL_SAMPLER_CUBE_SHADOW */
+ 2208, /* GL_UNSIGNED_INT_VEC2 */
+ 2210, /* GL_UNSIGNED_INT_VEC3 */
+ 2212, /* GL_UNSIGNED_INT_VEC4 */
775, /* GL_INT_SAMPLER_1D */
779, /* GL_INT_SAMPLER_2D */
785, /* GL_INT_SAMPLER_3D */
@@ -6144,14 +6153,14 @@ static const unsigned reduced_enums[1562] =
776, /* GL_INT_SAMPLER_1D_ARRAY */
780, /* GL_INT_SAMPLER_2D_ARRAY */
787, /* GL_INT_SAMPLER_BUFFER */
- 2188, /* GL_UNSIGNED_INT_SAMPLER_1D */
- 2192, /* GL_UNSIGNED_INT_SAMPLER_2D */
- 2198, /* GL_UNSIGNED_INT_SAMPLER_3D */
- 2202, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
- 2196, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
- 2189, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
- 2193, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
- 2200, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
+ 2192, /* GL_UNSIGNED_INT_SAMPLER_1D */
+ 2196, /* GL_UNSIGNED_INT_SAMPLER_2D */
+ 2202, /* GL_UNSIGNED_INT_SAMPLER_3D */
+ 2206, /* GL_UNSIGNED_INT_SAMPLER_CUBE */
+ 2200, /* GL_UNSIGNED_INT_SAMPLER_2D_RECT */
+ 2193, /* GL_UNSIGNED_INT_SAMPLER_1D_ARRAY */
+ 2197, /* GL_UNSIGNED_INT_SAMPLER_2D_ARRAY */
+ 2204, /* GL_UNSIGNED_INT_SAMPLER_BUFFER */
691, /* GL_GEOMETRY_SHADER */
694, /* GL_GEOMETRY_VERTICES_OUT_ARB */
688, /* GL_GEOMETRY_INPUT_TYPE_ARB */
@@ -6167,56 +6176,56 @@ static const unsigned reduced_enums[1562] =
863, /* GL_LOW_INT */
1148, /* GL_MEDIUM_INT */
707, /* GL_HIGH_INT */
- 2178, /* GL_UNSIGNED_INT_10_10_10_2_OES */
+ 2182, /* GL_UNSIGNED_INT_10_10_10_2_OES */
774, /* GL_INT_10_10_10_2_OES */
- 1758, /* GL_SHADER_BINARY_FORMATS */
- 1249, /* GL_NUM_SHADER_BINARY_FORMATS */
- 1759, /* GL_SHADER_COMPILER */
+ 1762, /* GL_SHADER_BINARY_FORMATS */
+ 1250, /* GL_NUM_SHADER_BINARY_FORMATS */
+ 1763, /* GL_SHADER_COMPILER */
1142, /* GL_MAX_VERTEX_UNIFORM_VECTORS */
1134, /* GL_MAX_VARYING_VECTORS */
1051, /* GL_MAX_FRAGMENT_UNIFORM_VECTORS */
- 1534, /* GL_QUERY_WAIT */
- 1528, /* GL_QUERY_NO_WAIT */
- 1524, /* GL_QUERY_BY_REGION_WAIT */
- 1522, /* GL_QUERY_BY_REGION_NO_WAIT */
- 2122, /* GL_TRANSFORM_FEEDBACK */
- 2131, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
- 2125, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
- 2123, /* GL_TRANSFORM_FEEDBACK_BINDING */
- 1518, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
+ 1538, /* GL_QUERY_WAIT */
+ 1532, /* GL_QUERY_NO_WAIT */
+ 1528, /* GL_QUERY_BY_REGION_WAIT */
+ 1526, /* GL_QUERY_BY_REGION_NO_WAIT */
+ 2126, /* GL_TRANSFORM_FEEDBACK */
+ 2135, /* GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED */
+ 2129, /* GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE */
+ 2127, /* GL_TRANSFORM_FEEDBACK_BINDING */
+ 1522, /* GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION */
546, /* GL_FIRST_VERTEX_CONVENTION */
807, /* GL_LAST_VERTEX_CONVENTION */
- 1492, /* GL_PROVOKING_VERTEX */
+ 1496, /* GL_PROVOKING_VERTEX */
354, /* GL_COPY_READ_BUFFER */
355, /* GL_COPY_WRITE_BUFFER */
- 1561, /* GL_RED_SNORM */
- 1696, /* GL_RG_SNORM */
- 1695, /* GL_RGB_SNORM */
- 1688, /* GL_RGBA_SNORM */
- 1540, /* GL_R8_SNORM */
- 1609, /* GL_RG8_SNORM */
- 1648, /* GL_RGB8_SNORM */
- 1680, /* GL_RGBA8_SNORM */
- 1538, /* GL_R16_SNORM */
- 1608, /* GL_RG16_SNORM */
- 1624, /* GL_RGB16_SNORM */
- 1660, /* GL_RGBA16_SNORM */
- 1770, /* GL_SIGNED_NORMALIZED */
- 1449, /* GL_PRIMITIVE_RESTART */
- 1450, /* GL_PRIMITIVE_RESTART_INDEX */
+ 1565, /* GL_RED_SNORM */
+ 1700, /* GL_RG_SNORM */
+ 1699, /* GL_RGB_SNORM */
+ 1692, /* GL_RGBA_SNORM */
+ 1544, /* GL_R8_SNORM */
+ 1613, /* GL_RG8_SNORM */
+ 1652, /* GL_RGB8_SNORM */
+ 1684, /* GL_RGBA8_SNORM */
+ 1542, /* GL_R16_SNORM */
+ 1612, /* GL_RG16_SNORM */
+ 1628, /* GL_RGB16_SNORM */
+ 1664, /* GL_RGBA16_SNORM */
+ 1774, /* GL_SIGNED_NORMALIZED */
+ 1450, /* GL_PRIMITIVE_RESTART */
+ 1451, /* GL_PRIMITIVE_RESTART_INDEX */
1107, /* GL_MAX_SERVER_WAIT_TIMEOUT */
- 1263, /* GL_OBJECT_TYPE */
- 1883, /* GL_SYNC_CONDITION */
- 1888, /* GL_SYNC_STATUS */
- 1885, /* GL_SYNC_FLAGS */
- 1884, /* GL_SYNC_FENCE */
- 1887, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
- 2171, /* GL_UNSIGNALED */
- 1769, /* GL_SIGNALED */
+ 1264, /* GL_OBJECT_TYPE */
+ 1887, /* GL_SYNC_CONDITION */
+ 1892, /* GL_SYNC_STATUS */
+ 1889, /* GL_SYNC_FLAGS */
+ 1888, /* GL_SYNC_FENCE */
+ 1891, /* GL_SYNC_GPU_COMMANDS_COMPLETE */
+ 2175, /* GL_UNSIGNALED */
+ 1773, /* GL_SIGNALED */
54, /* GL_ALREADY_SIGNALED */
- 2117, /* GL_TIMEOUT_EXPIRED */
+ 2121, /* GL_TIMEOUT_EXPIRED */
315, /* GL_CONDITION_SATISFIED */
- 2288, /* GL_WAIT_FAILED */
+ 2292, /* GL_WAIT_FAILED */
126, /* GL_BUFFER_ACCESS_FLAGS */
132, /* GL_BUFFER_MAP_LENGTH */
133, /* GL_BUFFER_MAP_OFFSET */
@@ -6226,10 +6235,10 @@ static const unsigned reduced_enums[1562] =
1048, /* GL_MAX_FRAGMENT_INPUT_COMPONENTS */
330, /* GL_CONTEXT_PROFILE_MASK */
531, /* GL_EVAL_BIT */
- 1543, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
+ 1547, /* GL_RASTER_POSITION_UNCLIPPED_IBM */
854, /* GL_LIST_BIT */
- 1990, /* GL_TEXTURE_BIT */
- 1739, /* GL_SCISSOR_BIT */
+ 1994, /* GL_TEXTURE_BIT */
+ 1743, /* GL_SCISSOR_BIT */
30, /* GL_ALL_ATTRIB_BITS */
1213, /* GL_MULTISAMPLE_BIT */
31, /* GL_ALL_CLIENT_ATTRIB_BITS */
diff --git a/mesalib/src/mesa/main/es_generator.py b/mesalib/src/mesa/main/es_generator.py
index f8873b6d3..6b04c8b47 100644
--- a/mesalib/src/mesa/main/es_generator.py
+++ b/mesalib/src/mesa/main/es_generator.py
@@ -681,10 +681,10 @@ print """
#if FEATURE_remap_table
/* define esLocalRemapTable */
-#include "%sapi/main/dispatch.h"
+#include "main/api_exec_%s_dispatch.h"
#define need_MESA_remap_table
-#include "%sapi/main/remap_helper.h"
+#include "main/api_exec_%s_remap_helper.h"
static void
init_remap_table(void)
diff --git a/mesalib/src/mesa/main/extensions.c b/mesalib/src/mesa/main/extensions.c
index 267620a20..14b0cf9ac 100644
--- a/mesalib/src/mesa/main/extensions.c
+++ b/mesalib/src/mesa/main/extensions.c
@@ -1,1004 +1,1005 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.6
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/**
- * \file
- * \brief Extension handling
- */
-
-
-#include "glheader.h"
-#include "imports.h"
-#include "context.h"
-#include "extensions.h"
-#include "mfeatures.h"
-#include "mtypes.h"
-
-enum {
- DISABLE = 0,
- GL = 1 << API_OPENGL,
- ES1 = 1 << API_OPENGLES,
- ES2 = 1 << API_OPENGLES2,
-};
-
-/**
- * \brief An element of the \c extension_table.
- */
-struct extension {
- /** Name of extension, such as "GL_ARB_depth_clamp". */
- const char *name;
-
- /** Offset (in bytes) of the corresponding member in struct gl_extensions. */
- size_t offset;
-
- /** Set of API's in which the extension exists, as a bitset. */
- uint8_t api_set;
-
- /** Year the extension was proposed or approved. Used to sort the
- * extension string chronologically. */
- uint16_t year;
-};
-
-
-/**
- * Given a member \c x of struct gl_extensions, return offset of
- * \c x in bytes.
- */
-#define o(x) offsetof(struct gl_extensions, x)
-
-
-/**
- * \brief Table of supported OpenGL extensions for all API's.
- *
- * Note: The GL_MESAX_* extensions are placeholders for future ARB extensions.
- */
-static const struct extension extension_table[] = {
- /* ARB Extensions */
- { "GL_ARB_ES2_compatibility", o(ARB_ES2_compatibility), GL, 2009 },
- { "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 },
- { "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 },
- { "GL_ARB_copy_buffer", o(ARB_copy_buffer), GL, 2008 },
- { "GL_ARB_depth_buffer_float", o(ARB_depth_buffer_float), GL, 2008 },
- { "GL_ARB_depth_clamp", o(ARB_depth_clamp), GL, 2003 },
- { "GL_ARB_depth_texture", o(ARB_depth_texture), GL, 2001 },
- { "GL_ARB_draw_buffers", o(ARB_draw_buffers), GL, 2002 },
- { "GL_ARB_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 },
- { "GL_ARB_draw_elements_base_vertex", o(ARB_draw_elements_base_vertex), GL, 2009 },
- { "GL_ARB_draw_instanced", o(ARB_draw_instanced), GL, 2008 },
- { "GL_ARB_explicit_attrib_location", o(ARB_explicit_attrib_location), GL, 2009 },
- { "GL_ARB_fragment_coord_conventions", o(ARB_fragment_coord_conventions), GL, 2009 },
- { "GL_ARB_fragment_program", o(ARB_fragment_program), GL, 2002 },
- { "GL_ARB_fragment_program_shadow", o(ARB_fragment_program_shadow), GL, 2003 },
- { "GL_ARB_fragment_shader", o(ARB_fragment_shader), GL, 2002 },
- { "GL_ARB_framebuffer_object", o(ARB_framebuffer_object), GL, 2005 },
- { "GL_ARB_framebuffer_sRGB", o(EXT_framebuffer_sRGB), GL, 1998 },
- { "GL_ARB_half_float_pixel", o(ARB_half_float_pixel), GL, 2003 },
- { "GL_ARB_half_float_vertex", o(ARB_half_float_vertex), GL, 2008 },
- { "GL_ARB_instanced_arrays", o(ARB_instanced_arrays), GL, 2008 },
- { "GL_ARB_map_buffer_range", o(ARB_map_buffer_range), GL, 2008 },
- { "GL_ARB_multisample", o(ARB_multisample), GL, 1994 },
- { "GL_ARB_multitexture", o(ARB_multitexture), GL, 1998 },
- { "GL_ARB_occlusion_query2", o(ARB_occlusion_query2), GL, 2003 },
- { "GL_ARB_occlusion_query", o(ARB_occlusion_query), GL, 2001 },
- { "GL_ARB_pixel_buffer_object", o(EXT_pixel_buffer_object), GL, 2004 },
- { "GL_ARB_point_parameters", o(EXT_point_parameters), GL, 1997 },
- { "GL_ARB_point_sprite", o(ARB_point_sprite), GL, 2003 },
- { "GL_ARB_provoking_vertex", o(EXT_provoking_vertex), GL, 2009 },
- { "GL_ARB_robustness", o(dummy_true), GL, 2010 },
- { "GL_ARB_sampler_objects", o(ARB_sampler_objects), GL, 2009 },
- { "GL_ARB_seamless_cube_map", o(ARB_seamless_cube_map), GL, 2009 },
- { "GL_ARB_shader_objects", o(ARB_shader_objects), GL, 2002 },
- { "GL_ARB_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 },
- { "GL_ARB_shader_texture_lod", o(ARB_shader_texture_lod), GL, 2009 },
- { "GL_ARB_shading_language_100", o(ARB_shading_language_100), GL, 2003 },
- { "GL_ARB_shadow_ambient", o(ARB_shadow_ambient), GL, 2001 },
- { "GL_ARB_shadow", o(ARB_shadow), GL, 2001 },
- { "GL_ARB_sync", o(ARB_sync), GL, 2003 },
- { "GL_ARB_texture_border_clamp", o(ARB_texture_border_clamp), GL, 2000 },
- { "GL_ARB_texture_buffer_object", o(ARB_texture_buffer_object), GL, 2008 },
- { "GL_ARB_texture_compression", o(ARB_texture_compression), GL, 2000 },
- { "GL_ARB_texture_compression_rgtc", o(ARB_texture_compression_rgtc), GL, 2004 },
- { "GL_ARB_texture_cube_map", o(ARB_texture_cube_map), GL, 1999 },
- { "GL_ARB_texture_env_add", o(EXT_texture_env_add), GL, 1999 },
- { "GL_ARB_texture_env_combine", o(ARB_texture_env_combine), GL, 2001 },
- { "GL_ARB_texture_env_crossbar", o(ARB_texture_env_crossbar), GL, 2001 },
- { "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), GL, 2001 },
- { "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 },
- { "GL_ARB_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), GL, 2001 },
- { "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 },
- { "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 },
- { "GL_ARB_texture_rectangle", o(NV_texture_rectangle), GL, 2004 },
- { "GL_ARB_texture_rgb10_a2ui", o(ARB_texture_rgb10_a2ui), GL, 2009 },
- { "GL_ARB_texture_rg", o(ARB_texture_rg), GL, 2008 },
- { "GL_ARB_texture_swizzle", o(EXT_texture_swizzle), GL, 2008 },
- { "GL_ARB_transform_feedback2", o(ARB_transform_feedback2), GL, 2010 },
- { "GL_ARB_transpose_matrix", o(ARB_transpose_matrix), GL, 1999 },
- { "GL_ARB_uniform_buffer_object", o(ARB_uniform_buffer_object), GL, 2002 },
- { "GL_ARB_vertex_array_bgra", o(EXT_vertex_array_bgra), GL, 2008 },
- { "GL_ARB_vertex_array_object", o(ARB_vertex_array_object), GL, 2006 },
- { "GL_ARB_vertex_buffer_object", o(ARB_vertex_buffer_object), GL, 2003 },
- { "GL_ARB_vertex_program", o(ARB_vertex_program), GL, 2002 },
- { "GL_ARB_vertex_shader", o(ARB_vertex_shader), GL, 2002 },
- { "GL_ARB_vertex_type_2_10_10_10_rev", o(ARB_vertex_type_2_10_10_10_rev), GL, 2009 },
- { "GL_ARB_window_pos", o(ARB_window_pos), GL, 2001 },
- /* EXT extensions */
- { "GL_EXT_abgr", o(EXT_abgr), GL, 1995 },
- { "GL_EXT_bgra", o(EXT_bgra), GL, 1995 },
- { "GL_EXT_blend_color", o(EXT_blend_color), GL, 1995 },
- { "GL_EXT_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 },
- { "GL_EXT_blend_func_separate", o(EXT_blend_func_separate), GL, 1999 },
- { "GL_EXT_blend_logic_op", o(EXT_blend_logic_op), GL, 1995 },
- { "GL_EXT_blend_minmax", o(EXT_blend_minmax), GL | ES1 | ES2, 1995 },
- { "GL_EXT_blend_subtract", o(EXT_blend_subtract), GL, 1995 },
- { "GL_EXT_clip_volume_hint", o(EXT_clip_volume_hint), GL, 1996 },
- { "GL_EXT_compiled_vertex_array", o(EXT_compiled_vertex_array), GL, 1996 },
- { "GL_EXT_copy_texture", o(EXT_copy_texture), GL, 1995 },
- { "GL_EXT_depth_bounds_test", o(EXT_depth_bounds_test), GL, 2002 },
- { "GL_EXT_draw_buffers2", o(EXT_draw_buffers2), GL, 2006 },
- { "GL_EXT_draw_instanced", o(ARB_draw_instanced), GL, 2006 },
- { "GL_EXT_draw_range_elements", o(EXT_draw_range_elements), GL, 1997 },
- { "GL_EXT_fog_coord", o(EXT_fog_coord), GL, 1999 },
- { "GL_EXT_framebuffer_blit", o(EXT_framebuffer_blit), GL, 2005 },
- { "GL_EXT_framebuffer_multisample", o(EXT_framebuffer_multisample), GL, 2005 },
- { "GL_EXT_framebuffer_object", o(EXT_framebuffer_object), GL, 2000 },
- { "GL_EXT_framebuffer_sRGB", o(EXT_framebuffer_sRGB), GL, 1998 },
- { "GL_EXT_gpu_program_parameters", o(EXT_gpu_program_parameters), GL, 2006 },
- { "GL_EXT_gpu_shader4", o(EXT_gpu_shader4), GL, 2006 },
- { "GL_EXT_multi_draw_arrays", o(EXT_multi_draw_arrays), GL | ES1 | ES2, 1999 },
- { "GL_EXT_packed_depth_stencil", o(EXT_packed_depth_stencil), GL, 2005 },
- { "GL_EXT_packed_float", o(EXT_packed_float), GL, 2004 },
- { "GL_EXT_packed_pixels", o(EXT_packed_pixels), GL, 1997 },
- { "GL_EXT_paletted_texture", o(EXT_paletted_texture), GL, 1995 },
- { "GL_EXT_pixel_buffer_object", o(EXT_pixel_buffer_object), GL, 2004 },
- { "GL_EXT_point_parameters", o(EXT_point_parameters), GL, 1997 },
- { "GL_EXT_polygon_offset", o(EXT_polygon_offset), GL, 1995 },
- { "GL_EXT_provoking_vertex", o(EXT_provoking_vertex), GL, 2009 },
- { "GL_EXT_rescale_normal", o(EXT_rescale_normal), GL, 1997 },
- { "GL_EXT_secondary_color", o(EXT_secondary_color), GL, 1999 },
- { "GL_EXT_separate_shader_objects", o(EXT_separate_shader_objects), GL, 2008 },
- { "GL_EXT_separate_specular_color", o(EXT_separate_specular_color), GL, 1997 },
- { "GL_EXT_shadow_funcs", o(EXT_shadow_funcs), GL, 2002 },
- { "GL_EXT_shared_texture_palette", o(EXT_shared_texture_palette), GL, 2000 },
- { "GL_EXT_stencil_two_side", o(EXT_stencil_two_side), GL, 2001 },
- { "GL_EXT_stencil_wrap", o(EXT_stencil_wrap), GL, 2002 },
- { "GL_EXT_subtexture", o(EXT_subtexture), GL, 1995 },
- { "GL_EXT_texture3D", o(EXT_texture3D), GL, 1996 },
- { "GL_EXT_texture_array", o(EXT_texture_array), GL, 2006 },
- { "GL_EXT_texture_compression_dxt1", o(EXT_texture_compression_s3tc), GL | ES1 | ES2, 2004 },
- { "GL_EXT_texture_compression_latc", o(EXT_texture_compression_latc), GL, 2006 },
- { "GL_EXT_texture_compression_rgtc", o(ARB_texture_compression_rgtc), GL, 2004 },
- { "GL_EXT_texture_compression_s3tc", o(EXT_texture_compression_s3tc), GL, 2000 },
- { "GL_EXT_texture_cube_map", o(ARB_texture_cube_map), GL, 2001 },
- { "GL_EXT_texture_edge_clamp", o(SGIS_texture_edge_clamp), GL, 1997 },
- { "GL_EXT_texture_env_add", o(EXT_texture_env_add), GL, 1999 },
- { "GL_EXT_texture_env_combine", o(EXT_texture_env_combine), GL, 2006 },
- { "GL_EXT_texture_env_dot3", o(EXT_texture_env_dot3), GL, 2000 },
- { "GL_EXT_texture_filter_anisotropic", o(EXT_texture_filter_anisotropic), GL | ES1 | ES2, 1999 },
- { "GL_EXT_texture_format_BGRA8888", o(EXT_texture_format_BGRA8888), ES1 | ES2, 2009 },
- { "GL_EXT_texture_integer", o(EXT_texture_integer), GL, 2006 },
- { "GL_EXT_texture_lod_bias", o(EXT_texture_lod_bias), GL | ES1, 1999 },
- { "GL_EXT_texture_mirror_clamp", o(EXT_texture_mirror_clamp), GL, 2004 },
- { "GL_EXT_texture_object", o(EXT_texture_object), GL, 1995 },
- { "GL_EXT_texture", o(EXT_texture), GL, 1996 },
- { "GL_EXT_texture_rectangle", o(NV_texture_rectangle), GL, 2004 },
- { "GL_EXT_texture_shared_exponent", o(EXT_texture_shared_exponent), GL, 2004 },
- { "GL_EXT_texture_snorm", o(EXT_texture_snorm), GL, 2009 },
- { "GL_EXT_texture_sRGB", o(EXT_texture_sRGB), GL, 2004 },
- { "GL_EXT_texture_sRGB_decode", o(EXT_texture_sRGB_decode), GL, 2006 },
- { "GL_EXT_texture_swizzle", o(EXT_texture_swizzle), GL, 2008 },
- { "GL_EXT_texture_type_2_10_10_10_REV", o(dummy_true), ES2, 2008 },
- { "GL_EXT_timer_query", o(EXT_timer_query), GL, 2006 },
- { "GL_EXT_transform_feedback", o(EXT_transform_feedback), GL, 2011 },
- { "GL_EXT_vertex_array_bgra", o(EXT_vertex_array_bgra), GL, 2008 },
- { "GL_EXT_vertex_array", o(EXT_vertex_array), GL, 1995 },
- { "GL_EXT_vertex_array_set", o(EXT_vertex_array_set), GL, 1997 },
-
- /* OES extensions */
- { "GL_OES_blend_equation_separate", o(EXT_blend_equation_separate), ES1, 2009 },
- { "GL_OES_blend_func_separate", o(EXT_blend_func_separate), ES1, 2009 },
- { "GL_OES_blend_subtract", o(EXT_blend_subtract), ES1, 2009 },
- { "GL_OES_byte_coordinates", o(dummy_true), ES1, 2002 },
- { "GL_OES_compressed_paletted_texture", o(dummy_false), DISABLE, 2003 },
- { "GL_OES_depth24", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
- { "GL_OES_depth32", o(dummy_false), DISABLE, 2005 },
- { "GL_OES_depth_texture", o(ARB_depth_texture), ES2, 2006 },
-#if FEATURE_OES_draw_texture
- { "GL_OES_draw_texture", o(OES_draw_texture), ES1 | ES2, 2004 },
-#endif
-#if FEATURE_OES_EGL_image
- /* FIXME: Mesa expects GL_OES_EGL_image to be available in OpenGL contexts. */
- { "GL_OES_EGL_image", o(OES_EGL_image), GL | ES1 | ES2, 2006 },
-#endif
- { "GL_OES_element_index_uint", o(EXT_vertex_array), ES1 | ES2, 2005 },
- { "GL_OES_fbo_render_mipmap", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
- { "GL_OES_fixed_point", o(dummy_true), ES1, 2002 },
- { "GL_OES_framebuffer_object", o(EXT_framebuffer_object), ES1, 2005 },
- { "GL_OES_mapbuffer", o(ARB_vertex_buffer_object), ES1 | ES2, 2005 },
- { "GL_OES_matrix_get", o(dummy_true), ES1, 2004 },
- { "GL_OES_packed_depth_stencil", o(EXT_packed_depth_stencil), ES1 | ES2, 2007 },
- { "GL_OES_point_size_array", o(dummy_true), ES1, 2004 },
- { "GL_OES_point_sprite", o(ARB_point_sprite), ES1, 2004 },
- { "GL_OES_query_matrix", o(dummy_true), ES1, 2003 },
- { "GL_OES_read_format", o(OES_read_format), GL | ES1, 2003 },
- { "GL_OES_rgb8_rgba8", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
- { "GL_OES_single_precision", o(dummy_true), ES1, 2003 },
- { "GL_OES_standard_derivatives", o(OES_standard_derivatives), ES2, 2005 },
- { "GL_OES_stencil1", o(dummy_false), DISABLE, 2005 },
- { "GL_OES_stencil4", o(dummy_false), DISABLE, 2005 },
- { "GL_OES_stencil8", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
- { "GL_OES_stencil_wrap", o(EXT_stencil_wrap), ES1, 2002 },
- { "GL_OES_texture_3D", o(EXT_texture3D), ES2, 2005 },
- { "GL_OES_texture_cube_map", o(ARB_texture_cube_map), ES1, 2007 },
- { "GL_OES_texture_env_crossbar", o(ARB_texture_env_crossbar), ES1, 2005 },
- { "GL_OES_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), ES1, 2005 },
- { "GL_OES_texture_npot", o(ARB_texture_non_power_of_two), ES2, 2005 },
-
- /* Vendor extensions */
- { "GL_3DFX_texture_compression_FXT1", o(TDFX_texture_compression_FXT1), GL, 1999 },
- { "GL_AMD_conservative_depth", o(AMD_conservative_depth), GL, 2009 },
- { "GL_AMD_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 },
- { "GL_AMD_seamless_cubemap_per_texture", o(AMD_seamless_cubemap_per_texture), GL, 2009 },
- { "GL_AMD_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 },
- { "GL_APPLE_client_storage", o(APPLE_client_storage), GL, 2002 },
- { "GL_APPLE_object_purgeable", o(APPLE_object_purgeable), GL, 2006 },
- { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 },
- { "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), GL, 2002 },
- { "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 },
- { "GL_ATI_draw_buffers", o(ARB_draw_buffers), GL, 2002 },
- { "GL_ATI_envmap_bumpmap", o(ATI_envmap_bumpmap), GL, 2001 },
- { "GL_ATI_fragment_shader", o(ATI_fragment_shader), GL, 2001 },
- { "GL_ATI_separate_stencil", o(ATI_separate_stencil), GL, 2006 },
- { "GL_ATI_texture_compression_3dc", o(ATI_texture_compression_3dc), GL, 2004 },
- { "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3), GL, 2002 },
- { "GL_ATI_texture_float", o(ARB_texture_float), GL, 2002 },
- { "GL_ATI_texture_mirror_once", o(ATI_texture_mirror_once), GL, 2006 },
- { "GL_IBM_multimode_draw_arrays", o(IBM_multimode_draw_arrays), GL, 1998 },
- { "GL_IBM_rasterpos_clip", o(IBM_rasterpos_clip), GL, 1996 },
- { "GL_IBM_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), GL, 1998 },
- { "GL_INGR_blend_func_separate", o(EXT_blend_func_separate), GL, 1999 },
- { "GL_MESA_pack_invert", o(MESA_pack_invert), GL, 2002 },
- { "GL_MESA_resize_buffers", o(MESA_resize_buffers), GL, 1999 },
- { "GL_MESA_texture_array", o(MESA_texture_array), GL, 2007 },
- { "GL_MESA_texture_signed_rgba", o(EXT_texture_snorm), GL, 2009 },
- { "GL_MESA_window_pos", o(ARB_window_pos), GL, 2000 },
- { "GL_MESA_ycbcr_texture", o(MESA_ycbcr_texture), GL, 2002 },
- { "GL_NV_blend_square", o(NV_blend_square), GL, 1999 },
- { "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 },
- { "GL_NV_depth_clamp", o(ARB_depth_clamp), GL, 2001 },
- { "GL_NV_fragment_program", o(NV_fragment_program), GL, 2001 },
- { "GL_NV_fragment_program_option", o(NV_fragment_program_option), GL, 2005 },
- { "GL_NV_light_max_exponent", o(NV_light_max_exponent), GL, 1999 },
- { "GL_NV_packed_depth_stencil", o(EXT_packed_depth_stencil), GL, 2000 },
- { "GL_NV_point_sprite", o(NV_point_sprite), GL, 2001 },
- { "GL_NV_primitive_restart", o(NV_primitive_restart), GL, 2002 },
- { "GL_NV_texgen_reflection", o(NV_texgen_reflection), GL, 1999 },
- { "GL_NV_texture_barrier", o(NV_texture_barrier), GL, 2009 },
- { "GL_NV_texture_env_combine4", o(NV_texture_env_combine4), GL, 1999 },
- { "GL_NV_texture_rectangle", o(NV_texture_rectangle), GL, 2000 },
- { "GL_NV_vertex_program1_1", o(NV_vertex_program1_1), GL, 2001 },
- { "GL_NV_vertex_program", o(NV_vertex_program), GL, 2000 },
- { "GL_S3_s3tc", o(S3_s3tc), GL, 1999 },
- { "GL_SGIS_generate_mipmap", o(SGIS_generate_mipmap), GL, 1997 },
- { "GL_SGIS_texture_border_clamp", o(ARB_texture_border_clamp), GL, 1997 },
- { "GL_SGIS_texture_edge_clamp", o(SGIS_texture_edge_clamp), GL, 1997 },
- { "GL_SGIS_texture_lod", o(SGIS_texture_lod), GL, 1997 },
- { "GL_SUN_multi_draw_arrays", o(EXT_multi_draw_arrays), GL, 1999 },
-
- { 0, 0, 0, 0 },
-};
-
-
-/**
- * Given an extension name, lookup up the corresponding member of struct
- * gl_extensions and return that member's offset (in bytes). If the name is
- * not found in the \c extension_table, return 0.
- *
- * \param name Name of extension.
- * \return Offset of member in struct gl_extensions.
- */
-static size_t
-name_to_offset(const char* name)
-{
- const struct extension *i;
-
- if (name == 0)
- return 0;
-
- for (i = extension_table; i->name != 0; ++i) {
- if (strcmp(name, i->name) == 0)
- return i->offset;
- }
-
- return 0;
-}
-
-
-/**
- * \brief Extensions enabled by default.
- *
- * These extensions are enabled by _mesa_init_extensions().
- *
- * XXX: Should these defaults also apply to GLES?
- */
-static const size_t default_extensions[] = {
- o(ARB_copy_buffer),
- o(ARB_draw_buffers),
- o(ARB_multisample),
- o(ARB_texture_compression),
- o(ARB_transpose_matrix),
- o(ARB_vertex_buffer_object),
- o(ARB_window_pos),
-
- o(EXT_abgr),
- o(EXT_bgra),
- o(EXT_compiled_vertex_array),
- o(EXT_copy_texture),
- o(EXT_draw_range_elements),
- o(EXT_multi_draw_arrays),
- o(EXT_packed_pixels),
- o(EXT_polygon_offset),
- o(EXT_rescale_normal),
- o(EXT_separate_specular_color),
- o(EXT_subtexture),
- o(EXT_texture),
- o(EXT_texture3D),
- o(EXT_texture_object),
- o(EXT_vertex_array),
-
- o(OES_read_format),
- o(OES_standard_derivatives),
-
- /* Vendor Extensions */
- o(APPLE_packed_pixels),
- o(IBM_multimode_draw_arrays),
- o(IBM_rasterpos_clip),
- o(NV_light_max_exponent),
- o(NV_texgen_reflection),
- o(SGIS_generate_mipmap),
- o(SGIS_texture_edge_clamp),
- o(SGIS_texture_lod),
-
- 0,
-};
-
-
-/**
- * Enable all extensions suitable for a software-only renderer.
- * This is a convenience function used by the XMesa, OSMesa, GGI drivers, etc.
- */
-void
-_mesa_enable_sw_extensions(struct gl_context *ctx)
-{
- /*ctx->Extensions.ARB_copy_buffer = GL_TRUE;*/
- ctx->Extensions.ARB_depth_clamp = GL_TRUE;
- ctx->Extensions.ARB_depth_texture = GL_TRUE;
- /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/
- ctx->Extensions.ARB_draw_elements_base_vertex = GL_TRUE;
- ctx->Extensions.ARB_draw_instanced = GL_TRUE;
- ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE;
- ctx->Extensions.ARB_fragment_coord_conventions = GL_TRUE;
-#if FEATURE_ARB_fragment_program
- ctx->Extensions.ARB_fragment_program = GL_TRUE;
- ctx->Extensions.ARB_fragment_program_shadow = GL_TRUE;
-#endif
-#if FEATURE_ARB_fragment_shader
- ctx->Extensions.ARB_fragment_shader = GL_TRUE;
-#endif
-#if FEATURE_ARB_framebuffer_object
- ctx->Extensions.ARB_framebuffer_object = GL_TRUE;
-#endif
-#if FEATURE_ARB_geometry_shader4 && 0
- /* XXX re-enable when GLSL compiler again supports geometry shaders */
- ctx->Extensions.ARB_geometry_shader4 = GL_TRUE;
-#endif
- ctx->Extensions.ARB_half_float_pixel = GL_TRUE;
- ctx->Extensions.ARB_half_float_vertex = GL_TRUE;
- ctx->Extensions.ARB_map_buffer_range = GL_TRUE;
- ctx->Extensions.ARB_multitexture = GL_TRUE;
-#if FEATURE_queryobj
- ctx->Extensions.ARB_occlusion_query = GL_TRUE;
- ctx->Extensions.ARB_occlusion_query2 = GL_TRUE;
-#endif
- ctx->Extensions.ARB_point_sprite = GL_TRUE;
-#if FEATURE_ARB_shader_objects
- ctx->Extensions.ARB_shader_objects = GL_TRUE;
- ctx->Extensions.EXT_separate_shader_objects = GL_TRUE;
-#endif
-#if FEATURE_ARB_shading_language_100
- ctx->Extensions.ARB_shading_language_100 = GL_TRUE;
-#endif
- ctx->Extensions.ARB_shadow = GL_TRUE;
- ctx->Extensions.ARB_shadow_ambient = GL_TRUE;
- ctx->Extensions.ARB_texture_border_clamp = GL_TRUE;
- ctx->Extensions.ARB_texture_cube_map = GL_TRUE;
- ctx->Extensions.ARB_texture_env_combine = GL_TRUE;
- ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
- ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
- /*ctx->Extensions.ARB_texture_float = GL_TRUE;*/
- ctx->Extensions.ARB_texture_mirrored_repeat = GL_TRUE;
- ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE;
- ctx->Extensions.ARB_texture_rg = GL_TRUE;
- ctx->Extensions.ARB_texture_compression_rgtc = GL_TRUE;
- ctx->Extensions.ARB_vertex_array_object = GL_TRUE;
-#if FEATURE_ARB_vertex_program
- ctx->Extensions.ARB_vertex_program = GL_TRUE;
-#endif
-#if FEATURE_ARB_vertex_shader
- ctx->Extensions.ARB_vertex_shader = GL_TRUE;
-#endif
-#if FEATURE_ARB_vertex_buffer_object
- /*ctx->Extensions.ARB_vertex_buffer_object = GL_TRUE;*/
-#endif
-#if FEATURE_ARB_sync
- ctx->Extensions.ARB_sync = GL_TRUE;
-#endif
- ctx->Extensions.APPLE_vertex_array_object = GL_TRUE;
-#if FEATURE_APPLE_object_purgeable
- ctx->Extensions.APPLE_object_purgeable = GL_TRUE;
-#endif
- ctx->Extensions.ATI_envmap_bumpmap = GL_TRUE;
-#if FEATURE_ATI_fragment_shader
- ctx->Extensions.ATI_fragment_shader = GL_TRUE;
-#endif
- ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE;
- ctx->Extensions.ATI_texture_env_combine3 = GL_TRUE;
- ctx->Extensions.ATI_texture_mirror_once = GL_TRUE;
- ctx->Extensions.ATI_separate_stencil = GL_TRUE;
- ctx->Extensions.EXT_blend_color = GL_TRUE;
- ctx->Extensions.EXT_blend_equation_separate = GL_TRUE;
- ctx->Extensions.EXT_blend_func_separate = GL_TRUE;
- ctx->Extensions.EXT_blend_logic_op = GL_TRUE;
- ctx->Extensions.EXT_blend_minmax = GL_TRUE;
- ctx->Extensions.EXT_blend_subtract = GL_TRUE;
- ctx->Extensions.EXT_depth_bounds_test = GL_TRUE;
- ctx->Extensions.EXT_draw_buffers2 = GL_TRUE;
- ctx->Extensions.EXT_fog_coord = GL_TRUE;
-#if FEATURE_EXT_framebuffer_object
- ctx->Extensions.EXT_framebuffer_object = GL_TRUE;
-#endif
-#if FEATURE_EXT_framebuffer_blit
- ctx->Extensions.EXT_framebuffer_blit = GL_TRUE;
-#endif
-#if FEATURE_ARB_framebuffer_object
- ctx->Extensions.EXT_framebuffer_multisample = GL_TRUE;
-#endif
- /*ctx->Extensions.EXT_multi_draw_arrays = GL_TRUE;*/
- ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE;
- ctx->Extensions.EXT_paletted_texture = GL_TRUE;
-#if FEATURE_EXT_pixel_buffer_object
- ctx->Extensions.EXT_pixel_buffer_object = GL_TRUE;
-#endif
- ctx->Extensions.EXT_point_parameters = GL_TRUE;
- ctx->Extensions.EXT_provoking_vertex = GL_TRUE;
- ctx->Extensions.EXT_shadow_funcs = GL_TRUE;
- ctx->Extensions.EXT_secondary_color = GL_TRUE;
- ctx->Extensions.EXT_shared_texture_palette = GL_TRUE;
- ctx->Extensions.EXT_stencil_wrap = GL_TRUE;
- ctx->Extensions.EXT_stencil_two_side = GL_TRUE;
- ctx->Extensions.EXT_texture_array = GL_TRUE;
- ctx->Extensions.EXT_texture_compression_latc = GL_TRUE;
- ctx->Extensions.EXT_texture_env_add = GL_TRUE;
- ctx->Extensions.EXT_texture_env_combine = GL_TRUE;
- ctx->Extensions.EXT_texture_env_dot3 = GL_TRUE;
- ctx->Extensions.EXT_texture_filter_anisotropic = GL_TRUE;
- ctx->Extensions.EXT_texture_mirror_clamp = GL_TRUE;
- ctx->Extensions.EXT_texture_lod_bias = GL_TRUE;
- ctx->Extensions.EXT_texture_shared_exponent = GL_TRUE;
-#if FEATURE_EXT_texture_sRGB
- ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
- ctx->Extensions.EXT_texture_sRGB_decode = GL_TRUE;
-#endif
- ctx->Extensions.EXT_texture_swizzle = GL_TRUE;
-#if FEATURE_EXT_transform_feedback
- /*ctx->Extensions.EXT_transform_feedback = GL_TRUE;*/
-#endif
- ctx->Extensions.EXT_vertex_array_bgra = GL_TRUE;
- /*ctx->Extensions.IBM_multimode_draw_arrays = GL_TRUE;*/
- ctx->Extensions.MESA_pack_invert = GL_TRUE;
- ctx->Extensions.MESA_resize_buffers = GL_TRUE;
- ctx->Extensions.MESA_texture_array = GL_TRUE;
- ctx->Extensions.MESA_ycbcr_texture = GL_TRUE;
- ctx->Extensions.NV_blend_square = GL_TRUE;
- ctx->Extensions.NV_conditional_render = GL_TRUE;
- /*ctx->Extensions.NV_light_max_exponent = GL_TRUE;*/
- ctx->Extensions.NV_point_sprite = GL_TRUE;
- ctx->Extensions.NV_texture_env_combine4 = GL_TRUE;
- ctx->Extensions.NV_texture_rectangle = GL_TRUE;
- /*ctx->Extensions.NV_texgen_reflection = GL_TRUE;*/
-#if FEATURE_NV_vertex_program
- ctx->Extensions.NV_vertex_program = GL_TRUE;
- ctx->Extensions.NV_vertex_program1_1 = GL_TRUE;
-#endif
-#if FEATURE_NV_fragment_program
- ctx->Extensions.NV_fragment_program = GL_TRUE;
-#endif
-#if FEATURE_NV_fragment_program && FEATURE_ARB_fragment_program
- ctx->Extensions.NV_fragment_program_option = GL_TRUE;
-#endif
- /*ctx->Extensions.SGIS_generate_mipmap = GL_TRUE;*/
- ctx->Extensions.SGIS_texture_edge_clamp = GL_TRUE;
-#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
- ctx->Extensions.EXT_gpu_program_parameters = GL_TRUE;
-#endif
-#if FEATURE_texture_fxt1
- _mesa_enable_extension(ctx, "GL_3DFX_texture_compression_FXT1");
-#endif
-#if FEATURE_texture_s3tc
- if (ctx->Mesa_DXTn) {
- _mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc");
- _mesa_enable_extension(ctx, "GL_S3_s3tc");
- }
-#endif
-}
-
-
-/**
- * Enable common EXT extensions in the ARB_imaging subset.
- */
-void
-_mesa_enable_imaging_extensions(struct gl_context *ctx)
-{
- ctx->Extensions.EXT_blend_color = GL_TRUE;
- ctx->Extensions.EXT_blend_logic_op = GL_TRUE;
- ctx->Extensions.EXT_blend_minmax = GL_TRUE;
- ctx->Extensions.EXT_blend_subtract = GL_TRUE;
-}
-
-
-
-/**
- * Enable all OpenGL 1.3 features and extensions.
- * A convenience function to be called by drivers.
- */
-void
-_mesa_enable_1_3_extensions(struct gl_context *ctx)
-{
- /*ctx->Extensions.ARB_multisample = GL_TRUE;*/
- ctx->Extensions.ARB_multitexture = GL_TRUE;
- ctx->Extensions.ARB_texture_border_clamp = GL_TRUE;
- /*ctx->Extensions.ARB_texture_compression = GL_TRUE;*/
- ctx->Extensions.ARB_texture_cube_map = GL_TRUE;
- ctx->Extensions.ARB_texture_env_combine = GL_TRUE;
- ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
- ctx->Extensions.EXT_texture_env_add = GL_TRUE;
- /*ctx->Extensions.ARB_transpose_matrix = GL_TRUE;*/
-}
-
-
-
-/**
- * Enable all OpenGL 1.4 features and extensions.
- * A convenience function to be called by drivers.
- */
-void
-_mesa_enable_1_4_extensions(struct gl_context *ctx)
-{
- ctx->Extensions.ARB_depth_texture = GL_TRUE;
- ctx->Extensions.ARB_shadow = GL_TRUE;
- ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
- ctx->Extensions.ARB_texture_mirrored_repeat = GL_TRUE;
- ctx->Extensions.ARB_window_pos = GL_TRUE;
- ctx->Extensions.EXT_blend_color = GL_TRUE;
- ctx->Extensions.EXT_blend_func_separate = GL_TRUE;
- ctx->Extensions.EXT_blend_minmax = GL_TRUE;
- ctx->Extensions.EXT_blend_subtract = GL_TRUE;
- ctx->Extensions.EXT_fog_coord = GL_TRUE;
- /*ctx->Extensions.EXT_multi_draw_arrays = GL_TRUE;*/
- ctx->Extensions.EXT_point_parameters = GL_TRUE;
- ctx->Extensions.EXT_secondary_color = GL_TRUE;
- ctx->Extensions.EXT_stencil_wrap = GL_TRUE;
- ctx->Extensions.EXT_texture_lod_bias = GL_TRUE;
- /*ctx->Extensions.SGIS_generate_mipmap = GL_TRUE;*/
-}
-
-
-/**
- * Enable all OpenGL 1.5 features and extensions.
- * A convenience function to be called by drivers.
- */
-void
-_mesa_enable_1_5_extensions(struct gl_context *ctx)
-{
- ctx->Extensions.ARB_occlusion_query = GL_TRUE;
- /*ctx->Extensions.ARB_vertex_buffer_object = GL_TRUE;*/
- ctx->Extensions.EXT_shadow_funcs = GL_TRUE;
-}
-
-
-/**
- * Enable all OpenGL 2.0 features and extensions.
- * A convenience function to be called by drivers.
- */
-void
-_mesa_enable_2_0_extensions(struct gl_context *ctx)
-{
- /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/
-#if FEATURE_ARB_fragment_shader
- ctx->Extensions.ARB_fragment_shader = GL_TRUE;
-#endif
- ctx->Extensions.ARB_point_sprite = GL_TRUE;
- ctx->Extensions.EXT_blend_equation_separate = GL_TRUE;
- ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE;
-#if FEATURE_ARB_shader_objects
- ctx->Extensions.ARB_shader_objects = GL_TRUE;
-#endif
-#if FEATURE_ARB_shading_language_100
- ctx->Extensions.ARB_shading_language_100 = GL_TRUE;
-#endif
- ctx->Extensions.EXT_stencil_two_side = GL_TRUE;
-#if FEATURE_ARB_vertex_shader
- ctx->Extensions.ARB_vertex_shader = GL_TRUE;
-#endif
-}
-
-
-/**
- * Enable all OpenGL 2.1 features and extensions.
- * A convenience function to be called by drivers.
- */
-void
-_mesa_enable_2_1_extensions(struct gl_context *ctx)
-{
-#if FEATURE_EXT_pixel_buffer_object
- ctx->Extensions.EXT_pixel_buffer_object = GL_TRUE;
-#endif
-#if FEATURE_EXT_texture_sRGB
- ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
-#endif
-}
-
-
-/**
- * Either enable or disable the named extension.
- * \return GL_TRUE for success, GL_FALSE if invalid extension name
- */
-static GLboolean
-set_extension( struct gl_context *ctx, const char *name, GLboolean state )
-{
- size_t offset;
-
- if (ctx->Extensions.String) {
- /* The string was already queried - can't change it now! */
- _mesa_problem(ctx, "Trying to enable/disable extension after glGetString(GL_EXTENSIONS): %s", name);
- return GL_FALSE;
- }
-
- offset = name_to_offset(name);
- if (offset == 0) {
- _mesa_problem(ctx, "Trying to enable/disable unknown extension %s",
- name);
- return GL_FALSE;
- } else if (offset == o(dummy_true) && state == GL_FALSE) {
- _mesa_problem(ctx, "Trying to disable a permanently enabled extension: "
- "%s", name);
- return GL_FALSE;
- } else {
- GLboolean *base = (GLboolean *) &ctx->Extensions;
- base[offset] = state;
- return GL_TRUE;
- }
-}
-
-
-/**
- * Enable the named extension.
- * Typically called by drivers.
- */
-void
-_mesa_enable_extension( struct gl_context *ctx, const char *name )
-{
- if (!set_extension(ctx, name, GL_TRUE))
- _mesa_problem(ctx, "Trying to enable unknown extension: %s", name);
-}
-
-
-/**
- * Disable the named extension.
- * XXX is this really needed???
- */
-void
-_mesa_disable_extension( struct gl_context *ctx, const char *name )
-{
- if (!set_extension(ctx, name, GL_FALSE))
- _mesa_problem(ctx, "Trying to disable unknown extension: %s", name);
-}
-
-
-/**
- * Test if the named extension is enabled in this context.
- */
-GLboolean
-_mesa_extension_is_enabled( struct gl_context *ctx, const char *name )
-{
- size_t offset;
- GLboolean *base;
-
- if (name == 0)
- return GL_FALSE;
-
- offset = name_to_offset(name);
- if (offset == 0)
- return GL_FALSE;
- base = (GLboolean *) &ctx->Extensions;
- return base[offset];
-}
-
-
-/**
- * \brief Apply the \c MESA_EXTENSION_OVERRIDE environment variable.
- *
- * \c MESA_EXTENSION_OVERRIDE is a space-separated list of extensions to
- * enable or disable. The list is processed thus:
- * - Enable recognized extension names that are prefixed with '+'.
- * - Disable recognized extension names that are prefixed with '-'.
- * - Enable recognized extension names that are not prefixed.
- * - Collect unrecognized extension names in a new string.
- *
- * \return Space-separated list of unrecognized extension names (which must
- * be freed). Does not return \c NULL.
- */
-static char *
-get_extension_override( struct gl_context *ctx )
-{
- const char *env_const = _mesa_getenv("MESA_EXTENSION_OVERRIDE");
- char *env;
- char *ext;
- char *extra_exts;
- int len;
-
- if (env_const == NULL) {
- /* Return the empty string rather than NULL. This simplifies the logic
- * of client functions. */
- return calloc(1, sizeof(char));
- }
-
- /* extra_exts: List of unrecognized extensions. */
- extra_exts = calloc(strlen(env_const), sizeof(char));
-
- /* Copy env_const because strtok() is destructive. */
- env = strdup(env_const);
- for (ext = strtok(env, " "); ext != NULL; ext = strtok(NULL, " ")) {
- int enable;
- int recognized;
- switch (ext[0]) {
- case '+':
- enable = 1;
- ++ext;
- break;
- case '-':
- enable = 0;
- ++ext;
- break;
- default:
- enable = 1;
- break;
- }
- recognized = set_extension(ctx, ext, enable);
- if (!recognized) {
- strcat(extra_exts, ext);
- strcat(extra_exts, " ");
- }
- }
-
- /* Remove trailing space. */
- len = strlen(extra_exts);
- if (extra_exts[len - 1] == ' ')
- extra_exts[len - 1] = '\0';
-
- return extra_exts;
-}
-
-
-/**
- * \brief Initialize extension tables and enable default extensions.
- *
- * This should be called during context initialization.
- * Note: Sets gl_extensions.dummy_true to true.
- */
-void
-_mesa_init_extensions( struct gl_context *ctx )
-{
- GLboolean *base = (GLboolean *) &ctx->Extensions;
- GLboolean *sentinel = base + o(extension_sentinel);
- GLboolean *i;
- const size_t *j;
-
- /* First, turn all extensions off. */
- for (i = base; i != sentinel; ++i)
- *i = GL_FALSE;
-
- /* Then, selectively turn default extensions on. */
- ctx->Extensions.dummy_true = GL_TRUE;
- for (j = default_extensions; *j != 0; ++j)
- base[*j] = GL_TRUE;
-}
-
-
-typedef unsigned short extension_index;
-
-
-/**
- * Compare two entries of the extensions table. Sorts first by year,
- * then by name.
- *
- * Arguments are indices into extension_table.
- */
-static int
-extension_compare(const void *p1, const void *p2)
-{
- extension_index i1 = * (const extension_index *) p1;
- extension_index i2 = * (const extension_index *) p2;
- const struct extension *e1 = &extension_table[i1];
- const struct extension *e2 = &extension_table[i2];
- int res;
-
- res = (int)e1->year - (int)e2->year;
-
- if (res == 0) {
- res = strcmp(e1->name, e2->name);
- }
-
- return res;
-}
-
-
-/**
- * Construct the GL_EXTENSIONS string. Called the first time that
- * glGetString(GL_EXTENSIONS) is called.
- */
-GLubyte*
-_mesa_make_extension_string(struct gl_context *ctx)
-{
- /* The extension string. */
- char *exts = 0;
- /* Length of extension string. */
- size_t length = 0;
- /* Number of extensions */
- unsigned count;
- /* Indices of the extensions sorted by year */
- extension_index *extension_indices;
- /* String of extra extensions. */
- char *extra_extensions = get_extension_override(ctx);
- GLboolean *base = (GLboolean *) &ctx->Extensions;
- const struct extension *i;
- unsigned j;
- unsigned maxYear = ~0;
-
- /* Check if the MESA_EXTENSION_MAX_YEAR env var is set */
- {
- const char *env = getenv("MESA_EXTENSION_MAX_YEAR");
- if (env) {
- maxYear = atoi(env);
- _mesa_debug(ctx, "Note: limiting GL extensions to %u or earlier\n",
- maxYear);
- }
- }
-
- /* Compute length of the extension string. */
- count = 0;
- for (i = extension_table; i->name != 0; ++i) {
- if (base[i->offset] &&
- i->year <= maxYear &&
- (i->api_set & (1 << ctx->API))) {
- length += strlen(i->name) + 1; /* +1 for space */
- ++count;
- }
- }
- if (extra_extensions != NULL)
- length += 1 + strlen(extra_extensions); /* +1 for space */
-
- exts = (char *) calloc(length + 1, sizeof(char));
- if (exts == NULL) {
- free(extra_extensions);
- return NULL;
- }
-
- extension_indices = malloc(count * sizeof(extension_index));
- if (extension_indices == NULL) {
- free(exts);
- free(extra_extensions);
- return NULL;
- }
-
- /* Sort extensions in chronological order because certain old applications (e.g.,
- * Quake3 demo) store the extension list in a static size buffer so chronologically
- * order ensure that the extensions that such applications expect will fit into
- * that buffer.
- */
- j = 0;
- for (i = extension_table; i->name != 0; ++i) {
- if (base[i->offset] &&
- i->year <= maxYear &&
- (i->api_set & (1 << ctx->API))) {
- extension_indices[j++] = i - extension_table;
- }
- }
- assert(j == count);
- qsort(extension_indices, count, sizeof *extension_indices, extension_compare);
-
- /* Build the extension string.*/
- for (j = 0; j < count; ++j) {
- i = &extension_table[extension_indices[j]];
- assert(base[i->offset] && (i->api_set & (1 << ctx->API)));
- strcat(exts, i->name);
- strcat(exts, " ");
- }
- free(extension_indices);
- if (extra_extensions != 0) {
- strcat(exts, extra_extensions);
- free(extra_extensions);
- }
-
- return (GLubyte *) exts;
-}
-
-/**
- * Return number of enabled extensions.
- */
-GLuint
-_mesa_get_extension_count(struct gl_context *ctx)
-{
- GLboolean *base;
- const struct extension *i;
-
- /* only count once */
- if (ctx->Extensions.Count != 0)
- return ctx->Extensions.Count;
-
- base = (GLboolean *) &ctx->Extensions;
- for (i = extension_table; i->name != 0; ++i) {
- if (base[i->offset]) {
- ctx->Extensions.Count++;
- }
- }
- return ctx->Extensions.Count;
-}
-
-/**
- * Return name of i-th enabled extension
- */
-const GLubyte *
-_mesa_get_enabled_extension(struct gl_context *ctx, GLuint index)
-{
- const GLboolean *base;
- size_t n;
- const struct extension *i;
-
- if (index < 0)
- return NULL;
-
- base = (GLboolean*) &ctx->Extensions;
- n = 0;
- for (i = extension_table; i->name != 0; ++i) {
- if (n == index && base[i->offset]) {
- return (GLubyte*) i->name;
- } else if (base[i->offset]) {
- ++n;
- }
- }
-
- return NULL;
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.6
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/**
+ * \file
+ * \brief Extension handling
+ */
+
+
+#include "glheader.h"
+#include "imports.h"
+#include "context.h"
+#include "extensions.h"
+#include "mfeatures.h"
+#include "mtypes.h"
+
+enum {
+ DISABLE = 0,
+ GL = 1 << API_OPENGL,
+ ES1 = 1 << API_OPENGLES,
+ ES2 = 1 << API_OPENGLES2,
+};
+
+/**
+ * \brief An element of the \c extension_table.
+ */
+struct extension {
+ /** Name of extension, such as "GL_ARB_depth_clamp". */
+ const char *name;
+
+ /** Offset (in bytes) of the corresponding member in struct gl_extensions. */
+ size_t offset;
+
+ /** Set of API's in which the extension exists, as a bitset. */
+ uint8_t api_set;
+
+ /** Year the extension was proposed or approved. Used to sort the
+ * extension string chronologically. */
+ uint16_t year;
+};
+
+
+/**
+ * Given a member \c x of struct gl_extensions, return offset of
+ * \c x in bytes.
+ */
+#define o(x) offsetof(struct gl_extensions, x)
+
+
+/**
+ * \brief Table of supported OpenGL extensions for all API's.
+ *
+ * Note: The GL_MESAX_* extensions are placeholders for future ARB extensions.
+ */
+static const struct extension extension_table[] = {
+ /* ARB Extensions */
+ { "GL_ARB_ES2_compatibility", o(ARB_ES2_compatibility), GL, 2009 },
+ { "GL_ARB_blend_func_extended", o(ARB_blend_func_extended), GL, 2009 },
+ { "GL_ARB_color_buffer_float", o(ARB_color_buffer_float), GL, 2004 },
+ { "GL_ARB_copy_buffer", o(ARB_copy_buffer), GL, 2008 },
+ { "GL_ARB_conservative_depth", o(AMD_conservative_depth), GL, 2011 },
+ { "GL_ARB_depth_buffer_float", o(ARB_depth_buffer_float), GL, 2008 },
+ { "GL_ARB_depth_clamp", o(ARB_depth_clamp), GL, 2003 },
+ { "GL_ARB_depth_texture", o(ARB_depth_texture), GL, 2001 },
+ { "GL_ARB_draw_buffers", o(ARB_draw_buffers), GL, 2002 },
+ { "GL_ARB_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 },
+ { "GL_ARB_draw_elements_base_vertex", o(ARB_draw_elements_base_vertex), GL, 2009 },
+ { "GL_ARB_draw_instanced", o(ARB_draw_instanced), GL, 2008 },
+ { "GL_ARB_explicit_attrib_location", o(ARB_explicit_attrib_location), GL, 2009 },
+ { "GL_ARB_fragment_coord_conventions", o(ARB_fragment_coord_conventions), GL, 2009 },
+ { "GL_ARB_fragment_program", o(ARB_fragment_program), GL, 2002 },
+ { "GL_ARB_fragment_program_shadow", o(ARB_fragment_program_shadow), GL, 2003 },
+ { "GL_ARB_fragment_shader", o(ARB_fragment_shader), GL, 2002 },
+ { "GL_ARB_framebuffer_object", o(ARB_framebuffer_object), GL, 2005 },
+ { "GL_ARB_framebuffer_sRGB", o(EXT_framebuffer_sRGB), GL, 1998 },
+ { "GL_ARB_half_float_pixel", o(ARB_half_float_pixel), GL, 2003 },
+ { "GL_ARB_half_float_vertex", o(ARB_half_float_vertex), GL, 2008 },
+ { "GL_ARB_instanced_arrays", o(ARB_instanced_arrays), GL, 2008 },
+ { "GL_ARB_map_buffer_range", o(ARB_map_buffer_range), GL, 2008 },
+ { "GL_ARB_multisample", o(ARB_multisample), GL, 1994 },
+ { "GL_ARB_multitexture", o(ARB_multitexture), GL, 1998 },
+ { "GL_ARB_occlusion_query2", o(ARB_occlusion_query2), GL, 2003 },
+ { "GL_ARB_occlusion_query", o(ARB_occlusion_query), GL, 2001 },
+ { "GL_ARB_pixel_buffer_object", o(EXT_pixel_buffer_object), GL, 2004 },
+ { "GL_ARB_point_parameters", o(EXT_point_parameters), GL, 1997 },
+ { "GL_ARB_point_sprite", o(ARB_point_sprite), GL, 2003 },
+ { "GL_ARB_provoking_vertex", o(EXT_provoking_vertex), GL, 2009 },
+ { "GL_ARB_robustness", o(dummy_true), GL, 2010 },
+ { "GL_ARB_sampler_objects", o(ARB_sampler_objects), GL, 2009 },
+ { "GL_ARB_seamless_cube_map", o(ARB_seamless_cube_map), GL, 2009 },
+ { "GL_ARB_shader_objects", o(ARB_shader_objects), GL, 2002 },
+ { "GL_ARB_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 },
+ { "GL_ARB_shader_texture_lod", o(ARB_shader_texture_lod), GL, 2009 },
+ { "GL_ARB_shading_language_100", o(ARB_shading_language_100), GL, 2003 },
+ { "GL_ARB_shadow_ambient", o(ARB_shadow_ambient), GL, 2001 },
+ { "GL_ARB_shadow", o(ARB_shadow), GL, 2001 },
+ { "GL_ARB_sync", o(ARB_sync), GL, 2003 },
+ { "GL_ARB_texture_border_clamp", o(ARB_texture_border_clamp), GL, 2000 },
+ { "GL_ARB_texture_buffer_object", o(ARB_texture_buffer_object), GL, 2008 },
+ { "GL_ARB_texture_compression", o(ARB_texture_compression), GL, 2000 },
+ { "GL_ARB_texture_compression_rgtc", o(ARB_texture_compression_rgtc), GL, 2004 },
+ { "GL_ARB_texture_cube_map", o(ARB_texture_cube_map), GL, 1999 },
+ { "GL_ARB_texture_env_add", o(EXT_texture_env_add), GL, 1999 },
+ { "GL_ARB_texture_env_combine", o(ARB_texture_env_combine), GL, 2001 },
+ { "GL_ARB_texture_env_crossbar", o(ARB_texture_env_crossbar), GL, 2001 },
+ { "GL_ARB_texture_env_dot3", o(ARB_texture_env_dot3), GL, 2001 },
+ { "GL_ARB_texture_float", o(ARB_texture_float), GL, 2004 },
+ { "GL_ARB_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), GL, 2001 },
+ { "GL_ARB_texture_multisample", o(ARB_texture_multisample), GL, 2009 },
+ { "GL_ARB_texture_non_power_of_two", o(ARB_texture_non_power_of_two), GL, 2003 },
+ { "GL_ARB_texture_rectangle", o(NV_texture_rectangle), GL, 2004 },
+ { "GL_ARB_texture_rgb10_a2ui", o(ARB_texture_rgb10_a2ui), GL, 2009 },
+ { "GL_ARB_texture_rg", o(ARB_texture_rg), GL, 2008 },
+ { "GL_ARB_texture_swizzle", o(EXT_texture_swizzle), GL, 2008 },
+ { "GL_ARB_transform_feedback2", o(ARB_transform_feedback2), GL, 2010 },
+ { "GL_ARB_transpose_matrix", o(ARB_transpose_matrix), GL, 1999 },
+ { "GL_ARB_uniform_buffer_object", o(ARB_uniform_buffer_object), GL, 2002 },
+ { "GL_ARB_vertex_array_bgra", o(EXT_vertex_array_bgra), GL, 2008 },
+ { "GL_ARB_vertex_array_object", o(ARB_vertex_array_object), GL, 2006 },
+ { "GL_ARB_vertex_buffer_object", o(ARB_vertex_buffer_object), GL, 2003 },
+ { "GL_ARB_vertex_program", o(ARB_vertex_program), GL, 2002 },
+ { "GL_ARB_vertex_shader", o(ARB_vertex_shader), GL, 2002 },
+ { "GL_ARB_vertex_type_2_10_10_10_rev", o(ARB_vertex_type_2_10_10_10_rev), GL, 2009 },
+ { "GL_ARB_window_pos", o(ARB_window_pos), GL, 2001 },
+ /* EXT extensions */
+ { "GL_EXT_abgr", o(EXT_abgr), GL, 1995 },
+ { "GL_EXT_bgra", o(EXT_bgra), GL, 1995 },
+ { "GL_EXT_blend_color", o(EXT_blend_color), GL, 1995 },
+ { "GL_EXT_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 },
+ { "GL_EXT_blend_func_separate", o(EXT_blend_func_separate), GL, 1999 },
+ { "GL_EXT_blend_logic_op", o(EXT_blend_logic_op), GL, 1995 },
+ { "GL_EXT_blend_minmax", o(EXT_blend_minmax), GL | ES1 | ES2, 1995 },
+ { "GL_EXT_blend_subtract", o(EXT_blend_subtract), GL, 1995 },
+ { "GL_EXT_clip_volume_hint", o(EXT_clip_volume_hint), GL, 1996 },
+ { "GL_EXT_compiled_vertex_array", o(EXT_compiled_vertex_array), GL, 1996 },
+ { "GL_EXT_copy_texture", o(EXT_copy_texture), GL, 1995 },
+ { "GL_EXT_depth_bounds_test", o(EXT_depth_bounds_test), GL, 2002 },
+ { "GL_EXT_draw_buffers2", o(EXT_draw_buffers2), GL, 2006 },
+ { "GL_EXT_draw_instanced", o(ARB_draw_instanced), GL, 2006 },
+ { "GL_EXT_draw_range_elements", o(EXT_draw_range_elements), GL, 1997 },
+ { "GL_EXT_fog_coord", o(EXT_fog_coord), GL, 1999 },
+ { "GL_EXT_framebuffer_blit", o(EXT_framebuffer_blit), GL, 2005 },
+ { "GL_EXT_framebuffer_multisample", o(EXT_framebuffer_multisample), GL, 2005 },
+ { "GL_EXT_framebuffer_object", o(EXT_framebuffer_object), GL, 2000 },
+ { "GL_EXT_framebuffer_sRGB", o(EXT_framebuffer_sRGB), GL, 1998 },
+ { "GL_EXT_gpu_program_parameters", o(EXT_gpu_program_parameters), GL, 2006 },
+ { "GL_EXT_gpu_shader4", o(EXT_gpu_shader4), GL, 2006 },
+ { "GL_EXT_multi_draw_arrays", o(EXT_multi_draw_arrays), GL | ES1 | ES2, 1999 },
+ { "GL_EXT_packed_depth_stencil", o(EXT_packed_depth_stencil), GL, 2005 },
+ { "GL_EXT_packed_float", o(EXT_packed_float), GL, 2004 },
+ { "GL_EXT_packed_pixels", o(EXT_packed_pixels), GL, 1997 },
+ { "GL_EXT_paletted_texture", o(EXT_paletted_texture), GL, 1995 },
+ { "GL_EXT_pixel_buffer_object", o(EXT_pixel_buffer_object), GL, 2004 },
+ { "GL_EXT_point_parameters", o(EXT_point_parameters), GL, 1997 },
+ { "GL_EXT_polygon_offset", o(EXT_polygon_offset), GL, 1995 },
+ { "GL_EXT_provoking_vertex", o(EXT_provoking_vertex), GL, 2009 },
+ { "GL_EXT_rescale_normal", o(EXT_rescale_normal), GL, 1997 },
+ { "GL_EXT_secondary_color", o(EXT_secondary_color), GL, 1999 },
+ { "GL_EXT_separate_shader_objects", o(EXT_separate_shader_objects), GL, 2008 },
+ { "GL_EXT_separate_specular_color", o(EXT_separate_specular_color), GL, 1997 },
+ { "GL_EXT_shadow_funcs", o(EXT_shadow_funcs), GL, 2002 },
+ { "GL_EXT_shared_texture_palette", o(EXT_shared_texture_palette), GL, 2000 },
+ { "GL_EXT_stencil_two_side", o(EXT_stencil_two_side), GL, 2001 },
+ { "GL_EXT_stencil_wrap", o(EXT_stencil_wrap), GL, 2002 },
+ { "GL_EXT_subtexture", o(EXT_subtexture), GL, 1995 },
+ { "GL_EXT_texture3D", o(EXT_texture3D), GL, 1996 },
+ { "GL_EXT_texture_array", o(EXT_texture_array), GL, 2006 },
+ { "GL_EXT_texture_compression_dxt1", o(EXT_texture_compression_s3tc), GL | ES1 | ES2, 2004 },
+ { "GL_EXT_texture_compression_latc", o(EXT_texture_compression_latc), GL, 2006 },
+ { "GL_EXT_texture_compression_rgtc", o(ARB_texture_compression_rgtc), GL, 2004 },
+ { "GL_EXT_texture_compression_s3tc", o(EXT_texture_compression_s3tc), GL, 2000 },
+ { "GL_EXT_texture_cube_map", o(ARB_texture_cube_map), GL, 2001 },
+ { "GL_EXT_texture_edge_clamp", o(SGIS_texture_edge_clamp), GL, 1997 },
+ { "GL_EXT_texture_env_add", o(EXT_texture_env_add), GL, 1999 },
+ { "GL_EXT_texture_env_combine", o(EXT_texture_env_combine), GL, 2006 },
+ { "GL_EXT_texture_env_dot3", o(EXT_texture_env_dot3), GL, 2000 },
+ { "GL_EXT_texture_filter_anisotropic", o(EXT_texture_filter_anisotropic), GL | ES1 | ES2, 1999 },
+ { "GL_EXT_texture_format_BGRA8888", o(EXT_texture_format_BGRA8888), ES1 | ES2, 2009 },
+ { "GL_EXT_texture_integer", o(EXT_texture_integer), GL, 2006 },
+ { "GL_EXT_texture_lod_bias", o(EXT_texture_lod_bias), GL | ES1, 1999 },
+ { "GL_EXT_texture_mirror_clamp", o(EXT_texture_mirror_clamp), GL, 2004 },
+ { "GL_EXT_texture_object", o(EXT_texture_object), GL, 1995 },
+ { "GL_EXT_texture", o(EXT_texture), GL, 1996 },
+ { "GL_EXT_texture_rectangle", o(NV_texture_rectangle), GL, 2004 },
+ { "GL_EXT_texture_shared_exponent", o(EXT_texture_shared_exponent), GL, 2004 },
+ { "GL_EXT_texture_snorm", o(EXT_texture_snorm), GL, 2009 },
+ { "GL_EXT_texture_sRGB", o(EXT_texture_sRGB), GL, 2004 },
+ { "GL_EXT_texture_sRGB_decode", o(EXT_texture_sRGB_decode), GL, 2006 },
+ { "GL_EXT_texture_swizzle", o(EXT_texture_swizzle), GL, 2008 },
+ { "GL_EXT_texture_type_2_10_10_10_REV", o(dummy_true), ES2, 2008 },
+ { "GL_EXT_timer_query", o(EXT_timer_query), GL, 2006 },
+ { "GL_EXT_transform_feedback", o(EXT_transform_feedback), GL, 2011 },
+ { "GL_EXT_vertex_array_bgra", o(EXT_vertex_array_bgra), GL, 2008 },
+ { "GL_EXT_vertex_array", o(EXT_vertex_array), GL, 1995 },
+ { "GL_EXT_vertex_array_set", o(EXT_vertex_array_set), GL, 1997 },
+
+ /* OES extensions */
+ { "GL_OES_blend_equation_separate", o(EXT_blend_equation_separate), ES1, 2009 },
+ { "GL_OES_blend_func_separate", o(EXT_blend_func_separate), ES1, 2009 },
+ { "GL_OES_blend_subtract", o(EXT_blend_subtract), ES1, 2009 },
+ { "GL_OES_byte_coordinates", o(dummy_true), ES1, 2002 },
+ { "GL_OES_compressed_paletted_texture", o(dummy_false), DISABLE, 2003 },
+ { "GL_OES_depth24", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
+ { "GL_OES_depth32", o(dummy_false), DISABLE, 2005 },
+ { "GL_OES_depth_texture", o(ARB_depth_texture), ES2, 2006 },
+#if FEATURE_OES_draw_texture
+ { "GL_OES_draw_texture", o(OES_draw_texture), ES1 | ES2, 2004 },
+#endif
+#if FEATURE_OES_EGL_image
+ /* FIXME: Mesa expects GL_OES_EGL_image to be available in OpenGL contexts. */
+ { "GL_OES_EGL_image", o(OES_EGL_image), GL | ES1 | ES2, 2006 },
+#endif
+ { "GL_OES_element_index_uint", o(EXT_vertex_array), ES1 | ES2, 2005 },
+ { "GL_OES_fbo_render_mipmap", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
+ { "GL_OES_fixed_point", o(dummy_true), ES1, 2002 },
+ { "GL_OES_framebuffer_object", o(EXT_framebuffer_object), ES1, 2005 },
+ { "GL_OES_mapbuffer", o(ARB_vertex_buffer_object), ES1 | ES2, 2005 },
+ { "GL_OES_matrix_get", o(dummy_true), ES1, 2004 },
+ { "GL_OES_packed_depth_stencil", o(EXT_packed_depth_stencil), ES1 | ES2, 2007 },
+ { "GL_OES_point_size_array", o(dummy_true), ES1, 2004 },
+ { "GL_OES_point_sprite", o(ARB_point_sprite), ES1, 2004 },
+ { "GL_OES_query_matrix", o(dummy_true), ES1, 2003 },
+ { "GL_OES_read_format", o(OES_read_format), GL | ES1, 2003 },
+ { "GL_OES_rgb8_rgba8", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
+ { "GL_OES_single_precision", o(dummy_true), ES1, 2003 },
+ { "GL_OES_standard_derivatives", o(OES_standard_derivatives), ES2, 2005 },
+ { "GL_OES_stencil1", o(dummy_false), DISABLE, 2005 },
+ { "GL_OES_stencil4", o(dummy_false), DISABLE, 2005 },
+ { "GL_OES_stencil8", o(EXT_framebuffer_object), ES1 | ES2, 2005 },
+ { "GL_OES_stencil_wrap", o(EXT_stencil_wrap), ES1, 2002 },
+ { "GL_OES_texture_3D", o(EXT_texture3D), ES2, 2005 },
+ { "GL_OES_texture_cube_map", o(ARB_texture_cube_map), ES1, 2007 },
+ { "GL_OES_texture_env_crossbar", o(ARB_texture_env_crossbar), ES1, 2005 },
+ { "GL_OES_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), ES1, 2005 },
+ { "GL_OES_texture_npot", o(ARB_texture_non_power_of_two), ES2, 2005 },
+
+ /* Vendor extensions */
+ { "GL_3DFX_texture_compression_FXT1", o(TDFX_texture_compression_FXT1), GL, 1999 },
+ { "GL_AMD_conservative_depth", o(AMD_conservative_depth), GL, 2009 },
+ { "GL_AMD_draw_buffers_blend", o(ARB_draw_buffers_blend), GL, 2009 },
+ { "GL_AMD_seamless_cubemap_per_texture", o(AMD_seamless_cubemap_per_texture), GL, 2009 },
+ { "GL_AMD_shader_stencil_export", o(ARB_shader_stencil_export), GL, 2009 },
+ { "GL_APPLE_client_storage", o(APPLE_client_storage), GL, 2002 },
+ { "GL_APPLE_object_purgeable", o(APPLE_object_purgeable), GL, 2006 },
+ { "GL_APPLE_packed_pixels", o(APPLE_packed_pixels), GL, 2002 },
+ { "GL_APPLE_vertex_array_object", o(APPLE_vertex_array_object), GL, 2002 },
+ { "GL_ATI_blend_equation_separate", o(EXT_blend_equation_separate), GL, 2003 },
+ { "GL_ATI_draw_buffers", o(ARB_draw_buffers), GL, 2002 },
+ { "GL_ATI_envmap_bumpmap", o(ATI_envmap_bumpmap), GL, 2001 },
+ { "GL_ATI_fragment_shader", o(ATI_fragment_shader), GL, 2001 },
+ { "GL_ATI_separate_stencil", o(ATI_separate_stencil), GL, 2006 },
+ { "GL_ATI_texture_compression_3dc", o(ATI_texture_compression_3dc), GL, 2004 },
+ { "GL_ATI_texture_env_combine3", o(ATI_texture_env_combine3), GL, 2002 },
+ { "GL_ATI_texture_float", o(ARB_texture_float), GL, 2002 },
+ { "GL_ATI_texture_mirror_once", o(ATI_texture_mirror_once), GL, 2006 },
+ { "GL_IBM_multimode_draw_arrays", o(IBM_multimode_draw_arrays), GL, 1998 },
+ { "GL_IBM_rasterpos_clip", o(IBM_rasterpos_clip), GL, 1996 },
+ { "GL_IBM_texture_mirrored_repeat", o(ARB_texture_mirrored_repeat), GL, 1998 },
+ { "GL_INGR_blend_func_separate", o(EXT_blend_func_separate), GL, 1999 },
+ { "GL_MESA_pack_invert", o(MESA_pack_invert), GL, 2002 },
+ { "GL_MESA_resize_buffers", o(MESA_resize_buffers), GL, 1999 },
+ { "GL_MESA_texture_array", o(MESA_texture_array), GL, 2007 },
+ { "GL_MESA_texture_signed_rgba", o(EXT_texture_snorm), GL, 2009 },
+ { "GL_MESA_window_pos", o(ARB_window_pos), GL, 2000 },
+ { "GL_MESA_ycbcr_texture", o(MESA_ycbcr_texture), GL, 2002 },
+ { "GL_NV_blend_square", o(NV_blend_square), GL, 1999 },
+ { "GL_NV_conditional_render", o(NV_conditional_render), GL, 2008 },
+ { "GL_NV_depth_clamp", o(ARB_depth_clamp), GL, 2001 },
+ { "GL_NV_fragment_program", o(NV_fragment_program), GL, 2001 },
+ { "GL_NV_fragment_program_option", o(NV_fragment_program_option), GL, 2005 },
+ { "GL_NV_light_max_exponent", o(NV_light_max_exponent), GL, 1999 },
+ { "GL_NV_packed_depth_stencil", o(EXT_packed_depth_stencil), GL, 2000 },
+ { "GL_NV_point_sprite", o(NV_point_sprite), GL, 2001 },
+ { "GL_NV_primitive_restart", o(NV_primitive_restart), GL, 2002 },
+ { "GL_NV_texgen_reflection", o(NV_texgen_reflection), GL, 1999 },
+ { "GL_NV_texture_barrier", o(NV_texture_barrier), GL, 2009 },
+ { "GL_NV_texture_env_combine4", o(NV_texture_env_combine4), GL, 1999 },
+ { "GL_NV_texture_rectangle", o(NV_texture_rectangle), GL, 2000 },
+ { "GL_NV_vertex_program1_1", o(NV_vertex_program1_1), GL, 2001 },
+ { "GL_NV_vertex_program", o(NV_vertex_program), GL, 2000 },
+ { "GL_S3_s3tc", o(S3_s3tc), GL, 1999 },
+ { "GL_SGIS_generate_mipmap", o(SGIS_generate_mipmap), GL, 1997 },
+ { "GL_SGIS_texture_border_clamp", o(ARB_texture_border_clamp), GL, 1997 },
+ { "GL_SGIS_texture_edge_clamp", o(SGIS_texture_edge_clamp), GL, 1997 },
+ { "GL_SGIS_texture_lod", o(SGIS_texture_lod), GL, 1997 },
+ { "GL_SUN_multi_draw_arrays", o(EXT_multi_draw_arrays), GL, 1999 },
+
+ { 0, 0, 0, 0 },
+};
+
+
+/**
+ * Given an extension name, lookup up the corresponding member of struct
+ * gl_extensions and return that member's offset (in bytes). If the name is
+ * not found in the \c extension_table, return 0.
+ *
+ * \param name Name of extension.
+ * \return Offset of member in struct gl_extensions.
+ */
+static size_t
+name_to_offset(const char* name)
+{
+ const struct extension *i;
+
+ if (name == 0)
+ return 0;
+
+ for (i = extension_table; i->name != 0; ++i) {
+ if (strcmp(name, i->name) == 0)
+ return i->offset;
+ }
+
+ return 0;
+}
+
+
+/**
+ * \brief Extensions enabled by default.
+ *
+ * These extensions are enabled by _mesa_init_extensions().
+ *
+ * XXX: Should these defaults also apply to GLES?
+ */
+static const size_t default_extensions[] = {
+ o(ARB_copy_buffer),
+ o(ARB_draw_buffers),
+ o(ARB_multisample),
+ o(ARB_texture_compression),
+ o(ARB_transpose_matrix),
+ o(ARB_vertex_buffer_object),
+ o(ARB_window_pos),
+
+ o(EXT_abgr),
+ o(EXT_bgra),
+ o(EXT_compiled_vertex_array),
+ o(EXT_copy_texture),
+ o(EXT_draw_range_elements),
+ o(EXT_multi_draw_arrays),
+ o(EXT_packed_pixels),
+ o(EXT_polygon_offset),
+ o(EXT_rescale_normal),
+ o(EXT_separate_specular_color),
+ o(EXT_subtexture),
+ o(EXT_texture),
+ o(EXT_texture3D),
+ o(EXT_texture_object),
+ o(EXT_vertex_array),
+
+ o(OES_read_format),
+ o(OES_standard_derivatives),
+
+ /* Vendor Extensions */
+ o(APPLE_packed_pixels),
+ o(IBM_multimode_draw_arrays),
+ o(IBM_rasterpos_clip),
+ o(NV_light_max_exponent),
+ o(NV_texgen_reflection),
+ o(SGIS_generate_mipmap),
+ o(SGIS_texture_edge_clamp),
+ o(SGIS_texture_lod),
+
+ 0,
+};
+
+
+/**
+ * Enable all extensions suitable for a software-only renderer.
+ * This is a convenience function used by the XMesa, OSMesa, GGI drivers, etc.
+ */
+void
+_mesa_enable_sw_extensions(struct gl_context *ctx)
+{
+ /*ctx->Extensions.ARB_copy_buffer = GL_TRUE;*/
+ ctx->Extensions.ARB_depth_clamp = GL_TRUE;
+ ctx->Extensions.ARB_depth_texture = GL_TRUE;
+ /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/
+ ctx->Extensions.ARB_draw_elements_base_vertex = GL_TRUE;
+ ctx->Extensions.ARB_draw_instanced = GL_TRUE;
+ ctx->Extensions.ARB_explicit_attrib_location = GL_TRUE;
+ ctx->Extensions.ARB_fragment_coord_conventions = GL_TRUE;
+#if FEATURE_ARB_fragment_program
+ ctx->Extensions.ARB_fragment_program = GL_TRUE;
+ ctx->Extensions.ARB_fragment_program_shadow = GL_TRUE;
+#endif
+#if FEATURE_ARB_fragment_shader
+ ctx->Extensions.ARB_fragment_shader = GL_TRUE;
+#endif
+#if FEATURE_ARB_framebuffer_object
+ ctx->Extensions.ARB_framebuffer_object = GL_TRUE;
+#endif
+#if FEATURE_ARB_geometry_shader4 && 0
+ /* XXX re-enable when GLSL compiler again supports geometry shaders */
+ ctx->Extensions.ARB_geometry_shader4 = GL_TRUE;
+#endif
+ ctx->Extensions.ARB_half_float_pixel = GL_TRUE;
+ ctx->Extensions.ARB_half_float_vertex = GL_TRUE;
+ ctx->Extensions.ARB_map_buffer_range = GL_TRUE;
+ ctx->Extensions.ARB_multitexture = GL_TRUE;
+#if FEATURE_queryobj
+ ctx->Extensions.ARB_occlusion_query = GL_TRUE;
+ ctx->Extensions.ARB_occlusion_query2 = GL_TRUE;
+#endif
+ ctx->Extensions.ARB_point_sprite = GL_TRUE;
+#if FEATURE_ARB_shader_objects
+ ctx->Extensions.ARB_shader_objects = GL_TRUE;
+ ctx->Extensions.EXT_separate_shader_objects = GL_TRUE;
+#endif
+#if FEATURE_ARB_shading_language_100
+ ctx->Extensions.ARB_shading_language_100 = GL_TRUE;
+#endif
+ ctx->Extensions.ARB_shadow = GL_TRUE;
+ ctx->Extensions.ARB_shadow_ambient = GL_TRUE;
+ ctx->Extensions.ARB_texture_border_clamp = GL_TRUE;
+ ctx->Extensions.ARB_texture_cube_map = GL_TRUE;
+ ctx->Extensions.ARB_texture_env_combine = GL_TRUE;
+ ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
+ ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
+ /*ctx->Extensions.ARB_texture_float = GL_TRUE;*/
+ ctx->Extensions.ARB_texture_mirrored_repeat = GL_TRUE;
+ ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE;
+ ctx->Extensions.ARB_texture_rg = GL_TRUE;
+ ctx->Extensions.ARB_texture_compression_rgtc = GL_TRUE;
+ ctx->Extensions.ARB_vertex_array_object = GL_TRUE;
+#if FEATURE_ARB_vertex_program
+ ctx->Extensions.ARB_vertex_program = GL_TRUE;
+#endif
+#if FEATURE_ARB_vertex_shader
+ ctx->Extensions.ARB_vertex_shader = GL_TRUE;
+#endif
+#if FEATURE_ARB_vertex_buffer_object
+ /*ctx->Extensions.ARB_vertex_buffer_object = GL_TRUE;*/
+#endif
+#if FEATURE_ARB_sync
+ ctx->Extensions.ARB_sync = GL_TRUE;
+#endif
+ ctx->Extensions.APPLE_vertex_array_object = GL_TRUE;
+#if FEATURE_APPLE_object_purgeable
+ ctx->Extensions.APPLE_object_purgeable = GL_TRUE;
+#endif
+ ctx->Extensions.ATI_envmap_bumpmap = GL_TRUE;
+#if FEATURE_ATI_fragment_shader
+ ctx->Extensions.ATI_fragment_shader = GL_TRUE;
+#endif
+ ctx->Extensions.ATI_texture_compression_3dc = GL_TRUE;
+ ctx->Extensions.ATI_texture_env_combine3 = GL_TRUE;
+ ctx->Extensions.ATI_texture_mirror_once = GL_TRUE;
+ ctx->Extensions.ATI_separate_stencil = GL_TRUE;
+ ctx->Extensions.EXT_blend_color = GL_TRUE;
+ ctx->Extensions.EXT_blend_equation_separate = GL_TRUE;
+ ctx->Extensions.EXT_blend_func_separate = GL_TRUE;
+ ctx->Extensions.EXT_blend_logic_op = GL_TRUE;
+ ctx->Extensions.EXT_blend_minmax = GL_TRUE;
+ ctx->Extensions.EXT_blend_subtract = GL_TRUE;
+ ctx->Extensions.EXT_depth_bounds_test = GL_TRUE;
+ ctx->Extensions.EXT_draw_buffers2 = GL_TRUE;
+ ctx->Extensions.EXT_fog_coord = GL_TRUE;
+#if FEATURE_EXT_framebuffer_object
+ ctx->Extensions.EXT_framebuffer_object = GL_TRUE;
+#endif
+#if FEATURE_EXT_framebuffer_blit
+ ctx->Extensions.EXT_framebuffer_blit = GL_TRUE;
+#endif
+#if FEATURE_ARB_framebuffer_object
+ ctx->Extensions.EXT_framebuffer_multisample = GL_TRUE;
+#endif
+ /*ctx->Extensions.EXT_multi_draw_arrays = GL_TRUE;*/
+ ctx->Extensions.EXT_packed_depth_stencil = GL_TRUE;
+ ctx->Extensions.EXT_paletted_texture = GL_TRUE;
+#if FEATURE_EXT_pixel_buffer_object
+ ctx->Extensions.EXT_pixel_buffer_object = GL_TRUE;
+#endif
+ ctx->Extensions.EXT_point_parameters = GL_TRUE;
+ ctx->Extensions.EXT_provoking_vertex = GL_TRUE;
+ ctx->Extensions.EXT_shadow_funcs = GL_TRUE;
+ ctx->Extensions.EXT_secondary_color = GL_TRUE;
+ ctx->Extensions.EXT_shared_texture_palette = GL_TRUE;
+ ctx->Extensions.EXT_stencil_wrap = GL_TRUE;
+ ctx->Extensions.EXT_stencil_two_side = GL_TRUE;
+ ctx->Extensions.EXT_texture_array = GL_TRUE;
+ ctx->Extensions.EXT_texture_compression_latc = GL_TRUE;
+ ctx->Extensions.EXT_texture_env_add = GL_TRUE;
+ ctx->Extensions.EXT_texture_env_combine = GL_TRUE;
+ ctx->Extensions.EXT_texture_env_dot3 = GL_TRUE;
+ ctx->Extensions.EXT_texture_filter_anisotropic = GL_TRUE;
+ ctx->Extensions.EXT_texture_mirror_clamp = GL_TRUE;
+ ctx->Extensions.EXT_texture_lod_bias = GL_TRUE;
+ ctx->Extensions.EXT_texture_shared_exponent = GL_TRUE;
+#if FEATURE_EXT_texture_sRGB
+ ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
+ ctx->Extensions.EXT_texture_sRGB_decode = GL_TRUE;
+#endif
+ ctx->Extensions.EXT_texture_swizzle = GL_TRUE;
+#if FEATURE_EXT_transform_feedback
+ /*ctx->Extensions.EXT_transform_feedback = GL_TRUE;*/
+#endif
+ ctx->Extensions.EXT_vertex_array_bgra = GL_TRUE;
+ /*ctx->Extensions.IBM_multimode_draw_arrays = GL_TRUE;*/
+ ctx->Extensions.MESA_pack_invert = GL_TRUE;
+ ctx->Extensions.MESA_resize_buffers = GL_TRUE;
+ ctx->Extensions.MESA_texture_array = GL_TRUE;
+ ctx->Extensions.MESA_ycbcr_texture = GL_TRUE;
+ ctx->Extensions.NV_blend_square = GL_TRUE;
+ ctx->Extensions.NV_conditional_render = GL_TRUE;
+ /*ctx->Extensions.NV_light_max_exponent = GL_TRUE;*/
+ ctx->Extensions.NV_point_sprite = GL_TRUE;
+ ctx->Extensions.NV_texture_env_combine4 = GL_TRUE;
+ ctx->Extensions.NV_texture_rectangle = GL_TRUE;
+ /*ctx->Extensions.NV_texgen_reflection = GL_TRUE;*/
+#if FEATURE_NV_vertex_program
+ ctx->Extensions.NV_vertex_program = GL_TRUE;
+ ctx->Extensions.NV_vertex_program1_1 = GL_TRUE;
+#endif
+#if FEATURE_NV_fragment_program
+ ctx->Extensions.NV_fragment_program = GL_TRUE;
+#endif
+#if FEATURE_NV_fragment_program && FEATURE_ARB_fragment_program
+ ctx->Extensions.NV_fragment_program_option = GL_TRUE;
+#endif
+ /*ctx->Extensions.SGIS_generate_mipmap = GL_TRUE;*/
+ ctx->Extensions.SGIS_texture_edge_clamp = GL_TRUE;
+#if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
+ ctx->Extensions.EXT_gpu_program_parameters = GL_TRUE;
+#endif
+#if FEATURE_texture_fxt1
+ _mesa_enable_extension(ctx, "GL_3DFX_texture_compression_FXT1");
+#endif
+#if FEATURE_texture_s3tc
+ if (ctx->Mesa_DXTn) {
+ _mesa_enable_extension(ctx, "GL_EXT_texture_compression_s3tc");
+ _mesa_enable_extension(ctx, "GL_S3_s3tc");
+ }
+#endif
+}
+
+
+/**
+ * Enable common EXT extensions in the ARB_imaging subset.
+ */
+void
+_mesa_enable_imaging_extensions(struct gl_context *ctx)
+{
+ ctx->Extensions.EXT_blend_color = GL_TRUE;
+ ctx->Extensions.EXT_blend_logic_op = GL_TRUE;
+ ctx->Extensions.EXT_blend_minmax = GL_TRUE;
+ ctx->Extensions.EXT_blend_subtract = GL_TRUE;
+}
+
+
+
+/**
+ * Enable all OpenGL 1.3 features and extensions.
+ * A convenience function to be called by drivers.
+ */
+void
+_mesa_enable_1_3_extensions(struct gl_context *ctx)
+{
+ /*ctx->Extensions.ARB_multisample = GL_TRUE;*/
+ ctx->Extensions.ARB_multitexture = GL_TRUE;
+ ctx->Extensions.ARB_texture_border_clamp = GL_TRUE;
+ /*ctx->Extensions.ARB_texture_compression = GL_TRUE;*/
+ ctx->Extensions.ARB_texture_cube_map = GL_TRUE;
+ ctx->Extensions.ARB_texture_env_combine = GL_TRUE;
+ ctx->Extensions.ARB_texture_env_dot3 = GL_TRUE;
+ ctx->Extensions.EXT_texture_env_add = GL_TRUE;
+ /*ctx->Extensions.ARB_transpose_matrix = GL_TRUE;*/
+}
+
+
+
+/**
+ * Enable all OpenGL 1.4 features and extensions.
+ * A convenience function to be called by drivers.
+ */
+void
+_mesa_enable_1_4_extensions(struct gl_context *ctx)
+{
+ ctx->Extensions.ARB_depth_texture = GL_TRUE;
+ ctx->Extensions.ARB_shadow = GL_TRUE;
+ ctx->Extensions.ARB_texture_env_crossbar = GL_TRUE;
+ ctx->Extensions.ARB_texture_mirrored_repeat = GL_TRUE;
+ ctx->Extensions.ARB_window_pos = GL_TRUE;
+ ctx->Extensions.EXT_blend_color = GL_TRUE;
+ ctx->Extensions.EXT_blend_func_separate = GL_TRUE;
+ ctx->Extensions.EXT_blend_minmax = GL_TRUE;
+ ctx->Extensions.EXT_blend_subtract = GL_TRUE;
+ ctx->Extensions.EXT_fog_coord = GL_TRUE;
+ /*ctx->Extensions.EXT_multi_draw_arrays = GL_TRUE;*/
+ ctx->Extensions.EXT_point_parameters = GL_TRUE;
+ ctx->Extensions.EXT_secondary_color = GL_TRUE;
+ ctx->Extensions.EXT_stencil_wrap = GL_TRUE;
+ ctx->Extensions.EXT_texture_lod_bias = GL_TRUE;
+ /*ctx->Extensions.SGIS_generate_mipmap = GL_TRUE;*/
+}
+
+
+/**
+ * Enable all OpenGL 1.5 features and extensions.
+ * A convenience function to be called by drivers.
+ */
+void
+_mesa_enable_1_5_extensions(struct gl_context *ctx)
+{
+ ctx->Extensions.ARB_occlusion_query = GL_TRUE;
+ /*ctx->Extensions.ARB_vertex_buffer_object = GL_TRUE;*/
+ ctx->Extensions.EXT_shadow_funcs = GL_TRUE;
+}
+
+
+/**
+ * Enable all OpenGL 2.0 features and extensions.
+ * A convenience function to be called by drivers.
+ */
+void
+_mesa_enable_2_0_extensions(struct gl_context *ctx)
+{
+ /*ctx->Extensions.ARB_draw_buffers = GL_TRUE;*/
+#if FEATURE_ARB_fragment_shader
+ ctx->Extensions.ARB_fragment_shader = GL_TRUE;
+#endif
+ ctx->Extensions.ARB_point_sprite = GL_TRUE;
+ ctx->Extensions.EXT_blend_equation_separate = GL_TRUE;
+ ctx->Extensions.ARB_texture_non_power_of_two = GL_TRUE;
+#if FEATURE_ARB_shader_objects
+ ctx->Extensions.ARB_shader_objects = GL_TRUE;
+#endif
+#if FEATURE_ARB_shading_language_100
+ ctx->Extensions.ARB_shading_language_100 = GL_TRUE;
+#endif
+ ctx->Extensions.EXT_stencil_two_side = GL_TRUE;
+#if FEATURE_ARB_vertex_shader
+ ctx->Extensions.ARB_vertex_shader = GL_TRUE;
+#endif
+}
+
+
+/**
+ * Enable all OpenGL 2.1 features and extensions.
+ * A convenience function to be called by drivers.
+ */
+void
+_mesa_enable_2_1_extensions(struct gl_context *ctx)
+{
+#if FEATURE_EXT_pixel_buffer_object
+ ctx->Extensions.EXT_pixel_buffer_object = GL_TRUE;
+#endif
+#if FEATURE_EXT_texture_sRGB
+ ctx->Extensions.EXT_texture_sRGB = GL_TRUE;
+#endif
+}
+
+
+/**
+ * Either enable or disable the named extension.
+ * \return GL_TRUE for success, GL_FALSE if invalid extension name
+ */
+static GLboolean
+set_extension( struct gl_context *ctx, const char *name, GLboolean state )
+{
+ size_t offset;
+
+ if (ctx->Extensions.String) {
+ /* The string was already queried - can't change it now! */
+ _mesa_problem(ctx, "Trying to enable/disable extension after glGetString(GL_EXTENSIONS): %s", name);
+ return GL_FALSE;
+ }
+
+ offset = name_to_offset(name);
+ if (offset == 0) {
+ _mesa_problem(ctx, "Trying to enable/disable unknown extension %s",
+ name);
+ return GL_FALSE;
+ } else if (offset == o(dummy_true) && state == GL_FALSE) {
+ _mesa_problem(ctx, "Trying to disable a permanently enabled extension: "
+ "%s", name);
+ return GL_FALSE;
+ } else {
+ GLboolean *base = (GLboolean *) &ctx->Extensions;
+ base[offset] = state;
+ return GL_TRUE;
+ }
+}
+
+
+/**
+ * Enable the named extension.
+ * Typically called by drivers.
+ */
+void
+_mesa_enable_extension( struct gl_context *ctx, const char *name )
+{
+ if (!set_extension(ctx, name, GL_TRUE))
+ _mesa_problem(ctx, "Trying to enable unknown extension: %s", name);
+}
+
+
+/**
+ * Disable the named extension.
+ * XXX is this really needed???
+ */
+void
+_mesa_disable_extension( struct gl_context *ctx, const char *name )
+{
+ if (!set_extension(ctx, name, GL_FALSE))
+ _mesa_problem(ctx, "Trying to disable unknown extension: %s", name);
+}
+
+
+/**
+ * Test if the named extension is enabled in this context.
+ */
+GLboolean
+_mesa_extension_is_enabled( struct gl_context *ctx, const char *name )
+{
+ size_t offset;
+ GLboolean *base;
+
+ if (name == 0)
+ return GL_FALSE;
+
+ offset = name_to_offset(name);
+ if (offset == 0)
+ return GL_FALSE;
+ base = (GLboolean *) &ctx->Extensions;
+ return base[offset];
+}
+
+
+/**
+ * \brief Apply the \c MESA_EXTENSION_OVERRIDE environment variable.
+ *
+ * \c MESA_EXTENSION_OVERRIDE is a space-separated list of extensions to
+ * enable or disable. The list is processed thus:
+ * - Enable recognized extension names that are prefixed with '+'.
+ * - Disable recognized extension names that are prefixed with '-'.
+ * - Enable recognized extension names that are not prefixed.
+ * - Collect unrecognized extension names in a new string.
+ *
+ * \return Space-separated list of unrecognized extension names (which must
+ * be freed). Does not return \c NULL.
+ */
+static char *
+get_extension_override( struct gl_context *ctx )
+{
+ const char *env_const = _mesa_getenv("MESA_EXTENSION_OVERRIDE");
+ char *env;
+ char *ext;
+ char *extra_exts;
+ int len;
+
+ if (env_const == NULL) {
+ /* Return the empty string rather than NULL. This simplifies the logic
+ * of client functions. */
+ return calloc(1, sizeof(char));
+ }
+
+ /* extra_exts: List of unrecognized extensions. */
+ extra_exts = calloc(strlen(env_const), sizeof(char));
+
+ /* Copy env_const because strtok() is destructive. */
+ env = strdup(env_const);
+ for (ext = strtok(env, " "); ext != NULL; ext = strtok(NULL, " ")) {
+ int enable;
+ int recognized;
+ switch (ext[0]) {
+ case '+':
+ enable = 1;
+ ++ext;
+ break;
+ case '-':
+ enable = 0;
+ ++ext;
+ break;
+ default:
+ enable = 1;
+ break;
+ }
+ recognized = set_extension(ctx, ext, enable);
+ if (!recognized) {
+ strcat(extra_exts, ext);
+ strcat(extra_exts, " ");
+ }
+ }
+
+ /* Remove trailing space. */
+ len = strlen(extra_exts);
+ if (extra_exts[len - 1] == ' ')
+ extra_exts[len - 1] = '\0';
+
+ return extra_exts;
+}
+
+
+/**
+ * \brief Initialize extension tables and enable default extensions.
+ *
+ * This should be called during context initialization.
+ * Note: Sets gl_extensions.dummy_true to true.
+ */
+void
+_mesa_init_extensions( struct gl_context *ctx )
+{
+ GLboolean *base = (GLboolean *) &ctx->Extensions;
+ GLboolean *sentinel = base + o(extension_sentinel);
+ GLboolean *i;
+ const size_t *j;
+
+ /* First, turn all extensions off. */
+ for (i = base; i != sentinel; ++i)
+ *i = GL_FALSE;
+
+ /* Then, selectively turn default extensions on. */
+ ctx->Extensions.dummy_true = GL_TRUE;
+ for (j = default_extensions; *j != 0; ++j)
+ base[*j] = GL_TRUE;
+}
+
+
+typedef unsigned short extension_index;
+
+
+/**
+ * Compare two entries of the extensions table. Sorts first by year,
+ * then by name.
+ *
+ * Arguments are indices into extension_table.
+ */
+static int
+extension_compare(const void *p1, const void *p2)
+{
+ extension_index i1 = * (const extension_index *) p1;
+ extension_index i2 = * (const extension_index *) p2;
+ const struct extension *e1 = &extension_table[i1];
+ const struct extension *e2 = &extension_table[i2];
+ int res;
+
+ res = (int)e1->year - (int)e2->year;
+
+ if (res == 0) {
+ res = strcmp(e1->name, e2->name);
+ }
+
+ return res;
+}
+
+
+/**
+ * Construct the GL_EXTENSIONS string. Called the first time that
+ * glGetString(GL_EXTENSIONS) is called.
+ */
+GLubyte*
+_mesa_make_extension_string(struct gl_context *ctx)
+{
+ /* The extension string. */
+ char *exts = 0;
+ /* Length of extension string. */
+ size_t length = 0;
+ /* Number of extensions */
+ unsigned count;
+ /* Indices of the extensions sorted by year */
+ extension_index *extension_indices;
+ /* String of extra extensions. */
+ char *extra_extensions = get_extension_override(ctx);
+ GLboolean *base = (GLboolean *) &ctx->Extensions;
+ const struct extension *i;
+ unsigned j;
+ unsigned maxYear = ~0;
+
+ /* Check if the MESA_EXTENSION_MAX_YEAR env var is set */
+ {
+ const char *env = getenv("MESA_EXTENSION_MAX_YEAR");
+ if (env) {
+ maxYear = atoi(env);
+ _mesa_debug(ctx, "Note: limiting GL extensions to %u or earlier\n",
+ maxYear);
+ }
+ }
+
+ /* Compute length of the extension string. */
+ count = 0;
+ for (i = extension_table; i->name != 0; ++i) {
+ if (base[i->offset] &&
+ i->year <= maxYear &&
+ (i->api_set & (1 << ctx->API))) {
+ length += strlen(i->name) + 1; /* +1 for space */
+ ++count;
+ }
+ }
+ if (extra_extensions != NULL)
+ length += 1 + strlen(extra_extensions); /* +1 for space */
+
+ exts = (char *) calloc(length + 1, sizeof(char));
+ if (exts == NULL) {
+ free(extra_extensions);
+ return NULL;
+ }
+
+ extension_indices = malloc(count * sizeof(extension_index));
+ if (extension_indices == NULL) {
+ free(exts);
+ free(extra_extensions);
+ return NULL;
+ }
+
+ /* Sort extensions in chronological order because certain old applications (e.g.,
+ * Quake3 demo) store the extension list in a static size buffer so chronologically
+ * order ensure that the extensions that such applications expect will fit into
+ * that buffer.
+ */
+ j = 0;
+ for (i = extension_table; i->name != 0; ++i) {
+ if (base[i->offset] &&
+ i->year <= maxYear &&
+ (i->api_set & (1 << ctx->API))) {
+ extension_indices[j++] = i - extension_table;
+ }
+ }
+ assert(j == count);
+ qsort(extension_indices, count, sizeof *extension_indices, extension_compare);
+
+ /* Build the extension string.*/
+ for (j = 0; j < count; ++j) {
+ i = &extension_table[extension_indices[j]];
+ assert(base[i->offset] && (i->api_set & (1 << ctx->API)));
+ strcat(exts, i->name);
+ strcat(exts, " ");
+ }
+ free(extension_indices);
+ if (extra_extensions != 0) {
+ strcat(exts, extra_extensions);
+ free(extra_extensions);
+ }
+
+ return (GLubyte *) exts;
+}
+
+/**
+ * Return number of enabled extensions.
+ */
+GLuint
+_mesa_get_extension_count(struct gl_context *ctx)
+{
+ GLboolean *base;
+ const struct extension *i;
+
+ /* only count once */
+ if (ctx->Extensions.Count != 0)
+ return ctx->Extensions.Count;
+
+ base = (GLboolean *) &ctx->Extensions;
+ for (i = extension_table; i->name != 0; ++i) {
+ if (base[i->offset]) {
+ ctx->Extensions.Count++;
+ }
+ }
+ return ctx->Extensions.Count;
+}
+
+/**
+ * Return name of i-th enabled extension
+ */
+const GLubyte *
+_mesa_get_enabled_extension(struct gl_context *ctx, GLuint index)
+{
+ const GLboolean *base;
+ size_t n;
+ const struct extension *i;
+
+ if (index < 0)
+ return NULL;
+
+ base = (GLboolean*) &ctx->Extensions;
+ n = 0;
+ for (i = extension_table; i->name != 0; ++i) {
+ if (n == index && base[i->offset]) {
+ return (GLubyte*) i->name;
+ } else if (base[i->offset]) {
+ ++n;
+ }
+ }
+
+ return NULL;
+}
diff --git a/mesalib/src/mesa/main/fbobject.c b/mesalib/src/mesa/main/fbobject.c
index 7c31d2577..aa38bdd41 100644
--- a/mesalib/src/mesa/main/fbobject.c
+++ b/mesalib/src/mesa/main/fbobject.c
@@ -1984,10 +1984,26 @@ _mesa_FramebufferTexture1DEXT(GLenum target, GLenum attachment,
{
GET_CURRENT_CONTEXT(ctx);
- if ((texture != 0) && (textarget != GL_TEXTURE_1D)) {
- _mesa_error(ctx, GL_INVALID_ENUM,
- "glFramebufferTexture1DEXT(textarget)");
- return;
+ if (texture != 0) {
+ GLboolean error;
+
+ switch (textarget) {
+ case GL_TEXTURE_1D:
+ error = GL_FALSE;
+ break;
+ case GL_TEXTURE_1D_ARRAY:
+ error = !ctx->Extensions.EXT_texture_array;
+ break;
+ default:
+ error = GL_TRUE;
+ }
+
+ if (error) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glFramebufferTexture1DEXT(textarget=%s)",
+ _mesa_lookup_enum_by_nr(textarget));
+ return;
+ }
}
framebuffer_texture(ctx, "1D", target, attachment, textarget, texture,
@@ -2001,13 +2017,37 @@ _mesa_FramebufferTexture2DEXT(GLenum target, GLenum attachment,
{
GET_CURRENT_CONTEXT(ctx);
- if ((texture != 0) &&
- (textarget != GL_TEXTURE_2D) &&
- (textarget != GL_TEXTURE_RECTANGLE_ARB) &&
- (!is_cube_face(textarget))) {
- _mesa_error(ctx, GL_INVALID_OPERATION,
- "glFramebufferTexture2DEXT(textarget=0x%x)", textarget);
- return;
+ if (texture != 0) {
+ GLboolean error;
+
+ switch (textarget) {
+ case GL_TEXTURE_2D:
+ error = GL_FALSE;
+ break;
+ case GL_TEXTURE_RECTANGLE:
+ error = !ctx->Extensions.NV_texture_rectangle;
+ break;
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_X:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_X:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Y:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Y:
+ case GL_TEXTURE_CUBE_MAP_POSITIVE_Z:
+ case GL_TEXTURE_CUBE_MAP_NEGATIVE_Z:
+ error = !ctx->Extensions.ARB_texture_cube_map;
+ break;
+ case GL_TEXTURE_2D_ARRAY:
+ error = !ctx->Extensions.EXT_texture_array;
+ break;
+ default:
+ error = GL_FALSE;
+ }
+
+ if (error) {
+ _mesa_error(ctx, GL_INVALID_OPERATION,
+ "glFramebufferTexture2DEXT(textarget=%s)",
+ _mesa_lookup_enum_by_nr(textarget));
+ return;
+ }
}
framebuffer_texture(ctx, "2D", target, attachment, textarget, texture,
@@ -2023,7 +2063,7 @@ _mesa_FramebufferTexture3DEXT(GLenum target, GLenum attachment,
GET_CURRENT_CONTEXT(ctx);
if ((texture != 0) && (textarget != GL_TEXTURE_3D)) {
- _mesa_error(ctx, GL_INVALID_ENUM,
+ _mesa_error(ctx, GL_INVALID_OPERATION,
"glFramebufferTexture3DEXT(textarget)");
return;
}
@@ -2346,6 +2386,8 @@ void GLAPIENTRY
_mesa_GenerateMipmapEXT(GLenum target)
{
struct gl_texture_object *texObj;
+ GLboolean error;
+
GET_CURRENT_CONTEXT(ctx);
ASSERT_OUTSIDE_BEGIN_END(ctx);
@@ -2355,12 +2397,22 @@ _mesa_GenerateMipmapEXT(GLenum target)
case GL_TEXTURE_1D:
case GL_TEXTURE_2D:
case GL_TEXTURE_3D:
+ error = GL_FALSE;
+ break;
case GL_TEXTURE_CUBE_MAP:
- /* OK, legal value */
+ error = !ctx->Extensions.ARB_texture_cube_map;
+ break;
+ case GL_TEXTURE_1D_ARRAY:
+ case GL_TEXTURE_2D_ARRAY:
+ error = !ctx->Extensions.EXT_texture_array;
break;
default:
- /* XXX need to implement GL_TEXTURE_1D_ARRAY and GL_TEXTURE_2D_ARRAY */
- _mesa_error(ctx, GL_INVALID_ENUM, "glGenerateMipmapEXT(target)");
+ error = GL_TRUE;
+ }
+
+ if (error) {
+ _mesa_error(ctx, GL_INVALID_ENUM, "glGenerateMipmapEXT(target=%s)",
+ _mesa_lookup_enum_by_nr(target));
return;
}
diff --git a/mesalib/src/mesa/main/imports.c b/mesalib/src/mesa/main/imports.c
index 0a572ec22..8f0971959 100644
--- a/mesalib/src/mesa/main/imports.c
+++ b/mesalib/src/mesa/main/imports.c
@@ -753,7 +753,8 @@ _mesa_strdup( const char *s )
float
_mesa_strtof( const char *s, char **end )
{
-#if defined(_GNU_SOURCE) && !defined(__CYGWIN__) && !defined(__FreeBSD__)
+#if defined(_GNU_SOURCE) && !defined(__CYGWIN__) && !defined(__FreeBSD__) && \
+ !defined(ANDROID)
static locale_t loc = NULL;
if (!loc) {
loc = newlocale(LC_CTYPE_MASK, "C", NULL);
diff --git a/mesalib/src/mesa/main/imports.h b/mesalib/src/mesa/main/imports.h
index d500245b1..df145ea6f 100644
--- a/mesalib/src/mesa/main/imports.h
+++ b/mesalib/src/mesa/main/imports.h
@@ -134,7 +134,13 @@ typedef union { GLfloat f; GLint i; } fi_type;
#define exp2f(f) ((float) exp2(f))
#define floorf(f) ((float) floor(f))
#define logf(f) ((float) log(f))
+
+#ifdef ANDROID
+#define log2f(f) (logf(f) * (float) (1.0 / M_LN2))
+#else
#define log2f(f) ((float) log2(f))
+#endif
+
#define powf(x,y) ((float) pow(x,y))
#define sinf(f) ((float) sin(f))
#define sinhf(f) ((float) sinh(f))
@@ -562,7 +568,7 @@ _mesa_init_sqrt_table(void);
#ifdef __GNUC__
-#ifdef __MINGW32__
+#if defined(__MINGW32__) || defined(ANDROID)
#define ffs __builtin_ffs
#define ffsll __builtin_ffsll
#endif
diff --git a/mesalib/src/mesa/main/mtypes.h b/mesalib/src/mesa/main/mtypes.h
index 7c4ba3777..8685f0ba0 100644
--- a/mesalib/src/mesa/main/mtypes.h
+++ b/mesalib/src/mesa/main/mtypes.h
@@ -1279,6 +1279,9 @@ struct gl_texture_image
GLboolean _IsPowerOfTwo; /**< Are all dimensions powers of two? */
struct gl_texture_object *TexObject; /**< Pointer back to parent object */
+ GLuint Level; /**< Which mipmap level am I? */
+ /** Cube map face: index into gl_texture_object::Image[] array */
+ GLuint Face;
FetchTexelFuncC FetchTexelc; /**< GLchan texel fetch function pointer */
FetchTexelFuncF FetchTexelf; /**< Float texel fetch function pointer */
@@ -2717,6 +2720,12 @@ struct gl_constants
GLuint GLSLVersion; /**< GLSL version supported (ex: 120 = 1.20) */
+ /**
+ * Does the driver support real 32-bit integers? (Otherwise, integers are
+ * simulated via floats.)
+ */
+ GLboolean NativeIntegers;
+
/** Which texture units support GL_ATI_envmap_bumpmap as targets */
GLbitfield SupportedBumpUnits;
diff --git a/mesalib/src/mesa/main/pbo.c b/mesalib/src/mesa/main/pbo.c
index 9d0e38a58..1b1fdaf3d 100644
--- a/mesalib/src/mesa/main/pbo.c
+++ b/mesalib/src/mesa/main/pbo.c
@@ -128,9 +128,10 @@ _mesa_map_pbo_source(struct gl_context *ctx,
if (_mesa_is_bufferobj(unpack->BufferObj)) {
/* unpack from PBO */
- buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
- GL_READ_ONLY_ARB,
- unpack->BufferObj);
+ buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0,
+ unpack->BufferObj->Size,
+ GL_MAP_READ_BIT,
+ unpack->BufferObj);
if (!buf)
return NULL;
@@ -201,8 +202,7 @@ _mesa_unmap_pbo_source(struct gl_context *ctx,
{
ASSERT(unpack != &ctx->Pack); /* catch pack/unpack mismatch */
if (_mesa_is_bufferobj(unpack->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
- unpack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj);
}
}
@@ -224,9 +224,10 @@ _mesa_map_pbo_dest(struct gl_context *ctx,
if (_mesa_is_bufferobj(pack->BufferObj)) {
/* pack into PBO */
- buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_PACK_BUFFER_EXT,
- GL_WRITE_ONLY_ARB,
- pack->BufferObj);
+ buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0,
+ pack->BufferObj->Size,
+ GL_MAP_WRITE_BIT,
+ pack->BufferObj);
if (!buf)
return NULL;
@@ -297,7 +298,7 @@ _mesa_unmap_pbo_dest(struct gl_context *ctx,
{
ASSERT(pack != &ctx->Unpack); /* catch pack/unpack mismatch */
if (_mesa_is_bufferobj(pack->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_PACK_BUFFER_EXT, pack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, pack->BufferObj);
}
}
@@ -327,8 +328,9 @@ _mesa_validate_pbo_teximage(struct gl_context *ctx, GLuint dimensions,
return NULL;
}
- buf = (GLubyte *) ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
- GL_READ_ONLY_ARB, unpack->BufferObj);
+ buf = (GLubyte *) ctx->Driver.MapBufferRange(ctx, 0, unpack->BufferObj->Size,
+ GL_MAP_READ_BIT,
+ unpack->BufferObj);
if (!buf) {
_mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped)");
return NULL;
@@ -364,8 +366,10 @@ _mesa_validate_pbo_compressed_teximage(struct gl_context *ctx,
return NULL;
}
- buf = (GLubyte*) ctx->Driver.MapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
- GL_READ_ONLY_ARB, packing->BufferObj);
+ buf = (GLubyte*) ctx->Driver.MapBufferRange(ctx, 0,
+ packing->BufferObj->Size,
+ GL_MAP_READ_BIT,
+ packing->BufferObj);
if (!buf) {
_mesa_error(ctx, GL_INVALID_OPERATION, funcName, "(PBO is mapped");
return NULL;
@@ -384,8 +388,7 @@ _mesa_unmap_teximage_pbo(struct gl_context *ctx,
const struct gl_pixelstore_attrib *unpack)
{
if (_mesa_is_bufferobj(unpack->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_UNPACK_BUFFER_EXT,
- unpack->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, unpack->BufferObj);
}
}
diff --git a/mesalib/src/mesa/main/querymatrix.c b/mesalib/src/mesa/main/querymatrix.c
index aade8a614..eaedf7cd2 100644
--- a/mesalib/src/mesa/main/querymatrix.c
+++ b/mesalib/src/mesa/main/querymatrix.c
@@ -1,212 +1,212 @@
-/**************************************************************************
- *
- * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
- * All Rights Reserved.
- *
- **************************************************************************/
-
-
-/**
- * Code to implement GL_OES_query_matrix. See the spec at:
- * http://www.khronos.org/registry/gles/extensions/OES/OES_query_matrix.txt
- */
-
-
-#include <stdlib.h>
-#include <math.h>
-#include "GLES/gl.h"
-#include "GLES/glext.h"
-
-
-/**
- * This is from the GL_OES_query_matrix extension specification:
- *
- * GLbitfield glQueryMatrixxOES( GLfixed mantissa[16],
- * GLint exponent[16] )
- * mantissa[16] contains the contents of the current matrix in GLfixed
- * format. exponent[16] contains the unbiased exponents applied to the
- * matrix components, so that the internal representation of component i
- * is close to mantissa[i] * 2^exponent[i]. The function returns a status
- * word which is zero if all the components are valid. If
- * status & (1<<i) != 0, the component i is invalid (e.g., NaN, Inf).
- * The implementations are not required to keep track of overflows. In
- * that case, the invalid bits are never set.
- */
-
-#define INT_TO_FIXED(x) ((GLfixed) ((x) << 16))
-#define FLOAT_TO_FIXED(x) ((GLfixed) ((x) * 65536.0))
-
-#if defined(_MSC_VER)
-/* Oddly, the fpclassify() function doesn't exist in such a form
- * on MSVC. This is an implementation using slightly different
- * lower-level Windows functions.
- */
-#include <float.h>
-
-enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
-fpclassify(double x)
-{
- switch(_fpclass(x)) {
- case _FPCLASS_SNAN: /* signaling NaN */
- case _FPCLASS_QNAN: /* quiet NaN */
- return FP_NAN;
- case _FPCLASS_NINF: /* negative infinity */
- case _FPCLASS_PINF: /* positive infinity */
- return FP_INFINITE;
- case _FPCLASS_NN: /* negative normal */
- case _FPCLASS_PN: /* positive normal */
- return FP_NORMAL;
- case _FPCLASS_ND: /* negative denormalized */
- case _FPCLASS_PD: /* positive denormalized */
- return FP_SUBNORMAL;
- case _FPCLASS_NZ: /* negative zero */
- case _FPCLASS_PZ: /* positive zero */
- return FP_ZERO;
- default:
- /* Should never get here; but if we do, this will guarantee
- * that the pattern is not treated like a number.
- */
- return FP_NAN;
- }
-}
-
-#elif defined(__APPLE__) || defined(__CYGWIN__) || defined(__FreeBSD__) || \
- defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \
- (defined(__sun) && defined(__C99FEATURES__)) || defined(__MINGW32__) || \
- (defined(__sun) && defined(__GNUC__))
-
-/* fpclassify is available. */
-
-#elif !defined(_XOPEN_SOURCE) || _XOPEN_SOURCE < 600
-
-enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
-fpclassify(double x)
-{
- /* XXX do something better someday */
- return FP_NORMAL;
-}
-
-#endif
-
-extern GLbitfield GL_APIENTRY _es_QueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]);
-
-/* The Mesa functions we'll need */
-extern void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint *params);
-extern void GL_APIENTRY _mesa_GetFloatv(GLenum pname, GLfloat *params);
-
-GLbitfield GL_APIENTRY _es_QueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16])
-{
- GLfloat matrix[16];
- GLint tmp;
- GLenum currentMode = GL_FALSE;
- GLenum desiredMatrix = GL_FALSE;
- /* The bitfield returns 1 for each component that is invalid (i.e.
- * NaN or Inf). In case of error, everything is invalid.
- */
- GLbitfield rv;
- register unsigned int i;
- unsigned int bit;
-
- /* This data structure defines the mapping between the current matrix
- * mode and the desired matrix identifier.
- */
- static struct {
- GLenum currentMode;
- GLenum desiredMatrix;
- } modes[] = {
- {GL_MODELVIEW, GL_MODELVIEW_MATRIX},
- {GL_PROJECTION, GL_PROJECTION_MATRIX},
- {GL_TEXTURE, GL_TEXTURE_MATRIX},
- };
-
- /* Call Mesa to get the current matrix in floating-point form. First,
- * we have to figure out what the current matrix mode is.
- */
- _mesa_GetIntegerv(GL_MATRIX_MODE, &tmp);
- currentMode = (GLenum) tmp;
-
- /* The mode is either GL_FALSE, if for some reason we failed to query
- * the mode, or a given mode from the above table. Search for the
- * returned mode to get the desired matrix; if we don't find it,
- * we can return immediately, as _mesa_GetInteger() will have
- * logged the necessary error already.
- */
- for (i = 0; i < sizeof(modes)/sizeof(modes[0]); i++) {
- if (modes[i].currentMode == currentMode) {
- desiredMatrix = modes[i].desiredMatrix;
- break;
- }
- }
- if (desiredMatrix == GL_FALSE) {
- /* Early error means all values are invalid. */
- return 0xffff;
- }
-
- /* Now pull the matrix itself. */
- _mesa_GetFloatv(desiredMatrix, matrix);
-
- rv = 0;
- for (i = 0, bit = 1; i < 16; i++, bit<<=1) {
- float normalizedFraction;
- int exp;
-
- switch (fpclassify(matrix[i])) {
- /* A "subnormal" or denormalized number is too small to be
- * represented in normal format; but despite that it's a
- * valid floating point number. FP_ZERO and FP_NORMAL
- * are both valid as well. We should be fine treating
- * these three cases as legitimate floating-point numbers.
- */
- case FP_SUBNORMAL:
- case FP_NORMAL:
- case FP_ZERO:
- normalizedFraction = (GLfloat)frexp(matrix[i], &exp);
- mantissa[i] = FLOAT_TO_FIXED(normalizedFraction);
- exponent[i] = (GLint) exp;
- break;
-
- /* If the entry is not-a-number or an infinity, then the
- * matrix component is invalid. The invalid flag for
- * the component is already set; might as well set the
- * other return values to known values. We'll set
- * distinct values so that a savvy end user could determine
- * whether the matrix component was a NaN or an infinity,
- * but this is more useful for debugging than anything else
- * since the standard doesn't specify any such magic
- * values to return.
- */
- case FP_NAN:
- mantissa[i] = INT_TO_FIXED(0);
- exponent[i] = (GLint) 0;
- rv |= bit;
- break;
-
- case FP_INFINITE:
- /* Return +/- 1 based on whether it's a positive or
- * negative infinity.
- */
- if (matrix[i] > 0) {
- mantissa[i] = INT_TO_FIXED(1);
- }
- else {
- mantissa[i] = -INT_TO_FIXED(1);
- }
- exponent[i] = (GLint) 0;
- rv |= bit;
- break;
-
- /* We should never get here; but here's a catching case
- * in case fpclassify() is returnings something unexpected.
- */
- default:
- mantissa[i] = INT_TO_FIXED(2);
- exponent[i] = (GLint) 0;
- rv |= bit;
- break;
- }
-
- } /* for each component */
-
- /* All done */
- return rv;
-}
+/**************************************************************************
+ *
+ * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * All Rights Reserved.
+ *
+ **************************************************************************/
+
+
+/**
+ * Code to implement GL_OES_query_matrix. See the spec at:
+ * http://www.khronos.org/registry/gles/extensions/OES/OES_query_matrix.txt
+ */
+
+
+#include <stdlib.h>
+#include <math.h>
+#include "GLES/gl.h"
+#include "GLES/glext.h"
+
+
+/**
+ * This is from the GL_OES_query_matrix extension specification:
+ *
+ * GLbitfield glQueryMatrixxOES( GLfixed mantissa[16],
+ * GLint exponent[16] )
+ * mantissa[16] contains the contents of the current matrix in GLfixed
+ * format. exponent[16] contains the unbiased exponents applied to the
+ * matrix components, so that the internal representation of component i
+ * is close to mantissa[i] * 2^exponent[i]. The function returns a status
+ * word which is zero if all the components are valid. If
+ * status & (1<<i) != 0, the component i is invalid (e.g., NaN, Inf).
+ * The implementations are not required to keep track of overflows. In
+ * that case, the invalid bits are never set.
+ */
+
+#define INT_TO_FIXED(x) ((GLfixed) ((x) << 16))
+#define FLOAT_TO_FIXED(x) ((GLfixed) ((x) * 65536.0))
+
+#if defined(_MSC_VER)
+/* Oddly, the fpclassify() function doesn't exist in such a form
+ * on MSVC. This is an implementation using slightly different
+ * lower-level Windows functions.
+ */
+#include <float.h>
+
+enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
+fpclassify(double x)
+{
+ switch(_fpclass(x)) {
+ case _FPCLASS_SNAN: /* signaling NaN */
+ case _FPCLASS_QNAN: /* quiet NaN */
+ return FP_NAN;
+ case _FPCLASS_NINF: /* negative infinity */
+ case _FPCLASS_PINF: /* positive infinity */
+ return FP_INFINITE;
+ case _FPCLASS_NN: /* negative normal */
+ case _FPCLASS_PN: /* positive normal */
+ return FP_NORMAL;
+ case _FPCLASS_ND: /* negative denormalized */
+ case _FPCLASS_PD: /* positive denormalized */
+ return FP_SUBNORMAL;
+ case _FPCLASS_NZ: /* negative zero */
+ case _FPCLASS_PZ: /* positive zero */
+ return FP_ZERO;
+ default:
+ /* Should never get here; but if we do, this will guarantee
+ * that the pattern is not treated like a number.
+ */
+ return FP_NAN;
+ }
+}
+
+#elif defined(__APPLE__) || defined(__CYGWIN__) || defined(__FreeBSD__) || \
+ defined(__OpenBSD__) || defined(__NetBSD__) || defined(__DragonFly__) || \
+ (defined(__sun) && defined(__C99FEATURES__)) || defined(__MINGW32__) || \
+ (defined(__sun) && defined(__GNUC__)) || defined(ANDROID)
+
+/* fpclassify is available. */
+
+#elif !defined(_XOPEN_SOURCE) || _XOPEN_SOURCE < 600
+
+enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
+fpclassify(double x)
+{
+ /* XXX do something better someday */
+ return FP_NORMAL;
+}
+
+#endif
+
+extern GLbitfield GL_APIENTRY _es_QueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]);
+
+/* The Mesa functions we'll need */
+extern void GL_APIENTRY _mesa_GetIntegerv(GLenum pname, GLint *params);
+extern void GL_APIENTRY _mesa_GetFloatv(GLenum pname, GLfloat *params);
+
+GLbitfield GL_APIENTRY _es_QueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16])
+{
+ GLfloat matrix[16];
+ GLint tmp;
+ GLenum currentMode = GL_FALSE;
+ GLenum desiredMatrix = GL_FALSE;
+ /* The bitfield returns 1 for each component that is invalid (i.e.
+ * NaN or Inf). In case of error, everything is invalid.
+ */
+ GLbitfield rv;
+ register unsigned int i;
+ unsigned int bit;
+
+ /* This data structure defines the mapping between the current matrix
+ * mode and the desired matrix identifier.
+ */
+ static struct {
+ GLenum currentMode;
+ GLenum desiredMatrix;
+ } modes[] = {
+ {GL_MODELVIEW, GL_MODELVIEW_MATRIX},
+ {GL_PROJECTION, GL_PROJECTION_MATRIX},
+ {GL_TEXTURE, GL_TEXTURE_MATRIX},
+ };
+
+ /* Call Mesa to get the current matrix in floating-point form. First,
+ * we have to figure out what the current matrix mode is.
+ */
+ _mesa_GetIntegerv(GL_MATRIX_MODE, &tmp);
+ currentMode = (GLenum) tmp;
+
+ /* The mode is either GL_FALSE, if for some reason we failed to query
+ * the mode, or a given mode from the above table. Search for the
+ * returned mode to get the desired matrix; if we don't find it,
+ * we can return immediately, as _mesa_GetInteger() will have
+ * logged the necessary error already.
+ */
+ for (i = 0; i < sizeof(modes)/sizeof(modes[0]); i++) {
+ if (modes[i].currentMode == currentMode) {
+ desiredMatrix = modes[i].desiredMatrix;
+ break;
+ }
+ }
+ if (desiredMatrix == GL_FALSE) {
+ /* Early error means all values are invalid. */
+ return 0xffff;
+ }
+
+ /* Now pull the matrix itself. */
+ _mesa_GetFloatv(desiredMatrix, matrix);
+
+ rv = 0;
+ for (i = 0, bit = 1; i < 16; i++, bit<<=1) {
+ float normalizedFraction;
+ int exp;
+
+ switch (fpclassify(matrix[i])) {
+ /* A "subnormal" or denormalized number is too small to be
+ * represented in normal format; but despite that it's a
+ * valid floating point number. FP_ZERO and FP_NORMAL
+ * are both valid as well. We should be fine treating
+ * these three cases as legitimate floating-point numbers.
+ */
+ case FP_SUBNORMAL:
+ case FP_NORMAL:
+ case FP_ZERO:
+ normalizedFraction = (GLfloat)frexp(matrix[i], &exp);
+ mantissa[i] = FLOAT_TO_FIXED(normalizedFraction);
+ exponent[i] = (GLint) exp;
+ break;
+
+ /* If the entry is not-a-number or an infinity, then the
+ * matrix component is invalid. The invalid flag for
+ * the component is already set; might as well set the
+ * other return values to known values. We'll set
+ * distinct values so that a savvy end user could determine
+ * whether the matrix component was a NaN or an infinity,
+ * but this is more useful for debugging than anything else
+ * since the standard doesn't specify any such magic
+ * values to return.
+ */
+ case FP_NAN:
+ mantissa[i] = INT_TO_FIXED(0);
+ exponent[i] = (GLint) 0;
+ rv |= bit;
+ break;
+
+ case FP_INFINITE:
+ /* Return +/- 1 based on whether it's a positive or
+ * negative infinity.
+ */
+ if (matrix[i] > 0) {
+ mantissa[i] = INT_TO_FIXED(1);
+ }
+ else {
+ mantissa[i] = -INT_TO_FIXED(1);
+ }
+ exponent[i] = (GLint) 0;
+ rv |= bit;
+ break;
+
+ /* We should never get here; but here's a catching case
+ * in case fpclassify() is returnings something unexpected.
+ */
+ default:
+ mantissa[i] = INT_TO_FIXED(2);
+ exponent[i] = (GLint) 0;
+ rv |= bit;
+ break;
+ }
+
+ } /* for each component */
+
+ /* All done */
+ return rv;
+}
diff --git a/mesalib/src/mesa/main/remap_helper.h b/mesalib/src/mesa/main/remap_helper.h
index 88f872f5c..18862ccd0 100644
--- a/mesalib/src/mesa/main/remap_helper.h
+++ b/mesalib/src/mesa/main/remap_helper.h
@@ -475,4457 +475,4454 @@ static const char _mesa_function_pool[] =
/* _mesa_function_pool[3103]: FramebufferTextureLayerEXT (will be remapped) */
"iiiii\0"
"glFramebufferTextureLayer\0"
+ "glFramebufferTextureLayerARB\0"
"glFramebufferTextureLayerEXT\0"
"\0"
- /* _mesa_function_pool[3165]: GetListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[3194]: GetListParameterfvSGIX (dynamic) */
"iip\0"
"glGetListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[3195]: Viewport (offset 305) */
+ /* _mesa_function_pool[3224]: Viewport (offset 305) */
"iiii\0"
"glViewport\0"
"\0"
- /* _mesa_function_pool[3212]: VertexAttrib4NusvARB (will be remapped) */
+ /* _mesa_function_pool[3241]: VertexAttrib4NusvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nusv\0"
"glVertexAttrib4NusvARB\0"
"\0"
- /* _mesa_function_pool[3259]: WindowPos4svMESA (will be remapped) */
+ /* _mesa_function_pool[3288]: WindowPos4svMESA (will be remapped) */
"p\0"
"glWindowPos4svMESA\0"
"\0"
- /* _mesa_function_pool[3281]: CreateProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[3310]: CreateProgramObjectARB (will be remapped) */
"\0"
"glCreateProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[3308]: DeleteTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[3337]: DeleteTransformFeedbacks (will be remapped) */
"ip\0"
"glDeleteTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[3339]: UniformMatrix4x3fv (will be remapped) */
+ /* _mesa_function_pool[3368]: UniformMatrix4x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x3fv\0"
"\0"
- /* _mesa_function_pool[3366]: PrioritizeTextures (offset 331) */
+ /* _mesa_function_pool[3395]: PrioritizeTextures (offset 331) */
"ipp\0"
"glPrioritizeTextures\0"
"glPrioritizeTexturesEXT\0"
"\0"
- /* _mesa_function_pool[3416]: VertexAttribI3uiEXT (will be remapped) */
+ /* _mesa_function_pool[3445]: VertexAttribI3uiEXT (will be remapped) */
"iiii\0"
"glVertexAttribI3uiEXT\0"
"glVertexAttribI3ui\0"
"\0"
- /* _mesa_function_pool[3463]: AsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[3492]: AsyncMarkerSGIX (dynamic) */
"i\0"
"glAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[3484]: GlobalAlphaFactorubSUN (dynamic) */
+ /* _mesa_function_pool[3513]: GlobalAlphaFactorubSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorubSUN\0"
"\0"
- /* _mesa_function_pool[3512]: ClearColorIuiEXT (will be remapped) */
+ /* _mesa_function_pool[3541]: ClearColorIuiEXT (will be remapped) */
"iiii\0"
"glClearColorIuiEXT\0"
"\0"
- /* _mesa_function_pool[3537]: ClearDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[3566]: ClearDebugLogMESA (dynamic) */
"iii\0"
"glClearDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[3562]: Uniform4uiEXT (will be remapped) */
+ /* _mesa_function_pool[3591]: Uniform4uiEXT (will be remapped) */
"iiiii\0"
"glUniform4uiEXT\0"
"glUniform4ui\0"
"\0"
- /* _mesa_function_pool[3598]: ResetHistogram (offset 369) */
+ /* _mesa_function_pool[3627]: ResetHistogram (offset 369) */
"i\0"
"glResetHistogram\0"
"glResetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[3638]: GetProgramNamedParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[3667]: GetProgramNamedParameterfvNV (will be remapped) */
"iipp\0"
"glGetProgramNamedParameterfvNV\0"
"\0"
- /* _mesa_function_pool[3675]: PointParameterfEXT (will be remapped) */
+ /* _mesa_function_pool[3704]: PointParameterfEXT (will be remapped) */
"if\0"
"glPointParameterf\0"
"glPointParameterfARB\0"
"glPointParameterfEXT\0"
"glPointParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[3761]: LoadIdentityDeformationMapSGIX (dynamic) */
+ /* _mesa_function_pool[3790]: LoadIdentityDeformationMapSGIX (dynamic) */
"i\0"
"glLoadIdentityDeformationMapSGIX\0"
"\0"
- /* _mesa_function_pool[3797]: GenFencesNV (will be remapped) */
+ /* _mesa_function_pool[3826]: GenFencesNV (will be remapped) */
"ip\0"
"glGenFencesNV\0"
"\0"
- /* _mesa_function_pool[3815]: ImageTransformParameterfHP (dynamic) */
+ /* _mesa_function_pool[3844]: ImageTransformParameterfHP (dynamic) */
"iif\0"
"glImageTransformParameterfHP\0"
"\0"
- /* _mesa_function_pool[3849]: MatrixIndexusvARB (dynamic) */
+ /* _mesa_function_pool[3878]: MatrixIndexusvARB (dynamic) */
"ip\0"
"glMatrixIndexusvARB\0"
"\0"
- /* _mesa_function_pool[3873]: DrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[3902]: DrawElementsBaseVertex (will be remapped) */
"iiipi\0"
"glDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[3905]: DisableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[3934]: DisableVertexAttribArrayARB (will be remapped) */
"i\0"
"glDisableVertexAttribArray\0"
"glDisableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[3965]: GetnConvolutionFilterARB (will be remapped) */
+ /* _mesa_function_pool[3994]: GetnConvolutionFilterARB (will be remapped) */
"iiiip\0"
"glGetnConvolutionFilterARB\0"
"\0"
- /* _mesa_function_pool[3999]: TexCoord2sv (offset 109) */
+ /* _mesa_function_pool[4028]: TexCoord2sv (offset 109) */
"p\0"
"glTexCoord2sv\0"
"\0"
- /* _mesa_function_pool[4016]: Vertex4dv (offset 143) */
+ /* _mesa_function_pool[4045]: Vertex4dv (offset 143) */
"p\0"
"glVertex4dv\0"
"\0"
- /* _mesa_function_pool[4031]: StencilMaskSeparate (will be remapped) */
+ /* _mesa_function_pool[4060]: StencilMaskSeparate (will be remapped) */
"ii\0"
"glStencilMaskSeparate\0"
"\0"
- /* _mesa_function_pool[4057]: ProgramLocalParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[4086]: ProgramLocalParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramLocalParameter4dARB\0"
"\0"
- /* _mesa_function_pool[4094]: CompressedTexImage3DARB (will be remapped) */
+ /* _mesa_function_pool[4123]: CompressedTexImage3DARB (will be remapped) */
"iiiiiiiip\0"
"glCompressedTexImage3D\0"
"glCompressedTexImage3DARB\0"
"\0"
- /* _mesa_function_pool[4154]: Color3sv (offset 18) */
+ /* _mesa_function_pool[4183]: Color3sv (offset 18) */
"p\0"
"glColor3sv\0"
"\0"
- /* _mesa_function_pool[4168]: GetConvolutionParameteriv (offset 358) */
+ /* _mesa_function_pool[4197]: GetConvolutionParameteriv (offset 358) */
"iip\0"
"glGetConvolutionParameteriv\0"
"glGetConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[4232]: DeleteSamplers (will be remapped) */
+ /* _mesa_function_pool[4261]: DeleteSamplers (will be remapped) */
"ip\0"
"glDeleteSamplers\0"
"\0"
- /* _mesa_function_pool[4253]: VertexAttrib1fARB (will be remapped) */
+ /* _mesa_function_pool[4282]: VertexAttrib1fARB (will be remapped) */
"if\0"
"glVertexAttrib1f\0"
"glVertexAttrib1fARB\0"
"\0"
- /* _mesa_function_pool[4294]: Vertex2dv (offset 127) */
+ /* _mesa_function_pool[4323]: Vertex2dv (offset 127) */
"p\0"
"glVertex2dv\0"
"\0"
- /* _mesa_function_pool[4309]: TestFenceNV (will be remapped) */
+ /* _mesa_function_pool[4338]: TestFenceNV (will be remapped) */
"i\0"
"glTestFenceNV\0"
"\0"
- /* _mesa_function_pool[4326]: GetVertexAttribIuivEXT (will be remapped) */
+ /* _mesa_function_pool[4355]: GetVertexAttribIuivEXT (will be remapped) */
"iip\0"
"glGetVertexAttribIuivEXT\0"
"glGetVertexAttribIuiv\0"
"\0"
- /* _mesa_function_pool[4378]: MultiTexCoord1fvARB (offset 379) */
+ /* _mesa_function_pool[4407]: MultiTexCoord1fvARB (offset 379) */
"ip\0"
"glMultiTexCoord1fv\0"
"glMultiTexCoord1fvARB\0"
"\0"
- /* _mesa_function_pool[4423]: TexCoord3iv (offset 115) */
+ /* _mesa_function_pool[4452]: TexCoord3iv (offset 115) */
"p\0"
"glTexCoord3iv\0"
"\0"
- /* _mesa_function_pool[4440]: Uniform2uivEXT (will be remapped) */
+ /* _mesa_function_pool[4469]: Uniform2uivEXT (will be remapped) */
"iip\0"
"glUniform2uivEXT\0"
"glUniform2uiv\0"
"\0"
- /* _mesa_function_pool[4476]: ColorFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[4505]: ColorFragmentOp2ATI (will be remapped) */
"iiiiiiiiii\0"
"glColorFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[4510]: SecondaryColorPointerListIBM (dynamic) */
+ /* _mesa_function_pool[4539]: SecondaryColorPointerListIBM (dynamic) */
"iiipi\0"
"glSecondaryColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[4548]: GetPixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[4577]: GetPixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[4584]: Color3fv (offset 14) */
+ /* _mesa_function_pool[4613]: Color3fv (offset 14) */
"p\0"
"glColor3fv\0"
"\0"
- /* _mesa_function_pool[4598]: GetnPixelMapfvARB (will be remapped) */
+ /* _mesa_function_pool[4627]: GetnPixelMapfvARB (will be remapped) */
"iip\0"
"glGetnPixelMapfvARB\0"
"\0"
- /* _mesa_function_pool[4623]: ReplacementCodeubSUN (dynamic) */
+ /* _mesa_function_pool[4652]: ReplacementCodeubSUN (dynamic) */
"i\0"
"glReplacementCodeubSUN\0"
"\0"
- /* _mesa_function_pool[4649]: FinishAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[4678]: FinishAsyncSGIX (dynamic) */
"p\0"
"glFinishAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[4670]: GetnUniformfvARB (will be remapped) */
+ /* _mesa_function_pool[4699]: GetnUniformfvARB (will be remapped) */
"iiip\0"
"glGetnUniformfvARB\0"
"\0"
- /* _mesa_function_pool[4695]: GetDebugLogMESA (dynamic) */
+ /* _mesa_function_pool[4724]: GetDebugLogMESA (dynamic) */
"iiiipp\0"
"glGetDebugLogMESA\0"
"\0"
- /* _mesa_function_pool[4721]: FogCoorddEXT (will be remapped) */
+ /* _mesa_function_pool[4750]: FogCoorddEXT (will be remapped) */
"d\0"
"glFogCoordd\0"
"glFogCoorddEXT\0"
"\0"
- /* _mesa_function_pool[4751]: BeginConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[4780]: BeginConditionalRenderNV (will be remapped) */
"ii\0"
"glBeginConditionalRenderNV\0"
"glBeginConditionalRender\0"
"\0"
- /* _mesa_function_pool[4807]: Color4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4836]: Color4ubVertex3fSUN (dynamic) */
"iiiifff\0"
"glColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4838]: FogCoordfEXT (will be remapped) */
+ /* _mesa_function_pool[4867]: FogCoordfEXT (will be remapped) */
"f\0"
"glFogCoordf\0"
"glFogCoordfEXT\0"
"\0"
- /* _mesa_function_pool[4868]: PointSize (offset 173) */
+ /* _mesa_function_pool[4897]: PointSize (offset 173) */
"f\0"
"glPointSize\0"
"\0"
- /* _mesa_function_pool[4883]: VertexAttribI2uivEXT (will be remapped) */
+ /* _mesa_function_pool[4912]: VertexAttribI2uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI2uivEXT\0"
"glVertexAttribI2uiv\0"
"\0"
- /* _mesa_function_pool[4930]: TexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[4959]: TexCoord2fVertex3fSUN (dynamic) */
"fffff\0"
"glTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[4961]: PopName (offset 200) */
+ /* _mesa_function_pool[4990]: PopName (offset 200) */
"\0"
"glPopName\0"
"\0"
- /* _mesa_function_pool[4973]: GetSamplerParameterfv (will be remapped) */
+ /* _mesa_function_pool[5002]: GetSamplerParameterfv (will be remapped) */
"iip\0"
"glGetSamplerParameterfv\0"
"\0"
- /* _mesa_function_pool[5002]: GlobalAlphaFactoriSUN (dynamic) */
+ /* _mesa_function_pool[5031]: GlobalAlphaFactoriSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoriSUN\0"
"\0"
- /* _mesa_function_pool[5029]: VertexAttrib2dNV (will be remapped) */
+ /* _mesa_function_pool[5058]: VertexAttrib2dNV (will be remapped) */
"idd\0"
"glVertexAttrib2dNV\0"
"\0"
- /* _mesa_function_pool[5053]: GetProgramInfoLog (will be remapped) */
+ /* _mesa_function_pool[5082]: GetProgramInfoLog (will be remapped) */
"iipp\0"
"glGetProgramInfoLog\0"
"\0"
- /* _mesa_function_pool[5079]: VertexAttrib4NbvARB (will be remapped) */
+ /* _mesa_function_pool[5108]: VertexAttrib4NbvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nbv\0"
"glVertexAttrib4NbvARB\0"
"\0"
- /* _mesa_function_pool[5124]: GetActiveAttribARB (will be remapped) */
+ /* _mesa_function_pool[5153]: GetActiveAttribARB (will be remapped) */
"iiipppp\0"
"glGetActiveAttrib\0"
"glGetActiveAttribARB\0"
"\0"
- /* _mesa_function_pool[5172]: Vertex4sv (offset 149) */
+ /* _mesa_function_pool[5201]: Vertex4sv (offset 149) */
"p\0"
"glVertex4sv\0"
"\0"
- /* _mesa_function_pool[5187]: VertexAttrib4ubNV (will be remapped) */
+ /* _mesa_function_pool[5216]: VertexAttrib4ubNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4ubNV\0"
"\0"
- /* _mesa_function_pool[5214]: VertexAttribI1ivEXT (will be remapped) */
+ /* _mesa_function_pool[5243]: VertexAttribI1ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI1ivEXT\0"
"glVertexAttribI1iv\0"
"\0"
- /* _mesa_function_pool[5259]: ClampColor (will be remapped) */
+ /* _mesa_function_pool[5288]: ClampColor (will be remapped) */
"ii\0"
"glClampColor\0"
"\0"
- /* _mesa_function_pool[5276]: TextureRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[5305]: TextureRangeAPPLE (will be remapped) */
"iip\0"
"glTextureRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[5301]: GetTexEnvfv (offset 276) */
+ /* _mesa_function_pool[5330]: GetTexEnvfv (offset 276) */
"iip\0"
"glGetTexEnvfv\0"
"\0"
- /* _mesa_function_pool[5320]: BindTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5349]: BindTransformFeedback (will be remapped) */
"ii\0"
"glBindTransformFeedback\0"
"\0"
- /* _mesa_function_pool[5348]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[5377]: TexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"ffffffffffff\0"
"glTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[5401]: Indexub (offset 315) */
+ /* _mesa_function_pool[5430]: Indexub (offset 315) */
"i\0"
"glIndexub\0"
"\0"
- /* _mesa_function_pool[5414]: VertexAttrib4fNV (will be remapped) */
+ /* _mesa_function_pool[5443]: VertexAttrib4fNV (will be remapped) */
"iffff\0"
"glVertexAttrib4fNV\0"
"\0"
- /* _mesa_function_pool[5440]: TexEnvi (offset 186) */
+ /* _mesa_function_pool[5469]: TexEnvi (offset 186) */
"iii\0"
"glTexEnvi\0"
"\0"
- /* _mesa_function_pool[5455]: GetClipPlane (offset 259) */
+ /* _mesa_function_pool[5484]: GetClipPlane (offset 259) */
"ip\0"
"glGetClipPlane\0"
"\0"
- /* _mesa_function_pool[5474]: CombinerParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[5503]: CombinerParameterfvNV (will be remapped) */
"ip\0"
"glCombinerParameterfvNV\0"
"\0"
- /* _mesa_function_pool[5502]: VertexAttribs3dvNV (will be remapped) */
+ /* _mesa_function_pool[5531]: VertexAttribs3dvNV (will be remapped) */
"iip\0"
"glVertexAttribs3dvNV\0"
"\0"
- /* _mesa_function_pool[5528]: VertexAttribI2uiEXT (will be remapped) */
+ /* _mesa_function_pool[5557]: VertexAttribI2uiEXT (will be remapped) */
"iii\0"
"glVertexAttribI2uiEXT\0"
"glVertexAttribI2ui\0"
"\0"
- /* _mesa_function_pool[5574]: VertexAttribs4fvNV (will be remapped) */
+ /* _mesa_function_pool[5603]: VertexAttribs4fvNV (will be remapped) */
"iip\0"
"glVertexAttribs4fvNV\0"
"\0"
- /* _mesa_function_pool[5600]: VertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[5629]: VertexArrayRangeNV (will be remapped) */
"ip\0"
"glVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[5625]: FragmentLightiSGIX (dynamic) */
+ /* _mesa_function_pool[5654]: FragmentLightiSGIX (dynamic) */
"iii\0"
"glFragmentLightiSGIX\0"
"\0"
- /* _mesa_function_pool[5651]: PolygonOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[5680]: PolygonOffsetEXT (will be remapped) */
"ff\0"
"glPolygonOffsetEXT\0"
"\0"
- /* _mesa_function_pool[5674]: VertexAttribI4uivEXT (will be remapped) */
+ /* _mesa_function_pool[5703]: VertexAttribI4uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI4uivEXT\0"
"glVertexAttribI4uiv\0"
"\0"
- /* _mesa_function_pool[5721]: PollAsyncSGIX (dynamic) */
+ /* _mesa_function_pool[5750]: PollAsyncSGIX (dynamic) */
"p\0"
"glPollAsyncSGIX\0"
"\0"
- /* _mesa_function_pool[5740]: DeleteFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[5769]: DeleteFragmentShaderATI (will be remapped) */
"i\0"
"glDeleteFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[5769]: Scaled (offset 301) */
+ /* _mesa_function_pool[5798]: Scaled (offset 301) */
"ddd\0"
"glScaled\0"
"\0"
- /* _mesa_function_pool[5783]: ResumeTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[5812]: ResumeTransformFeedback (will be remapped) */
"\0"
"glResumeTransformFeedback\0"
"\0"
- /* _mesa_function_pool[5811]: Scalef (offset 302) */
+ /* _mesa_function_pool[5840]: Scalef (offset 302) */
"fff\0"
"glScalef\0"
"\0"
- /* _mesa_function_pool[5825]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[5854]: TexCoord2fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[5863]: ProgramEnvParameters4fvEXT (will be remapped) */
+ /* _mesa_function_pool[5892]: ProgramEnvParameters4fvEXT (will be remapped) */
"iiip\0"
"glProgramEnvParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[5898]: MultTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[5927]: MultTransposeMatrixdARB (will be remapped) */
"p\0"
"glMultTransposeMatrixd\0"
"glMultTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[5950]: ColorMaskIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[5979]: ColorMaskIndexedEXT (will be remapped) */
"iiiii\0"
"glColorMaskIndexedEXT\0"
"glColorMaski\0"
"\0"
- /* _mesa_function_pool[5992]: ObjectUnpurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[6021]: ObjectUnpurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectUnpurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[6022]: AlphaFunc (offset 240) */
+ /* _mesa_function_pool[6051]: AlphaFunc (offset 240) */
"if\0"
"glAlphaFunc\0"
"\0"
- /* _mesa_function_pool[6038]: WindowPos2svMESA (will be remapped) */
+ /* _mesa_function_pool[6067]: WindowPos2svMESA (will be remapped) */
"p\0"
"glWindowPos2sv\0"
"glWindowPos2svARB\0"
"glWindowPos2svMESA\0"
"\0"
- /* _mesa_function_pool[6093]: EdgeFlag (offset 41) */
+ /* _mesa_function_pool[6122]: EdgeFlag (offset 41) */
"i\0"
"glEdgeFlag\0"
"\0"
- /* _mesa_function_pool[6107]: TexCoord2iv (offset 107) */
+ /* _mesa_function_pool[6136]: TexCoord2iv (offset 107) */
"p\0"
"glTexCoord2iv\0"
"\0"
- /* _mesa_function_pool[6124]: CompressedTexImage1DARB (will be remapped) */
+ /* _mesa_function_pool[6153]: CompressedTexImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexImage1D\0"
"glCompressedTexImage1DARB\0"
"\0"
- /* _mesa_function_pool[6182]: Rotated (offset 299) */
+ /* _mesa_function_pool[6211]: Rotated (offset 299) */
"dddd\0"
"glRotated\0"
"\0"
- /* _mesa_function_pool[6198]: GetTexParameterIuivEXT (will be remapped) */
+ /* _mesa_function_pool[6227]: GetTexParameterIuivEXT (will be remapped) */
"iip\0"
"glGetTexParameterIuivEXT\0"
"glGetTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[6250]: VertexAttrib2sNV (will be remapped) */
+ /* _mesa_function_pool[6279]: VertexAttrib2sNV (will be remapped) */
"iii\0"
"glVertexAttrib2sNV\0"
"\0"
- /* _mesa_function_pool[6274]: ReadPixels (offset 256) */
+ /* _mesa_function_pool[6303]: ReadPixels (offset 256) */
"iiiiiip\0"
"glReadPixels\0"
"\0"
- /* _mesa_function_pool[6296]: VertexAttribDivisorARB (will be remapped) */
+ /* _mesa_function_pool[6325]: VertexAttribDivisorARB (will be remapped) */
"ii\0"
"glVertexAttribDivisorARB\0"
"\0"
- /* _mesa_function_pool[6325]: EdgeFlagv (offset 42) */
+ /* _mesa_function_pool[6354]: EdgeFlagv (offset 42) */
"p\0"
"glEdgeFlagv\0"
"\0"
- /* _mesa_function_pool[6340]: NormalPointerListIBM (dynamic) */
+ /* _mesa_function_pool[6369]: NormalPointerListIBM (dynamic) */
"iipi\0"
"glNormalPointerListIBM\0"
"\0"
- /* _mesa_function_pool[6369]: IndexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6398]: IndexPointerEXT (will be remapped) */
"iiip\0"
"glIndexPointerEXT\0"
"\0"
- /* _mesa_function_pool[6393]: Color4iv (offset 32) */
+ /* _mesa_function_pool[6422]: Color4iv (offset 32) */
"p\0"
"glColor4iv\0"
"\0"
- /* _mesa_function_pool[6407]: TexParameterf (offset 178) */
+ /* _mesa_function_pool[6436]: TexParameterf (offset 178) */
"iif\0"
"glTexParameterf\0"
"\0"
- /* _mesa_function_pool[6428]: TexParameteri (offset 180) */
+ /* _mesa_function_pool[6457]: TexParameteri (offset 180) */
"iii\0"
"glTexParameteri\0"
"\0"
- /* _mesa_function_pool[6449]: NormalPointerEXT (will be remapped) */
+ /* _mesa_function_pool[6478]: NormalPointerEXT (will be remapped) */
"iiip\0"
"glNormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[6474]: MultiTexCoord3dARB (offset 392) */
+ /* _mesa_function_pool[6503]: MultiTexCoord3dARB (offset 392) */
"iddd\0"
"glMultiTexCoord3d\0"
"glMultiTexCoord3dARB\0"
"\0"
- /* _mesa_function_pool[6519]: MultiTexCoord2iARB (offset 388) */
+ /* _mesa_function_pool[6548]: MultiTexCoord2iARB (offset 388) */
"iii\0"
"glMultiTexCoord2i\0"
"glMultiTexCoord2iARB\0"
"\0"
- /* _mesa_function_pool[6563]: DrawPixels (offset 257) */
+ /* _mesa_function_pool[6592]: DrawPixels (offset 257) */
"iiiip\0"
"glDrawPixels\0"
"\0"
- /* _mesa_function_pool[6583]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[6612]: ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN (dynamic) */
"iffffffff\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[6643]: MultiTexCoord2svARB (offset 391) */
+ /* _mesa_function_pool[6672]: MultiTexCoord2svARB (offset 391) */
"ip\0"
"glMultiTexCoord2sv\0"
"glMultiTexCoord2svARB\0"
"\0"
- /* _mesa_function_pool[6688]: ReplacementCodeubvSUN (dynamic) */
+ /* _mesa_function_pool[6717]: ReplacementCodeubvSUN (dynamic) */
"p\0"
"glReplacementCodeubvSUN\0"
"\0"
- /* _mesa_function_pool[6715]: Uniform3iARB (will be remapped) */
+ /* _mesa_function_pool[6744]: Uniform3iARB (will be remapped) */
"iiii\0"
"glUniform3i\0"
"glUniform3iARB\0"
"\0"
- /* _mesa_function_pool[6748]: DrawTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[6777]: DrawTransformFeedback (will be remapped) */
"ii\0"
"glDrawTransformFeedback\0"
"\0"
- /* _mesa_function_pool[6776]: DrawElementsInstancedARB (will be remapped) */
+ /* _mesa_function_pool[6805]: DrawElementsInstancedARB (will be remapped) */
"iiipi\0"
"glDrawElementsInstancedARB\0"
"glDrawElementsInstancedEXT\0"
"glDrawElementsInstanced\0"
"\0"
- /* _mesa_function_pool[6861]: GetShaderInfoLog (will be remapped) */
+ /* _mesa_function_pool[6890]: GetShaderInfoLog (will be remapped) */
"iipp\0"
"glGetShaderInfoLog\0"
"\0"
- /* _mesa_function_pool[6886]: WeightivARB (dynamic) */
+ /* _mesa_function_pool[6915]: WeightivARB (dynamic) */
"ip\0"
"glWeightivARB\0"
"\0"
- /* _mesa_function_pool[6904]: PollInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[6933]: PollInstrumentsSGIX (dynamic) */
"p\0"
"glPollInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[6929]: GlobalAlphaFactordSUN (dynamic) */
+ /* _mesa_function_pool[6958]: GlobalAlphaFactordSUN (dynamic) */
"d\0"
"glGlobalAlphaFactordSUN\0"
"\0"
- /* _mesa_function_pool[6956]: GetFinalCombinerInputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[6985]: GetFinalCombinerInputParameterfvNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[6998]: GenerateMipmapEXT (will be remapped) */
+ /* _mesa_function_pool[7027]: GenerateMipmapEXT (will be remapped) */
"i\0"
"glGenerateMipmap\0"
"glGenerateMipmapEXT\0"
"\0"
- /* _mesa_function_pool[7038]: GenLists (offset 5) */
+ /* _mesa_function_pool[7067]: GenLists (offset 5) */
"i\0"
"glGenLists\0"
"\0"
- /* _mesa_function_pool[7052]: DepthRangef (will be remapped) */
+ /* _mesa_function_pool[7081]: DepthRangef (will be remapped) */
"ff\0"
"glDepthRangef\0"
"\0"
- /* _mesa_function_pool[7070]: GetMapAttribParameterivNV (dynamic) */
+ /* _mesa_function_pool[7099]: GetMapAttribParameterivNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterivNV\0"
"\0"
- /* _mesa_function_pool[7104]: CreateShaderObjectARB (will be remapped) */
+ /* _mesa_function_pool[7133]: CreateShaderObjectARB (will be remapped) */
"i\0"
"glCreateShaderObjectARB\0"
"\0"
- /* _mesa_function_pool[7131]: GetSharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[7160]: GetSharpenTexFuncSGIS (dynamic) */
"ip\0"
"glGetSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[7159]: BufferDataARB (will be remapped) */
+ /* _mesa_function_pool[7188]: BufferDataARB (will be remapped) */
"iipi\0"
"glBufferData\0"
"glBufferDataARB\0"
"\0"
- /* _mesa_function_pool[7194]: FlushVertexArrayRangeNV (will be remapped) */
+ /* _mesa_function_pool[7223]: FlushVertexArrayRangeNV (will be remapped) */
"\0"
"glFlushVertexArrayRangeNV\0"
"\0"
- /* _mesa_function_pool[7222]: MapGrid2d (offset 226) */
+ /* _mesa_function_pool[7251]: MapGrid2d (offset 226) */
"iddidd\0"
"glMapGrid2d\0"
"\0"
- /* _mesa_function_pool[7242]: MapGrid2f (offset 227) */
+ /* _mesa_function_pool[7271]: MapGrid2f (offset 227) */
"iffiff\0"
"glMapGrid2f\0"
"\0"
- /* _mesa_function_pool[7262]: SampleMapATI (will be remapped) */
+ /* _mesa_function_pool[7291]: SampleMapATI (will be remapped) */
"iii\0"
"glSampleMapATI\0"
"\0"
- /* _mesa_function_pool[7282]: VertexPointerEXT (will be remapped) */
+ /* _mesa_function_pool[7311]: VertexPointerEXT (will be remapped) */
"iiiip\0"
"glVertexPointerEXT\0"
"\0"
- /* _mesa_function_pool[7308]: GetTexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[7337]: GetTexFilterFuncSGIS (dynamic) */
"iip\0"
"glGetTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[7336]: Scissor (offset 176) */
+ /* _mesa_function_pool[7365]: Scissor (offset 176) */
"iiii\0"
"glScissor\0"
"\0"
- /* _mesa_function_pool[7352]: Fogf (offset 153) */
+ /* _mesa_function_pool[7381]: Fogf (offset 153) */
"if\0"
"glFogf\0"
"\0"
- /* _mesa_function_pool[7363]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[7392]: ReplacementCodeuiColor4ubVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiColor4ubVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[7408]: TexSubImage1D (offset 332) */
+ /* _mesa_function_pool[7437]: TexSubImage1D (offset 332) */
"iiiiiip\0"
"glTexSubImage1D\0"
"glTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[7452]: VertexAttrib1sARB (will be remapped) */
+ /* _mesa_function_pool[7481]: VertexAttrib1sARB (will be remapped) */
"ii\0"
"glVertexAttrib1s\0"
"glVertexAttrib1sARB\0"
"\0"
- /* _mesa_function_pool[7493]: FenceSync (will be remapped) */
+ /* _mesa_function_pool[7522]: FenceSync (will be remapped) */
"ii\0"
"glFenceSync\0"
"\0"
- /* _mesa_function_pool[7509]: Color4usv (offset 40) */
+ /* _mesa_function_pool[7538]: Color4usv (offset 40) */
"p\0"
"glColor4usv\0"
"\0"
- /* _mesa_function_pool[7524]: Fogi (offset 155) */
+ /* _mesa_function_pool[7553]: Fogi (offset 155) */
"ii\0"
"glFogi\0"
"\0"
- /* _mesa_function_pool[7535]: DepthRange (offset 288) */
+ /* _mesa_function_pool[7564]: DepthRange (offset 288) */
"dd\0"
"glDepthRange\0"
"\0"
- /* _mesa_function_pool[7552]: RasterPos3iv (offset 75) */
+ /* _mesa_function_pool[7581]: RasterPos3iv (offset 75) */
"p\0"
"glRasterPos3iv\0"
"\0"
- /* _mesa_function_pool[7570]: FinalCombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[7599]: FinalCombinerInputNV (will be remapped) */
"iiii\0"
"glFinalCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[7599]: TexCoord2i (offset 106) */
+ /* _mesa_function_pool[7628]: TexCoord2i (offset 106) */
"ii\0"
"glTexCoord2i\0"
"\0"
- /* _mesa_function_pool[7616]: PixelMapfv (offset 251) */
+ /* _mesa_function_pool[7645]: PixelMapfv (offset 251) */
"iip\0"
"glPixelMapfv\0"
"\0"
- /* _mesa_function_pool[7634]: Color4ui (offset 37) */
+ /* _mesa_function_pool[7663]: Color4ui (offset 37) */
"iiii\0"
"glColor4ui\0"
"\0"
- /* _mesa_function_pool[7651]: RasterPos3s (offset 76) */
+ /* _mesa_function_pool[7680]: RasterPos3s (offset 76) */
"iii\0"
"glRasterPos3s\0"
"\0"
- /* _mesa_function_pool[7670]: Color3usv (offset 24) */
+ /* _mesa_function_pool[7699]: Color3usv (offset 24) */
"p\0"
"glColor3usv\0"
"\0"
- /* _mesa_function_pool[7685]: FlushRasterSGIX (dynamic) */
+ /* _mesa_function_pool[7714]: FlushRasterSGIX (dynamic) */
"\0"
"glFlushRasterSGIX\0"
"\0"
- /* _mesa_function_pool[7705]: TexCoord2f (offset 104) */
+ /* _mesa_function_pool[7734]: TexCoord2f (offset 104) */
"ff\0"
"glTexCoord2f\0"
"\0"
- /* _mesa_function_pool[7722]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[7751]: ReplacementCodeuiTexCoord2fVertex3fSUN (dynamic) */
"ifffff\0"
"glReplacementCodeuiTexCoord2fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[7771]: TexCoord2d (offset 102) */
+ /* _mesa_function_pool[7800]: TexCoord2d (offset 102) */
"dd\0"
"glTexCoord2d\0"
"\0"
- /* _mesa_function_pool[7788]: RasterPos3d (offset 70) */
+ /* _mesa_function_pool[7817]: RasterPos3d (offset 70) */
"ddd\0"
"glRasterPos3d\0"
"\0"
- /* _mesa_function_pool[7807]: RasterPos3f (offset 72) */
+ /* _mesa_function_pool[7836]: RasterPos3f (offset 72) */
"fff\0"
"glRasterPos3f\0"
"\0"
- /* _mesa_function_pool[7826]: Uniform1fARB (will be remapped) */
+ /* _mesa_function_pool[7855]: Uniform1fARB (will be remapped) */
"if\0"
"glUniform1f\0"
"glUniform1fARB\0"
"\0"
- /* _mesa_function_pool[7857]: AreTexturesResident (offset 322) */
+ /* _mesa_function_pool[7886]: AreTexturesResident (offset 322) */
"ipp\0"
"glAreTexturesResident\0"
"glAreTexturesResidentEXT\0"
"\0"
- /* _mesa_function_pool[7909]: TexCoord2s (offset 108) */
+ /* _mesa_function_pool[7938]: TexCoord2s (offset 108) */
"ii\0"
"glTexCoord2s\0"
"\0"
- /* _mesa_function_pool[7926]: StencilOpSeparate (will be remapped) */
+ /* _mesa_function_pool[7955]: StencilOpSeparate (will be remapped) */
"iiii\0"
"glStencilOpSeparate\0"
"glStencilOpSeparateATI\0"
"\0"
- /* _mesa_function_pool[7975]: ColorTableParameteriv (offset 341) */
+ /* _mesa_function_pool[8004]: ColorTableParameteriv (offset 341) */
"iip\0"
"glColorTableParameteriv\0"
"glColorTableParameterivSGI\0"
"\0"
- /* _mesa_function_pool[8031]: FogCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[8060]: FogCoordPointerListIBM (dynamic) */
"iipi\0"
"glFogCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[8062]: WindowPos3dMESA (will be remapped) */
+ /* _mesa_function_pool[8091]: WindowPos3dMESA (will be remapped) */
"ddd\0"
"glWindowPos3d\0"
"glWindowPos3dARB\0"
"glWindowPos3dMESA\0"
"\0"
- /* _mesa_function_pool[8116]: Color4us (offset 39) */
+ /* _mesa_function_pool[8145]: Color4us (offset 39) */
"iiii\0"
"glColor4us\0"
"\0"
- /* _mesa_function_pool[8133]: PointParameterfvEXT (will be remapped) */
+ /* _mesa_function_pool[8162]: PointParameterfvEXT (will be remapped) */
"ip\0"
"glPointParameterfv\0"
"glPointParameterfvARB\0"
"glPointParameterfvEXT\0"
"glPointParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[8223]: Color3bv (offset 10) */
+ /* _mesa_function_pool[8252]: Color3bv (offset 10) */
"p\0"
"glColor3bv\0"
"\0"
- /* _mesa_function_pool[8237]: GetnCompressedTexImageARB (will be remapped) */
+ /* _mesa_function_pool[8266]: GetnCompressedTexImageARB (will be remapped) */
"iiip\0"
"glGetnCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[8271]: WindowPos2fvMESA (will be remapped) */
+ /* _mesa_function_pool[8300]: WindowPos2fvMESA (will be remapped) */
"p\0"
"glWindowPos2fv\0"
"glWindowPos2fvARB\0"
"glWindowPos2fvMESA\0"
"\0"
- /* _mesa_function_pool[8326]: SecondaryColor3bvEXT (will be remapped) */
+ /* _mesa_function_pool[8355]: SecondaryColor3bvEXT (will be remapped) */
"p\0"
"glSecondaryColor3bv\0"
"glSecondaryColor3bvEXT\0"
"\0"
- /* _mesa_function_pool[8372]: VertexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[8401]: VertexPointerListIBM (dynamic) */
"iiipi\0"
"glVertexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[8402]: GetProgramLocalParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[8431]: GetProgramLocalParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterfvARB\0"
"\0"
- /* _mesa_function_pool[8439]: FragmentMaterialfSGIX (dynamic) */
+ /* _mesa_function_pool[8468]: FragmentMaterialfSGIX (dynamic) */
"iif\0"
"glFragmentMaterialfSGIX\0"
"\0"
- /* _mesa_function_pool[8468]: BindSampler (will be remapped) */
+ /* _mesa_function_pool[8497]: BindSampler (will be remapped) */
"ii\0"
"glBindSampler\0"
"\0"
- /* _mesa_function_pool[8486]: RenderbufferStorageEXT (will be remapped) */
+ /* _mesa_function_pool[8515]: RenderbufferStorageEXT (will be remapped) */
"iiii\0"
"glRenderbufferStorage\0"
"glRenderbufferStorageEXT\0"
"\0"
- /* _mesa_function_pool[8539]: IsFenceNV (will be remapped) */
+ /* _mesa_function_pool[8568]: IsFenceNV (will be remapped) */
"i\0"
"glIsFenceNV\0"
"\0"
- /* _mesa_function_pool[8554]: AttachObjectARB (will be remapped) */
+ /* _mesa_function_pool[8583]: AttachObjectARB (will be remapped) */
"ii\0"
"glAttachObjectARB\0"
"\0"
- /* _mesa_function_pool[8576]: GetFragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[8605]: GetFragmentLightivSGIX (dynamic) */
"iip\0"
"glGetFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[8606]: UniformMatrix2fvARB (will be remapped) */
+ /* _mesa_function_pool[8635]: UniformMatrix2fvARB (will be remapped) */
"iiip\0"
"glUniformMatrix2fv\0"
"glUniformMatrix2fvARB\0"
"\0"
- /* _mesa_function_pool[8653]: MultiTexCoord2fARB (offset 386) */
+ /* _mesa_function_pool[8682]: MultiTexCoord2fARB (offset 386) */
"iff\0"
"glMultiTexCoord2f\0"
"glMultiTexCoord2fARB\0"
"\0"
- /* _mesa_function_pool[8697]: ColorTable (offset 339) */
+ /* _mesa_function_pool[8726]: ColorTable (offset 339) */
"iiiiip\0"
"glColorTable\0"
"glColorTableSGI\0"
"glColorTableEXT\0"
"\0"
- /* _mesa_function_pool[8750]: IndexPointer (offset 314) */
+ /* _mesa_function_pool[8779]: IndexPointer (offset 314) */
"iip\0"
"glIndexPointer\0"
"\0"
- /* _mesa_function_pool[8770]: Accum (offset 213) */
+ /* _mesa_function_pool[8799]: Accum (offset 213) */
"if\0"
"glAccum\0"
"\0"
- /* _mesa_function_pool[8782]: GetTexImage (offset 281) */
+ /* _mesa_function_pool[8811]: GetTexImage (offset 281) */
"iiiip\0"
"glGetTexImage\0"
"\0"
- /* _mesa_function_pool[8803]: MapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[8832]: MapControlPointsNV (dynamic) */
"iiiiiiiip\0"
"glMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[8835]: ConvolutionFilter2D (offset 349) */
+ /* _mesa_function_pool[8864]: ConvolutionFilter2D (offset 349) */
"iiiiiip\0"
"glConvolutionFilter2D\0"
"glConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[8891]: Finish (offset 216) */
+ /* _mesa_function_pool[8920]: Finish (offset 216) */
"\0"
"glFinish\0"
"\0"
- /* _mesa_function_pool[8902]: MapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[8931]: MapParameterfvNV (dynamic) */
"iip\0"
"glMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[8926]: ClearStencil (offset 207) */
+ /* _mesa_function_pool[8955]: ClearStencil (offset 207) */
"i\0"
"glClearStencil\0"
"\0"
- /* _mesa_function_pool[8944]: VertexAttrib3dvARB (will be remapped) */
+ /* _mesa_function_pool[8973]: VertexAttrib3dvARB (will be remapped) */
"ip\0"
"glVertexAttrib3dv\0"
"glVertexAttrib3dvARB\0"
"\0"
- /* _mesa_function_pool[8987]: Uniform4uivEXT (will be remapped) */
+ /* _mesa_function_pool[9016]: Uniform4uivEXT (will be remapped) */
"iip\0"
"glUniform4uivEXT\0"
"glUniform4uiv\0"
"\0"
- /* _mesa_function_pool[9023]: HintPGI (dynamic) */
+ /* _mesa_function_pool[9052]: HintPGI (dynamic) */
"ii\0"
"glHintPGI\0"
"\0"
- /* _mesa_function_pool[9037]: ConvolutionParameteriv (offset 353) */
+ /* _mesa_function_pool[9066]: ConvolutionParameteriv (offset 353) */
"iip\0"
"glConvolutionParameteriv\0"
"glConvolutionParameterivEXT\0"
"\0"
- /* _mesa_function_pool[9095]: Color4s (offset 33) */
+ /* _mesa_function_pool[9124]: Color4s (offset 33) */
"iiii\0"
"glColor4s\0"
"\0"
- /* _mesa_function_pool[9111]: InterleavedArrays (offset 317) */
+ /* _mesa_function_pool[9140]: InterleavedArrays (offset 317) */
"iip\0"
"glInterleavedArrays\0"
"\0"
- /* _mesa_function_pool[9136]: RasterPos2fv (offset 65) */
+ /* _mesa_function_pool[9165]: RasterPos2fv (offset 65) */
"p\0"
"glRasterPos2fv\0"
"\0"
- /* _mesa_function_pool[9154]: TexCoord1fv (offset 97) */
+ /* _mesa_function_pool[9183]: TexCoord1fv (offset 97) */
"p\0"
"glTexCoord1fv\0"
"\0"
- /* _mesa_function_pool[9171]: Vertex2d (offset 126) */
+ /* _mesa_function_pool[9200]: Vertex2d (offset 126) */
"dd\0"
"glVertex2d\0"
"\0"
- /* _mesa_function_pool[9186]: CullParameterdvEXT (dynamic) */
+ /* _mesa_function_pool[9215]: CullParameterdvEXT (dynamic) */
"ip\0"
"glCullParameterdvEXT\0"
"\0"
- /* _mesa_function_pool[9211]: ProgramNamedParameter4fNV (will be remapped) */
+ /* _mesa_function_pool[9240]: ProgramNamedParameter4fNV (will be remapped) */
"iipffff\0"
"glProgramNamedParameter4fNV\0"
"\0"
- /* _mesa_function_pool[9248]: Color3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[9277]: Color3fVertex3fSUN (dynamic) */
"ffffff\0"
"glColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[9277]: ProgramEnvParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[9306]: ProgramEnvParameter4fvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4fvARB\0"
"glProgramParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[9334]: Color4i (offset 31) */
+ /* _mesa_function_pool[9363]: Color4i (offset 31) */
"iiii\0"
"glColor4i\0"
"\0"
- /* _mesa_function_pool[9350]: Color4f (offset 29) */
+ /* _mesa_function_pool[9379]: Color4f (offset 29) */
"ffff\0"
"glColor4f\0"
"\0"
- /* _mesa_function_pool[9366]: RasterPos4fv (offset 81) */
+ /* _mesa_function_pool[9395]: RasterPos4fv (offset 81) */
"p\0"
"glRasterPos4fv\0"
"\0"
- /* _mesa_function_pool[9384]: Color4d (offset 27) */
+ /* _mesa_function_pool[9413]: Color4d (offset 27) */
"dddd\0"
"glColor4d\0"
"\0"
- /* _mesa_function_pool[9400]: ClearIndex (offset 205) */
+ /* _mesa_function_pool[9429]: ClearIndex (offset 205) */
"f\0"
"glClearIndex\0"
"\0"
- /* _mesa_function_pool[9416]: Color4b (offset 25) */
+ /* _mesa_function_pool[9445]: Color4b (offset 25) */
"iiii\0"
"glColor4b\0"
"\0"
- /* _mesa_function_pool[9432]: LoadMatrixd (offset 292) */
+ /* _mesa_function_pool[9461]: LoadMatrixd (offset 292) */
"p\0"
"glLoadMatrixd\0"
"\0"
- /* _mesa_function_pool[9449]: FragmentLightModeliSGIX (dynamic) */
+ /* _mesa_function_pool[9478]: FragmentLightModeliSGIX (dynamic) */
"ii\0"
"glFragmentLightModeliSGIX\0"
"\0"
- /* _mesa_function_pool[9479]: RasterPos2dv (offset 63) */
+ /* _mesa_function_pool[9508]: RasterPos2dv (offset 63) */
"p\0"
"glRasterPos2dv\0"
"\0"
- /* _mesa_function_pool[9497]: ConvolutionParameterfv (offset 351) */
+ /* _mesa_function_pool[9526]: ConvolutionParameterfv (offset 351) */
"iip\0"
"glConvolutionParameterfv\0"
"glConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[9555]: TbufferMask3DFX (dynamic) */
+ /* _mesa_function_pool[9584]: TbufferMask3DFX (dynamic) */
"i\0"
"glTbufferMask3DFX\0"
"\0"
- /* _mesa_function_pool[9576]: GetTexGendv (offset 278) */
+ /* _mesa_function_pool[9605]: GetTexGendv (offset 278) */
"iip\0"
"glGetTexGendv\0"
"\0"
- /* _mesa_function_pool[9595]: GetVertexAttribfvNV (will be remapped) */
+ /* _mesa_function_pool[9624]: GetVertexAttribfvNV (will be remapped) */
"iip\0"
"glGetVertexAttribfvNV\0"
"\0"
- /* _mesa_function_pool[9622]: BeginTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[9651]: BeginTransformFeedbackEXT (will be remapped) */
"i\0"
"glBeginTransformFeedbackEXT\0"
"glBeginTransformFeedback\0"
"\0"
- /* _mesa_function_pool[9678]: LoadProgramNV (will be remapped) */
+ /* _mesa_function_pool[9707]: LoadProgramNV (will be remapped) */
"iiip\0"
"glLoadProgramNV\0"
"\0"
- /* _mesa_function_pool[9700]: WaitSync (will be remapped) */
+ /* _mesa_function_pool[9729]: WaitSync (will be remapped) */
"iii\0"
"glWaitSync\0"
"\0"
- /* _mesa_function_pool[9716]: EndList (offset 1) */
+ /* _mesa_function_pool[9745]: EndList (offset 1) */
"\0"
"glEndList\0"
"\0"
- /* _mesa_function_pool[9728]: VertexAttrib4fvNV (will be remapped) */
+ /* _mesa_function_pool[9757]: VertexAttrib4fvNV (will be remapped) */
"ip\0"
"glVertexAttrib4fvNV\0"
"\0"
- /* _mesa_function_pool[9752]: GetAttachedObjectsARB (will be remapped) */
+ /* _mesa_function_pool[9781]: GetAttachedObjectsARB (will be remapped) */
"iipp\0"
"glGetAttachedObjectsARB\0"
"\0"
- /* _mesa_function_pool[9782]: Uniform3fvARB (will be remapped) */
+ /* _mesa_function_pool[9811]: Uniform3fvARB (will be remapped) */
"iip\0"
"glUniform3fv\0"
"glUniform3fvARB\0"
"\0"
- /* _mesa_function_pool[9816]: EvalCoord1fv (offset 231) */
+ /* _mesa_function_pool[9845]: EvalCoord1fv (offset 231) */
"p\0"
"glEvalCoord1fv\0"
"\0"
- /* _mesa_function_pool[9834]: DrawRangeElements (offset 338) */
+ /* _mesa_function_pool[9863]: DrawRangeElements (offset 338) */
"iiiiip\0"
"glDrawRangeElements\0"
"glDrawRangeElementsEXT\0"
"\0"
- /* _mesa_function_pool[9885]: EvalMesh2 (offset 238) */
+ /* _mesa_function_pool[9914]: EvalMesh2 (offset 238) */
"iiiii\0"
"glEvalMesh2\0"
"\0"
- /* _mesa_function_pool[9904]: Vertex4fv (offset 145) */
+ /* _mesa_function_pool[9933]: Vertex4fv (offset 145) */
"p\0"
"glVertex4fv\0"
"\0"
- /* _mesa_function_pool[9919]: GenTransformFeedbacks (will be remapped) */
+ /* _mesa_function_pool[9948]: GenTransformFeedbacks (will be remapped) */
"ip\0"
"glGenTransformFeedbacks\0"
"\0"
- /* _mesa_function_pool[9947]: SpriteParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[9976]: SpriteParameterfvSGIX (dynamic) */
"ip\0"
"glSpriteParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[9975]: CheckFramebufferStatusEXT (will be remapped) */
+ /* _mesa_function_pool[10004]: CheckFramebufferStatusEXT (will be remapped) */
"i\0"
"glCheckFramebufferStatus\0"
"glCheckFramebufferStatusEXT\0"
"\0"
- /* _mesa_function_pool[10031]: GlobalAlphaFactoruiSUN (dynamic) */
+ /* _mesa_function_pool[10060]: GlobalAlphaFactoruiSUN (dynamic) */
"i\0"
"glGlobalAlphaFactoruiSUN\0"
"\0"
- /* _mesa_function_pool[10059]: GetHandleARB (will be remapped) */
+ /* _mesa_function_pool[10088]: GetHandleARB (will be remapped) */
"i\0"
"glGetHandleARB\0"
"\0"
- /* _mesa_function_pool[10077]: GetVertexAttribivARB (will be remapped) */
+ /* _mesa_function_pool[10106]: GetVertexAttribivARB (will be remapped) */
"iip\0"
"glGetVertexAttribiv\0"
"glGetVertexAttribivARB\0"
"\0"
- /* _mesa_function_pool[10125]: BlendFunciARB (will be remapped) */
+ /* _mesa_function_pool[10154]: BlendFunciARB (will be remapped) */
"iii\0"
"glBlendFunciARB\0"
"glBlendFuncIndexedAMD\0"
"\0"
- /* _mesa_function_pool[10168]: GetnUniformivARB (will be remapped) */
+ /* _mesa_function_pool[10197]: GetnUniformivARB (will be remapped) */
"iiip\0"
"glGetnUniformivARB\0"
"\0"
- /* _mesa_function_pool[10193]: GetTexParameterIivEXT (will be remapped) */
+ /* _mesa_function_pool[10222]: GetTexParameterIivEXT (will be remapped) */
"iip\0"
"glGetTexParameterIivEXT\0"
"glGetTexParameterIiv\0"
"\0"
- /* _mesa_function_pool[10243]: CreateProgram (will be remapped) */
+ /* _mesa_function_pool[10272]: CreateProgram (will be remapped) */
"\0"
"glCreateProgram\0"
"\0"
- /* _mesa_function_pool[10261]: LoadTransposeMatrixdARB (will be remapped) */
+ /* _mesa_function_pool[10290]: LoadTransposeMatrixdARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixd\0"
"glLoadTransposeMatrixdARB\0"
"\0"
- /* _mesa_function_pool[10313]: ReleaseShaderCompiler (will be remapped) */
+ /* _mesa_function_pool[10342]: ReleaseShaderCompiler (will be remapped) */
"\0"
"glReleaseShaderCompiler\0"
"\0"
- /* _mesa_function_pool[10339]: GetMinmax (offset 364) */
+ /* _mesa_function_pool[10368]: GetMinmax (offset 364) */
"iiiip\0"
"glGetMinmax\0"
"glGetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[10373]: StencilFuncSeparate (will be remapped) */
+ /* _mesa_function_pool[10402]: StencilFuncSeparate (will be remapped) */
"iiii\0"
"glStencilFuncSeparate\0"
"\0"
- /* _mesa_function_pool[10401]: SecondaryColor3sEXT (will be remapped) */
+ /* _mesa_function_pool[10430]: SecondaryColor3sEXT (will be remapped) */
"iii\0"
"glSecondaryColor3s\0"
"glSecondaryColor3sEXT\0"
"\0"
- /* _mesa_function_pool[10447]: Color3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10476]: Color3fVertex3fvSUN (dynamic) */
"pp\0"
"glColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[10473]: GetInteger64i_v (will be remapped) */
+ /* _mesa_function_pool[10502]: GetInteger64i_v (will be remapped) */
"iip\0"
"glGetInteger64i_v\0"
"\0"
- /* _mesa_function_pool[10496]: GetVertexAttribdvNV (will be remapped) */
+ /* _mesa_function_pool[10525]: GetVertexAttribdvNV (will be remapped) */
"iip\0"
"glGetVertexAttribdvNV\0"
"\0"
- /* _mesa_function_pool[10523]: Normal3fv (offset 57) */
+ /* _mesa_function_pool[10552]: Normal3fv (offset 57) */
"p\0"
"glNormal3fv\0"
"\0"
- /* _mesa_function_pool[10538]: GlobalAlphaFactorbSUN (dynamic) */
+ /* _mesa_function_pool[10567]: GlobalAlphaFactorbSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorbSUN\0"
"\0"
- /* _mesa_function_pool[10565]: Color3us (offset 23) */
+ /* _mesa_function_pool[10594]: Color3us (offset 23) */
"iii\0"
"glColor3us\0"
"\0"
- /* _mesa_function_pool[10581]: ImageTransformParameterfvHP (dynamic) */
+ /* _mesa_function_pool[10610]: ImageTransformParameterfvHP (dynamic) */
"iip\0"
"glImageTransformParameterfvHP\0"
"\0"
- /* _mesa_function_pool[10616]: VertexAttrib4ivARB (will be remapped) */
+ /* _mesa_function_pool[10645]: VertexAttrib4ivARB (will be remapped) */
"ip\0"
"glVertexAttrib4iv\0"
"glVertexAttrib4ivARB\0"
"\0"
- /* _mesa_function_pool[10659]: End (offset 43) */
+ /* _mesa_function_pool[10688]: End (offset 43) */
"\0"
"glEnd\0"
"\0"
- /* _mesa_function_pool[10667]: VertexAttrib3fNV (will be remapped) */
+ /* _mesa_function_pool[10696]: VertexAttrib3fNV (will be remapped) */
"ifff\0"
"glVertexAttrib3fNV\0"
"\0"
- /* _mesa_function_pool[10692]: VertexAttribs2dvNV (will be remapped) */
+ /* _mesa_function_pool[10721]: VertexAttribs2dvNV (will be remapped) */
"iip\0"
"glVertexAttribs2dvNV\0"
"\0"
- /* _mesa_function_pool[10718]: GetQueryObjectui64vEXT (will be remapped) */
+ /* _mesa_function_pool[10747]: GetQueryObjectui64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjectui64vEXT\0"
"\0"
- /* _mesa_function_pool[10748]: MultiTexCoord3fvARB (offset 395) */
+ /* _mesa_function_pool[10777]: MultiTexCoord3fvARB (offset 395) */
"ip\0"
"glMultiTexCoord3fv\0"
"glMultiTexCoord3fvARB\0"
"\0"
- /* _mesa_function_pool[10793]: SecondaryColor3dEXT (will be remapped) */
+ /* _mesa_function_pool[10822]: SecondaryColor3dEXT (will be remapped) */
"ddd\0"
"glSecondaryColor3d\0"
"glSecondaryColor3dEXT\0"
"\0"
- /* _mesa_function_pool[10839]: Color3ub (offset 19) */
+ /* _mesa_function_pool[10868]: Color3ub (offset 19) */
"iii\0"
"glColor3ub\0"
"\0"
- /* _mesa_function_pool[10855]: GetProgramParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[10884]: GetProgramParameterfvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterfvNV\0"
"\0"
- /* _mesa_function_pool[10887]: TangentPointerEXT (dynamic) */
+ /* _mesa_function_pool[10916]: TangentPointerEXT (dynamic) */
"iip\0"
"glTangentPointerEXT\0"
"\0"
- /* _mesa_function_pool[10912]: Color4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[10941]: Color4fNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[10947]: GetInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[10976]: GetInstrumentsSGIX (dynamic) */
"\0"
"glGetInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[10970]: GetUniformuivEXT (will be remapped) */
+ /* _mesa_function_pool[10999]: GetUniformuivEXT (will be remapped) */
"iip\0"
"glGetUniformuivEXT\0"
"glGetUniformuiv\0"
"\0"
- /* _mesa_function_pool[11010]: Color3ui (offset 21) */
+ /* _mesa_function_pool[11039]: Color3ui (offset 21) */
"iii\0"
"glColor3ui\0"
"\0"
- /* _mesa_function_pool[11026]: EvalMapsNV (dynamic) */
+ /* _mesa_function_pool[11055]: EvalMapsNV (dynamic) */
"ii\0"
"glEvalMapsNV\0"
"\0"
- /* _mesa_function_pool[11043]: TexSubImage2D (offset 333) */
+ /* _mesa_function_pool[11072]: TexSubImage2D (offset 333) */
"iiiiiiiip\0"
"glTexSubImage2D\0"
"glTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[11089]: FragmentLightivSGIX (dynamic) */
+ /* _mesa_function_pool[11118]: FragmentLightivSGIX (dynamic) */
"iip\0"
"glFragmentLightivSGIX\0"
"\0"
- /* _mesa_function_pool[11116]: GetTexParameterPointervAPPLE (will be remapped) */
+ /* _mesa_function_pool[11145]: GetTexParameterPointervAPPLE (will be remapped) */
"iip\0"
"glGetTexParameterPointervAPPLE\0"
"\0"
- /* _mesa_function_pool[11152]: TexGenfv (offset 191) */
+ /* _mesa_function_pool[11181]: TexGenfv (offset 191) */
"iip\0"
"glTexGenfv\0"
"\0"
- /* _mesa_function_pool[11168]: GetTransformFeedbackVaryingEXT (will be remapped) */
+ /* _mesa_function_pool[11197]: GetTransformFeedbackVaryingEXT (will be remapped) */
"iiipppp\0"
"glGetTransformFeedbackVaryingEXT\0"
"glGetTransformFeedbackVarying\0"
"\0"
- /* _mesa_function_pool[11240]: VertexAttrib4bvARB (will be remapped) */
+ /* _mesa_function_pool[11269]: VertexAttrib4bvARB (will be remapped) */
"ip\0"
"glVertexAttrib4bv\0"
"glVertexAttrib4bvARB\0"
"\0"
- /* _mesa_function_pool[11283]: ShaderBinary (will be remapped) */
+ /* _mesa_function_pool[11312]: ShaderBinary (will be remapped) */
"ipipi\0"
"glShaderBinary\0"
"\0"
- /* _mesa_function_pool[11305]: GetIntegerIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[11334]: GetIntegerIndexedvEXT (will be remapped) */
"iip\0"
"glGetIntegerIndexedvEXT\0"
"glGetIntegeri_v\0"
"\0"
- /* _mesa_function_pool[11350]: MultiTexCoord4sARB (offset 406) */
+ /* _mesa_function_pool[11379]: MultiTexCoord4sARB (offset 406) */
"iiiii\0"
"glMultiTexCoord4s\0"
"glMultiTexCoord4sARB\0"
"\0"
- /* _mesa_function_pool[11396]: GetFragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[11425]: GetFragmentMaterialivSGIX (dynamic) */
"iip\0"
"glGetFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[11429]: WindowPos4dMESA (will be remapped) */
+ /* _mesa_function_pool[11458]: WindowPos4dMESA (will be remapped) */
"dddd\0"
"glWindowPos4dMESA\0"
"\0"
- /* _mesa_function_pool[11453]: WeightPointerARB (dynamic) */
+ /* _mesa_function_pool[11482]: WeightPointerARB (dynamic) */
"iiip\0"
"glWeightPointerARB\0"
"\0"
- /* _mesa_function_pool[11478]: WindowPos2dMESA (will be remapped) */
+ /* _mesa_function_pool[11507]: WindowPos2dMESA (will be remapped) */
"dd\0"
"glWindowPos2d\0"
"glWindowPos2dARB\0"
"glWindowPos2dMESA\0"
"\0"
- /* _mesa_function_pool[11531]: FramebufferTexture3DEXT (will be remapped) */
+ /* _mesa_function_pool[11560]: FramebufferTexture3DEXT (will be remapped) */
"iiiiii\0"
"glFramebufferTexture3D\0"
"glFramebufferTexture3DEXT\0"
"\0"
- /* _mesa_function_pool[11588]: BlendEquation (offset 337) */
+ /* _mesa_function_pool[11617]: BlendEquation (offset 337) */
"i\0"
"glBlendEquation\0"
"glBlendEquationEXT\0"
"\0"
- /* _mesa_function_pool[11626]: VertexAttrib3dNV (will be remapped) */
+ /* _mesa_function_pool[11655]: VertexAttrib3dNV (will be remapped) */
"iddd\0"
"glVertexAttrib3dNV\0"
"\0"
- /* _mesa_function_pool[11651]: VertexAttrib3dARB (will be remapped) */
+ /* _mesa_function_pool[11680]: VertexAttrib3dARB (will be remapped) */
"iddd\0"
"glVertexAttrib3d\0"
"glVertexAttrib3dARB\0"
"\0"
- /* _mesa_function_pool[11694]: VertexAttribI4usvEXT (will be remapped) */
+ /* _mesa_function_pool[11723]: VertexAttribI4usvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4usvEXT\0"
"glVertexAttribI4usv\0"
"\0"
- /* _mesa_function_pool[11741]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[11770]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"ppppp\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[11805]: VertexAttrib4fARB (will be remapped) */
+ /* _mesa_function_pool[11834]: VertexAttrib4fARB (will be remapped) */
"iffff\0"
"glVertexAttrib4f\0"
"glVertexAttrib4fARB\0"
"\0"
- /* _mesa_function_pool[11849]: GetError (offset 261) */
+ /* _mesa_function_pool[11878]: GetError (offset 261) */
"\0"
"glGetError\0"
"\0"
- /* _mesa_function_pool[11862]: IndexFuncEXT (dynamic) */
+ /* _mesa_function_pool[11891]: IndexFuncEXT (dynamic) */
"if\0"
"glIndexFuncEXT\0"
"\0"
- /* _mesa_function_pool[11881]: TexCoord3dv (offset 111) */
+ /* _mesa_function_pool[11910]: TexCoord3dv (offset 111) */
"p\0"
"glTexCoord3dv\0"
"\0"
- /* _mesa_function_pool[11898]: Indexdv (offset 45) */
+ /* _mesa_function_pool[11927]: Indexdv (offset 45) */
"p\0"
"glIndexdv\0"
"\0"
- /* _mesa_function_pool[11911]: FramebufferTexture2DEXT (will be remapped) */
+ /* _mesa_function_pool[11940]: FramebufferTexture2DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture2D\0"
"glFramebufferTexture2DEXT\0"
"\0"
- /* _mesa_function_pool[11967]: Normal3s (offset 60) */
+ /* _mesa_function_pool[11996]: Normal3s (offset 60) */
"iii\0"
"glNormal3s\0"
"\0"
- /* _mesa_function_pool[11983]: GetObjectParameterivAPPLE (will be remapped) */
+ /* _mesa_function_pool[12012]: GetObjectParameterivAPPLE (will be remapped) */
"iiip\0"
"glGetObjectParameterivAPPLE\0"
"\0"
- /* _mesa_function_pool[12017]: PushName (offset 201) */
+ /* _mesa_function_pool[12046]: PushName (offset 201) */
"i\0"
"glPushName\0"
"\0"
- /* _mesa_function_pool[12031]: MultiTexCoord2dvARB (offset 385) */
+ /* _mesa_function_pool[12060]: MultiTexCoord2dvARB (offset 385) */
"ip\0"
"glMultiTexCoord2dv\0"
"glMultiTexCoord2dvARB\0"
"\0"
- /* _mesa_function_pool[12076]: CullParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[12105]: CullParameterfvEXT (dynamic) */
"ip\0"
"glCullParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[12101]: Normal3i (offset 58) */
+ /* _mesa_function_pool[12130]: Normal3i (offset 58) */
"iii\0"
"glNormal3i\0"
"\0"
- /* _mesa_function_pool[12117]: ProgramNamedParameter4fvNV (will be remapped) */
+ /* _mesa_function_pool[12146]: ProgramNamedParameter4fvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4fvNV\0"
"\0"
- /* _mesa_function_pool[12152]: SecondaryColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[12181]: SecondaryColorPointerEXT (will be remapped) */
"iiip\0"
"glSecondaryColorPointer\0"
"glSecondaryColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[12209]: VertexAttrib4fvARB (will be remapped) */
+ /* _mesa_function_pool[12238]: VertexAttrib4fvARB (will be remapped) */
"ip\0"
"glVertexAttrib4fv\0"
"glVertexAttrib4fvARB\0"
"\0"
- /* _mesa_function_pool[12252]: PixelTexGenSGIX (will be remapped) */
+ /* _mesa_function_pool[12281]: PixelTexGenSGIX (will be remapped) */
"i\0"
"glPixelTexGenSGIX\0"
"\0"
- /* _mesa_function_pool[12273]: GetActiveUniformARB (will be remapped) */
+ /* _mesa_function_pool[12302]: GetActiveUniformARB (will be remapped) */
"iiipppp\0"
"glGetActiveUniform\0"
"glGetActiveUniformARB\0"
"\0"
- /* _mesa_function_pool[12323]: ImageTransformParameteriHP (dynamic) */
+ /* _mesa_function_pool[12352]: ImageTransformParameteriHP (dynamic) */
"iii\0"
"glImageTransformParameteriHP\0"
"\0"
- /* _mesa_function_pool[12357]: Normal3b (offset 52) */
+ /* _mesa_function_pool[12386]: Normal3b (offset 52) */
"iii\0"
"glNormal3b\0"
"\0"
- /* _mesa_function_pool[12373]: Normal3d (offset 54) */
+ /* _mesa_function_pool[12402]: Normal3d (offset 54) */
"ddd\0"
"glNormal3d\0"
"\0"
- /* _mesa_function_pool[12389]: Uniform1uiEXT (will be remapped) */
+ /* _mesa_function_pool[12418]: Uniform1uiEXT (will be remapped) */
"ii\0"
"glUniform1uiEXT\0"
"glUniform1ui\0"
"\0"
- /* _mesa_function_pool[12422]: Normal3f (offset 56) */
+ /* _mesa_function_pool[12451]: Normal3f (offset 56) */
"fff\0"
"glNormal3f\0"
"\0"
- /* _mesa_function_pool[12438]: MultiTexCoord1svARB (offset 383) */
+ /* _mesa_function_pool[12467]: MultiTexCoord1svARB (offset 383) */
"ip\0"
"glMultiTexCoord1sv\0"
"glMultiTexCoord1svARB\0"
"\0"
- /* _mesa_function_pool[12483]: Indexi (offset 48) */
+ /* _mesa_function_pool[12512]: Indexi (offset 48) */
"i\0"
"glIndexi\0"
"\0"
- /* _mesa_function_pool[12495]: EGLImageTargetTexture2DOES (will be remapped) */
+ /* _mesa_function_pool[12524]: EGLImageTargetTexture2DOES (will be remapped) */
"ip\0"
"glEGLImageTargetTexture2DOES\0"
"\0"
- /* _mesa_function_pool[12528]: EndQueryARB (will be remapped) */
+ /* _mesa_function_pool[12557]: EndQueryARB (will be remapped) */
"i\0"
"glEndQuery\0"
"glEndQueryARB\0"
"\0"
- /* _mesa_function_pool[12556]: DeleteFencesNV (will be remapped) */
+ /* _mesa_function_pool[12585]: DeleteFencesNV (will be remapped) */
"ip\0"
"glDeleteFencesNV\0"
"\0"
- /* _mesa_function_pool[12577]: ColorPointerListIBM (dynamic) */
+ /* _mesa_function_pool[12606]: ColorPointerListIBM (dynamic) */
"iiipi\0"
"glColorPointerListIBM\0"
"\0"
- /* _mesa_function_pool[12606]: BindBufferRangeEXT (will be remapped) */
+ /* _mesa_function_pool[12635]: BindBufferRangeEXT (will be remapped) */
"iiiii\0"
"glBindBufferRangeEXT\0"
"glBindBufferRange\0"
"\0"
- /* _mesa_function_pool[12652]: DepthMask (offset 211) */
+ /* _mesa_function_pool[12681]: DepthMask (offset 211) */
"i\0"
"glDepthMask\0"
"\0"
- /* _mesa_function_pool[12667]: IsShader (will be remapped) */
+ /* _mesa_function_pool[12696]: IsShader (will be remapped) */
"i\0"
"glIsShader\0"
"\0"
- /* _mesa_function_pool[12681]: Indexf (offset 46) */
+ /* _mesa_function_pool[12710]: Indexf (offset 46) */
"f\0"
"glIndexf\0"
"\0"
- /* _mesa_function_pool[12693]: GetImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[12722]: GetImageTransformParameterivHP (dynamic) */
"iip\0"
"glGetImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[12731]: Indexd (offset 44) */
+ /* _mesa_function_pool[12760]: Indexd (offset 44) */
"d\0"
"glIndexd\0"
"\0"
- /* _mesa_function_pool[12743]: GetMaterialiv (offset 270) */
+ /* _mesa_function_pool[12772]: GetMaterialiv (offset 270) */
"iip\0"
"glGetMaterialiv\0"
"\0"
- /* _mesa_function_pool[12764]: StencilOp (offset 244) */
+ /* _mesa_function_pool[12793]: StencilOp (offset 244) */
"iii\0"
"glStencilOp\0"
"\0"
- /* _mesa_function_pool[12781]: WindowPos4ivMESA (will be remapped) */
+ /* _mesa_function_pool[12810]: WindowPos4ivMESA (will be remapped) */
"p\0"
"glWindowPos4ivMESA\0"
"\0"
- /* _mesa_function_pool[12803]: FramebufferTextureLayer (dynamic) */
- "iiiii\0"
- "glFramebufferTextureLayerARB\0"
- "\0"
- /* _mesa_function_pool[12839]: MultiTexCoord3svARB (offset 399) */
+ /* _mesa_function_pool[12832]: MultiTexCoord3svARB (offset 399) */
"ip\0"
"glMultiTexCoord3sv\0"
"glMultiTexCoord3svARB\0"
"\0"
- /* _mesa_function_pool[12884]: TexEnvfv (offset 185) */
+ /* _mesa_function_pool[12877]: TexEnvfv (offset 185) */
"iip\0"
"glTexEnvfv\0"
"\0"
- /* _mesa_function_pool[12900]: MultiTexCoord4iARB (offset 404) */
+ /* _mesa_function_pool[12893]: MultiTexCoord4iARB (offset 404) */
"iiiii\0"
"glMultiTexCoord4i\0"
"glMultiTexCoord4iARB\0"
"\0"
- /* _mesa_function_pool[12946]: Indexs (offset 50) */
+ /* _mesa_function_pool[12939]: Indexs (offset 50) */
"i\0"
"glIndexs\0"
"\0"
- /* _mesa_function_pool[12958]: Binormal3ivEXT (dynamic) */
+ /* _mesa_function_pool[12951]: Binormal3ivEXT (dynamic) */
"p\0"
"glBinormal3ivEXT\0"
"\0"
- /* _mesa_function_pool[12978]: ResizeBuffersMESA (will be remapped) */
+ /* _mesa_function_pool[12971]: ResizeBuffersMESA (will be remapped) */
"\0"
"glResizeBuffersMESA\0"
"\0"
- /* _mesa_function_pool[13000]: BlendFuncSeparateiARB (will be remapped) */
+ /* _mesa_function_pool[12993]: BlendFuncSeparateiARB (will be remapped) */
"iiiii\0"
"glBlendFuncSeparateiARB\0"
"glBlendFuncSeparateIndexedAMD\0"
"\0"
- /* _mesa_function_pool[13061]: GetUniformivARB (will be remapped) */
+ /* _mesa_function_pool[13054]: GetUniformivARB (will be remapped) */
"iip\0"
"glGetUniformiv\0"
"glGetUniformivARB\0"
"\0"
- /* _mesa_function_pool[13099]: PixelTexGenParameteriSGIS (will be remapped) */
+ /* _mesa_function_pool[13092]: PixelTexGenParameteriSGIS (will be remapped) */
"ii\0"
"glPixelTexGenParameteriSGIS\0"
"\0"
- /* _mesa_function_pool[13131]: VertexPointervINTEL (dynamic) */
+ /* _mesa_function_pool[13124]: VertexPointervINTEL (dynamic) */
"iip\0"
"glVertexPointervINTEL\0"
"\0"
- /* _mesa_function_pool[13158]: Vertex2i (offset 130) */
+ /* _mesa_function_pool[13151]: Vertex2i (offset 130) */
"ii\0"
"glVertex2i\0"
"\0"
- /* _mesa_function_pool[13173]: LoadMatrixf (offset 291) */
+ /* _mesa_function_pool[13166]: LoadMatrixf (offset 291) */
"p\0"
"glLoadMatrixf\0"
"\0"
- /* _mesa_function_pool[13190]: VertexAttribI1uivEXT (will be remapped) */
+ /* _mesa_function_pool[13183]: VertexAttribI1uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI1uivEXT\0"
"glVertexAttribI1uiv\0"
"\0"
- /* _mesa_function_pool[13237]: Vertex2f (offset 128) */
+ /* _mesa_function_pool[13230]: Vertex2f (offset 128) */
"ff\0"
"glVertex2f\0"
"\0"
- /* _mesa_function_pool[13252]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[13245]: ReplacementCodeuiColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[13305]: Color4bv (offset 26) */
+ /* _mesa_function_pool[13298]: Color4bv (offset 26) */
"p\0"
"glColor4bv\0"
"\0"
- /* _mesa_function_pool[13319]: VertexPointer (offset 321) */
+ /* _mesa_function_pool[13312]: VertexPointer (offset 321) */
"iiip\0"
"glVertexPointer\0"
"\0"
- /* _mesa_function_pool[13341]: SecondaryColor3uiEXT (will be remapped) */
+ /* _mesa_function_pool[13334]: SecondaryColor3uiEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ui\0"
"glSecondaryColor3uiEXT\0"
"\0"
- /* _mesa_function_pool[13389]: StartInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[13382]: StartInstrumentsSGIX (dynamic) */
"\0"
"glStartInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[13414]: SecondaryColor3usvEXT (will be remapped) */
+ /* _mesa_function_pool[13407]: SecondaryColor3usvEXT (will be remapped) */
"p\0"
"glSecondaryColor3usv\0"
"glSecondaryColor3usvEXT\0"
"\0"
- /* _mesa_function_pool[13462]: VertexAttrib2fvNV (will be remapped) */
+ /* _mesa_function_pool[13455]: VertexAttrib2fvNV (will be remapped) */
"ip\0"
"glVertexAttrib2fvNV\0"
"\0"
- /* _mesa_function_pool[13486]: ProgramLocalParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[13479]: ProgramLocalParameter4dvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4dvARB\0"
"\0"
- /* _mesa_function_pool[13521]: DeleteLists (offset 4) */
+ /* _mesa_function_pool[13514]: DeleteLists (offset 4) */
"ii\0"
"glDeleteLists\0"
"\0"
- /* _mesa_function_pool[13539]: LogicOp (offset 242) */
+ /* _mesa_function_pool[13532]: LogicOp (offset 242) */
"i\0"
"glLogicOp\0"
"\0"
- /* _mesa_function_pool[13552]: MatrixIndexuivARB (dynamic) */
+ /* _mesa_function_pool[13545]: MatrixIndexuivARB (dynamic) */
"ip\0"
"glMatrixIndexuivARB\0"
"\0"
- /* _mesa_function_pool[13576]: Vertex2s (offset 132) */
+ /* _mesa_function_pool[13569]: Vertex2s (offset 132) */
"ii\0"
"glVertex2s\0"
"\0"
- /* _mesa_function_pool[13591]: RenderbufferStorageMultisample (will be remapped) */
+ /* _mesa_function_pool[13584]: RenderbufferStorageMultisample (will be remapped) */
"iiiii\0"
"glRenderbufferStorageMultisample\0"
"glRenderbufferStorageMultisampleEXT\0"
"\0"
- /* _mesa_function_pool[13667]: TexCoord4fv (offset 121) */
+ /* _mesa_function_pool[13660]: TexCoord4fv (offset 121) */
"p\0"
"glTexCoord4fv\0"
"\0"
- /* _mesa_function_pool[13684]: Tangent3sEXT (dynamic) */
+ /* _mesa_function_pool[13677]: Tangent3sEXT (dynamic) */
"iii\0"
"glTangent3sEXT\0"
"\0"
- /* _mesa_function_pool[13704]: GlobalAlphaFactorfSUN (dynamic) */
+ /* _mesa_function_pool[13697]: GlobalAlphaFactorfSUN (dynamic) */
"f\0"
"glGlobalAlphaFactorfSUN\0"
"\0"
- /* _mesa_function_pool[13731]: MultiTexCoord3iARB (offset 396) */
+ /* _mesa_function_pool[13724]: MultiTexCoord3iARB (offset 396) */
"iiii\0"
"glMultiTexCoord3i\0"
"glMultiTexCoord3iARB\0"
"\0"
- /* _mesa_function_pool[13776]: IsProgram (will be remapped) */
+ /* _mesa_function_pool[13769]: IsProgram (will be remapped) */
"i\0"
"glIsProgram\0"
"\0"
- /* _mesa_function_pool[13791]: TexCoordPointerListIBM (dynamic) */
+ /* _mesa_function_pool[13784]: TexCoordPointerListIBM (dynamic) */
"iiipi\0"
"glTexCoordPointerListIBM\0"
"\0"
- /* _mesa_function_pool[13823]: VertexAttribI4svEXT (will be remapped) */
+ /* _mesa_function_pool[13816]: VertexAttribI4svEXT (will be remapped) */
"ip\0"
"glVertexAttribI4svEXT\0"
"glVertexAttribI4sv\0"
"\0"
- /* _mesa_function_pool[13868]: GlobalAlphaFactorusSUN (dynamic) */
+ /* _mesa_function_pool[13861]: GlobalAlphaFactorusSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorusSUN\0"
"\0"
- /* _mesa_function_pool[13896]: VertexAttrib2dvNV (will be remapped) */
+ /* _mesa_function_pool[13889]: VertexAttrib2dvNV (will be remapped) */
"ip\0"
"glVertexAttrib2dvNV\0"
"\0"
- /* _mesa_function_pool[13920]: FramebufferRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[13913]: FramebufferRenderbufferEXT (will be remapped) */
"iiii\0"
"glFramebufferRenderbuffer\0"
"glFramebufferRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[13981]: ClearBufferuiv (will be remapped) */
+ /* _mesa_function_pool[13974]: ClearBufferuiv (will be remapped) */
"iip\0"
"glClearBufferuiv\0"
"\0"
- /* _mesa_function_pool[14003]: VertexAttrib1dvNV (will be remapped) */
+ /* _mesa_function_pool[13996]: VertexAttrib1dvNV (will be remapped) */
"ip\0"
"glVertexAttrib1dvNV\0"
"\0"
- /* _mesa_function_pool[14027]: GenTextures (offset 328) */
+ /* _mesa_function_pool[14020]: GenTextures (offset 328) */
"ip\0"
"glGenTextures\0"
"glGenTexturesEXT\0"
"\0"
- /* _mesa_function_pool[14062]: FramebufferTextureARB (will be remapped) */
+ /* _mesa_function_pool[14055]: FramebufferTextureARB (will be remapped) */
"iiii\0"
"glFramebufferTextureARB\0"
"\0"
- /* _mesa_function_pool[14092]: SetFenceNV (will be remapped) */
+ /* _mesa_function_pool[14085]: SetFenceNV (will be remapped) */
"ii\0"
"glSetFenceNV\0"
"\0"
- /* _mesa_function_pool[14109]: FramebufferTexture1DEXT (will be remapped) */
+ /* _mesa_function_pool[14102]: FramebufferTexture1DEXT (will be remapped) */
"iiiii\0"
"glFramebufferTexture1D\0"
"glFramebufferTexture1DEXT\0"
"\0"
- /* _mesa_function_pool[14165]: GetCombinerOutputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[14158]: GetCombinerOutputParameterivNV (will be remapped) */
"iiip\0"
"glGetCombinerOutputParameterivNV\0"
"\0"
- /* _mesa_function_pool[14204]: MultiModeDrawArraysIBM (will be remapped) */
+ /* _mesa_function_pool[14197]: MultiModeDrawArraysIBM (will be remapped) */
"pppii\0"
"glMultiModeDrawArraysIBM\0"
"\0"
- /* _mesa_function_pool[14236]: PixelTexGenParameterivSGIS (will be remapped) */
+ /* _mesa_function_pool[14229]: PixelTexGenParameterivSGIS (will be remapped) */
"ip\0"
"glPixelTexGenParameterivSGIS\0"
"\0"
- /* _mesa_function_pool[14269]: TextureNormalEXT (dynamic) */
+ /* _mesa_function_pool[14262]: TextureNormalEXT (dynamic) */
"i\0"
"glTextureNormalEXT\0"
"\0"
- /* _mesa_function_pool[14291]: IndexPointerListIBM (dynamic) */
+ /* _mesa_function_pool[14284]: IndexPointerListIBM (dynamic) */
"iipi\0"
"glIndexPointerListIBM\0"
"\0"
- /* _mesa_function_pool[14319]: WeightfvARB (dynamic) */
+ /* _mesa_function_pool[14312]: WeightfvARB (dynamic) */
"ip\0"
"glWeightfvARB\0"
"\0"
- /* _mesa_function_pool[14337]: GetCombinerOutputParameterfvNV (will be remapped) */
+ /* _mesa_function_pool[14330]: GetCombinerOutputParameterfvNV (will be remapped) */
"iiip\0"
"glGetCombinerOutputParameterfvNV\0"
"\0"
- /* _mesa_function_pool[14376]: RasterPos2sv (offset 69) */
+ /* _mesa_function_pool[14369]: RasterPos2sv (offset 69) */
"p\0"
"glRasterPos2sv\0"
"\0"
- /* _mesa_function_pool[14394]: Color4ubv (offset 36) */
+ /* _mesa_function_pool[14387]: Color4ubv (offset 36) */
"p\0"
"glColor4ubv\0"
"\0"
- /* _mesa_function_pool[14409]: DrawBuffer (offset 202) */
+ /* _mesa_function_pool[14402]: DrawBuffer (offset 202) */
"i\0"
"glDrawBuffer\0"
"\0"
- /* _mesa_function_pool[14425]: TexCoord2fv (offset 105) */
+ /* _mesa_function_pool[14418]: TexCoord2fv (offset 105) */
"p\0"
"glTexCoord2fv\0"
"\0"
- /* _mesa_function_pool[14442]: WindowPos4fMESA (will be remapped) */
+ /* _mesa_function_pool[14435]: WindowPos4fMESA (will be remapped) */
"ffff\0"
"glWindowPos4fMESA\0"
"\0"
- /* _mesa_function_pool[14466]: TexCoord1sv (offset 101) */
+ /* _mesa_function_pool[14459]: TexCoord1sv (offset 101) */
"p\0"
"glTexCoord1sv\0"
"\0"
- /* _mesa_function_pool[14483]: WindowPos3dvMESA (will be remapped) */
+ /* _mesa_function_pool[14476]: WindowPos3dvMESA (will be remapped) */
"p\0"
"glWindowPos3dv\0"
"glWindowPos3dvARB\0"
"glWindowPos3dvMESA\0"
"\0"
- /* _mesa_function_pool[14538]: DepthFunc (offset 245) */
+ /* _mesa_function_pool[14531]: DepthFunc (offset 245) */
"i\0"
"glDepthFunc\0"
"\0"
- /* _mesa_function_pool[14553]: PixelMapusv (offset 253) */
+ /* _mesa_function_pool[14546]: PixelMapusv (offset 253) */
"iip\0"
"glPixelMapusv\0"
"\0"
- /* _mesa_function_pool[14572]: GetQueryObjecti64vEXT (will be remapped) */
+ /* _mesa_function_pool[14565]: GetQueryObjecti64vEXT (will be remapped) */
"iip\0"
"glGetQueryObjecti64vEXT\0"
"\0"
- /* _mesa_function_pool[14601]: MultiTexCoord1dARB (offset 376) */
+ /* _mesa_function_pool[14594]: MultiTexCoord1dARB (offset 376) */
"id\0"
"glMultiTexCoord1d\0"
"glMultiTexCoord1dARB\0"
"\0"
- /* _mesa_function_pool[14644]: PointParameterivNV (will be remapped) */
+ /* _mesa_function_pool[14637]: PointParameterivNV (will be remapped) */
"ip\0"
"glPointParameteriv\0"
"glPointParameterivNV\0"
"\0"
- /* _mesa_function_pool[14688]: IsSampler (will be remapped) */
+ /* _mesa_function_pool[14681]: IsSampler (will be remapped) */
"i\0"
"glIsSampler\0"
"\0"
- /* _mesa_function_pool[14703]: BlendFunc (offset 241) */
+ /* _mesa_function_pool[14696]: BlendFunc (offset 241) */
"ii\0"
"glBlendFunc\0"
"\0"
- /* _mesa_function_pool[14719]: EndTransformFeedbackEXT (will be remapped) */
+ /* _mesa_function_pool[14712]: EndTransformFeedbackEXT (will be remapped) */
"\0"
"glEndTransformFeedbackEXT\0"
"glEndTransformFeedback\0"
"\0"
- /* _mesa_function_pool[14770]: Uniform2fvARB (will be remapped) */
+ /* _mesa_function_pool[14763]: Uniform2fvARB (will be remapped) */
"iip\0"
"glUniform2fv\0"
"glUniform2fvARB\0"
"\0"
- /* _mesa_function_pool[14804]: BufferParameteriAPPLE (will be remapped) */
+ /* _mesa_function_pool[14797]: BufferParameteriAPPLE (will be remapped) */
"iii\0"
"glBufferParameteriAPPLE\0"
"\0"
- /* _mesa_function_pool[14833]: MultiTexCoord3dvARB (offset 393) */
+ /* _mesa_function_pool[14826]: MultiTexCoord3dvARB (offset 393) */
"ip\0"
"glMultiTexCoord3dv\0"
"glMultiTexCoord3dvARB\0"
"\0"
- /* _mesa_function_pool[14878]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[14871]: ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[14934]: DeleteObjectARB (will be remapped) */
+ /* _mesa_function_pool[14927]: DeleteObjectARB (will be remapped) */
"i\0"
"glDeleteObjectARB\0"
"\0"
- /* _mesa_function_pool[14955]: GetShaderPrecisionFormat (will be remapped) */
+ /* _mesa_function_pool[14948]: GetShaderPrecisionFormat (will be remapped) */
"iipp\0"
"glGetShaderPrecisionFormat\0"
"\0"
- /* _mesa_function_pool[14988]: MatrixIndexPointerARB (dynamic) */
+ /* _mesa_function_pool[14981]: MatrixIndexPointerARB (dynamic) */
"iiip\0"
"glMatrixIndexPointerARB\0"
"\0"
- /* _mesa_function_pool[15018]: ProgramNamedParameter4dvNV (will be remapped) */
+ /* _mesa_function_pool[15011]: ProgramNamedParameter4dvNV (will be remapped) */
"iipp\0"
"glProgramNamedParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[15053]: Tangent3fvEXT (dynamic) */
+ /* _mesa_function_pool[15046]: Tangent3fvEXT (dynamic) */
"p\0"
"glTangent3fvEXT\0"
"\0"
- /* _mesa_function_pool[15072]: Flush (offset 217) */
+ /* _mesa_function_pool[15065]: Flush (offset 217) */
"\0"
"glFlush\0"
"\0"
- /* _mesa_function_pool[15082]: Color4uiv (offset 38) */
+ /* _mesa_function_pool[15075]: Color4uiv (offset 38) */
"p\0"
"glColor4uiv\0"
"\0"
- /* _mesa_function_pool[15097]: VertexAttribI4iEXT (will be remapped) */
+ /* _mesa_function_pool[15090]: VertexAttribI4iEXT (will be remapped) */
"iiiii\0"
"glVertexAttribI4iEXT\0"
"glVertexAttribI4i\0"
"\0"
- /* _mesa_function_pool[15143]: GenVertexArrays (will be remapped) */
+ /* _mesa_function_pool[15136]: GenVertexArrays (will be remapped) */
"ip\0"
"glGenVertexArrays\0"
"\0"
- /* _mesa_function_pool[15165]: Uniform3uivEXT (will be remapped) */
+ /* _mesa_function_pool[15158]: Uniform3uivEXT (will be remapped) */
"iip\0"
"glUniform3uivEXT\0"
"glUniform3uiv\0"
"\0"
- /* _mesa_function_pool[15201]: RasterPos3sv (offset 77) */
+ /* _mesa_function_pool[15194]: RasterPos3sv (offset 77) */
"p\0"
"glRasterPos3sv\0"
"\0"
- /* _mesa_function_pool[15219]: BindFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[15212]: BindFramebufferEXT (will be remapped) */
"ii\0"
"glBindFramebuffer\0"
"glBindFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[15262]: ReferencePlaneSGIX (dynamic) */
+ /* _mesa_function_pool[15255]: ReferencePlaneSGIX (dynamic) */
"p\0"
"glReferencePlaneSGIX\0"
"\0"
- /* _mesa_function_pool[15286]: PushAttrib (offset 219) */
+ /* _mesa_function_pool[15279]: PushAttrib (offset 219) */
"i\0"
"glPushAttrib\0"
"\0"
- /* _mesa_function_pool[15302]: RasterPos2i (offset 66) */
+ /* _mesa_function_pool[15295]: RasterPos2i (offset 66) */
"ii\0"
"glRasterPos2i\0"
"\0"
- /* _mesa_function_pool[15320]: ValidateProgramARB (will be remapped) */
+ /* _mesa_function_pool[15313]: ValidateProgramARB (will be remapped) */
"i\0"
"glValidateProgram\0"
"glValidateProgramARB\0"
"\0"
- /* _mesa_function_pool[15362]: TexParameteriv (offset 181) */
+ /* _mesa_function_pool[15355]: TexParameteriv (offset 181) */
"iip\0"
"glTexParameteriv\0"
"\0"
- /* _mesa_function_pool[15384]: UnlockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[15377]: UnlockArraysEXT (will be remapped) */
"\0"
"glUnlockArraysEXT\0"
"\0"
- /* _mesa_function_pool[15404]: TexCoord2fColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[15397]: TexCoord2fColor3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[15445]: WindowPos3fvMESA (will be remapped) */
+ /* _mesa_function_pool[15438]: WindowPos3fvMESA (will be remapped) */
"p\0"
"glWindowPos3fv\0"
"glWindowPos3fvARB\0"
"glWindowPos3fvMESA\0"
"\0"
- /* _mesa_function_pool[15500]: RasterPos2f (offset 64) */
+ /* _mesa_function_pool[15493]: RasterPos2f (offset 64) */
"ff\0"
"glRasterPos2f\0"
"\0"
- /* _mesa_function_pool[15518]: VertexAttrib1svNV (will be remapped) */
+ /* _mesa_function_pool[15511]: VertexAttrib1svNV (will be remapped) */
"ip\0"
"glVertexAttrib1svNV\0"
"\0"
- /* _mesa_function_pool[15542]: RasterPos2d (offset 62) */
+ /* _mesa_function_pool[15535]: RasterPos2d (offset 62) */
"dd\0"
"glRasterPos2d\0"
"\0"
- /* _mesa_function_pool[15560]: RasterPos3fv (offset 73) */
+ /* _mesa_function_pool[15553]: RasterPos3fv (offset 73) */
"p\0"
"glRasterPos3fv\0"
"\0"
- /* _mesa_function_pool[15578]: CopyTexSubImage3D (offset 373) */
+ /* _mesa_function_pool[15571]: CopyTexSubImage3D (offset 373) */
"iiiiiiiii\0"
"glCopyTexSubImage3D\0"
"glCopyTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[15632]: VertexAttrib2dARB (will be remapped) */
+ /* _mesa_function_pool[15625]: VertexAttrib2dARB (will be remapped) */
"idd\0"
"glVertexAttrib2d\0"
"glVertexAttrib2dARB\0"
"\0"
- /* _mesa_function_pool[15674]: Color4ub (offset 35) */
+ /* _mesa_function_pool[15667]: Color4ub (offset 35) */
"iiii\0"
"glColor4ub\0"
"\0"
- /* _mesa_function_pool[15691]: GetInteger64v (will be remapped) */
+ /* _mesa_function_pool[15684]: GetInteger64v (will be remapped) */
"ip\0"
"glGetInteger64v\0"
"\0"
- /* _mesa_function_pool[15711]: TextureColorMaskSGIS (dynamic) */
+ /* _mesa_function_pool[15704]: TextureColorMaskSGIS (dynamic) */
"iiii\0"
"glTextureColorMaskSGIS\0"
"\0"
- /* _mesa_function_pool[15740]: RasterPos2s (offset 68) */
+ /* _mesa_function_pool[15733]: RasterPos2s (offset 68) */
"ii\0"
"glRasterPos2s\0"
"\0"
- /* _mesa_function_pool[15758]: GetColorTable (offset 343) */
+ /* _mesa_function_pool[15751]: GetColorTable (offset 343) */
"iiip\0"
"glGetColorTable\0"
"glGetColorTableSGI\0"
"glGetColorTableEXT\0"
"\0"
- /* _mesa_function_pool[15818]: SelectBuffer (offset 195) */
+ /* _mesa_function_pool[15811]: SelectBuffer (offset 195) */
"ip\0"
"glSelectBuffer\0"
"\0"
- /* _mesa_function_pool[15837]: Indexiv (offset 49) */
+ /* _mesa_function_pool[15830]: Indexiv (offset 49) */
"p\0"
"glIndexiv\0"
"\0"
- /* _mesa_function_pool[15850]: TexCoord3i (offset 114) */
+ /* _mesa_function_pool[15843]: TexCoord3i (offset 114) */
"iii\0"
"glTexCoord3i\0"
"\0"
- /* _mesa_function_pool[15868]: CopyColorTable (offset 342) */
+ /* _mesa_function_pool[15861]: CopyColorTable (offset 342) */
"iiiii\0"
"glCopyColorTable\0"
"glCopyColorTableSGI\0"
"\0"
- /* _mesa_function_pool[15912]: GetHistogramParameterfv (offset 362) */
+ /* _mesa_function_pool[15905]: GetHistogramParameterfv (offset 362) */
"iip\0"
"glGetHistogramParameterfv\0"
"glGetHistogramParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[15972]: Frustum (offset 289) */
+ /* _mesa_function_pool[15965]: Frustum (offset 289) */
"dddddd\0"
"glFrustum\0"
"\0"
- /* _mesa_function_pool[15990]: GetString (offset 275) */
+ /* _mesa_function_pool[15983]: GetString (offset 275) */
"i\0"
"glGetString\0"
"\0"
- /* _mesa_function_pool[16005]: ColorPointervINTEL (dynamic) */
+ /* _mesa_function_pool[15998]: ColorPointervINTEL (dynamic) */
"iip\0"
"glColorPointervINTEL\0"
"\0"
- /* _mesa_function_pool[16031]: TexEnvf (offset 184) */
+ /* _mesa_function_pool[16024]: TexEnvf (offset 184) */
"iif\0"
"glTexEnvf\0"
"\0"
- /* _mesa_function_pool[16046]: TexCoord3d (offset 110) */
+ /* _mesa_function_pool[16039]: TexCoord3d (offset 110) */
"ddd\0"
"glTexCoord3d\0"
"\0"
- /* _mesa_function_pool[16064]: AlphaFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[16057]: AlphaFragmentOp1ATI (will be remapped) */
"iiiiii\0"
"glAlphaFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[16094]: TexCoord3f (offset 112) */
+ /* _mesa_function_pool[16087]: TexCoord3f (offset 112) */
"fff\0"
"glTexCoord3f\0"
"\0"
- /* _mesa_function_pool[16112]: MultiTexCoord3ivARB (offset 397) */
+ /* _mesa_function_pool[16105]: MultiTexCoord3ivARB (offset 397) */
"ip\0"
"glMultiTexCoord3iv\0"
"glMultiTexCoord3ivARB\0"
"\0"
- /* _mesa_function_pool[16157]: MultiTexCoord2sARB (offset 390) */
+ /* _mesa_function_pool[16150]: MultiTexCoord2sARB (offset 390) */
"iii\0"
"glMultiTexCoord2s\0"
"glMultiTexCoord2sARB\0"
"\0"
- /* _mesa_function_pool[16201]: VertexAttrib1dvARB (will be remapped) */
+ /* _mesa_function_pool[16194]: VertexAttrib1dvARB (will be remapped) */
"ip\0"
"glVertexAttrib1dv\0"
"glVertexAttrib1dvARB\0"
"\0"
- /* _mesa_function_pool[16244]: GetnHistogramARB (will be remapped) */
+ /* _mesa_function_pool[16237]: GetnHistogramARB (will be remapped) */
"iiiiip\0"
"glGetnHistogramARB\0"
"\0"
- /* _mesa_function_pool[16271]: DeleteTextures (offset 327) */
+ /* _mesa_function_pool[16264]: DeleteTextures (offset 327) */
"ip\0"
"glDeleteTextures\0"
"glDeleteTexturesEXT\0"
"\0"
- /* _mesa_function_pool[16312]: TexCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[16305]: TexCoordPointerEXT (will be remapped) */
"iiiip\0"
"glTexCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[16340]: TexSubImage4DSGIS (dynamic) */
+ /* _mesa_function_pool[16333]: TexSubImage4DSGIS (dynamic) */
"iiiiiiiiiiiip\0"
"glTexSubImage4DSGIS\0"
"\0"
- /* _mesa_function_pool[16375]: TexCoord3s (offset 116) */
+ /* _mesa_function_pool[16368]: TexCoord3s (offset 116) */
"iii\0"
"glTexCoord3s\0"
"\0"
- /* _mesa_function_pool[16393]: GetTexLevelParameteriv (offset 285) */
+ /* _mesa_function_pool[16386]: GetTexLevelParameteriv (offset 285) */
"iiip\0"
"glGetTexLevelParameteriv\0"
"\0"
- /* _mesa_function_pool[16424]: CombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[16417]: CombinerStageParameterfvNV (dynamic) */
"iip\0"
"glCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[16458]: StopInstrumentsSGIX (dynamic) */
+ /* _mesa_function_pool[16451]: StopInstrumentsSGIX (dynamic) */
"i\0"
"glStopInstrumentsSGIX\0"
"\0"
- /* _mesa_function_pool[16483]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[16476]: TexCoord4fColor4fNormal3fVertex4fSUN (dynamic) */
"fffffffffffffff\0"
"glTexCoord4fColor4fNormal3fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[16539]: ClearAccum (offset 204) */
+ /* _mesa_function_pool[16532]: ClearAccum (offset 204) */
"ffff\0"
"glClearAccum\0"
"\0"
- /* _mesa_function_pool[16558]: DeformSGIX (dynamic) */
+ /* _mesa_function_pool[16551]: DeformSGIX (dynamic) */
"i\0"
"glDeformSGIX\0"
"\0"
- /* _mesa_function_pool[16574]: GetVertexAttribfvARB (will be remapped) */
+ /* _mesa_function_pool[16567]: GetVertexAttribfvARB (will be remapped) */
"iip\0"
"glGetVertexAttribfv\0"
"glGetVertexAttribfvARB\0"
"\0"
- /* _mesa_function_pool[16622]: SecondaryColor3ivEXT (will be remapped) */
+ /* _mesa_function_pool[16615]: SecondaryColor3ivEXT (will be remapped) */
"p\0"
"glSecondaryColor3iv\0"
"glSecondaryColor3ivEXT\0"
"\0"
- /* _mesa_function_pool[16668]: TexCoord4iv (offset 123) */
+ /* _mesa_function_pool[16661]: TexCoord4iv (offset 123) */
"p\0"
"glTexCoord4iv\0"
"\0"
- /* _mesa_function_pool[16685]: VertexAttribI4uiEXT (will be remapped) */
+ /* _mesa_function_pool[16678]: VertexAttribI4uiEXT (will be remapped) */
"iiiii\0"
"glVertexAttribI4uiEXT\0"
"glVertexAttribI4ui\0"
"\0"
- /* _mesa_function_pool[16733]: GetFragmentMaterialfvSGIX (dynamic) */
+ /* _mesa_function_pool[16726]: GetFragmentMaterialfvSGIX (dynamic) */
"iip\0"
"glGetFragmentMaterialfvSGIX\0"
"\0"
- /* _mesa_function_pool[16766]: UniformMatrix4x2fv (will be remapped) */
+ /* _mesa_function_pool[16759]: UniformMatrix4x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix4x2fv\0"
"\0"
- /* _mesa_function_pool[16793]: GetDetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16786]: GetDetailTexFuncSGIS (dynamic) */
"ip\0"
"glGetDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[16820]: GetCombinerStageParameterfvNV (dynamic) */
+ /* _mesa_function_pool[16813]: GetCombinerStageParameterfvNV (dynamic) */
"iip\0"
"glGetCombinerStageParameterfvNV\0"
"\0"
- /* _mesa_function_pool[16857]: SamplerParameterIiv (will be remapped) */
+ /* _mesa_function_pool[16850]: SamplerParameterIiv (will be remapped) */
"iip\0"
"glSamplerParameterIiv\0"
"\0"
- /* _mesa_function_pool[16884]: PolygonOffset (offset 319) */
+ /* _mesa_function_pool[16877]: PolygonOffset (offset 319) */
"ff\0"
"glPolygonOffset\0"
"\0"
- /* _mesa_function_pool[16904]: BindVertexArray (will be remapped) */
+ /* _mesa_function_pool[16897]: BindVertexArray (will be remapped) */
"i\0"
"glBindVertexArray\0"
"\0"
- /* _mesa_function_pool[16925]: Color4ubVertex2fvSUN (dynamic) */
+ /* _mesa_function_pool[16918]: Color4ubVertex2fvSUN (dynamic) */
"pp\0"
"glColor4ubVertex2fvSUN\0"
"\0"
- /* _mesa_function_pool[16952]: Rectd (offset 86) */
+ /* _mesa_function_pool[16945]: Rectd (offset 86) */
"dddd\0"
"glRectd\0"
"\0"
- /* _mesa_function_pool[16966]: TexFilterFuncSGIS (dynamic) */
+ /* _mesa_function_pool[16959]: TexFilterFuncSGIS (dynamic) */
"iiip\0"
"glTexFilterFuncSGIS\0"
"\0"
- /* _mesa_function_pool[16992]: TextureBarrierNV (will be remapped) */
+ /* _mesa_function_pool[16985]: TextureBarrierNV (will be remapped) */
"\0"
"glTextureBarrierNV\0"
"\0"
- /* _mesa_function_pool[17013]: SamplerParameterfv (will be remapped) */
+ /* _mesa_function_pool[17006]: SamplerParameterfv (will be remapped) */
"iip\0"
"glSamplerParameterfv\0"
"\0"
- /* _mesa_function_pool[17039]: VertexAttribI4ubvEXT (will be remapped) */
+ /* _mesa_function_pool[17032]: VertexAttribI4ubvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4ubvEXT\0"
"glVertexAttribI4ubv\0"
"\0"
- /* _mesa_function_pool[17086]: GetAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[17079]: GetAttribLocationARB (will be remapped) */
"ip\0"
"glGetAttribLocation\0"
"glGetAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[17133]: RasterPos3i (offset 74) */
+ /* _mesa_function_pool[17126]: RasterPos3i (offset 74) */
"iii\0"
"glRasterPos3i\0"
"\0"
- /* _mesa_function_pool[17152]: BlendEquationSeparateiARB (will be remapped) */
+ /* _mesa_function_pool[17145]: BlendEquationSeparateiARB (will be remapped) */
"iii\0"
"glBlendEquationSeparateiARB\0"
"glBlendEquationSeparateIndexedAMD\0"
"\0"
- /* _mesa_function_pool[17219]: VertexAttrib4ubvARB (will be remapped) */
+ /* _mesa_function_pool[17212]: VertexAttrib4ubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4ubv\0"
"glVertexAttrib4ubvARB\0"
"\0"
- /* _mesa_function_pool[17264]: DetailTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[17257]: DetailTexFuncSGIS (dynamic) */
"iip\0"
"glDetailTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[17289]: Normal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[17282]: Normal3fVertex3fSUN (dynamic) */
"ffffff\0"
"glNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[17319]: CopyTexImage2D (offset 324) */
+ /* _mesa_function_pool[17312]: CopyTexImage2D (offset 324) */
"iiiiiiii\0"
"glCopyTexImage2D\0"
"glCopyTexImage2DEXT\0"
"\0"
- /* _mesa_function_pool[17366]: GetBufferPointervARB (will be remapped) */
+ /* _mesa_function_pool[17359]: GetBufferPointervARB (will be remapped) */
"iip\0"
"glGetBufferPointerv\0"
"glGetBufferPointervARB\0"
"\0"
- /* _mesa_function_pool[17414]: ProgramEnvParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[17407]: ProgramEnvParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramEnvParameter4fARB\0"
"glProgramParameter4fNV\0"
"\0"
- /* _mesa_function_pool[17472]: Uniform3ivARB (will be remapped) */
+ /* _mesa_function_pool[17465]: Uniform3ivARB (will be remapped) */
"iip\0"
"glUniform3iv\0"
"glUniform3ivARB\0"
"\0"
- /* _mesa_function_pool[17506]: Lightfv (offset 160) */
+ /* _mesa_function_pool[17499]: Lightfv (offset 160) */
"iip\0"
"glLightfv\0"
"\0"
- /* _mesa_function_pool[17521]: PrimitiveRestartIndexNV (will be remapped) */
+ /* _mesa_function_pool[17514]: PrimitiveRestartIndexNV (will be remapped) */
"i\0"
"glPrimitiveRestartIndexNV\0"
"glPrimitiveRestartIndex\0"
"\0"
- /* _mesa_function_pool[17574]: ClearDepth (offset 208) */
+ /* _mesa_function_pool[17567]: ClearDepth (offset 208) */
"d\0"
"glClearDepth\0"
"\0"
- /* _mesa_function_pool[17590]: GetFenceivNV (will be remapped) */
+ /* _mesa_function_pool[17583]: GetFenceivNV (will be remapped) */
"iip\0"
"glGetFenceivNV\0"
"\0"
- /* _mesa_function_pool[17610]: WindowPos4dvMESA (will be remapped) */
+ /* _mesa_function_pool[17603]: WindowPos4dvMESA (will be remapped) */
"p\0"
"glWindowPos4dvMESA\0"
"\0"
- /* _mesa_function_pool[17632]: ColorSubTable (offset 346) */
+ /* _mesa_function_pool[17625]: ColorSubTable (offset 346) */
"iiiiip\0"
"glColorSubTable\0"
"glColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[17675]: Color4fv (offset 30) */
+ /* _mesa_function_pool[17668]: Color4fv (offset 30) */
"p\0"
"glColor4fv\0"
"\0"
- /* _mesa_function_pool[17689]: MultiTexCoord4ivARB (offset 405) */
+ /* _mesa_function_pool[17682]: MultiTexCoord4ivARB (offset 405) */
"ip\0"
"glMultiTexCoord4iv\0"
"glMultiTexCoord4ivARB\0"
"\0"
- /* _mesa_function_pool[17734]: GetnMinmaxARB (will be remapped) */
+ /* _mesa_function_pool[17727]: GetnMinmaxARB (will be remapped) */
"iiiiip\0"
"glGetnMinmaxARB\0"
"\0"
- /* _mesa_function_pool[17758]: ProgramLocalParameters4fvEXT (will be remapped) */
+ /* _mesa_function_pool[17751]: ProgramLocalParameters4fvEXT (will be remapped) */
"iiip\0"
"glProgramLocalParameters4fvEXT\0"
"\0"
- /* _mesa_function_pool[17795]: ColorPointer (offset 308) */
+ /* _mesa_function_pool[17788]: ColorPointer (offset 308) */
"iiip\0"
"glColorPointer\0"
"\0"
- /* _mesa_function_pool[17816]: Rects (offset 92) */
+ /* _mesa_function_pool[17809]: Rects (offset 92) */
"iiii\0"
"glRects\0"
"\0"
- /* _mesa_function_pool[17830]: GetMapAttribParameterfvNV (dynamic) */
+ /* _mesa_function_pool[17823]: GetMapAttribParameterfvNV (dynamic) */
"iiip\0"
"glGetMapAttribParameterfvNV\0"
"\0"
- /* _mesa_function_pool[17864]: CreateShaderProgramEXT (will be remapped) */
+ /* _mesa_function_pool[17857]: CreateShaderProgramEXT (will be remapped) */
"ip\0"
"glCreateShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[17893]: ActiveProgramEXT (will be remapped) */
+ /* _mesa_function_pool[17886]: ActiveProgramEXT (will be remapped) */
"i\0"
"glActiveProgramEXT\0"
"\0"
- /* _mesa_function_pool[17915]: Lightiv (offset 162) */
+ /* _mesa_function_pool[17908]: Lightiv (offset 162) */
"iip\0"
"glLightiv\0"
"\0"
- /* _mesa_function_pool[17930]: VertexAttrib4sARB (will be remapped) */
+ /* _mesa_function_pool[17923]: VertexAttrib4sARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4s\0"
"glVertexAttrib4sARB\0"
"\0"
- /* _mesa_function_pool[17974]: GetQueryObjectuivARB (will be remapped) */
+ /* _mesa_function_pool[17967]: GetQueryObjectuivARB (will be remapped) */
"iip\0"
"glGetQueryObjectuiv\0"
"glGetQueryObjectuivARB\0"
"\0"
- /* _mesa_function_pool[18022]: GetTexParameteriv (offset 283) */
+ /* _mesa_function_pool[18015]: GetTexParameteriv (offset 283) */
"iip\0"
"glGetTexParameteriv\0"
"\0"
- /* _mesa_function_pool[18047]: MapParameterivNV (dynamic) */
+ /* _mesa_function_pool[18040]: MapParameterivNV (dynamic) */
"iip\0"
"glMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[18071]: GenRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[18064]: GenRenderbuffersEXT (will be remapped) */
"ip\0"
"glGenRenderbuffers\0"
"glGenRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[18116]: ClearBufferfv (will be remapped) */
+ /* _mesa_function_pool[18109]: ClearBufferfv (will be remapped) */
"iip\0"
"glClearBufferfv\0"
"\0"
- /* _mesa_function_pool[18137]: VertexAttrib2dvARB (will be remapped) */
+ /* _mesa_function_pool[18130]: VertexAttrib2dvARB (will be remapped) */
"ip\0"
"glVertexAttrib2dv\0"
"glVertexAttrib2dvARB\0"
"\0"
- /* _mesa_function_pool[18180]: EdgeFlagPointerEXT (will be remapped) */
+ /* _mesa_function_pool[18173]: EdgeFlagPointerEXT (will be remapped) */
"iip\0"
"glEdgeFlagPointerEXT\0"
"\0"
- /* _mesa_function_pool[18206]: VertexAttribs2svNV (will be remapped) */
+ /* _mesa_function_pool[18199]: VertexAttribs2svNV (will be remapped) */
"iip\0"
"glVertexAttribs2svNV\0"
"\0"
- /* _mesa_function_pool[18232]: WeightbvARB (dynamic) */
+ /* _mesa_function_pool[18225]: WeightbvARB (dynamic) */
"ip\0"
"glWeightbvARB\0"
"\0"
- /* _mesa_function_pool[18250]: VertexAttrib2fvARB (will be remapped) */
+ /* _mesa_function_pool[18243]: VertexAttrib2fvARB (will be remapped) */
"ip\0"
"glVertexAttrib2fv\0"
"glVertexAttrib2fvARB\0"
"\0"
- /* _mesa_function_pool[18293]: GetBufferParameterivARB (will be remapped) */
+ /* _mesa_function_pool[18286]: GetBufferParameterivARB (will be remapped) */
"iip\0"
"glGetBufferParameteriv\0"
"glGetBufferParameterivARB\0"
"\0"
- /* _mesa_function_pool[18347]: Rectdv (offset 87) */
+ /* _mesa_function_pool[18340]: Rectdv (offset 87) */
"pp\0"
"glRectdv\0"
"\0"
- /* _mesa_function_pool[18360]: ListParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[18353]: ListParameteriSGIX (dynamic) */
"iii\0"
"glListParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[18386]: BlendEquationiARB (will be remapped) */
+ /* _mesa_function_pool[18379]: BlendEquationiARB (will be remapped) */
"ii\0"
"glBlendEquationiARB\0"
"glBlendEquationIndexedAMD\0"
"\0"
- /* _mesa_function_pool[18436]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[18429]: ReplacementCodeuiColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffff\0"
"glReplacementCodeuiColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[18495]: InstrumentsBufferSGIX (dynamic) */
+ /* _mesa_function_pool[18488]: InstrumentsBufferSGIX (dynamic) */
"ip\0"
"glInstrumentsBufferSGIX\0"
"\0"
- /* _mesa_function_pool[18523]: VertexAttrib4NivARB (will be remapped) */
+ /* _mesa_function_pool[18516]: VertexAttrib4NivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Niv\0"
"glVertexAttrib4NivARB\0"
"\0"
- /* _mesa_function_pool[18568]: DrawArraysInstancedARB (will be remapped) */
+ /* _mesa_function_pool[18561]: DrawArraysInstancedARB (will be remapped) */
"iiii\0"
"glDrawArraysInstancedARB\0"
"glDrawArraysInstancedEXT\0"
"glDrawArraysInstanced\0"
"\0"
- /* _mesa_function_pool[18646]: GetAttachedShaders (will be remapped) */
+ /* _mesa_function_pool[18639]: GetAttachedShaders (will be remapped) */
"iipp\0"
"glGetAttachedShaders\0"
"\0"
- /* _mesa_function_pool[18673]: GenVertexArraysAPPLE (will be remapped) */
+ /* _mesa_function_pool[18666]: GenVertexArraysAPPLE (will be remapped) */
"ip\0"
"glGenVertexArraysAPPLE\0"
"\0"
- /* _mesa_function_pool[18700]: ClearBufferfi (will be remapped) */
+ /* _mesa_function_pool[18693]: ClearBufferfi (will be remapped) */
"iifi\0"
"glClearBufferfi\0"
"\0"
- /* _mesa_function_pool[18722]: Materialiv (offset 172) */
+ /* _mesa_function_pool[18715]: Materialiv (offset 172) */
"iip\0"
"glMaterialiv\0"
"\0"
- /* _mesa_function_pool[18740]: PushClientAttrib (offset 335) */
+ /* _mesa_function_pool[18733]: PushClientAttrib (offset 335) */
"i\0"
"glPushClientAttrib\0"
"\0"
- /* _mesa_function_pool[18762]: SamplerParameteriv (will be remapped) */
+ /* _mesa_function_pool[18755]: SamplerParameteriv (will be remapped) */
"iip\0"
"glSamplerParameteriv\0"
"\0"
- /* _mesa_function_pool[18788]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[18781]: TexCoord2fColor4fNormal3fVertex3fvSUN (dynamic) */
"pppp\0"
"glTexCoord2fColor4fNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[18834]: WindowPos2iMESA (will be remapped) */
+ /* _mesa_function_pool[18827]: WindowPos2iMESA (will be remapped) */
"ii\0"
"glWindowPos2i\0"
"glWindowPos2iARB\0"
"glWindowPos2iMESA\0"
"\0"
- /* _mesa_function_pool[18887]: SampleMaskSGIS (will be remapped) */
+ /* _mesa_function_pool[18880]: SampleMaskSGIS (will be remapped) */
"fi\0"
"glSampleMaskSGIS\0"
"glSampleMaskEXT\0"
"\0"
- /* _mesa_function_pool[18924]: SecondaryColor3fvEXT (will be remapped) */
+ /* _mesa_function_pool[18917]: SecondaryColor3fvEXT (will be remapped) */
"p\0"
"glSecondaryColor3fv\0"
"glSecondaryColor3fvEXT\0"
"\0"
- /* _mesa_function_pool[18970]: PolygonMode (offset 174) */
+ /* _mesa_function_pool[18963]: PolygonMode (offset 174) */
"ii\0"
"glPolygonMode\0"
"\0"
- /* _mesa_function_pool[18988]: CompressedTexSubImage1DARB (will be remapped) */
+ /* _mesa_function_pool[18981]: CompressedTexSubImage1DARB (will be remapped) */
"iiiiiip\0"
"glCompressedTexSubImage1D\0"
"glCompressedTexSubImage1DARB\0"
"\0"
- /* _mesa_function_pool[19052]: VertexAttribI1iEXT (will be remapped) */
+ /* _mesa_function_pool[19045]: VertexAttribI1iEXT (will be remapped) */
"ii\0"
"glVertexAttribI1iEXT\0"
"glVertexAttribI1i\0"
"\0"
- /* _mesa_function_pool[19095]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[19088]: TexCoord2fNormal3fVertex3fSUN (dynamic) */
"ffffffff\0"
"glTexCoord2fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[19137]: GetVertexAttribivNV (will be remapped) */
+ /* _mesa_function_pool[19130]: GetVertexAttribivNV (will be remapped) */
"iip\0"
"glGetVertexAttribivNV\0"
"\0"
- /* _mesa_function_pool[19164]: GetProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[19157]: GetProgramStringARB (will be remapped) */
"iip\0"
"glGetProgramStringARB\0"
"\0"
- /* _mesa_function_pool[19191]: GetnUniformdvARB (will be remapped) */
+ /* _mesa_function_pool[19184]: GetnUniformdvARB (will be remapped) */
"iiip\0"
"glGetnUniformdvARB\0"
"\0"
- /* _mesa_function_pool[19216]: DrawElementsInstancedBaseVertex (will be remapped) */
+ /* _mesa_function_pool[19209]: DrawElementsInstancedBaseVertex (will be remapped) */
"iiipii\0"
"glDrawElementsInstancedBaseVertex\0"
"\0"
- /* _mesa_function_pool[19258]: VertexAttribIPointerEXT (will be remapped) */
+ /* _mesa_function_pool[19251]: VertexAttribIPointerEXT (will be remapped) */
"iiiip\0"
"glVertexAttribIPointerEXT\0"
"glVertexAttribIPointer\0"
"\0"
- /* _mesa_function_pool[19314]: TexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[19307]: TexBumpParameterfvATI (will be remapped) */
"ip\0"
"glTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[19342]: Tangent3ivEXT (dynamic) */
+ /* _mesa_function_pool[19335]: Tangent3ivEXT (dynamic) */
"p\0"
"glTangent3ivEXT\0"
"\0"
- /* _mesa_function_pool[19361]: CompileShaderARB (will be remapped) */
+ /* _mesa_function_pool[19354]: CompileShaderARB (will be remapped) */
"i\0"
"glCompileShader\0"
"glCompileShaderARB\0"
"\0"
- /* _mesa_function_pool[19399]: DeleteShader (will be remapped) */
+ /* _mesa_function_pool[19392]: DeleteShader (will be remapped) */
"i\0"
"glDeleteShader\0"
"\0"
- /* _mesa_function_pool[19417]: DisableClientState (offset 309) */
+ /* _mesa_function_pool[19410]: DisableClientState (offset 309) */
"i\0"
"glDisableClientState\0"
"\0"
- /* _mesa_function_pool[19441]: TexGeni (offset 192) */
+ /* _mesa_function_pool[19434]: TexGeni (offset 192) */
"iii\0"
"glTexGeni\0"
"\0"
- /* _mesa_function_pool[19456]: TexGenf (offset 190) */
+ /* _mesa_function_pool[19449]: TexGenf (offset 190) */
"iif\0"
"glTexGenf\0"
"\0"
- /* _mesa_function_pool[19471]: Uniform3fARB (will be remapped) */
+ /* _mesa_function_pool[19464]: Uniform3fARB (will be remapped) */
"ifff\0"
"glUniform3f\0"
"glUniform3fARB\0"
"\0"
- /* _mesa_function_pool[19504]: TexGend (offset 188) */
+ /* _mesa_function_pool[19497]: TexGend (offset 188) */
"iid\0"
"glTexGend\0"
"\0"
- /* _mesa_function_pool[19519]: ListParameterfvSGIX (dynamic) */
+ /* _mesa_function_pool[19512]: ListParameterfvSGIX (dynamic) */
"iip\0"
"glListParameterfvSGIX\0"
"\0"
- /* _mesa_function_pool[19546]: GetPolygonStipple (offset 274) */
+ /* _mesa_function_pool[19539]: GetPolygonStipple (offset 274) */
"p\0"
"glGetPolygonStipple\0"
"\0"
- /* _mesa_function_pool[19569]: Tangent3dvEXT (dynamic) */
+ /* _mesa_function_pool[19562]: Tangent3dvEXT (dynamic) */
"p\0"
"glTangent3dvEXT\0"
"\0"
- /* _mesa_function_pool[19588]: BindBufferOffsetEXT (will be remapped) */
+ /* _mesa_function_pool[19581]: BindBufferOffsetEXT (will be remapped) */
"iiii\0"
"glBindBufferOffsetEXT\0"
"\0"
- /* _mesa_function_pool[19616]: WindowPos3sMESA (will be remapped) */
+ /* _mesa_function_pool[19609]: WindowPos3sMESA (will be remapped) */
"iii\0"
"glWindowPos3s\0"
"glWindowPos3sARB\0"
"glWindowPos3sMESA\0"
"\0"
- /* _mesa_function_pool[19670]: VertexAttrib2svNV (will be remapped) */
+ /* _mesa_function_pool[19663]: VertexAttrib2svNV (will be remapped) */
"ip\0"
"glVertexAttrib2svNV\0"
"\0"
- /* _mesa_function_pool[19694]: DisableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[19687]: DisableIndexedEXT (will be remapped) */
"ii\0"
"glDisableIndexedEXT\0"
"glDisablei\0"
"\0"
- /* _mesa_function_pool[19729]: BindBufferBaseEXT (will be remapped) */
+ /* _mesa_function_pool[19722]: BindBufferBaseEXT (will be remapped) */
"iii\0"
"glBindBufferBaseEXT\0"
"glBindBufferBase\0"
"\0"
- /* _mesa_function_pool[19771]: TexCoord2fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[19764]: TexCoord2fVertex3fvSUN (dynamic) */
"pp\0"
"glTexCoord2fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[19800]: WindowPos4sMESA (will be remapped) */
+ /* _mesa_function_pool[19793]: WindowPos4sMESA (will be remapped) */
"iiii\0"
"glWindowPos4sMESA\0"
"\0"
- /* _mesa_function_pool[19824]: GetnPixelMapuivARB (will be remapped) */
+ /* _mesa_function_pool[19817]: GetnPixelMapuivARB (will be remapped) */
"iip\0"
"glGetnPixelMapuivARB\0"
"\0"
- /* _mesa_function_pool[19850]: VertexAttrib4NuivARB (will be remapped) */
+ /* _mesa_function_pool[19843]: VertexAttrib4NuivARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nuiv\0"
"glVertexAttrib4NuivARB\0"
"\0"
- /* _mesa_function_pool[19897]: ClientActiveTextureARB (offset 375) */
+ /* _mesa_function_pool[19890]: ClientActiveTextureARB (offset 375) */
"i\0"
"glClientActiveTexture\0"
"glClientActiveTextureARB\0"
"\0"
- /* _mesa_function_pool[19947]: GetSamplerParameterIuiv (will be remapped) */
+ /* _mesa_function_pool[19940]: GetSamplerParameterIuiv (will be remapped) */
"iip\0"
"glGetSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[19978]: ReplacementCodeusvSUN (dynamic) */
+ /* _mesa_function_pool[19971]: ReplacementCodeusvSUN (dynamic) */
"p\0"
"glReplacementCodeusvSUN\0"
"\0"
- /* _mesa_function_pool[20005]: Uniform4fARB (will be remapped) */
+ /* _mesa_function_pool[19998]: Uniform4fARB (will be remapped) */
"iffff\0"
"glUniform4f\0"
"glUniform4fARB\0"
"\0"
- /* _mesa_function_pool[20039]: Color4sv (offset 34) */
+ /* _mesa_function_pool[20032]: Color4sv (offset 34) */
"p\0"
"glColor4sv\0"
"\0"
- /* _mesa_function_pool[20053]: FlushMappedBufferRange (will be remapped) */
+ /* _mesa_function_pool[20046]: FlushMappedBufferRange (will be remapped) */
"iii\0"
"glFlushMappedBufferRange\0"
"\0"
- /* _mesa_function_pool[20083]: IsProgramNV (will be remapped) */
+ /* _mesa_function_pool[20076]: IsProgramNV (will be remapped) */
"i\0"
"glIsProgramARB\0"
"glIsProgramNV\0"
"\0"
- /* _mesa_function_pool[20115]: FlushMappedBufferRangeAPPLE (will be remapped) */
+ /* _mesa_function_pool[20108]: FlushMappedBufferRangeAPPLE (will be remapped) */
"iii\0"
"glFlushMappedBufferRangeAPPLE\0"
"\0"
- /* _mesa_function_pool[20150]: PixelZoom (offset 246) */
+ /* _mesa_function_pool[20143]: PixelZoom (offset 246) */
"ff\0"
"glPixelZoom\0"
"\0"
- /* _mesa_function_pool[20166]: ReplacementCodePointerSUN (dynamic) */
+ /* _mesa_function_pool[20159]: ReplacementCodePointerSUN (dynamic) */
"iip\0"
"glReplacementCodePointerSUN\0"
"\0"
- /* _mesa_function_pool[20199]: ProgramEnvParameter4dARB (will be remapped) */
+ /* _mesa_function_pool[20192]: ProgramEnvParameter4dARB (will be remapped) */
"iidddd\0"
"glProgramEnvParameter4dARB\0"
"glProgramParameter4dNV\0"
"\0"
- /* _mesa_function_pool[20257]: ColorTableParameterfv (offset 340) */
+ /* _mesa_function_pool[20250]: ColorTableParameterfv (offset 340) */
"iip\0"
"glColorTableParameterfv\0"
"glColorTableParameterfvSGI\0"
"\0"
- /* _mesa_function_pool[20313]: FragmentLightModelfSGIX (dynamic) */
+ /* _mesa_function_pool[20306]: FragmentLightModelfSGIX (dynamic) */
"if\0"
"glFragmentLightModelfSGIX\0"
"\0"
- /* _mesa_function_pool[20343]: Binormal3bvEXT (dynamic) */
+ /* _mesa_function_pool[20336]: Binormal3bvEXT (dynamic) */
"p\0"
"glBinormal3bvEXT\0"
"\0"
- /* _mesa_function_pool[20363]: PixelMapuiv (offset 252) */
+ /* _mesa_function_pool[20356]: PixelMapuiv (offset 252) */
"iip\0"
"glPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[20382]: Color3dv (offset 12) */
+ /* _mesa_function_pool[20375]: Color3dv (offset 12) */
"p\0"
"glColor3dv\0"
"\0"
- /* _mesa_function_pool[20396]: IsTexture (offset 330) */
+ /* _mesa_function_pool[20389]: IsTexture (offset 330) */
"i\0"
"glIsTexture\0"
"glIsTextureEXT\0"
"\0"
- /* _mesa_function_pool[20426]: GenSamplers (will be remapped) */
+ /* _mesa_function_pool[20419]: GenSamplers (will be remapped) */
"ip\0"
"glGenSamplers\0"
"\0"
- /* _mesa_function_pool[20444]: VertexWeightfvEXT (dynamic) */
+ /* _mesa_function_pool[20437]: VertexWeightfvEXT (dynamic) */
"p\0"
"glVertexWeightfvEXT\0"
"\0"
- /* _mesa_function_pool[20467]: VertexAttrib1dARB (will be remapped) */
+ /* _mesa_function_pool[20460]: VertexAttrib1dARB (will be remapped) */
"id\0"
"glVertexAttrib1d\0"
"glVertexAttrib1dARB\0"
"\0"
- /* _mesa_function_pool[20508]: ImageTransformParameterivHP (dynamic) */
+ /* _mesa_function_pool[20501]: ImageTransformParameterivHP (dynamic) */
"iip\0"
"glImageTransformParameterivHP\0"
"\0"
- /* _mesa_function_pool[20543]: TexCoord4i (offset 122) */
+ /* _mesa_function_pool[20536]: TexCoord4i (offset 122) */
"iiii\0"
"glTexCoord4i\0"
"\0"
- /* _mesa_function_pool[20562]: DeleteQueriesARB (will be remapped) */
+ /* _mesa_function_pool[20555]: DeleteQueriesARB (will be remapped) */
"ip\0"
"glDeleteQueries\0"
"glDeleteQueriesARB\0"
"\0"
- /* _mesa_function_pool[20601]: Color4ubVertex2fSUN (dynamic) */
+ /* _mesa_function_pool[20594]: Color4ubVertex2fSUN (dynamic) */
"iiiiff\0"
"glColor4ubVertex2fSUN\0"
"\0"
- /* _mesa_function_pool[20631]: FragmentColorMaterialSGIX (dynamic) */
+ /* _mesa_function_pool[20624]: FragmentColorMaterialSGIX (dynamic) */
"ii\0"
"glFragmentColorMaterialSGIX\0"
"\0"
- /* _mesa_function_pool[20663]: CurrentPaletteMatrixARB (dynamic) */
+ /* _mesa_function_pool[20656]: CurrentPaletteMatrixARB (dynamic) */
"i\0"
"glCurrentPaletteMatrixARB\0"
"\0"
- /* _mesa_function_pool[20692]: GetMapdv (offset 266) */
+ /* _mesa_function_pool[20685]: GetMapdv (offset 266) */
"iip\0"
"glGetMapdv\0"
"\0"
- /* _mesa_function_pool[20708]: ObjectPurgeableAPPLE (will be remapped) */
+ /* _mesa_function_pool[20701]: ObjectPurgeableAPPLE (will be remapped) */
"iii\0"
"glObjectPurgeableAPPLE\0"
"\0"
- /* _mesa_function_pool[20736]: GetStringi (will be remapped) */
+ /* _mesa_function_pool[20729]: GetStringi (will be remapped) */
"ii\0"
"glGetStringi\0"
"\0"
- /* _mesa_function_pool[20753]: SamplePatternSGIS (will be remapped) */
+ /* _mesa_function_pool[20746]: SamplePatternSGIS (will be remapped) */
"i\0"
"glSamplePatternSGIS\0"
"glSamplePatternEXT\0"
"\0"
- /* _mesa_function_pool[20795]: PixelStoref (offset 249) */
+ /* _mesa_function_pool[20788]: PixelStoref (offset 249) */
"if\0"
"glPixelStoref\0"
"\0"
- /* _mesa_function_pool[20813]: IsQueryARB (will be remapped) */
+ /* _mesa_function_pool[20806]: IsQueryARB (will be remapped) */
"i\0"
"glIsQuery\0"
"glIsQueryARB\0"
"\0"
- /* _mesa_function_pool[20839]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[20832]: ReplacementCodeuiColor4ubVertex3fSUN (dynamic) */
"iiiiifff\0"
"glReplacementCodeuiColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[20888]: PixelStorei (offset 250) */
+ /* _mesa_function_pool[20881]: PixelStorei (offset 250) */
"ii\0"
"glPixelStorei\0"
"\0"
- /* _mesa_function_pool[20906]: VertexAttrib4usvARB (will be remapped) */
+ /* _mesa_function_pool[20899]: VertexAttrib4usvARB (will be remapped) */
"ip\0"
"glVertexAttrib4usv\0"
"glVertexAttrib4usvARB\0"
"\0"
- /* _mesa_function_pool[20951]: LinkProgramARB (will be remapped) */
+ /* _mesa_function_pool[20944]: LinkProgramARB (will be remapped) */
"i\0"
"glLinkProgram\0"
"glLinkProgramARB\0"
"\0"
- /* _mesa_function_pool[20985]: VertexAttrib2fNV (will be remapped) */
+ /* _mesa_function_pool[20978]: VertexAttrib2fNV (will be remapped) */
"iff\0"
"glVertexAttrib2fNV\0"
"\0"
- /* _mesa_function_pool[21009]: ShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[21002]: ShaderSourceARB (will be remapped) */
"iipp\0"
"glShaderSource\0"
"glShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[21048]: FragmentMaterialiSGIX (dynamic) */
+ /* _mesa_function_pool[21041]: FragmentMaterialiSGIX (dynamic) */
"iii\0"
"glFragmentMaterialiSGIX\0"
"\0"
- /* _mesa_function_pool[21077]: EvalCoord2dv (offset 233) */
+ /* _mesa_function_pool[21070]: EvalCoord2dv (offset 233) */
"p\0"
"glEvalCoord2dv\0"
"\0"
- /* _mesa_function_pool[21095]: VertexAttrib3svARB (will be remapped) */
+ /* _mesa_function_pool[21088]: VertexAttrib3svARB (will be remapped) */
"ip\0"
"glVertexAttrib3sv\0"
"glVertexAttrib3svARB\0"
"\0"
- /* _mesa_function_pool[21138]: ColorMaterial (offset 151) */
+ /* _mesa_function_pool[21131]: ColorMaterial (offset 151) */
"ii\0"
"glColorMaterial\0"
"\0"
- /* _mesa_function_pool[21158]: CompressedTexSubImage3DARB (will be remapped) */
+ /* _mesa_function_pool[21151]: CompressedTexSubImage3DARB (will be remapped) */
"iiiiiiiiiip\0"
"glCompressedTexSubImage3D\0"
"glCompressedTexSubImage3DARB\0"
"\0"
- /* _mesa_function_pool[21226]: WindowPos2ivMESA (will be remapped) */
+ /* _mesa_function_pool[21219]: WindowPos2ivMESA (will be remapped) */
"p\0"
"glWindowPos2iv\0"
"glWindowPos2ivARB\0"
"glWindowPos2ivMESA\0"
"\0"
- /* _mesa_function_pool[21281]: IsFramebufferEXT (will be remapped) */
+ /* _mesa_function_pool[21274]: IsFramebufferEXT (will be remapped) */
"i\0"
"glIsFramebuffer\0"
"glIsFramebufferEXT\0"
"\0"
- /* _mesa_function_pool[21319]: Uniform4ivARB (will be remapped) */
+ /* _mesa_function_pool[21312]: Uniform4ivARB (will be remapped) */
"iip\0"
"glUniform4iv\0"
"glUniform4ivARB\0"
"\0"
- /* _mesa_function_pool[21353]: GetVertexAttribdvARB (will be remapped) */
+ /* _mesa_function_pool[21346]: GetVertexAttribdvARB (will be remapped) */
"iip\0"
"glGetVertexAttribdv\0"
"glGetVertexAttribdvARB\0"
"\0"
- /* _mesa_function_pool[21401]: TexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[21394]: TexBumpParameterivATI (will be remapped) */
"ip\0"
"glTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[21429]: GetSeparableFilter (offset 359) */
+ /* _mesa_function_pool[21422]: GetSeparableFilter (offset 359) */
"iiippp\0"
"glGetSeparableFilter\0"
"glGetSeparableFilterEXT\0"
"\0"
- /* _mesa_function_pool[21482]: Binormal3dEXT (dynamic) */
+ /* _mesa_function_pool[21475]: Binormal3dEXT (dynamic) */
"ddd\0"
"glBinormal3dEXT\0"
"\0"
- /* _mesa_function_pool[21503]: SpriteParameteriSGIX (dynamic) */
+ /* _mesa_function_pool[21496]: SpriteParameteriSGIX (dynamic) */
"ii\0"
"glSpriteParameteriSGIX\0"
"\0"
- /* _mesa_function_pool[21530]: RequestResidentProgramsNV (will be remapped) */
+ /* _mesa_function_pool[21523]: RequestResidentProgramsNV (will be remapped) */
"ip\0"
"glRequestResidentProgramsNV\0"
"\0"
- /* _mesa_function_pool[21562]: TagSampleBufferSGIX (dynamic) */
+ /* _mesa_function_pool[21555]: TagSampleBufferSGIX (dynamic) */
"\0"
"glTagSampleBufferSGIX\0"
"\0"
- /* _mesa_function_pool[21586]: TransformFeedbackVaryingsEXT (will be remapped) */
+ /* _mesa_function_pool[21579]: TransformFeedbackVaryingsEXT (will be remapped) */
"iipi\0"
"glTransformFeedbackVaryingsEXT\0"
"glTransformFeedbackVaryings\0"
"\0"
- /* _mesa_function_pool[21651]: FeedbackBuffer (offset 194) */
+ /* _mesa_function_pool[21644]: FeedbackBuffer (offset 194) */
"iip\0"
"glFeedbackBuffer\0"
"\0"
- /* _mesa_function_pool[21673]: RasterPos2iv (offset 67) */
+ /* _mesa_function_pool[21666]: RasterPos2iv (offset 67) */
"p\0"
"glRasterPos2iv\0"
"\0"
- /* _mesa_function_pool[21691]: TexImage1D (offset 182) */
+ /* _mesa_function_pool[21684]: TexImage1D (offset 182) */
"iiiiiiip\0"
"glTexImage1D\0"
"\0"
- /* _mesa_function_pool[21714]: ListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[21707]: ListParameterivSGIX (dynamic) */
"iip\0"
"glListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[21741]: MultiDrawElementsEXT (will be remapped) */
+ /* _mesa_function_pool[21734]: MultiDrawElementsEXT (will be remapped) */
"ipipi\0"
"glMultiDrawElements\0"
"glMultiDrawElementsEXT\0"
"\0"
- /* _mesa_function_pool[21791]: Color3s (offset 17) */
+ /* _mesa_function_pool[21784]: Color3s (offset 17) */
"iii\0"
"glColor3s\0"
"\0"
- /* _mesa_function_pool[21806]: Uniform1ivARB (will be remapped) */
+ /* _mesa_function_pool[21799]: Uniform1ivARB (will be remapped) */
"iip\0"
"glUniform1iv\0"
"glUniform1ivARB\0"
"\0"
- /* _mesa_function_pool[21840]: WindowPos2sMESA (will be remapped) */
+ /* _mesa_function_pool[21833]: WindowPos2sMESA (will be remapped) */
"ii\0"
"glWindowPos2s\0"
"glWindowPos2sARB\0"
"glWindowPos2sMESA\0"
"\0"
- /* _mesa_function_pool[21893]: WeightusvARB (dynamic) */
+ /* _mesa_function_pool[21886]: WeightusvARB (dynamic) */
"ip\0"
"glWeightusvARB\0"
"\0"
- /* _mesa_function_pool[21912]: TexCoordPointer (offset 320) */
+ /* _mesa_function_pool[21905]: TexCoordPointer (offset 320) */
"iiip\0"
"glTexCoordPointer\0"
"\0"
- /* _mesa_function_pool[21936]: FogCoordPointerEXT (will be remapped) */
+ /* _mesa_function_pool[21929]: FogCoordPointerEXT (will be remapped) */
"iip\0"
"glFogCoordPointer\0"
"glFogCoordPointerEXT\0"
"\0"
- /* _mesa_function_pool[21980]: GetnSeparableFilterARB (will be remapped) */
+ /* _mesa_function_pool[21973]: GetnSeparableFilterARB (will be remapped) */
"iiiipipp\0"
"glGetnSeparableFilterARB\0"
"\0"
- /* _mesa_function_pool[22015]: IndexMaterialEXT (dynamic) */
+ /* _mesa_function_pool[22008]: IndexMaterialEXT (dynamic) */
"ii\0"
"glIndexMaterialEXT\0"
"\0"
- /* _mesa_function_pool[22038]: Color3i (offset 15) */
+ /* _mesa_function_pool[22031]: Color3i (offset 15) */
"iii\0"
"glColor3i\0"
"\0"
- /* _mesa_function_pool[22053]: FrontFace (offset 157) */
+ /* _mesa_function_pool[22046]: FrontFace (offset 157) */
"i\0"
"glFrontFace\0"
"\0"
- /* _mesa_function_pool[22068]: EvalCoord2d (offset 232) */
+ /* _mesa_function_pool[22061]: EvalCoord2d (offset 232) */
"dd\0"
"glEvalCoord2d\0"
"\0"
- /* _mesa_function_pool[22086]: SecondaryColor3ubvEXT (will be remapped) */
+ /* _mesa_function_pool[22079]: SecondaryColor3ubvEXT (will be remapped) */
"p\0"
"glSecondaryColor3ubv\0"
"glSecondaryColor3ubvEXT\0"
"\0"
- /* _mesa_function_pool[22134]: EvalCoord2f (offset 234) */
+ /* _mesa_function_pool[22127]: EvalCoord2f (offset 234) */
"ff\0"
"glEvalCoord2f\0"
"\0"
- /* _mesa_function_pool[22152]: VertexAttrib4dvARB (will be remapped) */
+ /* _mesa_function_pool[22145]: VertexAttrib4dvARB (will be remapped) */
"ip\0"
"glVertexAttrib4dv\0"
"glVertexAttrib4dvARB\0"
"\0"
- /* _mesa_function_pool[22195]: BindAttribLocationARB (will be remapped) */
+ /* _mesa_function_pool[22188]: BindAttribLocationARB (will be remapped) */
"iip\0"
"glBindAttribLocation\0"
"glBindAttribLocationARB\0"
"\0"
- /* _mesa_function_pool[22245]: Color3b (offset 9) */
+ /* _mesa_function_pool[22238]: Color3b (offset 9) */
"iii\0"
"glColor3b\0"
"\0"
- /* _mesa_function_pool[22260]: MultiTexCoord2dARB (offset 384) */
+ /* _mesa_function_pool[22253]: MultiTexCoord2dARB (offset 384) */
"idd\0"
"glMultiTexCoord2d\0"
"glMultiTexCoord2dARB\0"
"\0"
- /* _mesa_function_pool[22304]: ExecuteProgramNV (will be remapped) */
+ /* _mesa_function_pool[22297]: ExecuteProgramNV (will be remapped) */
"iip\0"
"glExecuteProgramNV\0"
"\0"
- /* _mesa_function_pool[22328]: Color3f (offset 13) */
+ /* _mesa_function_pool[22321]: Color3f (offset 13) */
"fff\0"
"glColor3f\0"
"\0"
- /* _mesa_function_pool[22343]: LightEnviSGIX (dynamic) */
+ /* _mesa_function_pool[22336]: LightEnviSGIX (dynamic) */
"ii\0"
"glLightEnviSGIX\0"
"\0"
- /* _mesa_function_pool[22363]: Color3d (offset 11) */
+ /* _mesa_function_pool[22356]: Color3d (offset 11) */
"ddd\0"
"glColor3d\0"
"\0"
- /* _mesa_function_pool[22378]: Normal3dv (offset 55) */
+ /* _mesa_function_pool[22371]: Normal3dv (offset 55) */
"p\0"
"glNormal3dv\0"
"\0"
- /* _mesa_function_pool[22393]: Lightf (offset 159) */
+ /* _mesa_function_pool[22386]: Lightf (offset 159) */
"iif\0"
"glLightf\0"
"\0"
- /* _mesa_function_pool[22407]: ReplacementCodeuiSUN (dynamic) */
+ /* _mesa_function_pool[22400]: ReplacementCodeuiSUN (dynamic) */
"i\0"
"glReplacementCodeuiSUN\0"
"\0"
- /* _mesa_function_pool[22433]: MatrixMode (offset 293) */
+ /* _mesa_function_pool[22426]: MatrixMode (offset 293) */
"i\0"
"glMatrixMode\0"
"\0"
- /* _mesa_function_pool[22449]: GetPixelMapusv (offset 273) */
+ /* _mesa_function_pool[22442]: GetPixelMapusv (offset 273) */
"ip\0"
"glGetPixelMapusv\0"
"\0"
- /* _mesa_function_pool[22470]: Lighti (offset 161) */
+ /* _mesa_function_pool[22463]: Lighti (offset 161) */
"iii\0"
"glLighti\0"
"\0"
- /* _mesa_function_pool[22484]: VertexAttribPointerNV (will be remapped) */
+ /* _mesa_function_pool[22477]: VertexAttribPointerNV (will be remapped) */
"iiiip\0"
"glVertexAttribPointerNV\0"
"\0"
- /* _mesa_function_pool[22515]: ClearDepthf (will be remapped) */
+ /* _mesa_function_pool[22508]: ClearDepthf (will be remapped) */
"f\0"
"glClearDepthf\0"
"\0"
- /* _mesa_function_pool[22532]: GetBooleanIndexedvEXT (will be remapped) */
+ /* _mesa_function_pool[22525]: GetBooleanIndexedvEXT (will be remapped) */
"iip\0"
"glGetBooleanIndexedvEXT\0"
"glGetBooleani_v\0"
"\0"
- /* _mesa_function_pool[22577]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[22570]: GetFramebufferAttachmentParameterivEXT (will be remapped) */
"iiip\0"
"glGetFramebufferAttachmentParameteriv\0"
"glGetFramebufferAttachmentParameterivEXT\0"
"\0"
- /* _mesa_function_pool[22662]: PixelTransformParameterfEXT (dynamic) */
+ /* _mesa_function_pool[22655]: PixelTransformParameterfEXT (dynamic) */
"iif\0"
"glPixelTransformParameterfEXT\0"
"\0"
- /* _mesa_function_pool[22697]: MultiTexCoord4dvARB (offset 401) */
+ /* _mesa_function_pool[22690]: MultiTexCoord4dvARB (offset 401) */
"ip\0"
"glMultiTexCoord4dv\0"
"glMultiTexCoord4dvARB\0"
"\0"
- /* _mesa_function_pool[22742]: PixelTransformParameteriEXT (dynamic) */
+ /* _mesa_function_pool[22735]: PixelTransformParameteriEXT (dynamic) */
"iii\0"
"glPixelTransformParameteriEXT\0"
"\0"
- /* _mesa_function_pool[22777]: GetDoublev (offset 260) */
+ /* _mesa_function_pool[22770]: GetDoublev (offset 260) */
"ip\0"
"glGetDoublev\0"
"\0"
- /* _mesa_function_pool[22794]: MultMatrixd (offset 295) */
+ /* _mesa_function_pool[22787]: MultMatrixd (offset 295) */
"p\0"
"glMultMatrixd\0"
"\0"
- /* _mesa_function_pool[22811]: MultMatrixf (offset 294) */
+ /* _mesa_function_pool[22804]: MultMatrixf (offset 294) */
"p\0"
"glMultMatrixf\0"
"\0"
- /* _mesa_function_pool[22828]: VertexAttribI4bvEXT (will be remapped) */
+ /* _mesa_function_pool[22821]: VertexAttribI4bvEXT (will be remapped) */
"ip\0"
"glVertexAttribI4bvEXT\0"
"glVertexAttribI4bv\0"
"\0"
- /* _mesa_function_pool[22873]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[22866]: TexCoord2fColor4ubVertex3fSUN (dynamic) */
"ffiiiifff\0"
"glTexCoord2fColor4ubVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[22916]: Uniform1iARB (will be remapped) */
+ /* _mesa_function_pool[22909]: Uniform1iARB (will be remapped) */
"ii\0"
"glUniform1i\0"
"glUniform1iARB\0"
"\0"
- /* _mesa_function_pool[22947]: GetnMapfvARB (will be remapped) */
+ /* _mesa_function_pool[22940]: GetnMapfvARB (will be remapped) */
"iiip\0"
"glGetnMapfvARB\0"
"\0"
- /* _mesa_function_pool[22968]: VertexAttribPointerARB (will be remapped) */
+ /* _mesa_function_pool[22961]: VertexAttribPointerARB (will be remapped) */
"iiiiip\0"
"glVertexAttribPointer\0"
"glVertexAttribPointerARB\0"
"\0"
- /* _mesa_function_pool[23023]: VertexAttrib3sNV (will be remapped) */
+ /* _mesa_function_pool[23016]: VertexAttrib3sNV (will be remapped) */
"iiii\0"
"glVertexAttrib3sNV\0"
"\0"
- /* _mesa_function_pool[23048]: SharpenTexFuncSGIS (dynamic) */
+ /* _mesa_function_pool[23041]: SharpenTexFuncSGIS (dynamic) */
"iip\0"
"glSharpenTexFuncSGIS\0"
"\0"
- /* _mesa_function_pool[23074]: MultiTexCoord4fvARB (offset 403) */
+ /* _mesa_function_pool[23067]: MultiTexCoord4fvARB (offset 403) */
"ip\0"
"glMultiTexCoord4fv\0"
"glMultiTexCoord4fvARB\0"
"\0"
- /* _mesa_function_pool[23119]: Uniform2uiEXT (will be remapped) */
+ /* _mesa_function_pool[23112]: Uniform2uiEXT (will be remapped) */
"iii\0"
"glUniform2uiEXT\0"
"glUniform2ui\0"
"\0"
- /* _mesa_function_pool[23153]: UniformMatrix2x3fv (will be remapped) */
+ /* _mesa_function_pool[23146]: UniformMatrix2x3fv (will be remapped) */
"iiip\0"
"glUniformMatrix2x3fv\0"
"\0"
- /* _mesa_function_pool[23180]: SamplerParameteri (will be remapped) */
+ /* _mesa_function_pool[23173]: SamplerParameteri (will be remapped) */
"iii\0"
"glSamplerParameteri\0"
"\0"
- /* _mesa_function_pool[23205]: SamplerParameterf (will be remapped) */
+ /* _mesa_function_pool[23198]: SamplerParameterf (will be remapped) */
"iif\0"
"glSamplerParameterf\0"
"\0"
- /* _mesa_function_pool[23230]: CombinerParameteriNV (will be remapped) */
+ /* _mesa_function_pool[23223]: CombinerParameteriNV (will be remapped) */
"ii\0"
"glCombinerParameteriNV\0"
"\0"
- /* _mesa_function_pool[23257]: DeleteAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[23250]: DeleteAsyncMarkersSGIX (dynamic) */
"ii\0"
"glDeleteAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[23286]: ReplacementCodeusSUN (dynamic) */
+ /* _mesa_function_pool[23279]: ReplacementCodeusSUN (dynamic) */
"i\0"
"glReplacementCodeusSUN\0"
"\0"
- /* _mesa_function_pool[23312]: IsAsyncMarkerSGIX (dynamic) */
+ /* _mesa_function_pool[23305]: IsAsyncMarkerSGIX (dynamic) */
"i\0"
"glIsAsyncMarkerSGIX\0"
"\0"
- /* _mesa_function_pool[23335]: FrameZoomSGIX (dynamic) */
+ /* _mesa_function_pool[23328]: FrameZoomSGIX (dynamic) */
"i\0"
"glFrameZoomSGIX\0"
"\0"
- /* _mesa_function_pool[23354]: Normal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[23347]: Normal3fVertex3fvSUN (dynamic) */
"pp\0"
"glNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[23381]: GetnUniformuivARB (will be remapped) */
+ /* _mesa_function_pool[23374]: GetnUniformuivARB (will be remapped) */
"iiip\0"
"glGetnUniformuivARB\0"
"\0"
- /* _mesa_function_pool[23407]: RasterPos4sv (offset 85) */
+ /* _mesa_function_pool[23400]: RasterPos4sv (offset 85) */
"p\0"
"glRasterPos4sv\0"
"\0"
- /* _mesa_function_pool[23425]: VertexAttrib4NsvARB (will be remapped) */
+ /* _mesa_function_pool[23418]: VertexAttrib4NsvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nsv\0"
"glVertexAttrib4NsvARB\0"
"\0"
- /* _mesa_function_pool[23470]: VertexAttrib3fvARB (will be remapped) */
+ /* _mesa_function_pool[23463]: VertexAttrib3fvARB (will be remapped) */
"ip\0"
"glVertexAttrib3fv\0"
"glVertexAttrib3fvARB\0"
"\0"
- /* _mesa_function_pool[23513]: ClearColor (offset 206) */
+ /* _mesa_function_pool[23506]: ClearColor (offset 206) */
"ffff\0"
"glClearColor\0"
"\0"
- /* _mesa_function_pool[23532]: GetSynciv (will be remapped) */
+ /* _mesa_function_pool[23525]: GetSynciv (will be remapped) */
"iiipp\0"
"glGetSynciv\0"
"\0"
- /* _mesa_function_pool[23551]: ClearColorIiEXT (will be remapped) */
+ /* _mesa_function_pool[23544]: ClearColorIiEXT (will be remapped) */
"iiii\0"
"glClearColorIiEXT\0"
"\0"
- /* _mesa_function_pool[23575]: DeleteFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[23568]: DeleteFramebuffersEXT (will be remapped) */
"ip\0"
"glDeleteFramebuffers\0"
"glDeleteFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[23624]: GlobalAlphaFactorsSUN (dynamic) */
+ /* _mesa_function_pool[23617]: GlobalAlphaFactorsSUN (dynamic) */
"i\0"
"glGlobalAlphaFactorsSUN\0"
"\0"
- /* _mesa_function_pool[23651]: IsEnabledIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[23644]: IsEnabledIndexedEXT (will be remapped) */
"ii\0"
"glIsEnabledIndexedEXT\0"
"glIsEnabledi\0"
"\0"
- /* _mesa_function_pool[23690]: TexEnviv (offset 187) */
+ /* _mesa_function_pool[23683]: TexEnviv (offset 187) */
"iip\0"
"glTexEnviv\0"
"\0"
- /* _mesa_function_pool[23706]: TexSubImage3D (offset 372) */
+ /* _mesa_function_pool[23699]: TexSubImage3D (offset 372) */
"iiiiiiiiiip\0"
"glTexSubImage3D\0"
"glTexSubImage3DEXT\0"
"\0"
- /* _mesa_function_pool[23754]: Tangent3fEXT (dynamic) */
+ /* _mesa_function_pool[23747]: Tangent3fEXT (dynamic) */
"fff\0"
"glTangent3fEXT\0"
"\0"
- /* _mesa_function_pool[23774]: SecondaryColor3uivEXT (will be remapped) */
+ /* _mesa_function_pool[23767]: SecondaryColor3uivEXT (will be remapped) */
"p\0"
"glSecondaryColor3uiv\0"
"glSecondaryColor3uivEXT\0"
"\0"
- /* _mesa_function_pool[23822]: MatrixIndexubvARB (dynamic) */
+ /* _mesa_function_pool[23815]: MatrixIndexubvARB (dynamic) */
"ip\0"
"glMatrixIndexubvARB\0"
"\0"
- /* _mesa_function_pool[23846]: Color4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[23839]: Color4fNormal3fVertex3fSUN (dynamic) */
"ffffffffff\0"
"glColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[23887]: PixelTexGenParameterfSGIS (will be remapped) */
+ /* _mesa_function_pool[23880]: PixelTexGenParameterfSGIS (will be remapped) */
"if\0"
"glPixelTexGenParameterfSGIS\0"
"\0"
- /* _mesa_function_pool[23919]: CreateShader (will be remapped) */
+ /* _mesa_function_pool[23912]: CreateShader (will be remapped) */
"i\0"
"glCreateShader\0"
"\0"
- /* _mesa_function_pool[23937]: GetColorTableParameterfv (offset 344) */
+ /* _mesa_function_pool[23930]: GetColorTableParameterfv (offset 344) */
"iip\0"
"glGetColorTableParameterfv\0"
"glGetColorTableParameterfvSGI\0"
"glGetColorTableParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[24029]: FragmentLightModelfvSGIX (dynamic) */
+ /* _mesa_function_pool[24022]: FragmentLightModelfvSGIX (dynamic) */
"ip\0"
"glFragmentLightModelfvSGIX\0"
"\0"
- /* _mesa_function_pool[24060]: Bitmap (offset 8) */
+ /* _mesa_function_pool[24053]: Bitmap (offset 8) */
"iiffffp\0"
"glBitmap\0"
"\0"
- /* _mesa_function_pool[24078]: MultiTexCoord3fARB (offset 394) */
+ /* _mesa_function_pool[24071]: MultiTexCoord3fARB (offset 394) */
"ifff\0"
"glMultiTexCoord3f\0"
"glMultiTexCoord3fARB\0"
"\0"
- /* _mesa_function_pool[24123]: GetTexLevelParameterfv (offset 284) */
+ /* _mesa_function_pool[24116]: GetTexLevelParameterfv (offset 284) */
"iiip\0"
"glGetTexLevelParameterfv\0"
"\0"
- /* _mesa_function_pool[24154]: GetPixelTexGenParameterfvSGIS (will be remapped) */
+ /* _mesa_function_pool[24147]: GetPixelTexGenParameterfvSGIS (will be remapped) */
"ip\0"
"glGetPixelTexGenParameterfvSGIS\0"
"\0"
- /* _mesa_function_pool[24190]: GenFramebuffersEXT (will be remapped) */
+ /* _mesa_function_pool[24183]: GenFramebuffersEXT (will be remapped) */
"ip\0"
"glGenFramebuffers\0"
"glGenFramebuffersEXT\0"
"\0"
- /* _mesa_function_pool[24233]: VertexAttribDivisor (will be remapped) */
+ /* _mesa_function_pool[24226]: VertexAttribDivisor (will be remapped) */
"ii\0"
"glVertexAttribDivisor\0"
"\0"
- /* _mesa_function_pool[24259]: GetProgramParameterdvNV (will be remapped) */
+ /* _mesa_function_pool[24252]: GetProgramParameterdvNV (will be remapped) */
"iiip\0"
"glGetProgramParameterdvNV\0"
"\0"
- /* _mesa_function_pool[24291]: Vertex2sv (offset 133) */
+ /* _mesa_function_pool[24284]: Vertex2sv (offset 133) */
"p\0"
"glVertex2sv\0"
"\0"
- /* _mesa_function_pool[24306]: GetIntegerv (offset 263) */
+ /* _mesa_function_pool[24299]: GetIntegerv (offset 263) */
"ip\0"
"glGetIntegerv\0"
"\0"
- /* _mesa_function_pool[24324]: IsVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[24317]: IsVertexArrayAPPLE (will be remapped) */
"i\0"
"glIsVertexArray\0"
"glIsVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[24364]: FragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[24357]: FragmentLightfvSGIX (dynamic) */
"iip\0"
"glFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[24391]: GetnMapdvARB (will be remapped) */
+ /* _mesa_function_pool[24384]: GetnMapdvARB (will be remapped) */
"iiip\0"
"glGetnMapdvARB\0"
"\0"
- /* _mesa_function_pool[24412]: DetachShader (will be remapped) */
+ /* _mesa_function_pool[24405]: DetachShader (will be remapped) */
"ii\0"
"glDetachShader\0"
"\0"
- /* _mesa_function_pool[24431]: VertexAttrib4NubARB (will be remapped) */
+ /* _mesa_function_pool[24424]: VertexAttrib4NubARB (will be remapped) */
"iiiii\0"
"glVertexAttrib4Nub\0"
"glVertexAttrib4NubARB\0"
"\0"
- /* _mesa_function_pool[24479]: GetProgramEnvParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[24472]: GetProgramEnvParameterfvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterfvARB\0"
"\0"
- /* _mesa_function_pool[24514]: GetTrackMatrixivNV (will be remapped) */
+ /* _mesa_function_pool[24507]: GetTrackMatrixivNV (will be remapped) */
"iiip\0"
"glGetTrackMatrixivNV\0"
"\0"
- /* _mesa_function_pool[24541]: VertexAttrib3svNV (will be remapped) */
+ /* _mesa_function_pool[24534]: VertexAttrib3svNV (will be remapped) */
"ip\0"
"glVertexAttrib3svNV\0"
"\0"
- /* _mesa_function_pool[24565]: Uniform4fvARB (will be remapped) */
+ /* _mesa_function_pool[24558]: Uniform4fvARB (will be remapped) */
"iip\0"
"glUniform4fv\0"
"glUniform4fvARB\0"
"\0"
- /* _mesa_function_pool[24599]: MultTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[24592]: MultTransposeMatrixfARB (will be remapped) */
"p\0"
"glMultTransposeMatrixf\0"
"glMultTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[24651]: GetTexEnviv (offset 277) */
+ /* _mesa_function_pool[24644]: GetTexEnviv (offset 277) */
"iip\0"
"glGetTexEnviv\0"
"\0"
- /* _mesa_function_pool[24670]: ColorFragmentOp1ATI (will be remapped) */
+ /* _mesa_function_pool[24663]: ColorFragmentOp1ATI (will be remapped) */
"iiiiiii\0"
"glColorFragmentOp1ATI\0"
"\0"
- /* _mesa_function_pool[24701]: GetUniformfvARB (will be remapped) */
+ /* _mesa_function_pool[24694]: GetUniformfvARB (will be remapped) */
"iip\0"
"glGetUniformfv\0"
"glGetUniformfvARB\0"
"\0"
- /* _mesa_function_pool[24739]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
+ /* _mesa_function_pool[24732]: EGLImageTargetRenderbufferStorageOES (will be remapped) */
"ip\0"
"glEGLImageTargetRenderbufferStorageOES\0"
"\0"
- /* _mesa_function_pool[24782]: VertexAttribI2ivEXT (will be remapped) */
+ /* _mesa_function_pool[24775]: VertexAttribI2ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI2ivEXT\0"
"glVertexAttribI2iv\0"
"\0"
- /* _mesa_function_pool[24827]: PopClientAttrib (offset 334) */
+ /* _mesa_function_pool[24820]: PopClientAttrib (offset 334) */
"\0"
"glPopClientAttrib\0"
"\0"
- /* _mesa_function_pool[24847]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[24840]: ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN (dynamic) */
"iffffffffffff\0"
"glReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[24918]: DetachObjectARB (will be remapped) */
+ /* _mesa_function_pool[24911]: DetachObjectARB (will be remapped) */
"ii\0"
"glDetachObjectARB\0"
"\0"
- /* _mesa_function_pool[24940]: VertexBlendARB (dynamic) */
+ /* _mesa_function_pool[24933]: VertexBlendARB (dynamic) */
"i\0"
"glVertexBlendARB\0"
"\0"
- /* _mesa_function_pool[24960]: WindowPos3iMESA (will be remapped) */
+ /* _mesa_function_pool[24953]: WindowPos3iMESA (will be remapped) */
"iii\0"
"glWindowPos3i\0"
"glWindowPos3iARB\0"
"glWindowPos3iMESA\0"
"\0"
- /* _mesa_function_pool[25014]: SeparableFilter2D (offset 360) */
+ /* _mesa_function_pool[25007]: SeparableFilter2D (offset 360) */
"iiiiiipp\0"
"glSeparableFilter2D\0"
"glSeparableFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[25067]: ProgramParameteriARB (will be remapped) */
+ /* _mesa_function_pool[25060]: ProgramParameteriARB (will be remapped) */
"iii\0"
"glProgramParameteriARB\0"
"\0"
- /* _mesa_function_pool[25095]: Map1d (offset 220) */
+ /* _mesa_function_pool[25088]: Map1d (offset 220) */
"iddiip\0"
"glMap1d\0"
"\0"
- /* _mesa_function_pool[25111]: Map1f (offset 221) */
+ /* _mesa_function_pool[25104]: Map1f (offset 221) */
"iffiip\0"
"glMap1f\0"
"\0"
- /* _mesa_function_pool[25127]: CompressedTexImage2DARB (will be remapped) */
+ /* _mesa_function_pool[25120]: CompressedTexImage2DARB (will be remapped) */
"iiiiiiip\0"
"glCompressedTexImage2D\0"
"glCompressedTexImage2DARB\0"
"\0"
- /* _mesa_function_pool[25186]: ArrayElement (offset 306) */
+ /* _mesa_function_pool[25179]: ArrayElement (offset 306) */
"i\0"
"glArrayElement\0"
"glArrayElementEXT\0"
"\0"
- /* _mesa_function_pool[25222]: TexImage2D (offset 183) */
+ /* _mesa_function_pool[25215]: TexImage2D (offset 183) */
"iiiiiiiip\0"
"glTexImage2D\0"
"\0"
- /* _mesa_function_pool[25246]: DepthBoundsEXT (will be remapped) */
+ /* _mesa_function_pool[25239]: DepthBoundsEXT (will be remapped) */
"dd\0"
"glDepthBoundsEXT\0"
"\0"
- /* _mesa_function_pool[25267]: ProgramParameters4fvNV (will be remapped) */
+ /* _mesa_function_pool[25260]: ProgramParameters4fvNV (will be remapped) */
"iiip\0"
"glProgramParameters4fvNV\0"
"\0"
- /* _mesa_function_pool[25298]: DeformationMap3fSGIX (dynamic) */
+ /* _mesa_function_pool[25291]: DeformationMap3fSGIX (dynamic) */
"iffiiffiiffiip\0"
"glDeformationMap3fSGIX\0"
"\0"
- /* _mesa_function_pool[25337]: GetProgramivNV (will be remapped) */
+ /* _mesa_function_pool[25330]: GetProgramivNV (will be remapped) */
"iip\0"
"glGetProgramivNV\0"
"\0"
- /* _mesa_function_pool[25359]: GetFragDataLocationEXT (will be remapped) */
+ /* _mesa_function_pool[25352]: GetFragDataLocationEXT (will be remapped) */
"ip\0"
"glGetFragDataLocationEXT\0"
"glGetFragDataLocation\0"
"\0"
- /* _mesa_function_pool[25410]: GetMinmaxParameteriv (offset 366) */
+ /* _mesa_function_pool[25403]: GetMinmaxParameteriv (offset 366) */
"iip\0"
"glGetMinmaxParameteriv\0"
"glGetMinmaxParameterivEXT\0"
"\0"
- /* _mesa_function_pool[25464]: PixelTransferf (offset 247) */
+ /* _mesa_function_pool[25457]: PixelTransferf (offset 247) */
"if\0"
"glPixelTransferf\0"
"\0"
- /* _mesa_function_pool[25485]: CopyTexImage1D (offset 323) */
+ /* _mesa_function_pool[25478]: CopyTexImage1D (offset 323) */
"iiiiiii\0"
"glCopyTexImage1D\0"
"glCopyTexImage1DEXT\0"
"\0"
- /* _mesa_function_pool[25531]: PushMatrix (offset 298) */
+ /* _mesa_function_pool[25524]: PushMatrix (offset 298) */
"\0"
"glPushMatrix\0"
"\0"
- /* _mesa_function_pool[25546]: Fogiv (offset 156) */
+ /* _mesa_function_pool[25539]: Fogiv (offset 156) */
"ip\0"
"glFogiv\0"
"\0"
- /* _mesa_function_pool[25558]: TexCoord1dv (offset 95) */
+ /* _mesa_function_pool[25551]: TexCoord1dv (offset 95) */
"p\0"
"glTexCoord1dv\0"
"\0"
- /* _mesa_function_pool[25575]: AlphaFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[25568]: AlphaFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiii\0"
"glAlphaFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[25611]: PixelTransferi (offset 248) */
+ /* _mesa_function_pool[25604]: PixelTransferi (offset 248) */
"ii\0"
"glPixelTransferi\0"
"\0"
- /* _mesa_function_pool[25632]: GetnColorTableARB (will be remapped) */
+ /* _mesa_function_pool[25625]: GetnColorTableARB (will be remapped) */
"iiiip\0"
"glGetnColorTableARB\0"
"\0"
- /* _mesa_function_pool[25659]: VertexAttrib3fvNV (will be remapped) */
+ /* _mesa_function_pool[25652]: VertexAttrib3fvNV (will be remapped) */
"ip\0"
"glVertexAttrib3fvNV\0"
"\0"
- /* _mesa_function_pool[25683]: Rotatef (offset 300) */
+ /* _mesa_function_pool[25676]: Rotatef (offset 300) */
"ffff\0"
"glRotatef\0"
"\0"
- /* _mesa_function_pool[25699]: GetFinalCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[25692]: GetFinalCombinerInputParameterivNV (will be remapped) */
"iip\0"
"glGetFinalCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[25741]: Vertex3i (offset 138) */
+ /* _mesa_function_pool[25734]: Vertex3i (offset 138) */
"iii\0"
"glVertex3i\0"
"\0"
- /* _mesa_function_pool[25757]: Vertex3f (offset 136) */
+ /* _mesa_function_pool[25750]: Vertex3f (offset 136) */
"fff\0"
"glVertex3f\0"
"\0"
- /* _mesa_function_pool[25773]: Clear (offset 203) */
+ /* _mesa_function_pool[25766]: Clear (offset 203) */
"i\0"
"glClear\0"
"\0"
- /* _mesa_function_pool[25784]: Vertex3d (offset 134) */
+ /* _mesa_function_pool[25777]: Vertex3d (offset 134) */
"ddd\0"
"glVertex3d\0"
"\0"
- /* _mesa_function_pool[25800]: GetMapParameterivNV (dynamic) */
+ /* _mesa_function_pool[25793]: GetMapParameterivNV (dynamic) */
"iip\0"
"glGetMapParameterivNV\0"
"\0"
- /* _mesa_function_pool[25827]: Uniform4iARB (will be remapped) */
+ /* _mesa_function_pool[25820]: Uniform4iARB (will be remapped) */
"iiiii\0"
"glUniform4i\0"
"glUniform4iARB\0"
"\0"
- /* _mesa_function_pool[25861]: ReadBuffer (offset 254) */
+ /* _mesa_function_pool[25854]: ReadBuffer (offset 254) */
"i\0"
"glReadBuffer\0"
"\0"
- /* _mesa_function_pool[25877]: ConvolutionParameteri (offset 352) */
+ /* _mesa_function_pool[25870]: ConvolutionParameteri (offset 352) */
"iii\0"
"glConvolutionParameteri\0"
"glConvolutionParameteriEXT\0"
"\0"
- /* _mesa_function_pool[25933]: Ortho (offset 296) */
+ /* _mesa_function_pool[25926]: Ortho (offset 296) */
"dddddd\0"
"glOrtho\0"
"\0"
- /* _mesa_function_pool[25949]: Binormal3sEXT (dynamic) */
+ /* _mesa_function_pool[25942]: Binormal3sEXT (dynamic) */
"iii\0"
"glBinormal3sEXT\0"
"\0"
- /* _mesa_function_pool[25970]: ListBase (offset 6) */
+ /* _mesa_function_pool[25963]: ListBase (offset 6) */
"i\0"
"glListBase\0"
"\0"
- /* _mesa_function_pool[25984]: VertexAttribI3ivEXT (will be remapped) */
+ /* _mesa_function_pool[25977]: VertexAttribI3ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI3ivEXT\0"
"glVertexAttribI3iv\0"
"\0"
- /* _mesa_function_pool[26029]: Vertex3s (offset 140) */
+ /* _mesa_function_pool[26022]: Vertex3s (offset 140) */
"iii\0"
"glVertex3s\0"
"\0"
- /* _mesa_function_pool[26045]: ConvolutionParameterf (offset 350) */
+ /* _mesa_function_pool[26038]: ConvolutionParameterf (offset 350) */
"iif\0"
"glConvolutionParameterf\0"
"glConvolutionParameterfEXT\0"
"\0"
- /* _mesa_function_pool[26101]: GetColorTableParameteriv (offset 345) */
+ /* _mesa_function_pool[26094]: GetColorTableParameteriv (offset 345) */
"iip\0"
"glGetColorTableParameteriv\0"
"glGetColorTableParameterivSGI\0"
"glGetColorTableParameterivEXT\0"
"\0"
- /* _mesa_function_pool[26193]: ProgramEnvParameter4dvARB (will be remapped) */
+ /* _mesa_function_pool[26186]: ProgramEnvParameter4dvARB (will be remapped) */
"iip\0"
"glProgramEnvParameter4dvARB\0"
"glProgramParameter4dvNV\0"
"\0"
- /* _mesa_function_pool[26250]: ShadeModel (offset 177) */
+ /* _mesa_function_pool[26243]: ShadeModel (offset 177) */
"i\0"
"glShadeModel\0"
"\0"
- /* _mesa_function_pool[26266]: VertexAttribs2fvNV (will be remapped) */
+ /* _mesa_function_pool[26259]: VertexAttribs2fvNV (will be remapped) */
"iip\0"
"glVertexAttribs2fvNV\0"
"\0"
- /* _mesa_function_pool[26292]: Rectiv (offset 91) */
+ /* _mesa_function_pool[26285]: Rectiv (offset 91) */
"pp\0"
"glRectiv\0"
"\0"
- /* _mesa_function_pool[26305]: UseProgramObjectARB (will be remapped) */
+ /* _mesa_function_pool[26298]: UseProgramObjectARB (will be remapped) */
"i\0"
"glUseProgram\0"
"glUseProgramObjectARB\0"
"\0"
- /* _mesa_function_pool[26343]: GetMapParameterfvNV (dynamic) */
+ /* _mesa_function_pool[26336]: GetMapParameterfvNV (dynamic) */
"iip\0"
"glGetMapParameterfvNV\0"
"\0"
- /* _mesa_function_pool[26370]: EndConditionalRenderNV (will be remapped) */
+ /* _mesa_function_pool[26363]: EndConditionalRenderNV (will be remapped) */
"\0"
"glEndConditionalRenderNV\0"
"glEndConditionalRender\0"
"\0"
- /* _mesa_function_pool[26420]: PassTexCoordATI (will be remapped) */
+ /* _mesa_function_pool[26413]: PassTexCoordATI (will be remapped) */
"iii\0"
"glPassTexCoordATI\0"
"\0"
- /* _mesa_function_pool[26443]: DeleteProgram (will be remapped) */
+ /* _mesa_function_pool[26436]: DeleteProgram (will be remapped) */
"i\0"
"glDeleteProgram\0"
"\0"
- /* _mesa_function_pool[26462]: GetSamplerParameteriv (will be remapped) */
+ /* _mesa_function_pool[26455]: GetSamplerParameteriv (will be remapped) */
"iip\0"
"glGetSamplerParameteriv\0"
"\0"
- /* _mesa_function_pool[26491]: Tangent3dEXT (dynamic) */
+ /* _mesa_function_pool[26484]: Tangent3dEXT (dynamic) */
"ddd\0"
"glTangent3dEXT\0"
"\0"
- /* _mesa_function_pool[26511]: SecondaryColor3dvEXT (will be remapped) */
+ /* _mesa_function_pool[26504]: SecondaryColor3dvEXT (will be remapped) */
"p\0"
"glSecondaryColor3dv\0"
"glSecondaryColor3dvEXT\0"
"\0"
- /* _mesa_function_pool[26557]: AlphaFragmentOp2ATI (will be remapped) */
+ /* _mesa_function_pool[26550]: AlphaFragmentOp2ATI (will be remapped) */
"iiiiiiiii\0"
"glAlphaFragmentOp2ATI\0"
"\0"
- /* _mesa_function_pool[26590]: Vertex2fv (offset 129) */
+ /* _mesa_function_pool[26583]: Vertex2fv (offset 129) */
"p\0"
"glVertex2fv\0"
"\0"
- /* _mesa_function_pool[26605]: MultiDrawArraysEXT (will be remapped) */
+ /* _mesa_function_pool[26598]: MultiDrawArraysEXT (will be remapped) */
"ippi\0"
"glMultiDrawArrays\0"
"glMultiDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[26650]: BindRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[26643]: BindRenderbufferEXT (will be remapped) */
"ii\0"
"glBindRenderbuffer\0"
"glBindRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[26695]: MultiTexCoord4dARB (offset 400) */
+ /* _mesa_function_pool[26688]: MultiTexCoord4dARB (offset 400) */
"idddd\0"
"glMultiTexCoord4d\0"
"glMultiTexCoord4dARB\0"
"\0"
- /* _mesa_function_pool[26741]: FramebufferTextureFaceARB (will be remapped) */
+ /* _mesa_function_pool[26734]: FramebufferTextureFaceARB (will be remapped) */
"iiiii\0"
"glFramebufferTextureFaceARB\0"
"\0"
- /* _mesa_function_pool[26776]: Vertex3sv (offset 141) */
+ /* _mesa_function_pool[26769]: Vertex3sv (offset 141) */
"p\0"
"glVertex3sv\0"
"\0"
- /* _mesa_function_pool[26791]: SecondaryColor3usEXT (will be remapped) */
+ /* _mesa_function_pool[26784]: SecondaryColor3usEXT (will be remapped) */
"iii\0"
"glSecondaryColor3us\0"
"glSecondaryColor3usEXT\0"
"\0"
- /* _mesa_function_pool[26839]: ProgramLocalParameter4fvARB (will be remapped) */
+ /* _mesa_function_pool[26832]: ProgramLocalParameter4fvARB (will be remapped) */
"iip\0"
"glProgramLocalParameter4fvARB\0"
"\0"
- /* _mesa_function_pool[26874]: DeleteProgramsNV (will be remapped) */
+ /* _mesa_function_pool[26867]: DeleteProgramsNV (will be remapped) */
"ip\0"
"glDeleteProgramsARB\0"
"glDeleteProgramsNV\0"
"\0"
- /* _mesa_function_pool[26917]: EvalMesh1 (offset 236) */
+ /* _mesa_function_pool[26910]: EvalMesh1 (offset 236) */
"iii\0"
"glEvalMesh1\0"
"\0"
- /* _mesa_function_pool[26934]: PauseTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[26927]: PauseTransformFeedback (will be remapped) */
"\0"
"glPauseTransformFeedback\0"
"\0"
- /* _mesa_function_pool[26961]: MultiTexCoord1sARB (offset 382) */
+ /* _mesa_function_pool[26954]: MultiTexCoord1sARB (offset 382) */
"ii\0"
"glMultiTexCoord1s\0"
"glMultiTexCoord1sARB\0"
"\0"
- /* _mesa_function_pool[27004]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[26997]: ReplacementCodeuiColor3fVertex3fSUN (dynamic) */
"iffffff\0"
"glReplacementCodeuiColor3fVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[27051]: GetVertexAttribPointervNV (will be remapped) */
+ /* _mesa_function_pool[27044]: GetVertexAttribPointervNV (will be remapped) */
"iip\0"
"glGetVertexAttribPointerv\0"
"glGetVertexAttribPointervARB\0"
"glGetVertexAttribPointervNV\0"
"\0"
- /* _mesa_function_pool[27139]: VertexAttribs1fvNV (will be remapped) */
+ /* _mesa_function_pool[27132]: VertexAttribs1fvNV (will be remapped) */
"iip\0"
"glVertexAttribs1fvNV\0"
"\0"
- /* _mesa_function_pool[27165]: MultiTexCoord1dvARB (offset 377) */
+ /* _mesa_function_pool[27158]: MultiTexCoord1dvARB (offset 377) */
"ip\0"
"glMultiTexCoord1dv\0"
"glMultiTexCoord1dvARB\0"
"\0"
- /* _mesa_function_pool[27210]: Uniform2iARB (will be remapped) */
+ /* _mesa_function_pool[27203]: Uniform2iARB (will be remapped) */
"iii\0"
"glUniform2i\0"
"glUniform2iARB\0"
"\0"
- /* _mesa_function_pool[27242]: Vertex2iv (offset 131) */
+ /* _mesa_function_pool[27235]: Vertex2iv (offset 131) */
"p\0"
"glVertex2iv\0"
"\0"
- /* _mesa_function_pool[27257]: GetProgramStringNV (will be remapped) */
+ /* _mesa_function_pool[27250]: GetProgramStringNV (will be remapped) */
"iip\0"
"glGetProgramStringNV\0"
"\0"
- /* _mesa_function_pool[27283]: ColorPointerEXT (will be remapped) */
+ /* _mesa_function_pool[27276]: ColorPointerEXT (will be remapped) */
"iiiip\0"
"glColorPointerEXT\0"
"\0"
- /* _mesa_function_pool[27308]: LineWidth (offset 168) */
+ /* _mesa_function_pool[27301]: LineWidth (offset 168) */
"f\0"
"glLineWidth\0"
"\0"
- /* _mesa_function_pool[27323]: MapBufferARB (will be remapped) */
+ /* _mesa_function_pool[27316]: MapBufferARB (will be remapped) */
"ii\0"
"glMapBuffer\0"
"glMapBufferARB\0"
"\0"
- /* _mesa_function_pool[27354]: MultiDrawElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[27347]: MultiDrawElementsBaseVertex (will be remapped) */
"ipipip\0"
"glMultiDrawElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[27392]: TexParameterIuivEXT (will be remapped) */
+ /* _mesa_function_pool[27385]: TexParameterIuivEXT (will be remapped) */
"iip\0"
"glTexParameterIuivEXT\0"
"glTexParameterIuiv\0"
"\0"
- /* _mesa_function_pool[27438]: Binormal3svEXT (dynamic) */
+ /* _mesa_function_pool[27431]: Binormal3svEXT (dynamic) */
"p\0"
"glBinormal3svEXT\0"
"\0"
- /* _mesa_function_pool[27458]: ApplyTextureEXT (dynamic) */
+ /* _mesa_function_pool[27451]: ApplyTextureEXT (dynamic) */
"i\0"
"glApplyTextureEXT\0"
"\0"
- /* _mesa_function_pool[27479]: GetBufferParameteri64v (will be remapped) */
+ /* _mesa_function_pool[27472]: GetBufferParameteri64v (will be remapped) */
"iip\0"
"glGetBufferParameteri64v\0"
"\0"
- /* _mesa_function_pool[27509]: TexGendv (offset 189) */
+ /* _mesa_function_pool[27502]: TexGendv (offset 189) */
"iip\0"
"glTexGendv\0"
"\0"
- /* _mesa_function_pool[27525]: VertexAttribI3iEXT (will be remapped) */
+ /* _mesa_function_pool[27518]: VertexAttribI3iEXT (will be remapped) */
"iiii\0"
"glVertexAttribI3iEXT\0"
"glVertexAttribI3i\0"
"\0"
- /* _mesa_function_pool[27570]: EnableIndexedEXT (will be remapped) */
+ /* _mesa_function_pool[27563]: EnableIndexedEXT (will be remapped) */
"ii\0"
"glEnableIndexedEXT\0"
"glEnablei\0"
"\0"
- /* _mesa_function_pool[27603]: TextureMaterialEXT (dynamic) */
+ /* _mesa_function_pool[27596]: TextureMaterialEXT (dynamic) */
"ii\0"
"glTextureMaterialEXT\0"
"\0"
- /* _mesa_function_pool[27628]: TextureLightEXT (dynamic) */
+ /* _mesa_function_pool[27621]: TextureLightEXT (dynamic) */
"i\0"
"glTextureLightEXT\0"
"\0"
- /* _mesa_function_pool[27649]: ResetMinmax (offset 370) */
+ /* _mesa_function_pool[27642]: ResetMinmax (offset 370) */
"i\0"
"glResetMinmax\0"
"glResetMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[27683]: SpriteParameterfSGIX (dynamic) */
+ /* _mesa_function_pool[27676]: SpriteParameterfSGIX (dynamic) */
"if\0"
"glSpriteParameterfSGIX\0"
"\0"
- /* _mesa_function_pool[27710]: EnableClientState (offset 313) */
+ /* _mesa_function_pool[27703]: EnableClientState (offset 313) */
"i\0"
"glEnableClientState\0"
"\0"
- /* _mesa_function_pool[27733]: VertexAttrib4sNV (will be remapped) */
+ /* _mesa_function_pool[27726]: VertexAttrib4sNV (will be remapped) */
"iiiii\0"
"glVertexAttrib4sNV\0"
"\0"
- /* _mesa_function_pool[27759]: GetConvolutionParameterfv (offset 357) */
+ /* _mesa_function_pool[27752]: GetConvolutionParameterfv (offset 357) */
"iip\0"
"glGetConvolutionParameterfv\0"
"glGetConvolutionParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[27823]: VertexAttribs4dvNV (will be remapped) */
+ /* _mesa_function_pool[27816]: VertexAttribs4dvNV (will be remapped) */
"iip\0"
"glVertexAttribs4dvNV\0"
"\0"
- /* _mesa_function_pool[27849]: VertexAttrib4dARB (will be remapped) */
+ /* _mesa_function_pool[27842]: VertexAttrib4dARB (will be remapped) */
"idddd\0"
"glVertexAttrib4d\0"
"glVertexAttrib4dARB\0"
"\0"
- /* _mesa_function_pool[27893]: GetTexBumpParameterfvATI (will be remapped) */
+ /* _mesa_function_pool[27886]: GetTexBumpParameterfvATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterfvATI\0"
"\0"
- /* _mesa_function_pool[27924]: ProgramNamedParameter4dNV (will be remapped) */
+ /* _mesa_function_pool[27917]: ProgramNamedParameter4dNV (will be remapped) */
"iipdddd\0"
"glProgramNamedParameter4dNV\0"
"\0"
- /* _mesa_function_pool[27961]: GetMaterialfv (offset 269) */
+ /* _mesa_function_pool[27954]: GetMaterialfv (offset 269) */
"iip\0"
"glGetMaterialfv\0"
"\0"
- /* _mesa_function_pool[27982]: VertexWeightfEXT (dynamic) */
+ /* _mesa_function_pool[27975]: VertexWeightfEXT (dynamic) */
"f\0"
"glVertexWeightfEXT\0"
"\0"
- /* _mesa_function_pool[28004]: SetFragmentShaderConstantATI (will be remapped) */
+ /* _mesa_function_pool[27997]: SetFragmentShaderConstantATI (will be remapped) */
"ip\0"
"glSetFragmentShaderConstantATI\0"
"\0"
- /* _mesa_function_pool[28039]: Binormal3fEXT (dynamic) */
+ /* _mesa_function_pool[28032]: Binormal3fEXT (dynamic) */
"fff\0"
"glBinormal3fEXT\0"
"\0"
- /* _mesa_function_pool[28060]: CallList (offset 2) */
+ /* _mesa_function_pool[28053]: CallList (offset 2) */
"i\0"
"glCallList\0"
"\0"
- /* _mesa_function_pool[28074]: Materialfv (offset 170) */
+ /* _mesa_function_pool[28067]: Materialfv (offset 170) */
"iip\0"
"glMaterialfv\0"
"\0"
- /* _mesa_function_pool[28092]: TexCoord3fv (offset 113) */
+ /* _mesa_function_pool[28085]: TexCoord3fv (offset 113) */
"p\0"
"glTexCoord3fv\0"
"\0"
- /* _mesa_function_pool[28109]: FogCoordfvEXT (will be remapped) */
+ /* _mesa_function_pool[28102]: FogCoordfvEXT (will be remapped) */
"p\0"
"glFogCoordfv\0"
"glFogCoordfvEXT\0"
"\0"
- /* _mesa_function_pool[28141]: MultiTexCoord1ivARB (offset 381) */
+ /* _mesa_function_pool[28134]: MultiTexCoord1ivARB (offset 381) */
"ip\0"
"glMultiTexCoord1iv\0"
"glMultiTexCoord1ivARB\0"
"\0"
- /* _mesa_function_pool[28186]: SecondaryColor3ubEXT (will be remapped) */
+ /* _mesa_function_pool[28179]: SecondaryColor3ubEXT (will be remapped) */
"iii\0"
"glSecondaryColor3ub\0"
"glSecondaryColor3ubEXT\0"
"\0"
- /* _mesa_function_pool[28234]: MultiTexCoord2ivARB (offset 389) */
+ /* _mesa_function_pool[28227]: MultiTexCoord2ivARB (offset 389) */
"ip\0"
"glMultiTexCoord2iv\0"
"glMultiTexCoord2ivARB\0"
"\0"
- /* _mesa_function_pool[28279]: FogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[28272]: FogFuncSGIS (dynamic) */
"ip\0"
"glFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[28297]: CopyTexSubImage2D (offset 326) */
+ /* _mesa_function_pool[28290]: CopyTexSubImage2D (offset 326) */
"iiiiiiii\0"
"glCopyTexSubImage2D\0"
"glCopyTexSubImage2DEXT\0"
"\0"
- /* _mesa_function_pool[28350]: GetObjectParameterivARB (will be remapped) */
+ /* _mesa_function_pool[28343]: GetObjectParameterivARB (will be remapped) */
"iip\0"
"glGetObjectParameterivARB\0"
"\0"
- /* _mesa_function_pool[28381]: Color3iv (offset 16) */
+ /* _mesa_function_pool[28374]: Color3iv (offset 16) */
"p\0"
"glColor3iv\0"
"\0"
- /* _mesa_function_pool[28395]: TexCoord4fVertex4fSUN (dynamic) */
+ /* _mesa_function_pool[28388]: TexCoord4fVertex4fSUN (dynamic) */
"ffffffff\0"
"glTexCoord4fVertex4fSUN\0"
"\0"
- /* _mesa_function_pool[28429]: DrawElements (offset 311) */
+ /* _mesa_function_pool[28422]: DrawElements (offset 311) */
"iiip\0"
"glDrawElements\0"
"\0"
- /* _mesa_function_pool[28450]: BindVertexArrayAPPLE (will be remapped) */
+ /* _mesa_function_pool[28443]: BindVertexArrayAPPLE (will be remapped) */
"i\0"
"glBindVertexArrayAPPLE\0"
"\0"
- /* _mesa_function_pool[28476]: GetProgramLocalParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[28469]: GetProgramLocalParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramLocalParameterdvARB\0"
"\0"
- /* _mesa_function_pool[28513]: GetHistogramParameteriv (offset 363) */
+ /* _mesa_function_pool[28506]: GetHistogramParameteriv (offset 363) */
"iip\0"
"glGetHistogramParameteriv\0"
"glGetHistogramParameterivEXT\0"
"\0"
- /* _mesa_function_pool[28573]: MultiTexCoord1iARB (offset 380) */
+ /* _mesa_function_pool[28566]: MultiTexCoord1iARB (offset 380) */
"ii\0"
"glMultiTexCoord1i\0"
"glMultiTexCoord1iARB\0"
"\0"
- /* _mesa_function_pool[28616]: GetConvolutionFilter (offset 356) */
+ /* _mesa_function_pool[28609]: GetConvolutionFilter (offset 356) */
"iiip\0"
"glGetConvolutionFilter\0"
"glGetConvolutionFilterEXT\0"
"\0"
- /* _mesa_function_pool[28671]: GetProgramivARB (will be remapped) */
+ /* _mesa_function_pool[28664]: GetProgramivARB (will be remapped) */
"iip\0"
"glGetProgramivARB\0"
"\0"
- /* _mesa_function_pool[28694]: TexBufferARB (will be remapped) */
+ /* _mesa_function_pool[28687]: TexBufferARB (will be remapped) */
"iii\0"
"glTexBufferARB\0"
"\0"
- /* _mesa_function_pool[28714]: BlendFuncSeparateEXT (will be remapped) */
+ /* _mesa_function_pool[28707]: BlendFuncSeparateEXT (will be remapped) */
"iiii\0"
"glBlendFuncSeparate\0"
"glBlendFuncSeparateEXT\0"
"glBlendFuncSeparateINGR\0"
"\0"
- /* _mesa_function_pool[28787]: MapBufferRange (will be remapped) */
+ /* _mesa_function_pool[28780]: MapBufferRange (will be remapped) */
"iiii\0"
"glMapBufferRange\0"
"\0"
- /* _mesa_function_pool[28810]: ProgramParameters4dvNV (will be remapped) */
+ /* _mesa_function_pool[28803]: ProgramParameters4dvNV (will be remapped) */
"iiip\0"
"glProgramParameters4dvNV\0"
"\0"
- /* _mesa_function_pool[28841]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[28834]: TexCoord2fColor3fVertex3fvSUN (dynamic) */
"ppp\0"
"glTexCoord2fColor3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[28878]: EvalPoint2 (offset 239) */
+ /* _mesa_function_pool[28871]: EvalPoint2 (offset 239) */
"ii\0"
"glEvalPoint2\0"
"\0"
- /* _mesa_function_pool[28895]: Uniform1uivEXT (will be remapped) */
+ /* _mesa_function_pool[28888]: Uniform1uivEXT (will be remapped) */
"iip\0"
"glUniform1uivEXT\0"
"glUniform1uiv\0"
"\0"
- /* _mesa_function_pool[28931]: EvalPoint1 (offset 237) */
+ /* _mesa_function_pool[28924]: EvalPoint1 (offset 237) */
"i\0"
"glEvalPoint1\0"
"\0"
- /* _mesa_function_pool[28947]: Binormal3dvEXT (dynamic) */
+ /* _mesa_function_pool[28940]: Binormal3dvEXT (dynamic) */
"p\0"
"glBinormal3dvEXT\0"
"\0"
- /* _mesa_function_pool[28967]: PopMatrix (offset 297) */
+ /* _mesa_function_pool[28960]: PopMatrix (offset 297) */
"\0"
"glPopMatrix\0"
"\0"
- /* _mesa_function_pool[28981]: FinishFenceNV (will be remapped) */
+ /* _mesa_function_pool[28974]: FinishFenceNV (will be remapped) */
"i\0"
"glFinishFenceNV\0"
"\0"
- /* _mesa_function_pool[29000]: GetFogFuncSGIS (dynamic) */
+ /* _mesa_function_pool[28993]: GetFogFuncSGIS (dynamic) */
"p\0"
"glGetFogFuncSGIS\0"
"\0"
- /* _mesa_function_pool[29020]: GetUniformLocationARB (will be remapped) */
+ /* _mesa_function_pool[29013]: GetUniformLocationARB (will be remapped) */
"ip\0"
"glGetUniformLocation\0"
"glGetUniformLocationARB\0"
"\0"
- /* _mesa_function_pool[29069]: SecondaryColor3fEXT (will be remapped) */
+ /* _mesa_function_pool[29062]: SecondaryColor3fEXT (will be remapped) */
"fff\0"
"glSecondaryColor3f\0"
"glSecondaryColor3fEXT\0"
"\0"
- /* _mesa_function_pool[29115]: GetTexGeniv (offset 280) */
+ /* _mesa_function_pool[29108]: GetTexGeniv (offset 280) */
"iip\0"
"glGetTexGeniv\0"
"\0"
- /* _mesa_function_pool[29134]: CombinerInputNV (will be remapped) */
+ /* _mesa_function_pool[29127]: CombinerInputNV (will be remapped) */
"iiiiii\0"
"glCombinerInputNV\0"
"\0"
- /* _mesa_function_pool[29160]: VertexAttrib3sARB (will be remapped) */
+ /* _mesa_function_pool[29153]: VertexAttrib3sARB (will be remapped) */
"iiii\0"
"glVertexAttrib3s\0"
"glVertexAttrib3sARB\0"
"\0"
- /* _mesa_function_pool[29203]: IsTransformFeedback (will be remapped) */
+ /* _mesa_function_pool[29196]: IsTransformFeedback (will be remapped) */
"i\0"
"glIsTransformFeedback\0"
"\0"
- /* _mesa_function_pool[29228]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
+ /* _mesa_function_pool[29221]: ReplacementCodeuiNormal3fVertex3fvSUN (dynamic) */
"ppp\0"
"glReplacementCodeuiNormal3fVertex3fvSUN\0"
"\0"
- /* _mesa_function_pool[29273]: Map2d (offset 222) */
+ /* _mesa_function_pool[29266]: Map2d (offset 222) */
"iddiiddiip\0"
"glMap2d\0"
"\0"
- /* _mesa_function_pool[29293]: Map2f (offset 223) */
+ /* _mesa_function_pool[29286]: Map2f (offset 223) */
"iffiiffiip\0"
"glMap2f\0"
"\0"
- /* _mesa_function_pool[29313]: ProgramStringARB (will be remapped) */
+ /* _mesa_function_pool[29306]: ProgramStringARB (will be remapped) */
"iiip\0"
"glProgramStringARB\0"
"\0"
- /* _mesa_function_pool[29338]: Vertex4s (offset 148) */
+ /* _mesa_function_pool[29331]: Vertex4s (offset 148) */
"iiii\0"
"glVertex4s\0"
"\0"
- /* _mesa_function_pool[29355]: TexCoord4fVertex4fvSUN (dynamic) */
+ /* _mesa_function_pool[29348]: TexCoord4fVertex4fvSUN (dynamic) */
"pp\0"
"glTexCoord4fVertex4fvSUN\0"
"\0"
- /* _mesa_function_pool[29384]: FragmentLightModelivSGIX (dynamic) */
+ /* _mesa_function_pool[29377]: FragmentLightModelivSGIX (dynamic) */
"ip\0"
"glFragmentLightModelivSGIX\0"
"\0"
- /* _mesa_function_pool[29415]: VertexAttrib1fNV (will be remapped) */
+ /* _mesa_function_pool[29408]: VertexAttrib1fNV (will be remapped) */
"if\0"
"glVertexAttrib1fNV\0"
"\0"
- /* _mesa_function_pool[29438]: Vertex4f (offset 144) */
+ /* _mesa_function_pool[29431]: Vertex4f (offset 144) */
"ffff\0"
"glVertex4f\0"
"\0"
- /* _mesa_function_pool[29455]: EvalCoord1d (offset 228) */
+ /* _mesa_function_pool[29448]: EvalCoord1d (offset 228) */
"d\0"
"glEvalCoord1d\0"
"\0"
- /* _mesa_function_pool[29472]: Vertex4d (offset 142) */
+ /* _mesa_function_pool[29465]: Vertex4d (offset 142) */
"dddd\0"
"glVertex4d\0"
"\0"
- /* _mesa_function_pool[29489]: RasterPos4dv (offset 79) */
+ /* _mesa_function_pool[29482]: RasterPos4dv (offset 79) */
"p\0"
"glRasterPos4dv\0"
"\0"
- /* _mesa_function_pool[29507]: UseShaderProgramEXT (will be remapped) */
+ /* _mesa_function_pool[29500]: UseShaderProgramEXT (will be remapped) */
"ii\0"
"glUseShaderProgramEXT\0"
"\0"
- /* _mesa_function_pool[29533]: FragmentLightfSGIX (dynamic) */
+ /* _mesa_function_pool[29526]: FragmentLightfSGIX (dynamic) */
"iif\0"
"glFragmentLightfSGIX\0"
"\0"
- /* _mesa_function_pool[29559]: GetCompressedTexImageARB (will be remapped) */
+ /* _mesa_function_pool[29552]: GetCompressedTexImageARB (will be remapped) */
"iip\0"
"glGetCompressedTexImage\0"
"glGetCompressedTexImageARB\0"
"\0"
- /* _mesa_function_pool[29615]: GetTexGenfv (offset 279) */
+ /* _mesa_function_pool[29608]: GetTexGenfv (offset 279) */
"iip\0"
"glGetTexGenfv\0"
"\0"
- /* _mesa_function_pool[29634]: Vertex4i (offset 146) */
+ /* _mesa_function_pool[29627]: Vertex4i (offset 146) */
"iiii\0"
"glVertex4i\0"
"\0"
- /* _mesa_function_pool[29651]: VertexWeightPointerEXT (dynamic) */
+ /* _mesa_function_pool[29644]: VertexWeightPointerEXT (dynamic) */
"iiip\0"
"glVertexWeightPointerEXT\0"
"\0"
- /* _mesa_function_pool[29682]: GetHistogram (offset 361) */
+ /* _mesa_function_pool[29675]: GetHistogram (offset 361) */
"iiiip\0"
"glGetHistogram\0"
"glGetHistogramEXT\0"
"\0"
- /* _mesa_function_pool[29722]: ActiveStencilFaceEXT (will be remapped) */
+ /* _mesa_function_pool[29715]: ActiveStencilFaceEXT (will be remapped) */
"i\0"
"glActiveStencilFaceEXT\0"
"\0"
- /* _mesa_function_pool[29748]: StencilFuncSeparateATI (will be remapped) */
+ /* _mesa_function_pool[29741]: StencilFuncSeparateATI (will be remapped) */
"iiii\0"
"glStencilFuncSeparateATI\0"
"\0"
- /* _mesa_function_pool[29779]: Materialf (offset 169) */
+ /* _mesa_function_pool[29772]: Materialf (offset 169) */
"iif\0"
"glMaterialf\0"
"\0"
- /* _mesa_function_pool[29796]: GetShaderSourceARB (will be remapped) */
+ /* _mesa_function_pool[29789]: GetShaderSourceARB (will be remapped) */
"iipp\0"
"glGetShaderSource\0"
"glGetShaderSourceARB\0"
"\0"
- /* _mesa_function_pool[29841]: IglooInterfaceSGIX (dynamic) */
+ /* _mesa_function_pool[29834]: IglooInterfaceSGIX (dynamic) */
"ip\0"
"glIglooInterfaceSGIX\0"
"\0"
- /* _mesa_function_pool[29866]: Materiali (offset 171) */
+ /* _mesa_function_pool[29859]: Materiali (offset 171) */
"iii\0"
"glMateriali\0"
"\0"
- /* _mesa_function_pool[29883]: VertexAttrib4dNV (will be remapped) */
+ /* _mesa_function_pool[29876]: VertexAttrib4dNV (will be remapped) */
"idddd\0"
"glVertexAttrib4dNV\0"
"\0"
- /* _mesa_function_pool[29909]: MultiModeDrawElementsIBM (will be remapped) */
+ /* _mesa_function_pool[29902]: MultiModeDrawElementsIBM (will be remapped) */
"ppipii\0"
"glMultiModeDrawElementsIBM\0"
"\0"
- /* _mesa_function_pool[29944]: Indexsv (offset 51) */
+ /* _mesa_function_pool[29937]: Indexsv (offset 51) */
"p\0"
"glIndexsv\0"
"\0"
- /* _mesa_function_pool[29957]: MultiTexCoord4svARB (offset 407) */
+ /* _mesa_function_pool[29950]: MultiTexCoord4svARB (offset 407) */
"ip\0"
"glMultiTexCoord4sv\0"
"glMultiTexCoord4svARB\0"
"\0"
- /* _mesa_function_pool[30002]: LightModelfv (offset 164) */
+ /* _mesa_function_pool[29995]: LightModelfv (offset 164) */
"ip\0"
"glLightModelfv\0"
"\0"
- /* _mesa_function_pool[30021]: TexCoord2dv (offset 103) */
+ /* _mesa_function_pool[30014]: TexCoord2dv (offset 103) */
"p\0"
"glTexCoord2dv\0"
"\0"
- /* _mesa_function_pool[30038]: GenQueriesARB (will be remapped) */
+ /* _mesa_function_pool[30031]: GenQueriesARB (will be remapped) */
"ip\0"
"glGenQueries\0"
"glGenQueriesARB\0"
"\0"
- /* _mesa_function_pool[30071]: EvalCoord1dv (offset 229) */
+ /* _mesa_function_pool[30064]: EvalCoord1dv (offset 229) */
"p\0"
"glEvalCoord1dv\0"
"\0"
- /* _mesa_function_pool[30089]: ReplacementCodeuiVertex3fSUN (dynamic) */
+ /* _mesa_function_pool[30082]: ReplacementCodeuiVertex3fSUN (dynamic) */
"ifff\0"
"glReplacementCodeuiVertex3fSUN\0"
"\0"
- /* _mesa_function_pool[30126]: Translated (offset 303) */
+ /* _mesa_function_pool[30119]: Translated (offset 303) */
"ddd\0"
"glTranslated\0"
"\0"
- /* _mesa_function_pool[30144]: Translatef (offset 304) */
+ /* _mesa_function_pool[30137]: Translatef (offset 304) */
"fff\0"
"glTranslatef\0"
"\0"
- /* _mesa_function_pool[30162]: Uniform3uiEXT (will be remapped) */
+ /* _mesa_function_pool[30155]: Uniform3uiEXT (will be remapped) */
"iiii\0"
"glUniform3uiEXT\0"
"glUniform3ui\0"
"\0"
- /* _mesa_function_pool[30197]: StencilMask (offset 209) */
+ /* _mesa_function_pool[30190]: StencilMask (offset 209) */
"i\0"
"glStencilMask\0"
"\0"
- /* _mesa_function_pool[30214]: Tangent3iEXT (dynamic) */
+ /* _mesa_function_pool[30207]: Tangent3iEXT (dynamic) */
"iii\0"
"glTangent3iEXT\0"
"\0"
- /* _mesa_function_pool[30234]: ClampColorARB (will be remapped) */
+ /* _mesa_function_pool[30227]: ClampColorARB (will be remapped) */
"ii\0"
"glClampColorARB\0"
"\0"
- /* _mesa_function_pool[30254]: GetLightiv (offset 265) */
+ /* _mesa_function_pool[30247]: GetLightiv (offset 265) */
"iip\0"
"glGetLightiv\0"
"\0"
- /* _mesa_function_pool[30272]: GetSamplerParameterIiv (will be remapped) */
+ /* _mesa_function_pool[30265]: GetSamplerParameterIiv (will be remapped) */
"iip\0"
"glGetSamplerParameterIiv\0"
"\0"
- /* _mesa_function_pool[30302]: DrawMeshArraysSUN (dynamic) */
+ /* _mesa_function_pool[30295]: DrawMeshArraysSUN (dynamic) */
"iiii\0"
"glDrawMeshArraysSUN\0"
"\0"
- /* _mesa_function_pool[30328]: IsList (offset 287) */
+ /* _mesa_function_pool[30321]: IsList (offset 287) */
"i\0"
"glIsList\0"
"\0"
- /* _mesa_function_pool[30340]: IsSync (will be remapped) */
+ /* _mesa_function_pool[30333]: IsSync (will be remapped) */
"i\0"
"glIsSync\0"
"\0"
- /* _mesa_function_pool[30352]: RenderMode (offset 196) */
+ /* _mesa_function_pool[30345]: RenderMode (offset 196) */
"i\0"
"glRenderMode\0"
"\0"
- /* _mesa_function_pool[30368]: GetMapControlPointsNV (dynamic) */
+ /* _mesa_function_pool[30361]: GetMapControlPointsNV (dynamic) */
"iiiiiip\0"
"glGetMapControlPointsNV\0"
"\0"
- /* _mesa_function_pool[30401]: DrawBuffersARB (will be remapped) */
+ /* _mesa_function_pool[30394]: DrawBuffersARB (will be remapped) */
"ip\0"
"glDrawBuffers\0"
"glDrawBuffersARB\0"
"glDrawBuffersATI\0"
"\0"
- /* _mesa_function_pool[30453]: ClearBufferiv (will be remapped) */
+ /* _mesa_function_pool[30446]: ClearBufferiv (will be remapped) */
"iip\0"
"glClearBufferiv\0"
"\0"
- /* _mesa_function_pool[30474]: ProgramLocalParameter4fARB (will be remapped) */
+ /* _mesa_function_pool[30467]: ProgramLocalParameter4fARB (will be remapped) */
"iiffff\0"
"glProgramLocalParameter4fARB\0"
"\0"
- /* _mesa_function_pool[30511]: SpriteParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[30504]: SpriteParameterivSGIX (dynamic) */
"ip\0"
"glSpriteParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[30539]: ProvokingVertexEXT (will be remapped) */
+ /* _mesa_function_pool[30532]: ProvokingVertexEXT (will be remapped) */
"i\0"
"glProvokingVertexEXT\0"
"glProvokingVertex\0"
"\0"
- /* _mesa_function_pool[30581]: MultiTexCoord1fARB (offset 378) */
+ /* _mesa_function_pool[30574]: MultiTexCoord1fARB (offset 378) */
"if\0"
"glMultiTexCoord1f\0"
"glMultiTexCoord1fARB\0"
"\0"
- /* _mesa_function_pool[30624]: LoadName (offset 198) */
+ /* _mesa_function_pool[30617]: LoadName (offset 198) */
"i\0"
"glLoadName\0"
"\0"
- /* _mesa_function_pool[30638]: VertexAttribs4ubvNV (will be remapped) */
+ /* _mesa_function_pool[30631]: VertexAttribs4ubvNV (will be remapped) */
"iip\0"
"glVertexAttribs4ubvNV\0"
"\0"
- /* _mesa_function_pool[30665]: WeightsvARB (dynamic) */
+ /* _mesa_function_pool[30658]: WeightsvARB (dynamic) */
"ip\0"
"glWeightsvARB\0"
"\0"
- /* _mesa_function_pool[30683]: Uniform1fvARB (will be remapped) */
+ /* _mesa_function_pool[30676]: Uniform1fvARB (will be remapped) */
"iip\0"
"glUniform1fv\0"
"glUniform1fvARB\0"
"\0"
- /* _mesa_function_pool[30717]: CopyTexSubImage1D (offset 325) */
+ /* _mesa_function_pool[30710]: CopyTexSubImage1D (offset 325) */
"iiiiii\0"
"glCopyTexSubImage1D\0"
"glCopyTexSubImage1DEXT\0"
"\0"
- /* _mesa_function_pool[30768]: CullFace (offset 152) */
+ /* _mesa_function_pool[30761]: CullFace (offset 152) */
"i\0"
"glCullFace\0"
"\0"
- /* _mesa_function_pool[30782]: BindTexture (offset 307) */
+ /* _mesa_function_pool[30775]: BindTexture (offset 307) */
"ii\0"
"glBindTexture\0"
"glBindTextureEXT\0"
"\0"
- /* _mesa_function_pool[30817]: BeginFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[30810]: BeginFragmentShaderATI (will be remapped) */
"\0"
"glBeginFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[30844]: MultiTexCoord4fARB (offset 402) */
+ /* _mesa_function_pool[30837]: MultiTexCoord4fARB (offset 402) */
"iffff\0"
"glMultiTexCoord4f\0"
"glMultiTexCoord4fARB\0"
"\0"
- /* _mesa_function_pool[30890]: VertexAttribs3svNV (will be remapped) */
+ /* _mesa_function_pool[30883]: VertexAttribs3svNV (will be remapped) */
"iip\0"
"glVertexAttribs3svNV\0"
"\0"
- /* _mesa_function_pool[30916]: StencilFunc (offset 243) */
+ /* _mesa_function_pool[30909]: StencilFunc (offset 243) */
"iii\0"
"glStencilFunc\0"
"\0"
- /* _mesa_function_pool[30935]: CopyPixels (offset 255) */
+ /* _mesa_function_pool[30928]: CopyPixels (offset 255) */
"iiiii\0"
"glCopyPixels\0"
"\0"
- /* _mesa_function_pool[30955]: Rectsv (offset 93) */
+ /* _mesa_function_pool[30948]: Rectsv (offset 93) */
"pp\0"
"glRectsv\0"
"\0"
- /* _mesa_function_pool[30968]: ReplacementCodeuivSUN (dynamic) */
+ /* _mesa_function_pool[30961]: ReplacementCodeuivSUN (dynamic) */
"p\0"
"glReplacementCodeuivSUN\0"
"\0"
- /* _mesa_function_pool[30995]: EnableVertexAttribArrayARB (will be remapped) */
+ /* _mesa_function_pool[30988]: EnableVertexAttribArrayARB (will be remapped) */
"i\0"
"glEnableVertexAttribArray\0"
"glEnableVertexAttribArrayARB\0"
"\0"
- /* _mesa_function_pool[31053]: NormalPointervINTEL (dynamic) */
+ /* _mesa_function_pool[31046]: NormalPointervINTEL (dynamic) */
"ip\0"
"glNormalPointervINTEL\0"
"\0"
- /* _mesa_function_pool[31079]: CopyConvolutionFilter2D (offset 355) */
+ /* _mesa_function_pool[31072]: CopyConvolutionFilter2D (offset 355) */
"iiiiii\0"
"glCopyConvolutionFilter2D\0"
"glCopyConvolutionFilter2DEXT\0"
"\0"
- /* _mesa_function_pool[31142]: WindowPos3ivMESA (will be remapped) */
+ /* _mesa_function_pool[31135]: WindowPos3ivMESA (will be remapped) */
"p\0"
"glWindowPos3iv\0"
"glWindowPos3ivARB\0"
"glWindowPos3ivMESA\0"
"\0"
- /* _mesa_function_pool[31197]: CopyBufferSubData (will be remapped) */
+ /* _mesa_function_pool[31190]: CopyBufferSubData (will be remapped) */
"iiiii\0"
"glCopyBufferSubData\0"
"\0"
- /* _mesa_function_pool[31224]: NormalPointer (offset 318) */
+ /* _mesa_function_pool[31217]: NormalPointer (offset 318) */
"iip\0"
"glNormalPointer\0"
"\0"
- /* _mesa_function_pool[31245]: TexParameterfv (offset 179) */
+ /* _mesa_function_pool[31238]: TexParameterfv (offset 179) */
"iip\0"
"glTexParameterfv\0"
"\0"
- /* _mesa_function_pool[31267]: IsBufferARB (will be remapped) */
+ /* _mesa_function_pool[31260]: IsBufferARB (will be remapped) */
"i\0"
"glIsBuffer\0"
"glIsBufferARB\0"
"\0"
- /* _mesa_function_pool[31295]: WindowPos4iMESA (will be remapped) */
+ /* _mesa_function_pool[31288]: WindowPos4iMESA (will be remapped) */
"iiii\0"
"glWindowPos4iMESA\0"
"\0"
- /* _mesa_function_pool[31319]: VertexAttrib4uivARB (will be remapped) */
+ /* _mesa_function_pool[31312]: VertexAttrib4uivARB (will be remapped) */
"ip\0"
"glVertexAttrib4uiv\0"
"glVertexAttrib4uivARB\0"
"\0"
- /* _mesa_function_pool[31364]: Tangent3bvEXT (dynamic) */
+ /* _mesa_function_pool[31357]: Tangent3bvEXT (dynamic) */
"p\0"
"glTangent3bvEXT\0"
"\0"
- /* _mesa_function_pool[31383]: VertexAttribI3uivEXT (will be remapped) */
+ /* _mesa_function_pool[31376]: VertexAttribI3uivEXT (will be remapped) */
"ip\0"
"glVertexAttribI3uivEXT\0"
"glVertexAttribI3uiv\0"
"\0"
- /* _mesa_function_pool[31430]: UniformMatrix3x4fv (will be remapped) */
+ /* _mesa_function_pool[31423]: UniformMatrix3x4fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x4fv\0"
"\0"
- /* _mesa_function_pool[31457]: ClipPlane (offset 150) */
+ /* _mesa_function_pool[31450]: ClipPlane (offset 150) */
"ip\0"
"glClipPlane\0"
"\0"
- /* _mesa_function_pool[31473]: Recti (offset 90) */
+ /* _mesa_function_pool[31466]: Recti (offset 90) */
"iiii\0"
"glRecti\0"
"\0"
- /* _mesa_function_pool[31487]: TrackMatrixNV (will be remapped) */
+ /* _mesa_function_pool[31480]: TrackMatrixNV (will be remapped) */
"iiii\0"
"glTrackMatrixNV\0"
"\0"
- /* _mesa_function_pool[31509]: DrawRangeElementsBaseVertex (will be remapped) */
+ /* _mesa_function_pool[31502]: DrawRangeElementsBaseVertex (will be remapped) */
"iiiiipi\0"
"glDrawRangeElementsBaseVertex\0"
"\0"
- /* _mesa_function_pool[31548]: SamplerParameterIuiv (will be remapped) */
+ /* _mesa_function_pool[31541]: SamplerParameterIuiv (will be remapped) */
"iip\0"
"glSamplerParameterIuiv\0"
"\0"
- /* _mesa_function_pool[31576]: TexCoordPointervINTEL (dynamic) */
+ /* _mesa_function_pool[31569]: TexCoordPointervINTEL (dynamic) */
"iip\0"
"glTexCoordPointervINTEL\0"
"\0"
- /* _mesa_function_pool[31605]: DeleteBuffersARB (will be remapped) */
+ /* _mesa_function_pool[31598]: DeleteBuffersARB (will be remapped) */
"ip\0"
"glDeleteBuffers\0"
"glDeleteBuffersARB\0"
"\0"
- /* _mesa_function_pool[31644]: PixelTransformParameterfvEXT (dynamic) */
+ /* _mesa_function_pool[31637]: PixelTransformParameterfvEXT (dynamic) */
"iip\0"
"glPixelTransformParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[31680]: PrimitiveRestartNV (will be remapped) */
+ /* _mesa_function_pool[31673]: PrimitiveRestartNV (will be remapped) */
"\0"
"glPrimitiveRestartNV\0"
"\0"
- /* _mesa_function_pool[31703]: WindowPos4fvMESA (will be remapped) */
+ /* _mesa_function_pool[31696]: WindowPos4fvMESA (will be remapped) */
"p\0"
"glWindowPos4fvMESA\0"
"\0"
- /* _mesa_function_pool[31725]: GetPixelMapuiv (offset 272) */
+ /* _mesa_function_pool[31718]: GetPixelMapuiv (offset 272) */
"ip\0"
"glGetPixelMapuiv\0"
"\0"
- /* _mesa_function_pool[31746]: Rectf (offset 88) */
+ /* _mesa_function_pool[31739]: Rectf (offset 88) */
"ffff\0"
"glRectf\0"
"\0"
- /* _mesa_function_pool[31760]: VertexAttrib1sNV (will be remapped) */
+ /* _mesa_function_pool[31753]: VertexAttrib1sNV (will be remapped) */
"ii\0"
"glVertexAttrib1sNV\0"
"\0"
- /* _mesa_function_pool[31783]: Indexfv (offset 47) */
+ /* _mesa_function_pool[31776]: Indexfv (offset 47) */
"p\0"
"glIndexfv\0"
"\0"
- /* _mesa_function_pool[31796]: SecondaryColor3svEXT (will be remapped) */
+ /* _mesa_function_pool[31789]: SecondaryColor3svEXT (will be remapped) */
"p\0"
"glSecondaryColor3sv\0"
"glSecondaryColor3svEXT\0"
"\0"
- /* _mesa_function_pool[31842]: LoadTransposeMatrixfARB (will be remapped) */
+ /* _mesa_function_pool[31835]: LoadTransposeMatrixfARB (will be remapped) */
"p\0"
"glLoadTransposeMatrixf\0"
"glLoadTransposeMatrixfARB\0"
"\0"
- /* _mesa_function_pool[31894]: GetPointerv (offset 329) */
+ /* _mesa_function_pool[31887]: GetPointerv (offset 329) */
"ip\0"
"glGetPointerv\0"
"glGetPointervEXT\0"
"\0"
- /* _mesa_function_pool[31929]: Tangent3bEXT (dynamic) */
+ /* _mesa_function_pool[31922]: Tangent3bEXT (dynamic) */
"iii\0"
"glTangent3bEXT\0"
"\0"
- /* _mesa_function_pool[31949]: CombinerParameterfNV (will be remapped) */
+ /* _mesa_function_pool[31942]: CombinerParameterfNV (will be remapped) */
"if\0"
"glCombinerParameterfNV\0"
"\0"
- /* _mesa_function_pool[31976]: IndexMask (offset 212) */
+ /* _mesa_function_pool[31969]: IndexMask (offset 212) */
"i\0"
"glIndexMask\0"
"\0"
- /* _mesa_function_pool[31991]: BindProgramNV (will be remapped) */
+ /* _mesa_function_pool[31984]: BindProgramNV (will be remapped) */
"ii\0"
"glBindProgramARB\0"
"glBindProgramNV\0"
"\0"
- /* _mesa_function_pool[32028]: VertexAttrib4svARB (will be remapped) */
+ /* _mesa_function_pool[32021]: VertexAttrib4svARB (will be remapped) */
"ip\0"
"glVertexAttrib4sv\0"
"glVertexAttrib4svARB\0"
"\0"
- /* _mesa_function_pool[32071]: GetFloatv (offset 262) */
+ /* _mesa_function_pool[32064]: GetFloatv (offset 262) */
"ip\0"
"glGetFloatv\0"
"\0"
- /* _mesa_function_pool[32087]: CreateDebugObjectMESA (dynamic) */
+ /* _mesa_function_pool[32080]: CreateDebugObjectMESA (dynamic) */
"\0"
"glCreateDebugObjectMESA\0"
"\0"
- /* _mesa_function_pool[32113]: GetShaderiv (will be remapped) */
+ /* _mesa_function_pool[32106]: GetShaderiv (will be remapped) */
"iip\0"
"glGetShaderiv\0"
"\0"
- /* _mesa_function_pool[32132]: ClientWaitSync (will be remapped) */
+ /* _mesa_function_pool[32125]: ClientWaitSync (will be remapped) */
"iii\0"
"glClientWaitSync\0"
"\0"
- /* _mesa_function_pool[32154]: TexCoord4s (offset 124) */
+ /* _mesa_function_pool[32147]: TexCoord4s (offset 124) */
"iiii\0"
"glTexCoord4s\0"
"\0"
- /* _mesa_function_pool[32173]: TexCoord3sv (offset 117) */
+ /* _mesa_function_pool[32166]: TexCoord3sv (offset 117) */
"p\0"
"glTexCoord3sv\0"
"\0"
- /* _mesa_function_pool[32190]: BindFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[32183]: BindFragmentShaderATI (will be remapped) */
"i\0"
"glBindFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[32217]: PopAttrib (offset 218) */
+ /* _mesa_function_pool[32210]: PopAttrib (offset 218) */
"\0"
"glPopAttrib\0"
"\0"
- /* _mesa_function_pool[32231]: Fogfv (offset 154) */
+ /* _mesa_function_pool[32224]: Fogfv (offset 154) */
"ip\0"
"glFogfv\0"
"\0"
- /* _mesa_function_pool[32243]: UnmapBufferARB (will be remapped) */
+ /* _mesa_function_pool[32236]: UnmapBufferARB (will be remapped) */
"i\0"
"glUnmapBuffer\0"
"glUnmapBufferARB\0"
"\0"
- /* _mesa_function_pool[32277]: InitNames (offset 197) */
+ /* _mesa_function_pool[32270]: InitNames (offset 197) */
"\0"
"glInitNames\0"
"\0"
- /* _mesa_function_pool[32291]: Normal3sv (offset 61) */
+ /* _mesa_function_pool[32284]: Normal3sv (offset 61) */
"p\0"
"glNormal3sv\0"
"\0"
- /* _mesa_function_pool[32306]: Minmax (offset 368) */
+ /* _mesa_function_pool[32299]: Minmax (offset 368) */
"iii\0"
"glMinmax\0"
"glMinmaxEXT\0"
"\0"
- /* _mesa_function_pool[32332]: TexCoord4d (offset 118) */
+ /* _mesa_function_pool[32325]: TexCoord4d (offset 118) */
"dddd\0"
"glTexCoord4d\0"
"\0"
- /* _mesa_function_pool[32351]: DeformationMap3dSGIX (dynamic) */
+ /* _mesa_function_pool[32344]: DeformationMap3dSGIX (dynamic) */
"iddiiddiiddiip\0"
"glDeformationMap3dSGIX\0"
"\0"
- /* _mesa_function_pool[32390]: TexCoord4f (offset 120) */
+ /* _mesa_function_pool[32383]: TexCoord4f (offset 120) */
"ffff\0"
"glTexCoord4f\0"
"\0"
- /* _mesa_function_pool[32409]: FogCoorddvEXT (will be remapped) */
+ /* _mesa_function_pool[32402]: FogCoorddvEXT (will be remapped) */
"p\0"
"glFogCoorddv\0"
"glFogCoorddvEXT\0"
"\0"
- /* _mesa_function_pool[32441]: FinishTextureSUNX (dynamic) */
+ /* _mesa_function_pool[32434]: FinishTextureSUNX (dynamic) */
"\0"
"glFinishTextureSUNX\0"
"\0"
- /* _mesa_function_pool[32463]: GetFragmentLightfvSGIX (dynamic) */
+ /* _mesa_function_pool[32456]: GetFragmentLightfvSGIX (dynamic) */
"iip\0"
"glGetFragmentLightfvSGIX\0"
"\0"
- /* _mesa_function_pool[32493]: Binormal3fvEXT (dynamic) */
+ /* _mesa_function_pool[32486]: Binormal3fvEXT (dynamic) */
"p\0"
"glBinormal3fvEXT\0"
"\0"
- /* _mesa_function_pool[32513]: GetBooleanv (offset 258) */
+ /* _mesa_function_pool[32506]: GetBooleanv (offset 258) */
"ip\0"
"glGetBooleanv\0"
"\0"
- /* _mesa_function_pool[32531]: ColorFragmentOp3ATI (will be remapped) */
+ /* _mesa_function_pool[32524]: ColorFragmentOp3ATI (will be remapped) */
"iiiiiiiiiiiii\0"
"glColorFragmentOp3ATI\0"
"\0"
- /* _mesa_function_pool[32568]: Hint (offset 158) */
+ /* _mesa_function_pool[32561]: Hint (offset 158) */
"ii\0"
"glHint\0"
"\0"
- /* _mesa_function_pool[32579]: Color4dv (offset 28) */
+ /* _mesa_function_pool[32572]: Color4dv (offset 28) */
"p\0"
"glColor4dv\0"
"\0"
- /* _mesa_function_pool[32593]: VertexAttrib2svARB (will be remapped) */
+ /* _mesa_function_pool[32586]: VertexAttrib2svARB (will be remapped) */
"ip\0"
"glVertexAttrib2sv\0"
"glVertexAttrib2svARB\0"
"\0"
- /* _mesa_function_pool[32636]: AreProgramsResidentNV (will be remapped) */
+ /* _mesa_function_pool[32629]: AreProgramsResidentNV (will be remapped) */
"ipp\0"
"glAreProgramsResidentNV\0"
"\0"
- /* _mesa_function_pool[32665]: WindowPos3svMESA (will be remapped) */
+ /* _mesa_function_pool[32658]: WindowPos3svMESA (will be remapped) */
"p\0"
"glWindowPos3sv\0"
"glWindowPos3svARB\0"
"glWindowPos3svMESA\0"
"\0"
- /* _mesa_function_pool[32720]: CopyColorSubTable (offset 347) */
+ /* _mesa_function_pool[32713]: CopyColorSubTable (offset 347) */
"iiiii\0"
"glCopyColorSubTable\0"
"glCopyColorSubTableEXT\0"
"\0"
- /* _mesa_function_pool[32770]: WeightdvARB (dynamic) */
+ /* _mesa_function_pool[32763]: WeightdvARB (dynamic) */
"ip\0"
"glWeightdvARB\0"
"\0"
- /* _mesa_function_pool[32788]: DeleteRenderbuffersEXT (will be remapped) */
+ /* _mesa_function_pool[32781]: DeleteRenderbuffersEXT (will be remapped) */
"ip\0"
"glDeleteRenderbuffers\0"
"glDeleteRenderbuffersEXT\0"
"\0"
- /* _mesa_function_pool[32839]: VertexAttrib4NubvARB (will be remapped) */
+ /* _mesa_function_pool[32832]: VertexAttrib4NubvARB (will be remapped) */
"ip\0"
"glVertexAttrib4Nubv\0"
"glVertexAttrib4NubvARB\0"
"\0"
- /* _mesa_function_pool[32886]: VertexAttrib3dvNV (will be remapped) */
+ /* _mesa_function_pool[32879]: VertexAttrib3dvNV (will be remapped) */
"ip\0"
"glVertexAttrib3dvNV\0"
"\0"
- /* _mesa_function_pool[32910]: GetObjectParameterfvARB (will be remapped) */
+ /* _mesa_function_pool[32903]: GetObjectParameterfvARB (will be remapped) */
"iip\0"
"glGetObjectParameterfvARB\0"
"\0"
- /* _mesa_function_pool[32941]: Vertex4iv (offset 147) */
+ /* _mesa_function_pool[32934]: Vertex4iv (offset 147) */
"p\0"
"glVertex4iv\0"
"\0"
- /* _mesa_function_pool[32956]: GetProgramEnvParameterdvARB (will be remapped) */
+ /* _mesa_function_pool[32949]: GetProgramEnvParameterdvARB (will be remapped) */
"iip\0"
"glGetProgramEnvParameterdvARB\0"
"\0"
- /* _mesa_function_pool[32991]: TexCoord4dv (offset 119) */
+ /* _mesa_function_pool[32984]: TexCoord4dv (offset 119) */
"p\0"
"glTexCoord4dv\0"
"\0"
- /* _mesa_function_pool[33008]: LockArraysEXT (will be remapped) */
+ /* _mesa_function_pool[33001]: LockArraysEXT (will be remapped) */
"ii\0"
"glLockArraysEXT\0"
"\0"
- /* _mesa_function_pool[33028]: Begin (offset 7) */
+ /* _mesa_function_pool[33021]: Begin (offset 7) */
"i\0"
"glBegin\0"
"\0"
- /* _mesa_function_pool[33039]: LightModeli (offset 165) */
+ /* _mesa_function_pool[33032]: LightModeli (offset 165) */
"ii\0"
"glLightModeli\0"
"\0"
- /* _mesa_function_pool[33057]: VertexAttribI4ivEXT (will be remapped) */
+ /* _mesa_function_pool[33050]: VertexAttribI4ivEXT (will be remapped) */
"ip\0"
"glVertexAttribI4ivEXT\0"
"glVertexAttribI4iv\0"
"\0"
- /* _mesa_function_pool[33102]: Rectfv (offset 89) */
+ /* _mesa_function_pool[33095]: Rectfv (offset 89) */
"pp\0"
"glRectfv\0"
"\0"
- /* _mesa_function_pool[33115]: LightModelf (offset 163) */
+ /* _mesa_function_pool[33108]: LightModelf (offset 163) */
"if\0"
"glLightModelf\0"
"\0"
- /* _mesa_function_pool[33133]: GetTexParameterfv (offset 282) */
+ /* _mesa_function_pool[33126]: GetTexParameterfv (offset 282) */
"iip\0"
"glGetTexParameterfv\0"
"\0"
- /* _mesa_function_pool[33158]: GetLightfv (offset 264) */
+ /* _mesa_function_pool[33151]: GetLightfv (offset 264) */
"iip\0"
"glGetLightfv\0"
"\0"
- /* _mesa_function_pool[33176]: PixelTransformParameterivEXT (dynamic) */
+ /* _mesa_function_pool[33169]: PixelTransformParameterivEXT (dynamic) */
"iip\0"
"glPixelTransformParameterivEXT\0"
"\0"
- /* _mesa_function_pool[33212]: BinormalPointerEXT (dynamic) */
+ /* _mesa_function_pool[33205]: BinormalPointerEXT (dynamic) */
"iip\0"
"glBinormalPointerEXT\0"
"\0"
- /* _mesa_function_pool[33238]: VertexAttrib1dNV (will be remapped) */
+ /* _mesa_function_pool[33231]: VertexAttrib1dNV (will be remapped) */
"id\0"
"glVertexAttrib1dNV\0"
"\0"
- /* _mesa_function_pool[33261]: GetCombinerInputParameterivNV (will be remapped) */
+ /* _mesa_function_pool[33254]: GetCombinerInputParameterivNV (will be remapped) */
"iiiip\0"
"glGetCombinerInputParameterivNV\0"
"\0"
- /* _mesa_function_pool[33300]: Disable (offset 214) */
+ /* _mesa_function_pool[33293]: Disable (offset 214) */
"i\0"
"glDisable\0"
"\0"
- /* _mesa_function_pool[33313]: MultiTexCoord2fvARB (offset 387) */
+ /* _mesa_function_pool[33306]: MultiTexCoord2fvARB (offset 387) */
"ip\0"
"glMultiTexCoord2fv\0"
"glMultiTexCoord2fvARB\0"
"\0"
- /* _mesa_function_pool[33358]: GetRenderbufferParameterivEXT (will be remapped) */
+ /* _mesa_function_pool[33351]: GetRenderbufferParameterivEXT (will be remapped) */
"iip\0"
"glGetRenderbufferParameteriv\0"
"glGetRenderbufferParameterivEXT\0"
"\0"
- /* _mesa_function_pool[33424]: CombinerParameterivNV (will be remapped) */
+ /* _mesa_function_pool[33417]: CombinerParameterivNV (will be remapped) */
"ip\0"
"glCombinerParameterivNV\0"
"\0"
- /* _mesa_function_pool[33452]: GenFragmentShadersATI (will be remapped) */
+ /* _mesa_function_pool[33445]: GenFragmentShadersATI (will be remapped) */
"i\0"
"glGenFragmentShadersATI\0"
"\0"
- /* _mesa_function_pool[33479]: DrawArrays (offset 310) */
+ /* _mesa_function_pool[33472]: DrawArrays (offset 310) */
"iii\0"
"glDrawArrays\0"
"glDrawArraysEXT\0"
"\0"
- /* _mesa_function_pool[33513]: WeightuivARB (dynamic) */
+ /* _mesa_function_pool[33506]: WeightuivARB (dynamic) */
"ip\0"
"glWeightuivARB\0"
"\0"
- /* _mesa_function_pool[33532]: GetVertexAttribIivEXT (will be remapped) */
+ /* _mesa_function_pool[33525]: GetVertexAttribIivEXT (will be remapped) */
"iip\0"
"glGetVertexAttribIivEXT\0"
"glGetVertexAttribIiv\0"
"\0"
- /* _mesa_function_pool[33582]: VertexAttrib2sARB (will be remapped) */
+ /* _mesa_function_pool[33575]: VertexAttrib2sARB (will be remapped) */
"iii\0"
"glVertexAttrib2s\0"
"glVertexAttrib2sARB\0"
"\0"
- /* _mesa_function_pool[33624]: GetnTexImageARB (will be remapped) */
+ /* _mesa_function_pool[33617]: GetnTexImageARB (will be remapped) */
"iiiiip\0"
"glGetnTexImageARB\0"
"\0"
- /* _mesa_function_pool[33650]: ColorMask (offset 210) */
+ /* _mesa_function_pool[33643]: ColorMask (offset 210) */
"iiii\0"
"glColorMask\0"
"\0"
- /* _mesa_function_pool[33668]: GenAsyncMarkersSGIX (dynamic) */
+ /* _mesa_function_pool[33661]: GenAsyncMarkersSGIX (dynamic) */
"i\0"
"glGenAsyncMarkersSGIX\0"
"\0"
- /* _mesa_function_pool[33693]: Tangent3svEXT (dynamic) */
+ /* _mesa_function_pool[33686]: Tangent3svEXT (dynamic) */
"p\0"
"glTangent3svEXT\0"
"\0"
- /* _mesa_function_pool[33712]: GetListParameterivSGIX (dynamic) */
+ /* _mesa_function_pool[33705]: GetListParameterivSGIX (dynamic) */
"iip\0"
"glGetListParameterivSGIX\0"
"\0"
- /* _mesa_function_pool[33742]: BindBufferARB (will be remapped) */
+ /* _mesa_function_pool[33735]: BindBufferARB (will be remapped) */
"ii\0"
"glBindBuffer\0"
"glBindBufferARB\0"
"\0"
- /* _mesa_function_pool[33775]: GetInfoLogARB (will be remapped) */
+ /* _mesa_function_pool[33768]: GetInfoLogARB (will be remapped) */
"iipp\0"
"glGetInfoLogARB\0"
"\0"
- /* _mesa_function_pool[33797]: RasterPos4iv (offset 83) */
+ /* _mesa_function_pool[33790]: RasterPos4iv (offset 83) */
"p\0"
"glRasterPos4iv\0"
"\0"
- /* _mesa_function_pool[33815]: Enable (offset 215) */
+ /* _mesa_function_pool[33808]: Enable (offset 215) */
"i\0"
"glEnable\0"
"\0"
- /* _mesa_function_pool[33827]: LineStipple (offset 167) */
+ /* _mesa_function_pool[33820]: LineStipple (offset 167) */
"ii\0"
"glLineStipple\0"
"\0"
- /* _mesa_function_pool[33845]: VertexAttribs4svNV (will be remapped) */
+ /* _mesa_function_pool[33838]: VertexAttribs4svNV (will be remapped) */
"iip\0"
"glVertexAttribs4svNV\0"
"\0"
- /* _mesa_function_pool[33871]: EdgeFlagPointerListIBM (dynamic) */
+ /* _mesa_function_pool[33864]: EdgeFlagPointerListIBM (dynamic) */
"ipi\0"
"glEdgeFlagPointerListIBM\0"
"\0"
- /* _mesa_function_pool[33901]: UniformMatrix3x2fv (will be remapped) */
+ /* _mesa_function_pool[33894]: UniformMatrix3x2fv (will be remapped) */
"iiip\0"
"glUniformMatrix3x2fv\0"
"\0"
- /* _mesa_function_pool[33928]: GetMinmaxParameterfv (offset 365) */
+ /* _mesa_function_pool[33921]: GetMinmaxParameterfv (offset 365) */
"iip\0"
"glGetMinmaxParameterfv\0"
"glGetMinmaxParameterfvEXT\0"
"\0"
- /* _mesa_function_pool[33982]: VertexAttrib1fvARB (will be remapped) */
+ /* _mesa_function_pool[33975]: VertexAttrib1fvARB (will be remapped) */
"ip\0"
"glVertexAttrib1fv\0"
"glVertexAttrib1fvARB\0"
"\0"
- /* _mesa_function_pool[34025]: GenBuffersARB (will be remapped) */
+ /* _mesa_function_pool[34018]: GenBuffersARB (will be remapped) */
"ip\0"
"glGenBuffers\0"
"glGenBuffersARB\0"
"\0"
- /* _mesa_function_pool[34058]: VertexAttribs1svNV (will be remapped) */
+ /* _mesa_function_pool[34051]: VertexAttribs1svNV (will be remapped) */
"iip\0"
"glVertexAttribs1svNV\0"
"\0"
- /* _mesa_function_pool[34084]: Vertex3fv (offset 137) */
+ /* _mesa_function_pool[34077]: Vertex3fv (offset 137) */
"p\0"
"glVertex3fv\0"
"\0"
- /* _mesa_function_pool[34099]: GetTexBumpParameterivATI (will be remapped) */
+ /* _mesa_function_pool[34092]: GetTexBumpParameterivATI (will be remapped) */
"ip\0"
"glGetTexBumpParameterivATI\0"
"\0"
- /* _mesa_function_pool[34130]: Binormal3bEXT (dynamic) */
+ /* _mesa_function_pool[34123]: Binormal3bEXT (dynamic) */
"iii\0"
"glBinormal3bEXT\0"
"\0"
- /* _mesa_function_pool[34151]: FragmentMaterialivSGIX (dynamic) */
+ /* _mesa_function_pool[34144]: FragmentMaterialivSGIX (dynamic) */
"iip\0"
"glFragmentMaterialivSGIX\0"
"\0"
- /* _mesa_function_pool[34181]: IsRenderbufferEXT (will be remapped) */
+ /* _mesa_function_pool[34174]: IsRenderbufferEXT (will be remapped) */
"i\0"
"glIsRenderbuffer\0"
"glIsRenderbufferEXT\0"
"\0"
- /* _mesa_function_pool[34221]: GenProgramsNV (will be remapped) */
+ /* _mesa_function_pool[34214]: GenProgramsNV (will be remapped) */
"ip\0"
"glGenProgramsARB\0"
"glGenProgramsNV\0"
"\0"
- /* _mesa_function_pool[34258]: VertexAttrib4dvNV (will be remapped) */
+ /* _mesa_function_pool[34251]: VertexAttrib4dvNV (will be remapped) */
"ip\0"
"glVertexAttrib4dvNV\0"
"\0"
- /* _mesa_function_pool[34282]: EndFragmentShaderATI (will be remapped) */
+ /* _mesa_function_pool[34275]: EndFragmentShaderATI (will be remapped) */
"\0"
"glEndFragmentShaderATI\0"
"\0"
- /* _mesa_function_pool[34307]: Binormal3iEXT (dynamic) */
+ /* _mesa_function_pool[34300]: Binormal3iEXT (dynamic) */
"iii\0"
"glBinormal3iEXT\0"
"\0"
- /* _mesa_function_pool[34328]: WindowPos2fMESA (will be remapped) */
+ /* _mesa_function_pool[34321]: WindowPos2fMESA (will be remapped) */
"ff\0"
"glWindowPos2f\0"
"glWindowPos2fARB\0"
@@ -4936,526 +4933,526 @@ static const char _mesa_function_pool[] =
/* these functions need to be remapped */
static const struct gl_function_pool_remap MESA_remap_table_functions[] = {
{ 1590, AttachShader_remap_index },
- { 10243, CreateProgram_remap_index },
- { 23919, CreateShader_remap_index },
- { 26443, DeleteProgram_remap_index },
- { 19399, DeleteShader_remap_index },
- { 24412, DetachShader_remap_index },
- { 18646, GetAttachedShaders_remap_index },
- { 5053, GetProgramInfoLog_remap_index },
+ { 10272, CreateProgram_remap_index },
+ { 23912, CreateShader_remap_index },
+ { 26436, DeleteProgram_remap_index },
+ { 19392, DeleteShader_remap_index },
+ { 24405, DetachShader_remap_index },
+ { 18639, GetAttachedShaders_remap_index },
+ { 5082, GetProgramInfoLog_remap_index },
{ 405, GetProgramiv_remap_index },
- { 6861, GetShaderInfoLog_remap_index },
- { 32113, GetShaderiv_remap_index },
- { 13776, IsProgram_remap_index },
- { 12667, IsShader_remap_index },
- { 10373, StencilFuncSeparate_remap_index },
- { 4031, StencilMaskSeparate_remap_index },
- { 7926, StencilOpSeparate_remap_index },
- { 23153, UniformMatrix2x3fv_remap_index },
+ { 6890, GetShaderInfoLog_remap_index },
+ { 32106, GetShaderiv_remap_index },
+ { 13769, IsProgram_remap_index },
+ { 12696, IsShader_remap_index },
+ { 10402, StencilFuncSeparate_remap_index },
+ { 4060, StencilMaskSeparate_remap_index },
+ { 7955, StencilOpSeparate_remap_index },
+ { 23146, UniformMatrix2x3fv_remap_index },
{ 2920, UniformMatrix2x4fv_remap_index },
- { 33901, UniformMatrix3x2fv_remap_index },
- { 31430, UniformMatrix3x4fv_remap_index },
- { 16766, UniformMatrix4x2fv_remap_index },
- { 3339, UniformMatrix4x3fv_remap_index },
- { 5259, ClampColor_remap_index },
- { 18700, ClearBufferfi_remap_index },
- { 18116, ClearBufferfv_remap_index },
- { 30453, ClearBufferiv_remap_index },
- { 13981, ClearBufferuiv_remap_index },
- { 20736, GetStringi_remap_index },
+ { 33894, UniformMatrix3x2fv_remap_index },
+ { 31423, UniformMatrix3x4fv_remap_index },
+ { 16759, UniformMatrix4x2fv_remap_index },
+ { 3368, UniformMatrix4x3fv_remap_index },
+ { 5288, ClampColor_remap_index },
+ { 18693, ClearBufferfi_remap_index },
+ { 18109, ClearBufferfv_remap_index },
+ { 30446, ClearBufferiv_remap_index },
+ { 13974, ClearBufferuiv_remap_index },
+ { 20729, GetStringi_remap_index },
{ 2861, TexBuffer_remap_index },
{ 938, FramebufferTexture_remap_index },
- { 27479, GetBufferParameteri64v_remap_index },
- { 10473, GetInteger64i_v_remap_index },
- { 24233, VertexAttribDivisor_remap_index },
- { 10261, LoadTransposeMatrixdARB_remap_index },
- { 31842, LoadTransposeMatrixfARB_remap_index },
- { 5898, MultTransposeMatrixdARB_remap_index },
- { 24599, MultTransposeMatrixfARB_remap_index },
+ { 27472, GetBufferParameteri64v_remap_index },
+ { 10502, GetInteger64i_v_remap_index },
+ { 24226, VertexAttribDivisor_remap_index },
+ { 10290, LoadTransposeMatrixdARB_remap_index },
+ { 31835, LoadTransposeMatrixfARB_remap_index },
+ { 5927, MultTransposeMatrixdARB_remap_index },
+ { 24592, MultTransposeMatrixfARB_remap_index },
{ 216, SampleCoverageARB_remap_index },
- { 6124, CompressedTexImage1DARB_remap_index },
- { 25127, CompressedTexImage2DARB_remap_index },
- { 4094, CompressedTexImage3DARB_remap_index },
- { 18988, CompressedTexSubImage1DARB_remap_index },
+ { 6153, CompressedTexImage1DARB_remap_index },
+ { 25120, CompressedTexImage2DARB_remap_index },
+ { 4123, CompressedTexImage3DARB_remap_index },
+ { 18981, CompressedTexSubImage1DARB_remap_index },
{ 2102, CompressedTexSubImage2DARB_remap_index },
- { 21158, CompressedTexSubImage3DARB_remap_index },
- { 29559, GetCompressedTexImageARB_remap_index },
- { 3905, DisableVertexAttribArrayARB_remap_index },
- { 30995, EnableVertexAttribArrayARB_remap_index },
- { 32956, GetProgramEnvParameterdvARB_remap_index },
- { 24479, GetProgramEnvParameterfvARB_remap_index },
- { 28476, GetProgramLocalParameterdvARB_remap_index },
- { 8402, GetProgramLocalParameterfvARB_remap_index },
- { 19164, GetProgramStringARB_remap_index },
- { 28671, GetProgramivARB_remap_index },
- { 21353, GetVertexAttribdvARB_remap_index },
- { 16574, GetVertexAttribfvARB_remap_index },
- { 10077, GetVertexAttribivARB_remap_index },
- { 20199, ProgramEnvParameter4dARB_remap_index },
- { 26193, ProgramEnvParameter4dvARB_remap_index },
- { 17414, ProgramEnvParameter4fARB_remap_index },
- { 9277, ProgramEnvParameter4fvARB_remap_index },
- { 4057, ProgramLocalParameter4dARB_remap_index },
- { 13486, ProgramLocalParameter4dvARB_remap_index },
- { 30474, ProgramLocalParameter4fARB_remap_index },
- { 26839, ProgramLocalParameter4fvARB_remap_index },
- { 29313, ProgramStringARB_remap_index },
- { 20467, VertexAttrib1dARB_remap_index },
- { 16201, VertexAttrib1dvARB_remap_index },
- { 4253, VertexAttrib1fARB_remap_index },
- { 33982, VertexAttrib1fvARB_remap_index },
- { 7452, VertexAttrib1sARB_remap_index },
+ { 21151, CompressedTexSubImage3DARB_remap_index },
+ { 29552, GetCompressedTexImageARB_remap_index },
+ { 3934, DisableVertexAttribArrayARB_remap_index },
+ { 30988, EnableVertexAttribArrayARB_remap_index },
+ { 32949, GetProgramEnvParameterdvARB_remap_index },
+ { 24472, GetProgramEnvParameterfvARB_remap_index },
+ { 28469, GetProgramLocalParameterdvARB_remap_index },
+ { 8431, GetProgramLocalParameterfvARB_remap_index },
+ { 19157, GetProgramStringARB_remap_index },
+ { 28664, GetProgramivARB_remap_index },
+ { 21346, GetVertexAttribdvARB_remap_index },
+ { 16567, GetVertexAttribfvARB_remap_index },
+ { 10106, GetVertexAttribivARB_remap_index },
+ { 20192, ProgramEnvParameter4dARB_remap_index },
+ { 26186, ProgramEnvParameter4dvARB_remap_index },
+ { 17407, ProgramEnvParameter4fARB_remap_index },
+ { 9306, ProgramEnvParameter4fvARB_remap_index },
+ { 4086, ProgramLocalParameter4dARB_remap_index },
+ { 13479, ProgramLocalParameter4dvARB_remap_index },
+ { 30467, ProgramLocalParameter4fARB_remap_index },
+ { 26832, ProgramLocalParameter4fvARB_remap_index },
+ { 29306, ProgramStringARB_remap_index },
+ { 20460, VertexAttrib1dARB_remap_index },
+ { 16194, VertexAttrib1dvARB_remap_index },
+ { 4282, VertexAttrib1fARB_remap_index },
+ { 33975, VertexAttrib1fvARB_remap_index },
+ { 7481, VertexAttrib1sARB_remap_index },
{ 2297, VertexAttrib1svARB_remap_index },
- { 15632, VertexAttrib2dARB_remap_index },
- { 18137, VertexAttrib2dvARB_remap_index },
+ { 15625, VertexAttrib2dARB_remap_index },
+ { 18130, VertexAttrib2dvARB_remap_index },
{ 1648, VertexAttrib2fARB_remap_index },
- { 18250, VertexAttrib2fvARB_remap_index },
- { 33582, VertexAttrib2sARB_remap_index },
- { 32593, VertexAttrib2svARB_remap_index },
- { 11651, VertexAttrib3dARB_remap_index },
- { 8944, VertexAttrib3dvARB_remap_index },
+ { 18243, VertexAttrib2fvARB_remap_index },
+ { 33575, VertexAttrib2sARB_remap_index },
+ { 32586, VertexAttrib2svARB_remap_index },
+ { 11680, VertexAttrib3dARB_remap_index },
+ { 8973, VertexAttrib3dvARB_remap_index },
{ 1735, VertexAttrib3fARB_remap_index },
- { 23470, VertexAttrib3fvARB_remap_index },
- { 29160, VertexAttrib3sARB_remap_index },
- { 21095, VertexAttrib3svARB_remap_index },
- { 5079, VertexAttrib4NbvARB_remap_index },
- { 18523, VertexAttrib4NivARB_remap_index },
- { 23425, VertexAttrib4NsvARB_remap_index },
- { 24431, VertexAttrib4NubARB_remap_index },
- { 32839, VertexAttrib4NubvARB_remap_index },
- { 19850, VertexAttrib4NuivARB_remap_index },
- { 3212, VertexAttrib4NusvARB_remap_index },
- { 11240, VertexAttrib4bvARB_remap_index },
- { 27849, VertexAttrib4dARB_remap_index },
- { 22152, VertexAttrib4dvARB_remap_index },
- { 11805, VertexAttrib4fARB_remap_index },
- { 12209, VertexAttrib4fvARB_remap_index },
- { 10616, VertexAttrib4ivARB_remap_index },
- { 17930, VertexAttrib4sARB_remap_index },
- { 32028, VertexAttrib4svARB_remap_index },
- { 17219, VertexAttrib4ubvARB_remap_index },
- { 31319, VertexAttrib4uivARB_remap_index },
- { 20906, VertexAttrib4usvARB_remap_index },
- { 22968, VertexAttribPointerARB_remap_index },
- { 33742, BindBufferARB_remap_index },
- { 7159, BufferDataARB_remap_index },
+ { 23463, VertexAttrib3fvARB_remap_index },
+ { 29153, VertexAttrib3sARB_remap_index },
+ { 21088, VertexAttrib3svARB_remap_index },
+ { 5108, VertexAttrib4NbvARB_remap_index },
+ { 18516, VertexAttrib4NivARB_remap_index },
+ { 23418, VertexAttrib4NsvARB_remap_index },
+ { 24424, VertexAttrib4NubARB_remap_index },
+ { 32832, VertexAttrib4NubvARB_remap_index },
+ { 19843, VertexAttrib4NuivARB_remap_index },
+ { 3241, VertexAttrib4NusvARB_remap_index },
+ { 11269, VertexAttrib4bvARB_remap_index },
+ { 27842, VertexAttrib4dARB_remap_index },
+ { 22145, VertexAttrib4dvARB_remap_index },
+ { 11834, VertexAttrib4fARB_remap_index },
+ { 12238, VertexAttrib4fvARB_remap_index },
+ { 10645, VertexAttrib4ivARB_remap_index },
+ { 17923, VertexAttrib4sARB_remap_index },
+ { 32021, VertexAttrib4svARB_remap_index },
+ { 17212, VertexAttrib4ubvARB_remap_index },
+ { 31312, VertexAttrib4uivARB_remap_index },
+ { 20899, VertexAttrib4usvARB_remap_index },
+ { 22961, VertexAttribPointerARB_remap_index },
+ { 33735, BindBufferARB_remap_index },
+ { 7188, BufferDataARB_remap_index },
{ 1511, BufferSubDataARB_remap_index },
- { 31605, DeleteBuffersARB_remap_index },
- { 34025, GenBuffersARB_remap_index },
- { 18293, GetBufferParameterivARB_remap_index },
- { 17366, GetBufferPointervARB_remap_index },
+ { 31598, DeleteBuffersARB_remap_index },
+ { 34018, GenBuffersARB_remap_index },
+ { 18286, GetBufferParameterivARB_remap_index },
+ { 17359, GetBufferPointervARB_remap_index },
{ 1464, GetBufferSubDataARB_remap_index },
- { 31267, IsBufferARB_remap_index },
- { 27323, MapBufferARB_remap_index },
- { 32243, UnmapBufferARB_remap_index },
+ { 31260, IsBufferARB_remap_index },
+ { 27316, MapBufferARB_remap_index },
+ { 32236, UnmapBufferARB_remap_index },
{ 312, BeginQueryARB_remap_index },
- { 20562, DeleteQueriesARB_remap_index },
- { 12528, EndQueryARB_remap_index },
- { 30038, GenQueriesARB_remap_index },
+ { 20555, DeleteQueriesARB_remap_index },
+ { 12557, EndQueryARB_remap_index },
+ { 30031, GenQueriesARB_remap_index },
{ 1994, GetQueryObjectivARB_remap_index },
- { 17974, GetQueryObjectuivARB_remap_index },
+ { 17967, GetQueryObjectuivARB_remap_index },
{ 1792, GetQueryivARB_remap_index },
- { 20813, IsQueryARB_remap_index },
- { 8554, AttachObjectARB_remap_index },
- { 19361, CompileShaderARB_remap_index },
- { 3281, CreateProgramObjectARB_remap_index },
- { 7104, CreateShaderObjectARB_remap_index },
- { 14934, DeleteObjectARB_remap_index },
- { 24918, DetachObjectARB_remap_index },
- { 12273, GetActiveUniformARB_remap_index },
- { 9752, GetAttachedObjectsARB_remap_index },
- { 10059, GetHandleARB_remap_index },
- { 33775, GetInfoLogARB_remap_index },
- { 32910, GetObjectParameterfvARB_remap_index },
- { 28350, GetObjectParameterivARB_remap_index },
- { 29796, GetShaderSourceARB_remap_index },
- { 29020, GetUniformLocationARB_remap_index },
- { 24701, GetUniformfvARB_remap_index },
- { 13061, GetUniformivARB_remap_index },
- { 20951, LinkProgramARB_remap_index },
- { 21009, ShaderSourceARB_remap_index },
- { 7826, Uniform1fARB_remap_index },
- { 30683, Uniform1fvARB_remap_index },
- { 22916, Uniform1iARB_remap_index },
- { 21806, Uniform1ivARB_remap_index },
+ { 20806, IsQueryARB_remap_index },
+ { 8583, AttachObjectARB_remap_index },
+ { 19354, CompileShaderARB_remap_index },
+ { 3310, CreateProgramObjectARB_remap_index },
+ { 7133, CreateShaderObjectARB_remap_index },
+ { 14927, DeleteObjectARB_remap_index },
+ { 24911, DetachObjectARB_remap_index },
+ { 12302, GetActiveUniformARB_remap_index },
+ { 9781, GetAttachedObjectsARB_remap_index },
+ { 10088, GetHandleARB_remap_index },
+ { 33768, GetInfoLogARB_remap_index },
+ { 32903, GetObjectParameterfvARB_remap_index },
+ { 28343, GetObjectParameterivARB_remap_index },
+ { 29789, GetShaderSourceARB_remap_index },
+ { 29013, GetUniformLocationARB_remap_index },
+ { 24694, GetUniformfvARB_remap_index },
+ { 13054, GetUniformivARB_remap_index },
+ { 20944, LinkProgramARB_remap_index },
+ { 21002, ShaderSourceARB_remap_index },
+ { 7855, Uniform1fARB_remap_index },
+ { 30676, Uniform1fvARB_remap_index },
+ { 22909, Uniform1iARB_remap_index },
+ { 21799, Uniform1ivARB_remap_index },
{ 2246, Uniform2fARB_remap_index },
- { 14770, Uniform2fvARB_remap_index },
- { 27210, Uniform2iARB_remap_index },
+ { 14763, Uniform2fvARB_remap_index },
+ { 27203, Uniform2iARB_remap_index },
{ 2366, Uniform2ivARB_remap_index },
- { 19471, Uniform3fARB_remap_index },
- { 9782, Uniform3fvARB_remap_index },
- { 6715, Uniform3iARB_remap_index },
- { 17472, Uniform3ivARB_remap_index },
- { 20005, Uniform4fARB_remap_index },
- { 24565, Uniform4fvARB_remap_index },
- { 25827, Uniform4iARB_remap_index },
- { 21319, Uniform4ivARB_remap_index },
- { 8606, UniformMatrix2fvARB_remap_index },
+ { 19464, Uniform3fARB_remap_index },
+ { 9811, Uniform3fvARB_remap_index },
+ { 6744, Uniform3iARB_remap_index },
+ { 17465, Uniform3ivARB_remap_index },
+ { 19998, Uniform4fARB_remap_index },
+ { 24558, Uniform4fvARB_remap_index },
+ { 25820, Uniform4iARB_remap_index },
+ { 21312, Uniform4ivARB_remap_index },
+ { 8635, UniformMatrix2fvARB_remap_index },
{ 17, UniformMatrix3fvARB_remap_index },
{ 2763, UniformMatrix4fvARB_remap_index },
- { 26305, UseProgramObjectARB_remap_index },
- { 15320, ValidateProgramARB_remap_index },
- { 22195, BindAttribLocationARB_remap_index },
- { 5124, GetActiveAttribARB_remap_index },
- { 17086, GetAttribLocationARB_remap_index },
- { 30401, DrawBuffersARB_remap_index },
- { 30234, ClampColorARB_remap_index },
- { 18568, DrawArraysInstancedARB_remap_index },
- { 6776, DrawElementsInstancedARB_remap_index },
- { 13591, RenderbufferStorageMultisample_remap_index },
- { 14062, FramebufferTextureARB_remap_index },
- { 26741, FramebufferTextureFaceARB_remap_index },
- { 25067, ProgramParameteriARB_remap_index },
- { 6296, VertexAttribDivisorARB_remap_index },
- { 20053, FlushMappedBufferRange_remap_index },
- { 28787, MapBufferRange_remap_index },
- { 28694, TexBufferARB_remap_index },
- { 16904, BindVertexArray_remap_index },
- { 15143, GenVertexArrays_remap_index },
- { 31197, CopyBufferSubData_remap_index },
- { 32132, ClientWaitSync_remap_index },
+ { 26298, UseProgramObjectARB_remap_index },
+ { 15313, ValidateProgramARB_remap_index },
+ { 22188, BindAttribLocationARB_remap_index },
+ { 5153, GetActiveAttribARB_remap_index },
+ { 17079, GetAttribLocationARB_remap_index },
+ { 30394, DrawBuffersARB_remap_index },
+ { 30227, ClampColorARB_remap_index },
+ { 18561, DrawArraysInstancedARB_remap_index },
+ { 6805, DrawElementsInstancedARB_remap_index },
+ { 13584, RenderbufferStorageMultisample_remap_index },
+ { 14055, FramebufferTextureARB_remap_index },
+ { 26734, FramebufferTextureFaceARB_remap_index },
+ { 25060, ProgramParameteriARB_remap_index },
+ { 6325, VertexAttribDivisorARB_remap_index },
+ { 20046, FlushMappedBufferRange_remap_index },
+ { 28780, MapBufferRange_remap_index },
+ { 28687, TexBufferARB_remap_index },
+ { 16897, BindVertexArray_remap_index },
+ { 15136, GenVertexArrays_remap_index },
+ { 31190, CopyBufferSubData_remap_index },
+ { 32125, ClientWaitSync_remap_index },
{ 2682, DeleteSync_remap_index },
- { 7493, FenceSync_remap_index },
- { 15691, GetInteger64v_remap_index },
- { 23532, GetSynciv_remap_index },
- { 30340, IsSync_remap_index },
- { 9700, WaitSync_remap_index },
- { 3873, DrawElementsBaseVertex_remap_index },
- { 19216, DrawElementsInstancedBaseVertex_remap_index },
- { 31509, DrawRangeElementsBaseVertex_remap_index },
- { 27354, MultiDrawElementsBaseVertex_remap_index },
- { 17152, BlendEquationSeparateiARB_remap_index },
- { 18386, BlendEquationiARB_remap_index },
- { 13000, BlendFuncSeparateiARB_remap_index },
- { 10125, BlendFunciARB_remap_index },
- { 8468, BindSampler_remap_index },
- { 4232, DeleteSamplers_remap_index },
- { 20426, GenSamplers_remap_index },
- { 30272, GetSamplerParameterIiv_remap_index },
- { 19947, GetSamplerParameterIuiv_remap_index },
- { 4973, GetSamplerParameterfv_remap_index },
- { 26462, GetSamplerParameteriv_remap_index },
- { 14688, IsSampler_remap_index },
- { 16857, SamplerParameterIiv_remap_index },
- { 31548, SamplerParameterIuiv_remap_index },
- { 23205, SamplerParameterf_remap_index },
- { 17013, SamplerParameterfv_remap_index },
- { 23180, SamplerParameteri_remap_index },
- { 18762, SamplerParameteriv_remap_index },
- { 5320, BindTransformFeedback_remap_index },
- { 3308, DeleteTransformFeedbacks_remap_index },
- { 6748, DrawTransformFeedback_remap_index },
- { 9919, GenTransformFeedbacks_remap_index },
- { 29203, IsTransformFeedback_remap_index },
- { 26934, PauseTransformFeedback_remap_index },
- { 5783, ResumeTransformFeedback_remap_index },
- { 22515, ClearDepthf_remap_index },
- { 7052, DepthRangef_remap_index },
- { 14955, GetShaderPrecisionFormat_remap_index },
- { 10313, ReleaseShaderCompiler_remap_index },
- { 11283, ShaderBinary_remap_index },
+ { 7522, FenceSync_remap_index },
+ { 15684, GetInteger64v_remap_index },
+ { 23525, GetSynciv_remap_index },
+ { 30333, IsSync_remap_index },
+ { 9729, WaitSync_remap_index },
+ { 3902, DrawElementsBaseVertex_remap_index },
+ { 19209, DrawElementsInstancedBaseVertex_remap_index },
+ { 31502, DrawRangeElementsBaseVertex_remap_index },
+ { 27347, MultiDrawElementsBaseVertex_remap_index },
+ { 17145, BlendEquationSeparateiARB_remap_index },
+ { 18379, BlendEquationiARB_remap_index },
+ { 12993, BlendFuncSeparateiARB_remap_index },
+ { 10154, BlendFunciARB_remap_index },
+ { 8497, BindSampler_remap_index },
+ { 4261, DeleteSamplers_remap_index },
+ { 20419, GenSamplers_remap_index },
+ { 30265, GetSamplerParameterIiv_remap_index },
+ { 19940, GetSamplerParameterIuiv_remap_index },
+ { 5002, GetSamplerParameterfv_remap_index },
+ { 26455, GetSamplerParameteriv_remap_index },
+ { 14681, IsSampler_remap_index },
+ { 16850, SamplerParameterIiv_remap_index },
+ { 31541, SamplerParameterIuiv_remap_index },
+ { 23198, SamplerParameterf_remap_index },
+ { 17006, SamplerParameterfv_remap_index },
+ { 23173, SamplerParameteri_remap_index },
+ { 18755, SamplerParameteriv_remap_index },
+ { 5349, BindTransformFeedback_remap_index },
+ { 3337, DeleteTransformFeedbacks_remap_index },
+ { 6777, DrawTransformFeedback_remap_index },
+ { 9948, GenTransformFeedbacks_remap_index },
+ { 29196, IsTransformFeedback_remap_index },
+ { 26927, PauseTransformFeedback_remap_index },
+ { 5812, ResumeTransformFeedback_remap_index },
+ { 22508, ClearDepthf_remap_index },
+ { 7081, DepthRangef_remap_index },
+ { 14948, GetShaderPrecisionFormat_remap_index },
+ { 10342, ReleaseShaderCompiler_remap_index },
+ { 11312, ShaderBinary_remap_index },
{ 965, GetGraphicsResetStatusARB_remap_index },
- { 25632, GetnColorTableARB_remap_index },
- { 8237, GetnCompressedTexImageARB_remap_index },
- { 3965, GetnConvolutionFilterARB_remap_index },
- { 16244, GetnHistogramARB_remap_index },
- { 24391, GetnMapdvARB_remap_index },
- { 22947, GetnMapfvARB_remap_index },
+ { 25625, GetnColorTableARB_remap_index },
+ { 8266, GetnCompressedTexImageARB_remap_index },
+ { 3994, GetnConvolutionFilterARB_remap_index },
+ { 16237, GetnHistogramARB_remap_index },
+ { 24384, GetnMapdvARB_remap_index },
+ { 22940, GetnMapfvARB_remap_index },
{ 2225, GetnMapivARB_remap_index },
- { 17734, GetnMinmaxARB_remap_index },
- { 4598, GetnPixelMapfvARB_remap_index },
- { 19824, GetnPixelMapuivARB_remap_index },
+ { 17727, GetnMinmaxARB_remap_index },
+ { 4627, GetnPixelMapfvARB_remap_index },
+ { 19817, GetnPixelMapuivARB_remap_index },
{ 3033, GetnPixelMapusvARB_remap_index },
{ 1344, GetnPolygonStippleARB_remap_index },
- { 21980, GetnSeparableFilterARB_remap_index },
- { 33624, GetnTexImageARB_remap_index },
- { 19191, GetnUniformdvARB_remap_index },
- { 4670, GetnUniformfvARB_remap_index },
- { 10168, GetnUniformivARB_remap_index },
- { 23381, GetnUniformuivARB_remap_index },
+ { 21973, GetnSeparableFilterARB_remap_index },
+ { 33617, GetnTexImageARB_remap_index },
+ { 19184, GetnUniformdvARB_remap_index },
+ { 4699, GetnUniformfvARB_remap_index },
+ { 10197, GetnUniformivARB_remap_index },
+ { 23374, GetnUniformuivARB_remap_index },
{ 2947, ReadnPixelsARB_remap_index },
- { 5651, PolygonOffsetEXT_remap_index },
- { 24154, GetPixelTexGenParameterfvSGIS_remap_index },
- { 4548, GetPixelTexGenParameterivSGIS_remap_index },
- { 23887, PixelTexGenParameterfSGIS_remap_index },
+ { 5680, PolygonOffsetEXT_remap_index },
+ { 24147, GetPixelTexGenParameterfvSGIS_remap_index },
+ { 4577, GetPixelTexGenParameterivSGIS_remap_index },
+ { 23880, PixelTexGenParameterfSGIS_remap_index },
{ 624, PixelTexGenParameterfvSGIS_remap_index },
- { 13099, PixelTexGenParameteriSGIS_remap_index },
- { 14236, PixelTexGenParameterivSGIS_remap_index },
- { 18887, SampleMaskSGIS_remap_index },
- { 20753, SamplePatternSGIS_remap_index },
- { 27283, ColorPointerEXT_remap_index },
- { 18180, EdgeFlagPointerEXT_remap_index },
- { 6369, IndexPointerEXT_remap_index },
- { 6449, NormalPointerEXT_remap_index },
- { 16312, TexCoordPointerEXT_remap_index },
- { 7282, VertexPointerEXT_remap_index },
- { 3675, PointParameterfEXT_remap_index },
- { 8133, PointParameterfvEXT_remap_index },
- { 33008, LockArraysEXT_remap_index },
- { 15384, UnlockArraysEXT_remap_index },
+ { 13092, PixelTexGenParameteriSGIS_remap_index },
+ { 14229, PixelTexGenParameterivSGIS_remap_index },
+ { 18880, SampleMaskSGIS_remap_index },
+ { 20746, SamplePatternSGIS_remap_index },
+ { 27276, ColorPointerEXT_remap_index },
+ { 18173, EdgeFlagPointerEXT_remap_index },
+ { 6398, IndexPointerEXT_remap_index },
+ { 6478, NormalPointerEXT_remap_index },
+ { 16305, TexCoordPointerEXT_remap_index },
+ { 7311, VertexPointerEXT_remap_index },
+ { 3704, PointParameterfEXT_remap_index },
+ { 8162, PointParameterfvEXT_remap_index },
+ { 33001, LockArraysEXT_remap_index },
+ { 15377, UnlockArraysEXT_remap_index },
{ 1252, SecondaryColor3bEXT_remap_index },
- { 8326, SecondaryColor3bvEXT_remap_index },
- { 10793, SecondaryColor3dEXT_remap_index },
- { 26511, SecondaryColor3dvEXT_remap_index },
- { 29069, SecondaryColor3fEXT_remap_index },
- { 18924, SecondaryColor3fvEXT_remap_index },
+ { 8355, SecondaryColor3bvEXT_remap_index },
+ { 10822, SecondaryColor3dEXT_remap_index },
+ { 26504, SecondaryColor3dvEXT_remap_index },
+ { 29062, SecondaryColor3fEXT_remap_index },
+ { 18917, SecondaryColor3fvEXT_remap_index },
{ 470, SecondaryColor3iEXT_remap_index },
- { 16622, SecondaryColor3ivEXT_remap_index },
- { 10401, SecondaryColor3sEXT_remap_index },
- { 31796, SecondaryColor3svEXT_remap_index },
- { 28186, SecondaryColor3ubEXT_remap_index },
- { 22086, SecondaryColor3ubvEXT_remap_index },
- { 13341, SecondaryColor3uiEXT_remap_index },
- { 23774, SecondaryColor3uivEXT_remap_index },
- { 26791, SecondaryColor3usEXT_remap_index },
- { 13414, SecondaryColor3usvEXT_remap_index },
- { 12152, SecondaryColorPointerEXT_remap_index },
- { 26605, MultiDrawArraysEXT_remap_index },
- { 21741, MultiDrawElementsEXT_remap_index },
- { 21936, FogCoordPointerEXT_remap_index },
- { 4721, FogCoorddEXT_remap_index },
- { 32409, FogCoorddvEXT_remap_index },
- { 4838, FogCoordfEXT_remap_index },
- { 28109, FogCoordfvEXT_remap_index },
- { 12252, PixelTexGenSGIX_remap_index },
- { 28714, BlendFuncSeparateEXT_remap_index },
- { 7194, FlushVertexArrayRangeNV_remap_index },
- { 5600, VertexArrayRangeNV_remap_index },
- { 29134, CombinerInputNV_remap_index },
+ { 16615, SecondaryColor3ivEXT_remap_index },
+ { 10430, SecondaryColor3sEXT_remap_index },
+ { 31789, SecondaryColor3svEXT_remap_index },
+ { 28179, SecondaryColor3ubEXT_remap_index },
+ { 22079, SecondaryColor3ubvEXT_remap_index },
+ { 13334, SecondaryColor3uiEXT_remap_index },
+ { 23767, SecondaryColor3uivEXT_remap_index },
+ { 26784, SecondaryColor3usEXT_remap_index },
+ { 13407, SecondaryColor3usvEXT_remap_index },
+ { 12181, SecondaryColorPointerEXT_remap_index },
+ { 26598, MultiDrawArraysEXT_remap_index },
+ { 21734, MultiDrawElementsEXT_remap_index },
+ { 21929, FogCoordPointerEXT_remap_index },
+ { 4750, FogCoorddEXT_remap_index },
+ { 32402, FogCoorddvEXT_remap_index },
+ { 4867, FogCoordfEXT_remap_index },
+ { 28102, FogCoordfvEXT_remap_index },
+ { 12281, PixelTexGenSGIX_remap_index },
+ { 28707, BlendFuncSeparateEXT_remap_index },
+ { 7223, FlushVertexArrayRangeNV_remap_index },
+ { 5629, VertexArrayRangeNV_remap_index },
+ { 29127, CombinerInputNV_remap_index },
{ 2168, CombinerOutputNV_remap_index },
- { 31949, CombinerParameterfNV_remap_index },
- { 5474, CombinerParameterfvNV_remap_index },
- { 23230, CombinerParameteriNV_remap_index },
- { 33424, CombinerParameterivNV_remap_index },
- { 7570, FinalCombinerInputNV_remap_index },
+ { 31942, CombinerParameterfNV_remap_index },
+ { 5503, CombinerParameterfvNV_remap_index },
+ { 23223, CombinerParameteriNV_remap_index },
+ { 33417, CombinerParameterivNV_remap_index },
+ { 7599, FinalCombinerInputNV_remap_index },
{ 1609, GetCombinerInputParameterfvNV_remap_index },
- { 33261, GetCombinerInputParameterivNV_remap_index },
- { 14337, GetCombinerOutputParameterfvNV_remap_index },
- { 14165, GetCombinerOutputParameterivNV_remap_index },
- { 6956, GetFinalCombinerInputParameterfvNV_remap_index },
- { 25699, GetFinalCombinerInputParameterivNV_remap_index },
- { 12978, ResizeBuffersMESA_remap_index },
- { 11478, WindowPos2dMESA_remap_index },
+ { 33254, GetCombinerInputParameterivNV_remap_index },
+ { 14330, GetCombinerOutputParameterfvNV_remap_index },
+ { 14158, GetCombinerOutputParameterivNV_remap_index },
+ { 6985, GetFinalCombinerInputParameterfvNV_remap_index },
+ { 25692, GetFinalCombinerInputParameterivNV_remap_index },
+ { 12971, ResizeBuffersMESA_remap_index },
+ { 11507, WindowPos2dMESA_remap_index },
{ 1045, WindowPos2dvMESA_remap_index },
- { 34328, WindowPos2fMESA_remap_index },
- { 8271, WindowPos2fvMESA_remap_index },
- { 18834, WindowPos2iMESA_remap_index },
- { 21226, WindowPos2ivMESA_remap_index },
- { 21840, WindowPos2sMESA_remap_index },
- { 6038, WindowPos2svMESA_remap_index },
- { 8062, WindowPos3dMESA_remap_index },
- { 14483, WindowPos3dvMESA_remap_index },
+ { 34321, WindowPos2fMESA_remap_index },
+ { 8300, WindowPos2fvMESA_remap_index },
+ { 18827, WindowPos2iMESA_remap_index },
+ { 21219, WindowPos2ivMESA_remap_index },
+ { 21833, WindowPos2sMESA_remap_index },
+ { 6067, WindowPos2svMESA_remap_index },
+ { 8091, WindowPos3dMESA_remap_index },
+ { 14476, WindowPos3dvMESA_remap_index },
{ 516, WindowPos3fMESA_remap_index },
- { 15445, WindowPos3fvMESA_remap_index },
- { 24960, WindowPos3iMESA_remap_index },
- { 31142, WindowPos3ivMESA_remap_index },
- { 19616, WindowPos3sMESA_remap_index },
- { 32665, WindowPos3svMESA_remap_index },
- { 11429, WindowPos4dMESA_remap_index },
- { 17610, WindowPos4dvMESA_remap_index },
- { 14442, WindowPos4fMESA_remap_index },
- { 31703, WindowPos4fvMESA_remap_index },
- { 31295, WindowPos4iMESA_remap_index },
- { 12781, WindowPos4ivMESA_remap_index },
- { 19800, WindowPos4sMESA_remap_index },
- { 3259, WindowPos4svMESA_remap_index },
- { 14204, MultiModeDrawArraysIBM_remap_index },
- { 29909, MultiModeDrawElementsIBM_remap_index },
- { 12556, DeleteFencesNV_remap_index },
- { 28981, FinishFenceNV_remap_index },
- { 3797, GenFencesNV_remap_index },
- { 17590, GetFenceivNV_remap_index },
- { 8539, IsFenceNV_remap_index },
- { 14092, SetFenceNV_remap_index },
- { 4309, TestFenceNV_remap_index },
- { 32636, AreProgramsResidentNV_remap_index },
- { 31991, BindProgramNV_remap_index },
- { 26874, DeleteProgramsNV_remap_index },
- { 22304, ExecuteProgramNV_remap_index },
- { 34221, GenProgramsNV_remap_index },
- { 24259, GetProgramParameterdvNV_remap_index },
- { 10855, GetProgramParameterfvNV_remap_index },
- { 27257, GetProgramStringNV_remap_index },
- { 25337, GetProgramivNV_remap_index },
- { 24514, GetTrackMatrixivNV_remap_index },
- { 27051, GetVertexAttribPointervNV_remap_index },
- { 10496, GetVertexAttribdvNV_remap_index },
- { 9595, GetVertexAttribfvNV_remap_index },
- { 19137, GetVertexAttribivNV_remap_index },
- { 20083, IsProgramNV_remap_index },
- { 9678, LoadProgramNV_remap_index },
- { 28810, ProgramParameters4dvNV_remap_index },
- { 25267, ProgramParameters4fvNV_remap_index },
- { 21530, RequestResidentProgramsNV_remap_index },
- { 31487, TrackMatrixNV_remap_index },
- { 33238, VertexAttrib1dNV_remap_index },
- { 14003, VertexAttrib1dvNV_remap_index },
- { 29415, VertexAttrib1fNV_remap_index },
+ { 15438, WindowPos3fvMESA_remap_index },
+ { 24953, WindowPos3iMESA_remap_index },
+ { 31135, WindowPos3ivMESA_remap_index },
+ { 19609, WindowPos3sMESA_remap_index },
+ { 32658, WindowPos3svMESA_remap_index },
+ { 11458, WindowPos4dMESA_remap_index },
+ { 17603, WindowPos4dvMESA_remap_index },
+ { 14435, WindowPos4fMESA_remap_index },
+ { 31696, WindowPos4fvMESA_remap_index },
+ { 31288, WindowPos4iMESA_remap_index },
+ { 12810, WindowPos4ivMESA_remap_index },
+ { 19793, WindowPos4sMESA_remap_index },
+ { 3288, WindowPos4svMESA_remap_index },
+ { 14197, MultiModeDrawArraysIBM_remap_index },
+ { 29902, MultiModeDrawElementsIBM_remap_index },
+ { 12585, DeleteFencesNV_remap_index },
+ { 28974, FinishFenceNV_remap_index },
+ { 3826, GenFencesNV_remap_index },
+ { 17583, GetFenceivNV_remap_index },
+ { 8568, IsFenceNV_remap_index },
+ { 14085, SetFenceNV_remap_index },
+ { 4338, TestFenceNV_remap_index },
+ { 32629, AreProgramsResidentNV_remap_index },
+ { 31984, BindProgramNV_remap_index },
+ { 26867, DeleteProgramsNV_remap_index },
+ { 22297, ExecuteProgramNV_remap_index },
+ { 34214, GenProgramsNV_remap_index },
+ { 24252, GetProgramParameterdvNV_remap_index },
+ { 10884, GetProgramParameterfvNV_remap_index },
+ { 27250, GetProgramStringNV_remap_index },
+ { 25330, GetProgramivNV_remap_index },
+ { 24507, GetTrackMatrixivNV_remap_index },
+ { 27044, GetVertexAttribPointervNV_remap_index },
+ { 10525, GetVertexAttribdvNV_remap_index },
+ { 9624, GetVertexAttribfvNV_remap_index },
+ { 19130, GetVertexAttribivNV_remap_index },
+ { 20076, IsProgramNV_remap_index },
+ { 9707, LoadProgramNV_remap_index },
+ { 28803, ProgramParameters4dvNV_remap_index },
+ { 25260, ProgramParameters4fvNV_remap_index },
+ { 21523, RequestResidentProgramsNV_remap_index },
+ { 31480, TrackMatrixNV_remap_index },
+ { 33231, VertexAttrib1dNV_remap_index },
+ { 13996, VertexAttrib1dvNV_remap_index },
+ { 29408, VertexAttrib1fNV_remap_index },
{ 2488, VertexAttrib1fvNV_remap_index },
- { 31760, VertexAttrib1sNV_remap_index },
- { 15518, VertexAttrib1svNV_remap_index },
- { 5029, VertexAttrib2dNV_remap_index },
- { 13896, VertexAttrib2dvNV_remap_index },
- { 20985, VertexAttrib2fNV_remap_index },
- { 13462, VertexAttrib2fvNV_remap_index },
- { 6250, VertexAttrib2sNV_remap_index },
- { 19670, VertexAttrib2svNV_remap_index },
- { 11626, VertexAttrib3dNV_remap_index },
- { 32886, VertexAttrib3dvNV_remap_index },
- { 10667, VertexAttrib3fNV_remap_index },
- { 25659, VertexAttrib3fvNV_remap_index },
- { 23023, VertexAttrib3sNV_remap_index },
- { 24541, VertexAttrib3svNV_remap_index },
- { 29883, VertexAttrib4dNV_remap_index },
- { 34258, VertexAttrib4dvNV_remap_index },
- { 5414, VertexAttrib4fNV_remap_index },
- { 9728, VertexAttrib4fvNV_remap_index },
- { 27733, VertexAttrib4sNV_remap_index },
+ { 31753, VertexAttrib1sNV_remap_index },
+ { 15511, VertexAttrib1svNV_remap_index },
+ { 5058, VertexAttrib2dNV_remap_index },
+ { 13889, VertexAttrib2dvNV_remap_index },
+ { 20978, VertexAttrib2fNV_remap_index },
+ { 13455, VertexAttrib2fvNV_remap_index },
+ { 6279, VertexAttrib2sNV_remap_index },
+ { 19663, VertexAttrib2svNV_remap_index },
+ { 11655, VertexAttrib3dNV_remap_index },
+ { 32879, VertexAttrib3dvNV_remap_index },
+ { 10696, VertexAttrib3fNV_remap_index },
+ { 25652, VertexAttrib3fvNV_remap_index },
+ { 23016, VertexAttrib3sNV_remap_index },
+ { 24534, VertexAttrib3svNV_remap_index },
+ { 29876, VertexAttrib4dNV_remap_index },
+ { 34251, VertexAttrib4dvNV_remap_index },
+ { 5443, VertexAttrib4fNV_remap_index },
+ { 9757, VertexAttrib4fvNV_remap_index },
+ { 27726, VertexAttrib4sNV_remap_index },
{ 1422, VertexAttrib4svNV_remap_index },
- { 5187, VertexAttrib4ubNV_remap_index },
+ { 5216, VertexAttrib4ubNV_remap_index },
{ 778, VertexAttrib4ubvNV_remap_index },
- { 22484, VertexAttribPointerNV_remap_index },
+ { 22477, VertexAttribPointerNV_remap_index },
{ 2340, VertexAttribs1dvNV_remap_index },
- { 27139, VertexAttribs1fvNV_remap_index },
- { 34058, VertexAttribs1svNV_remap_index },
- { 10692, VertexAttribs2dvNV_remap_index },
- { 26266, VertexAttribs2fvNV_remap_index },
- { 18206, VertexAttribs2svNV_remap_index },
- { 5502, VertexAttribs3dvNV_remap_index },
+ { 27132, VertexAttribs1fvNV_remap_index },
+ { 34051, VertexAttribs1svNV_remap_index },
+ { 10721, VertexAttribs2dvNV_remap_index },
+ { 26259, VertexAttribs2fvNV_remap_index },
+ { 18199, VertexAttribs2svNV_remap_index },
+ { 5531, VertexAttribs3dvNV_remap_index },
{ 2199, VertexAttribs3fvNV_remap_index },
- { 30890, VertexAttribs3svNV_remap_index },
- { 27823, VertexAttribs4dvNV_remap_index },
- { 5574, VertexAttribs4fvNV_remap_index },
- { 33845, VertexAttribs4svNV_remap_index },
- { 30638, VertexAttribs4ubvNV_remap_index },
- { 27893, GetTexBumpParameterfvATI_remap_index },
- { 34099, GetTexBumpParameterivATI_remap_index },
- { 19314, TexBumpParameterfvATI_remap_index },
- { 21401, TexBumpParameterivATI_remap_index },
- { 16064, AlphaFragmentOp1ATI_remap_index },
- { 26557, AlphaFragmentOp2ATI_remap_index },
- { 25575, AlphaFragmentOp3ATI_remap_index },
- { 30817, BeginFragmentShaderATI_remap_index },
- { 32190, BindFragmentShaderATI_remap_index },
- { 24670, ColorFragmentOp1ATI_remap_index },
- { 4476, ColorFragmentOp2ATI_remap_index },
- { 32531, ColorFragmentOp3ATI_remap_index },
- { 5740, DeleteFragmentShaderATI_remap_index },
- { 34282, EndFragmentShaderATI_remap_index },
- { 33452, GenFragmentShadersATI_remap_index },
- { 26420, PassTexCoordATI_remap_index },
- { 7262, SampleMapATI_remap_index },
- { 28004, SetFragmentShaderConstantATI_remap_index },
+ { 30883, VertexAttribs3svNV_remap_index },
+ { 27816, VertexAttribs4dvNV_remap_index },
+ { 5603, VertexAttribs4fvNV_remap_index },
+ { 33838, VertexAttribs4svNV_remap_index },
+ { 30631, VertexAttribs4ubvNV_remap_index },
+ { 27886, GetTexBumpParameterfvATI_remap_index },
+ { 34092, GetTexBumpParameterivATI_remap_index },
+ { 19307, TexBumpParameterfvATI_remap_index },
+ { 21394, TexBumpParameterivATI_remap_index },
+ { 16057, AlphaFragmentOp1ATI_remap_index },
+ { 26550, AlphaFragmentOp2ATI_remap_index },
+ { 25568, AlphaFragmentOp3ATI_remap_index },
+ { 30810, BeginFragmentShaderATI_remap_index },
+ { 32183, BindFragmentShaderATI_remap_index },
+ { 24663, ColorFragmentOp1ATI_remap_index },
+ { 4505, ColorFragmentOp2ATI_remap_index },
+ { 32524, ColorFragmentOp3ATI_remap_index },
+ { 5769, DeleteFragmentShaderATI_remap_index },
+ { 34275, EndFragmentShaderATI_remap_index },
+ { 33445, GenFragmentShadersATI_remap_index },
+ { 26413, PassTexCoordATI_remap_index },
+ { 7291, SampleMapATI_remap_index },
+ { 27997, SetFragmentShaderConstantATI_remap_index },
{ 363, PointParameteriNV_remap_index },
- { 14644, PointParameterivNV_remap_index },
- { 29722, ActiveStencilFaceEXT_remap_index },
- { 28450, BindVertexArrayAPPLE_remap_index },
+ { 14637, PointParameterivNV_remap_index },
+ { 29715, ActiveStencilFaceEXT_remap_index },
+ { 28443, BindVertexArrayAPPLE_remap_index },
{ 2810, DeleteVertexArraysAPPLE_remap_index },
- { 18673, GenVertexArraysAPPLE_remap_index },
- { 24324, IsVertexArrayAPPLE_remap_index },
+ { 18666, GenVertexArraysAPPLE_remap_index },
+ { 24317, IsVertexArrayAPPLE_remap_index },
{ 819, GetProgramNamedParameterdvNV_remap_index },
- { 3638, GetProgramNamedParameterfvNV_remap_index },
- { 27924, ProgramNamedParameter4dNV_remap_index },
- { 15018, ProgramNamedParameter4dvNV_remap_index },
- { 9211, ProgramNamedParameter4fNV_remap_index },
- { 12117, ProgramNamedParameter4fvNV_remap_index },
- { 17521, PrimitiveRestartIndexNV_remap_index },
- { 31680, PrimitiveRestartNV_remap_index },
- { 25246, DepthBoundsEXT_remap_index },
+ { 3667, GetProgramNamedParameterfvNV_remap_index },
+ { 27917, ProgramNamedParameter4dNV_remap_index },
+ { 15011, ProgramNamedParameter4dvNV_remap_index },
+ { 9240, ProgramNamedParameter4fNV_remap_index },
+ { 12146, ProgramNamedParameter4fvNV_remap_index },
+ { 17514, PrimitiveRestartIndexNV_remap_index },
+ { 31673, PrimitiveRestartNV_remap_index },
+ { 25239, DepthBoundsEXT_remap_index },
{ 1144, BlendEquationSeparateEXT_remap_index },
- { 15219, BindFramebufferEXT_remap_index },
- { 26650, BindRenderbufferEXT_remap_index },
- { 9975, CheckFramebufferStatusEXT_remap_index },
- { 23575, DeleteFramebuffersEXT_remap_index },
- { 32788, DeleteRenderbuffersEXT_remap_index },
- { 13920, FramebufferRenderbufferEXT_remap_index },
- { 14109, FramebufferTexture1DEXT_remap_index },
- { 11911, FramebufferTexture2DEXT_remap_index },
- { 11531, FramebufferTexture3DEXT_remap_index },
- { 24190, GenFramebuffersEXT_remap_index },
- { 18071, GenRenderbuffersEXT_remap_index },
- { 6998, GenerateMipmapEXT_remap_index },
- { 22577, GetFramebufferAttachmentParameterivEXT_remap_index },
- { 33358, GetRenderbufferParameterivEXT_remap_index },
- { 21281, IsFramebufferEXT_remap_index },
- { 34181, IsRenderbufferEXT_remap_index },
- { 8486, RenderbufferStorageEXT_remap_index },
+ { 15212, BindFramebufferEXT_remap_index },
+ { 26643, BindRenderbufferEXT_remap_index },
+ { 10004, CheckFramebufferStatusEXT_remap_index },
+ { 23568, DeleteFramebuffersEXT_remap_index },
+ { 32781, DeleteRenderbuffersEXT_remap_index },
+ { 13913, FramebufferRenderbufferEXT_remap_index },
+ { 14102, FramebufferTexture1DEXT_remap_index },
+ { 11940, FramebufferTexture2DEXT_remap_index },
+ { 11560, FramebufferTexture3DEXT_remap_index },
+ { 24183, GenFramebuffersEXT_remap_index },
+ { 18064, GenRenderbuffersEXT_remap_index },
+ { 7027, GenerateMipmapEXT_remap_index },
+ { 22570, GetFramebufferAttachmentParameterivEXT_remap_index },
+ { 33351, GetRenderbufferParameterivEXT_remap_index },
+ { 21274, IsFramebufferEXT_remap_index },
+ { 34174, IsRenderbufferEXT_remap_index },
+ { 8515, RenderbufferStorageEXT_remap_index },
{ 695, BlitFramebufferEXT_remap_index },
- { 14804, BufferParameteriAPPLE_remap_index },
- { 20115, FlushMappedBufferRangeAPPLE_remap_index },
+ { 14797, BufferParameteriAPPLE_remap_index },
+ { 20108, FlushMappedBufferRangeAPPLE_remap_index },
{ 1867, BindFragDataLocationEXT_remap_index },
- { 25359, GetFragDataLocationEXT_remap_index },
- { 10970, GetUniformuivEXT_remap_index },
- { 33532, GetVertexAttribIivEXT_remap_index },
- { 4326, GetVertexAttribIuivEXT_remap_index },
- { 12389, Uniform1uiEXT_remap_index },
- { 28895, Uniform1uivEXT_remap_index },
- { 23119, Uniform2uiEXT_remap_index },
- { 4440, Uniform2uivEXT_remap_index },
- { 30162, Uniform3uiEXT_remap_index },
- { 15165, Uniform3uivEXT_remap_index },
- { 3562, Uniform4uiEXT_remap_index },
- { 8987, Uniform4uivEXT_remap_index },
- { 19052, VertexAttribI1iEXT_remap_index },
- { 5214, VertexAttribI1ivEXT_remap_index },
+ { 25352, GetFragDataLocationEXT_remap_index },
+ { 10999, GetUniformuivEXT_remap_index },
+ { 33525, GetVertexAttribIivEXT_remap_index },
+ { 4355, GetVertexAttribIuivEXT_remap_index },
+ { 12418, Uniform1uiEXT_remap_index },
+ { 28888, Uniform1uivEXT_remap_index },
+ { 23112, Uniform2uiEXT_remap_index },
+ { 4469, Uniform2uivEXT_remap_index },
+ { 30155, Uniform3uiEXT_remap_index },
+ { 15158, Uniform3uivEXT_remap_index },
+ { 3591, Uniform4uiEXT_remap_index },
+ { 9016, Uniform4uivEXT_remap_index },
+ { 19045, VertexAttribI1iEXT_remap_index },
+ { 5243, VertexAttribI1ivEXT_remap_index },
{ 2589, VertexAttribI1uiEXT_remap_index },
- { 13190, VertexAttribI1uivEXT_remap_index },
+ { 13183, VertexAttribI1uivEXT_remap_index },
{ 81, VertexAttribI2iEXT_remap_index },
- { 24782, VertexAttribI2ivEXT_remap_index },
- { 5528, VertexAttribI2uiEXT_remap_index },
- { 4883, VertexAttribI2uivEXT_remap_index },
- { 27525, VertexAttribI3iEXT_remap_index },
- { 25984, VertexAttribI3ivEXT_remap_index },
- { 3416, VertexAttribI3uiEXT_remap_index },
- { 31383, VertexAttribI3uivEXT_remap_index },
- { 22828, VertexAttribI4bvEXT_remap_index },
- { 15097, VertexAttribI4iEXT_remap_index },
- { 33057, VertexAttribI4ivEXT_remap_index },
- { 13823, VertexAttribI4svEXT_remap_index },
- { 17039, VertexAttribI4ubvEXT_remap_index },
- { 16685, VertexAttribI4uiEXT_remap_index },
- { 5674, VertexAttribI4uivEXT_remap_index },
- { 11694, VertexAttribI4usvEXT_remap_index },
- { 19258, VertexAttribIPointerEXT_remap_index },
+ { 24775, VertexAttribI2ivEXT_remap_index },
+ { 5557, VertexAttribI2uiEXT_remap_index },
+ { 4912, VertexAttribI2uivEXT_remap_index },
+ { 27518, VertexAttribI3iEXT_remap_index },
+ { 25977, VertexAttribI3ivEXT_remap_index },
+ { 3445, VertexAttribI3uiEXT_remap_index },
+ { 31376, VertexAttribI3uivEXT_remap_index },
+ { 22821, VertexAttribI4bvEXT_remap_index },
+ { 15090, VertexAttribI4iEXT_remap_index },
+ { 33050, VertexAttribI4ivEXT_remap_index },
+ { 13816, VertexAttribI4svEXT_remap_index },
+ { 17032, VertexAttribI4ubvEXT_remap_index },
+ { 16678, VertexAttribI4uiEXT_remap_index },
+ { 5703, VertexAttribI4uivEXT_remap_index },
+ { 11723, VertexAttribI4usvEXT_remap_index },
+ { 19251, VertexAttribIPointerEXT_remap_index },
{ 3103, FramebufferTextureLayerEXT_remap_index },
- { 5950, ColorMaskIndexedEXT_remap_index },
- { 19694, DisableIndexedEXT_remap_index },
- { 27570, EnableIndexedEXT_remap_index },
- { 22532, GetBooleanIndexedvEXT_remap_index },
- { 11305, GetIntegerIndexedvEXT_remap_index },
- { 23651, IsEnabledIndexedEXT_remap_index },
- { 23551, ClearColorIiEXT_remap_index },
- { 3512, ClearColorIuiEXT_remap_index },
- { 10193, GetTexParameterIivEXT_remap_index },
- { 6198, GetTexParameterIuivEXT_remap_index },
+ { 5979, ColorMaskIndexedEXT_remap_index },
+ { 19687, DisableIndexedEXT_remap_index },
+ { 27563, EnableIndexedEXT_remap_index },
+ { 22525, GetBooleanIndexedvEXT_remap_index },
+ { 11334, GetIntegerIndexedvEXT_remap_index },
+ { 23644, IsEnabledIndexedEXT_remap_index },
+ { 23544, ClearColorIiEXT_remap_index },
+ { 3541, ClearColorIuiEXT_remap_index },
+ { 10222, GetTexParameterIivEXT_remap_index },
+ { 6227, GetTexParameterIuivEXT_remap_index },
{ 3059, TexParameterIivEXT_remap_index },
- { 27392, TexParameterIuivEXT_remap_index },
- { 4751, BeginConditionalRenderNV_remap_index },
- { 26370, EndConditionalRenderNV_remap_index },
- { 9622, BeginTransformFeedbackEXT_remap_index },
- { 19729, BindBufferBaseEXT_remap_index },
- { 19588, BindBufferOffsetEXT_remap_index },
- { 12606, BindBufferRangeEXT_remap_index },
- { 14719, EndTransformFeedbackEXT_remap_index },
- { 11168, GetTransformFeedbackVaryingEXT_remap_index },
- { 21586, TransformFeedbackVaryingsEXT_remap_index },
- { 30539, ProvokingVertexEXT_remap_index },
- { 11116, GetTexParameterPointervAPPLE_remap_index },
- { 5276, TextureRangeAPPLE_remap_index },
- { 11983, GetObjectParameterivAPPLE_remap_index },
- { 20708, ObjectPurgeableAPPLE_remap_index },
- { 5992, ObjectUnpurgeableAPPLE_remap_index },
- { 17893, ActiveProgramEXT_remap_index },
- { 17864, CreateShaderProgramEXT_remap_index },
- { 29507, UseShaderProgramEXT_remap_index },
- { 16992, TextureBarrierNV_remap_index },
- { 29748, StencilFuncSeparateATI_remap_index },
- { 5863, ProgramEnvParameters4fvEXT_remap_index },
- { 17758, ProgramLocalParameters4fvEXT_remap_index },
- { 14572, GetQueryObjecti64vEXT_remap_index },
- { 10718, GetQueryObjectui64vEXT_remap_index },
- { 24739, EGLImageTargetRenderbufferStorageOES_remap_index },
- { 12495, EGLImageTargetTexture2DOES_remap_index },
+ { 27385, TexParameterIuivEXT_remap_index },
+ { 4780, BeginConditionalRenderNV_remap_index },
+ { 26363, EndConditionalRenderNV_remap_index },
+ { 9651, BeginTransformFeedbackEXT_remap_index },
+ { 19722, BindBufferBaseEXT_remap_index },
+ { 19581, BindBufferOffsetEXT_remap_index },
+ { 12635, BindBufferRangeEXT_remap_index },
+ { 14712, EndTransformFeedbackEXT_remap_index },
+ { 11197, GetTransformFeedbackVaryingEXT_remap_index },
+ { 21579, TransformFeedbackVaryingsEXT_remap_index },
+ { 30532, ProvokingVertexEXT_remap_index },
+ { 11145, GetTexParameterPointervAPPLE_remap_index },
+ { 5305, TextureRangeAPPLE_remap_index },
+ { 12012, GetObjectParameterivAPPLE_remap_index },
+ { 20701, ObjectPurgeableAPPLE_remap_index },
+ { 6021, ObjectUnpurgeableAPPLE_remap_index },
+ { 17886, ActiveProgramEXT_remap_index },
+ { 17857, CreateShaderProgramEXT_remap_index },
+ { 29500, UseShaderProgramEXT_remap_index },
+ { 16985, TextureBarrierNV_remap_index },
+ { 29741, StencilFuncSeparateATI_remap_index },
+ { 5892, ProgramEnvParameters4fvEXT_remap_index },
+ { 17751, ProgramLocalParameters4fvEXT_remap_index },
+ { 14565, GetQueryObjecti64vEXT_remap_index },
+ { 10747, GetQueryObjectui64vEXT_remap_index },
+ { 24732, EGLImageTargetRenderbufferStorageOES_remap_index },
+ { 12524, EGLImageTargetTexture2DOES_remap_index },
{ -1, -1 }
};
@@ -5464,108 +5461,108 @@ static const struct gl_function_remap MESA_alt_functions[] = {
/* from GL_EXT_blend_color */
{ 2728, _gloffset_BlendColor },
/* from GL_EXT_blend_minmax */
- { 11588, _gloffset_BlendEquation },
+ { 11617, _gloffset_BlendEquation },
/* from GL_EXT_color_subtable */
- { 17632, _gloffset_ColorSubTable },
- { 32720, _gloffset_CopyColorSubTable },
+ { 17625, _gloffset_ColorSubTable },
+ { 32713, _gloffset_CopyColorSubTable },
/* from GL_EXT_convolution */
{ 257, _gloffset_ConvolutionFilter1D },
{ 2527, _gloffset_CopyConvolutionFilter1D },
- { 4168, _gloffset_GetConvolutionParameteriv },
- { 8835, _gloffset_ConvolutionFilter2D },
- { 9037, _gloffset_ConvolutionParameteriv },
- { 9497, _gloffset_ConvolutionParameterfv },
- { 21429, _gloffset_GetSeparableFilter },
- { 25014, _gloffset_SeparableFilter2D },
- { 25877, _gloffset_ConvolutionParameteri },
- { 26045, _gloffset_ConvolutionParameterf },
- { 27759, _gloffset_GetConvolutionParameterfv },
- { 28616, _gloffset_GetConvolutionFilter },
- { 31079, _gloffset_CopyConvolutionFilter2D },
+ { 4197, _gloffset_GetConvolutionParameteriv },
+ { 8864, _gloffset_ConvolutionFilter2D },
+ { 9066, _gloffset_ConvolutionParameteriv },
+ { 9526, _gloffset_ConvolutionParameterfv },
+ { 21422, _gloffset_GetSeparableFilter },
+ { 25007, _gloffset_SeparableFilter2D },
+ { 25870, _gloffset_ConvolutionParameteri },
+ { 26038, _gloffset_ConvolutionParameterf },
+ { 27752, _gloffset_GetConvolutionParameterfv },
+ { 28609, _gloffset_GetConvolutionFilter },
+ { 31072, _gloffset_CopyConvolutionFilter2D },
/* from GL_EXT_copy_texture */
- { 15578, _gloffset_CopyTexSubImage3D },
- { 17319, _gloffset_CopyTexImage2D },
- { 25485, _gloffset_CopyTexImage1D },
- { 28297, _gloffset_CopyTexSubImage2D },
- { 30717, _gloffset_CopyTexSubImage1D },
+ { 15571, _gloffset_CopyTexSubImage3D },
+ { 17312, _gloffset_CopyTexImage2D },
+ { 25478, _gloffset_CopyTexImage1D },
+ { 28290, _gloffset_CopyTexSubImage2D },
+ { 30710, _gloffset_CopyTexSubImage1D },
/* from GL_EXT_draw_range_elements */
- { 9834, _gloffset_DrawRangeElements },
+ { 9863, _gloffset_DrawRangeElements },
/* from GL_EXT_histogram */
{ 856, _gloffset_Histogram },
- { 3598, _gloffset_ResetHistogram },
- { 10339, _gloffset_GetMinmax },
- { 15912, _gloffset_GetHistogramParameterfv },
- { 25410, _gloffset_GetMinmaxParameteriv },
- { 27649, _gloffset_ResetMinmax },
- { 28513, _gloffset_GetHistogramParameteriv },
- { 29682, _gloffset_GetHistogram },
- { 32306, _gloffset_Minmax },
- { 33928, _gloffset_GetMinmaxParameterfv },
+ { 3627, _gloffset_ResetHistogram },
+ { 10368, _gloffset_GetMinmax },
+ { 15905, _gloffset_GetHistogramParameterfv },
+ { 25403, _gloffset_GetMinmaxParameteriv },
+ { 27642, _gloffset_ResetMinmax },
+ { 28506, _gloffset_GetHistogramParameteriv },
+ { 29675, _gloffset_GetHistogram },
+ { 32299, _gloffset_Minmax },
+ { 33921, _gloffset_GetMinmaxParameterfv },
/* from GL_EXT_paletted_texture */
- { 8697, _gloffset_ColorTable },
- { 15758, _gloffset_GetColorTable },
- { 23937, _gloffset_GetColorTableParameterfv },
- { 26101, _gloffset_GetColorTableParameteriv },
+ { 8726, _gloffset_ColorTable },
+ { 15751, _gloffset_GetColorTable },
+ { 23930, _gloffset_GetColorTableParameterfv },
+ { 26094, _gloffset_GetColorTableParameteriv },
/* from GL_EXT_subtexture */
- { 7408, _gloffset_TexSubImage1D },
- { 11043, _gloffset_TexSubImage2D },
+ { 7437, _gloffset_TexSubImage1D },
+ { 11072, _gloffset_TexSubImage2D },
/* from GL_EXT_texture3D */
{ 1826, _gloffset_TexImage3D },
- { 23706, _gloffset_TexSubImage3D },
+ { 23699, _gloffset_TexSubImage3D },
/* from GL_EXT_texture_object */
- { 3366, _gloffset_PrioritizeTextures },
- { 7857, _gloffset_AreTexturesResident },
- { 14027, _gloffset_GenTextures },
- { 16271, _gloffset_DeleteTextures },
- { 20396, _gloffset_IsTexture },
- { 30782, _gloffset_BindTexture },
+ { 3395, _gloffset_PrioritizeTextures },
+ { 7886, _gloffset_AreTexturesResident },
+ { 14020, _gloffset_GenTextures },
+ { 16264, _gloffset_DeleteTextures },
+ { 20389, _gloffset_IsTexture },
+ { 30775, _gloffset_BindTexture },
/* from GL_EXT_vertex_array */
- { 25186, _gloffset_ArrayElement },
- { 31894, _gloffset_GetPointerv },
- { 33479, _gloffset_DrawArrays },
+ { 25179, _gloffset_ArrayElement },
+ { 31887, _gloffset_GetPointerv },
+ { 33472, _gloffset_DrawArrays },
/* from GL_SGI_color_table */
- { 7975, _gloffset_ColorTableParameteriv },
- { 8697, _gloffset_ColorTable },
- { 15758, _gloffset_GetColorTable },
- { 15868, _gloffset_CopyColorTable },
- { 20257, _gloffset_ColorTableParameterfv },
- { 23937, _gloffset_GetColorTableParameterfv },
- { 26101, _gloffset_GetColorTableParameteriv },
+ { 8004, _gloffset_ColorTableParameteriv },
+ { 8726, _gloffset_ColorTable },
+ { 15751, _gloffset_GetColorTable },
+ { 15861, _gloffset_CopyColorTable },
+ { 20250, _gloffset_ColorTableParameterfv },
+ { 23930, _gloffset_GetColorTableParameterfv },
+ { 26094, _gloffset_GetColorTableParameteriv },
/* from GL_VERSION_1_3 */
{ 425, _gloffset_MultiTexCoord3sARB },
{ 657, _gloffset_ActiveTextureARB },
- { 4378, _gloffset_MultiTexCoord1fvARB },
- { 6474, _gloffset_MultiTexCoord3dARB },
- { 6519, _gloffset_MultiTexCoord2iARB },
- { 6643, _gloffset_MultiTexCoord2svARB },
- { 8653, _gloffset_MultiTexCoord2fARB },
- { 10748, _gloffset_MultiTexCoord3fvARB },
- { 11350, _gloffset_MultiTexCoord4sARB },
- { 12031, _gloffset_MultiTexCoord2dvARB },
- { 12438, _gloffset_MultiTexCoord1svARB },
- { 12839, _gloffset_MultiTexCoord3svARB },
- { 12900, _gloffset_MultiTexCoord4iARB },
- { 13731, _gloffset_MultiTexCoord3iARB },
- { 14601, _gloffset_MultiTexCoord1dARB },
- { 14833, _gloffset_MultiTexCoord3dvARB },
- { 16112, _gloffset_MultiTexCoord3ivARB },
- { 16157, _gloffset_MultiTexCoord2sARB },
- { 17689, _gloffset_MultiTexCoord4ivARB },
- { 19897, _gloffset_ClientActiveTextureARB },
- { 22260, _gloffset_MultiTexCoord2dARB },
- { 22697, _gloffset_MultiTexCoord4dvARB },
- { 23074, _gloffset_MultiTexCoord4fvARB },
- { 24078, _gloffset_MultiTexCoord3fARB },
- { 26695, _gloffset_MultiTexCoord4dARB },
- { 26961, _gloffset_MultiTexCoord1sARB },
- { 27165, _gloffset_MultiTexCoord1dvARB },
- { 28141, _gloffset_MultiTexCoord1ivARB },
- { 28234, _gloffset_MultiTexCoord2ivARB },
- { 28573, _gloffset_MultiTexCoord1iARB },
- { 29957, _gloffset_MultiTexCoord4svARB },
- { 30581, _gloffset_MultiTexCoord1fARB },
- { 30844, _gloffset_MultiTexCoord4fARB },
- { 33313, _gloffset_MultiTexCoord2fvARB },
+ { 4407, _gloffset_MultiTexCoord1fvARB },
+ { 6503, _gloffset_MultiTexCoord3dARB },
+ { 6548, _gloffset_MultiTexCoord2iARB },
+ { 6672, _gloffset_MultiTexCoord2svARB },
+ { 8682, _gloffset_MultiTexCoord2fARB },
+ { 10777, _gloffset_MultiTexCoord3fvARB },
+ { 11379, _gloffset_MultiTexCoord4sARB },
+ { 12060, _gloffset_MultiTexCoord2dvARB },
+ { 12467, _gloffset_MultiTexCoord1svARB },
+ { 12832, _gloffset_MultiTexCoord3svARB },
+ { 12893, _gloffset_MultiTexCoord4iARB },
+ { 13724, _gloffset_MultiTexCoord3iARB },
+ { 14594, _gloffset_MultiTexCoord1dARB },
+ { 14826, _gloffset_MultiTexCoord3dvARB },
+ { 16105, _gloffset_MultiTexCoord3ivARB },
+ { 16150, _gloffset_MultiTexCoord2sARB },
+ { 17682, _gloffset_MultiTexCoord4ivARB },
+ { 19890, _gloffset_ClientActiveTextureARB },
+ { 22253, _gloffset_MultiTexCoord2dARB },
+ { 22690, _gloffset_MultiTexCoord4dvARB },
+ { 23067, _gloffset_MultiTexCoord4fvARB },
+ { 24071, _gloffset_MultiTexCoord3fARB },
+ { 26688, _gloffset_MultiTexCoord4dARB },
+ { 26954, _gloffset_MultiTexCoord1sARB },
+ { 27158, _gloffset_MultiTexCoord1dvARB },
+ { 28134, _gloffset_MultiTexCoord1ivARB },
+ { 28227, _gloffset_MultiTexCoord2ivARB },
+ { 28566, _gloffset_MultiTexCoord1iARB },
+ { 29950, _gloffset_MultiTexCoord4svARB },
+ { 30574, _gloffset_MultiTexCoord1fARB },
+ { 30837, _gloffset_MultiTexCoord4fARB },
+ { 33306, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
@@ -5573,7 +5570,7 @@ static const struct gl_function_remap MESA_alt_functions[] = {
#if defined(need_GL_3DFX_tbuffer)
static const struct gl_function_remap GL_3DFX_tbuffer_functions[] = {
- { 9555, -1 }, /* TbufferMask3DFX */
+ { 9584, -1 }, /* TbufferMask3DFX */
{ -1, -1 }
};
#endif
@@ -5672,7 +5669,6 @@ static const struct gl_function_remap GL_ARB_framebuffer_object_functions[] = {
#if defined(need_GL_ARB_geometry_shader4)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_ARB_geometry_shader4_functions[] = {
- { 12803, -1 }, /* FramebufferTextureLayer */
{ -1, -1 }
};
#endif
@@ -5693,11 +5689,11 @@ static const struct gl_function_remap GL_ARB_map_buffer_range_functions[] = {
#if defined(need_GL_ARB_matrix_palette)
static const struct gl_function_remap GL_ARB_matrix_palette_functions[] = {
- { 3849, -1 }, /* MatrixIndexusvARB */
- { 13552, -1 }, /* MatrixIndexuivARB */
- { 14988, -1 }, /* MatrixIndexPointerARB */
- { 20663, -1 }, /* CurrentPaletteMatrixARB */
- { 23822, -1 }, /* MatrixIndexubvARB */
+ { 3878, -1 }, /* MatrixIndexusvARB */
+ { 13545, -1 }, /* MatrixIndexuivARB */
+ { 14981, -1 }, /* MatrixIndexPointerARB */
+ { 20656, -1 }, /* CurrentPaletteMatrixARB */
+ { 23815, -1 }, /* MatrixIndexubvARB */
{ -1, -1 }
};
#endif
@@ -5796,15 +5792,15 @@ static const struct gl_function_remap GL_ARB_vertex_array_object_functions[] = {
#if defined(need_GL_ARB_vertex_blend)
static const struct gl_function_remap GL_ARB_vertex_blend_functions[] = {
{ 2469, -1 }, /* WeightubvARB */
- { 6886, -1 }, /* WeightivARB */
- { 11453, -1 }, /* WeightPointerARB */
- { 14319, -1 }, /* WeightfvARB */
- { 18232, -1 }, /* WeightbvARB */
- { 21893, -1 }, /* WeightusvARB */
- { 24940, -1 }, /* VertexBlendARB */
- { 30665, -1 }, /* WeightsvARB */
- { 32770, -1 }, /* WeightdvARB */
- { 33513, -1 }, /* WeightuivARB */
+ { 6915, -1 }, /* WeightivARB */
+ { 11482, -1 }, /* WeightPointerARB */
+ { 14312, -1 }, /* WeightfvARB */
+ { 18225, -1 }, /* WeightbvARB */
+ { 21886, -1 }, /* WeightusvARB */
+ { 24933, -1 }, /* VertexBlendARB */
+ { 30658, -1 }, /* WeightsvARB */
+ { 32763, -1 }, /* WeightdvARB */
+ { 33506, -1 }, /* WeightuivARB */
{ -1, -1 }
};
#endif
@@ -5895,15 +5891,15 @@ static const struct gl_function_remap GL_EXT_blend_func_separate_functions[] = {
#if defined(need_GL_EXT_blend_minmax)
static const struct gl_function_remap GL_EXT_blend_minmax_functions[] = {
- { 11588, _gloffset_BlendEquation },
+ { 11617, _gloffset_BlendEquation },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_color_subtable)
static const struct gl_function_remap GL_EXT_color_subtable_functions[] = {
- { 17632, _gloffset_ColorSubTable },
- { 32720, _gloffset_CopyColorSubTable },
+ { 17625, _gloffset_ColorSubTable },
+ { 32713, _gloffset_CopyColorSubTable },
{ -1, -1 }
};
#endif
@@ -5919,64 +5915,64 @@ static const struct gl_function_remap GL_EXT_compiled_vertex_array_functions[] =
static const struct gl_function_remap GL_EXT_convolution_functions[] = {
{ 257, _gloffset_ConvolutionFilter1D },
{ 2527, _gloffset_CopyConvolutionFilter1D },
- { 4168, _gloffset_GetConvolutionParameteriv },
- { 8835, _gloffset_ConvolutionFilter2D },
- { 9037, _gloffset_ConvolutionParameteriv },
- { 9497, _gloffset_ConvolutionParameterfv },
- { 21429, _gloffset_GetSeparableFilter },
- { 25014, _gloffset_SeparableFilter2D },
- { 25877, _gloffset_ConvolutionParameteri },
- { 26045, _gloffset_ConvolutionParameterf },
- { 27759, _gloffset_GetConvolutionParameterfv },
- { 28616, _gloffset_GetConvolutionFilter },
- { 31079, _gloffset_CopyConvolutionFilter2D },
+ { 4197, _gloffset_GetConvolutionParameteriv },
+ { 8864, _gloffset_ConvolutionFilter2D },
+ { 9066, _gloffset_ConvolutionParameteriv },
+ { 9526, _gloffset_ConvolutionParameterfv },
+ { 21422, _gloffset_GetSeparableFilter },
+ { 25007, _gloffset_SeparableFilter2D },
+ { 25870, _gloffset_ConvolutionParameteri },
+ { 26038, _gloffset_ConvolutionParameterf },
+ { 27752, _gloffset_GetConvolutionParameterfv },
+ { 28609, _gloffset_GetConvolutionFilter },
+ { 31072, _gloffset_CopyConvolutionFilter2D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_coordinate_frame)
static const struct gl_function_remap GL_EXT_coordinate_frame_functions[] = {
- { 10887, -1 }, /* TangentPointerEXT */
- { 12958, -1 }, /* Binormal3ivEXT */
- { 13684, -1 }, /* Tangent3sEXT */
- { 15053, -1 }, /* Tangent3fvEXT */
- { 19342, -1 }, /* Tangent3ivEXT */
- { 19569, -1 }, /* Tangent3dvEXT */
- { 20343, -1 }, /* Binormal3bvEXT */
- { 21482, -1 }, /* Binormal3dEXT */
- { 23754, -1 }, /* Tangent3fEXT */
- { 25949, -1 }, /* Binormal3sEXT */
- { 26491, -1 }, /* Tangent3dEXT */
- { 27438, -1 }, /* Binormal3svEXT */
- { 28039, -1 }, /* Binormal3fEXT */
- { 28947, -1 }, /* Binormal3dvEXT */
- { 30214, -1 }, /* Tangent3iEXT */
- { 31364, -1 }, /* Tangent3bvEXT */
- { 31929, -1 }, /* Tangent3bEXT */
- { 32493, -1 }, /* Binormal3fvEXT */
- { 33212, -1 }, /* BinormalPointerEXT */
- { 33693, -1 }, /* Tangent3svEXT */
- { 34130, -1 }, /* Binormal3bEXT */
- { 34307, -1 }, /* Binormal3iEXT */
+ { 10916, -1 }, /* TangentPointerEXT */
+ { 12951, -1 }, /* Binormal3ivEXT */
+ { 13677, -1 }, /* Tangent3sEXT */
+ { 15046, -1 }, /* Tangent3fvEXT */
+ { 19335, -1 }, /* Tangent3ivEXT */
+ { 19562, -1 }, /* Tangent3dvEXT */
+ { 20336, -1 }, /* Binormal3bvEXT */
+ { 21475, -1 }, /* Binormal3dEXT */
+ { 23747, -1 }, /* Tangent3fEXT */
+ { 25942, -1 }, /* Binormal3sEXT */
+ { 26484, -1 }, /* Tangent3dEXT */
+ { 27431, -1 }, /* Binormal3svEXT */
+ { 28032, -1 }, /* Binormal3fEXT */
+ { 28940, -1 }, /* Binormal3dvEXT */
+ { 30207, -1 }, /* Tangent3iEXT */
+ { 31357, -1 }, /* Tangent3bvEXT */
+ { 31922, -1 }, /* Tangent3bEXT */
+ { 32486, -1 }, /* Binormal3fvEXT */
+ { 33205, -1 }, /* BinormalPointerEXT */
+ { 33686, -1 }, /* Tangent3svEXT */
+ { 34123, -1 }, /* Binormal3bEXT */
+ { 34300, -1 }, /* Binormal3iEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_copy_texture)
static const struct gl_function_remap GL_EXT_copy_texture_functions[] = {
- { 15578, _gloffset_CopyTexSubImage3D },
- { 17319, _gloffset_CopyTexImage2D },
- { 25485, _gloffset_CopyTexImage1D },
- { 28297, _gloffset_CopyTexSubImage2D },
- { 30717, _gloffset_CopyTexSubImage1D },
+ { 15571, _gloffset_CopyTexSubImage3D },
+ { 17312, _gloffset_CopyTexImage2D },
+ { 25478, _gloffset_CopyTexImage1D },
+ { 28290, _gloffset_CopyTexSubImage2D },
+ { 30710, _gloffset_CopyTexSubImage1D },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_cull_vertex)
static const struct gl_function_remap GL_EXT_cull_vertex_functions[] = {
- { 9186, -1 }, /* CullParameterdvEXT */
- { 12076, -1 }, /* CullParameterfvEXT */
+ { 9215, -1 }, /* CullParameterdvEXT */
+ { 12105, -1 }, /* CullParameterfvEXT */
{ -1, -1 }
};
#endif
@@ -6004,7 +6000,7 @@ static const struct gl_function_remap GL_EXT_draw_instanced_functions[] = {
#if defined(need_GL_EXT_draw_range_elements)
static const struct gl_function_remap GL_EXT_draw_range_elements_functions[] = {
- { 9834, _gloffset_DrawRangeElements },
+ { 9863, _gloffset_DrawRangeElements },
{ -1, -1 }
};
#endif
@@ -6054,38 +6050,38 @@ static const struct gl_function_remap GL_EXT_gpu_shader4_functions[] = {
#if defined(need_GL_EXT_histogram)
static const struct gl_function_remap GL_EXT_histogram_functions[] = {
{ 856, _gloffset_Histogram },
- { 3598, _gloffset_ResetHistogram },
- { 10339, _gloffset_GetMinmax },
- { 15912, _gloffset_GetHistogramParameterfv },
- { 25410, _gloffset_GetMinmaxParameteriv },
- { 27649, _gloffset_ResetMinmax },
- { 28513, _gloffset_GetHistogramParameteriv },
- { 29682, _gloffset_GetHistogram },
- { 32306, _gloffset_Minmax },
- { 33928, _gloffset_GetMinmaxParameterfv },
+ { 3627, _gloffset_ResetHistogram },
+ { 10368, _gloffset_GetMinmax },
+ { 15905, _gloffset_GetHistogramParameterfv },
+ { 25403, _gloffset_GetMinmaxParameteriv },
+ { 27642, _gloffset_ResetMinmax },
+ { 28506, _gloffset_GetHistogramParameteriv },
+ { 29675, _gloffset_GetHistogram },
+ { 32299, _gloffset_Minmax },
+ { 33921, _gloffset_GetMinmaxParameterfv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_func)
static const struct gl_function_remap GL_EXT_index_func_functions[] = {
- { 11862, -1 }, /* IndexFuncEXT */
+ { 11891, -1 }, /* IndexFuncEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_index_material)
static const struct gl_function_remap GL_EXT_index_material_functions[] = {
- { 22015, -1 }, /* IndexMaterialEXT */
+ { 22008, -1 }, /* IndexMaterialEXT */
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_light_texture)
static const struct gl_function_remap GL_EXT_light_texture_functions[] = {
- { 27458, -1 }, /* ApplyTextureEXT */
- { 27603, -1 }, /* TextureMaterialEXT */
- { 27628, -1 }, /* TextureLightEXT */
+ { 27451, -1 }, /* ApplyTextureEXT */
+ { 27596, -1 }, /* TextureMaterialEXT */
+ { 27621, -1 }, /* TextureLightEXT */
{ -1, -1 }
};
#endif
@@ -6106,20 +6102,20 @@ static const struct gl_function_remap GL_EXT_multisample_functions[] = {
#if defined(need_GL_EXT_paletted_texture)
static const struct gl_function_remap GL_EXT_paletted_texture_functions[] = {
- { 8697, _gloffset_ColorTable },
- { 15758, _gloffset_GetColorTable },
- { 23937, _gloffset_GetColorTableParameterfv },
- { 26101, _gloffset_GetColorTableParameteriv },
+ { 8726, _gloffset_ColorTable },
+ { 15751, _gloffset_GetColorTable },
+ { 23930, _gloffset_GetColorTableParameterfv },
+ { 26094, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_pixel_transform)
static const struct gl_function_remap GL_EXT_pixel_transform_functions[] = {
- { 22662, -1 }, /* PixelTransformParameterfEXT */
- { 22742, -1 }, /* PixelTransformParameteriEXT */
- { 31644, -1 }, /* PixelTransformParameterfvEXT */
- { 33176, -1 }, /* PixelTransformParameterivEXT */
+ { 22655, -1 }, /* PixelTransformParameterfEXT */
+ { 22735, -1 }, /* PixelTransformParameteriEXT */
+ { 31637, -1 }, /* PixelTransformParameterfvEXT */
+ { 33169, -1 }, /* PixelTransformParameterivEXT */
{ -1, -1 }
};
#endif
@@ -6168,8 +6164,8 @@ static const struct gl_function_remap GL_EXT_stencil_two_side_functions[] = {
#if defined(need_GL_EXT_subtexture)
static const struct gl_function_remap GL_EXT_subtexture_functions[] = {
- { 7408, _gloffset_TexSubImage1D },
- { 11043, _gloffset_TexSubImage2D },
+ { 7437, _gloffset_TexSubImage1D },
+ { 11072, _gloffset_TexSubImage2D },
{ -1, -1 }
};
#endif
@@ -6177,7 +6173,7 @@ static const struct gl_function_remap GL_EXT_subtexture_functions[] = {
#if defined(need_GL_EXT_texture3D)
static const struct gl_function_remap GL_EXT_texture3D_functions[] = {
{ 1826, _gloffset_TexImage3D },
- { 23706, _gloffset_TexSubImage3D },
+ { 23699, _gloffset_TexSubImage3D },
{ -1, -1 }
};
#endif
@@ -6198,19 +6194,19 @@ static const struct gl_function_remap GL_EXT_texture_integer_functions[] = {
#if defined(need_GL_EXT_texture_object)
static const struct gl_function_remap GL_EXT_texture_object_functions[] = {
- { 3366, _gloffset_PrioritizeTextures },
- { 7857, _gloffset_AreTexturesResident },
- { 14027, _gloffset_GenTextures },
- { 16271, _gloffset_DeleteTextures },
- { 20396, _gloffset_IsTexture },
- { 30782, _gloffset_BindTexture },
+ { 3395, _gloffset_PrioritizeTextures },
+ { 7886, _gloffset_AreTexturesResident },
+ { 14020, _gloffset_GenTextures },
+ { 16264, _gloffset_DeleteTextures },
+ { 20389, _gloffset_IsTexture },
+ { 30775, _gloffset_BindTexture },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_texture_perturb_normal)
static const struct gl_function_remap GL_EXT_texture_perturb_normal_functions[] = {
- { 14269, -1 }, /* TextureNormalEXT */
+ { 14262, -1 }, /* TextureNormalEXT */
{ -1, -1 }
};
#endif
@@ -6232,18 +6228,18 @@ static const struct gl_function_remap GL_EXT_transform_feedback_functions[] = {
#if defined(need_GL_EXT_vertex_array)
/* functions defined in MESA_remap_table_functions are excluded */
static const struct gl_function_remap GL_EXT_vertex_array_functions[] = {
- { 25186, _gloffset_ArrayElement },
- { 31894, _gloffset_GetPointerv },
- { 33479, _gloffset_DrawArrays },
+ { 25179, _gloffset_ArrayElement },
+ { 31887, _gloffset_GetPointerv },
+ { 33472, _gloffset_DrawArrays },
{ -1, -1 }
};
#endif
#if defined(need_GL_EXT_vertex_weighting)
static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = {
- { 20444, -1 }, /* VertexWeightfvEXT */
- { 27982, -1 }, /* VertexWeightfEXT */
- { 29651, -1 }, /* VertexWeightPointerEXT */
+ { 20437, -1 }, /* VertexWeightfvEXT */
+ { 27975, -1 }, /* VertexWeightfEXT */
+ { 29644, -1 }, /* VertexWeightPointerEXT */
{ -1, -1 }
};
#endif
@@ -6251,11 +6247,11 @@ static const struct gl_function_remap GL_EXT_vertex_weighting_functions[] = {
#if defined(need_GL_HP_image_transform)
static const struct gl_function_remap GL_HP_image_transform_functions[] = {
{ 2400, -1 }, /* GetImageTransformParameterfvHP */
- { 3815, -1 }, /* ImageTransformParameterfHP */
- { 10581, -1 }, /* ImageTransformParameterfvHP */
- { 12323, -1 }, /* ImageTransformParameteriHP */
- { 12693, -1 }, /* GetImageTransformParameterivHP */
- { 20508, -1 }, /* ImageTransformParameterivHP */
+ { 3844, -1 }, /* ImageTransformParameterfHP */
+ { 10610, -1 }, /* ImageTransformParameterfvHP */
+ { 12352, -1 }, /* ImageTransformParameteriHP */
+ { 12722, -1 }, /* GetImageTransformParameterivHP */
+ { 20501, -1 }, /* ImageTransformParameterivHP */
{ -1, -1 }
};
#endif
@@ -6269,14 +6265,14 @@ static const struct gl_function_remap GL_IBM_multimode_draw_arrays_functions[] =
#if defined(need_GL_IBM_vertex_array_lists)
static const struct gl_function_remap GL_IBM_vertex_array_lists_functions[] = {
- { 4510, -1 }, /* SecondaryColorPointerListIBM */
- { 6340, -1 }, /* NormalPointerListIBM */
- { 8031, -1 }, /* FogCoordPointerListIBM */
- { 8372, -1 }, /* VertexPointerListIBM */
- { 12577, -1 }, /* ColorPointerListIBM */
- { 13791, -1 }, /* TexCoordPointerListIBM */
- { 14291, -1 }, /* IndexPointerListIBM */
- { 33871, -1 }, /* EdgeFlagPointerListIBM */
+ { 4539, -1 }, /* SecondaryColorPointerListIBM */
+ { 6369, -1 }, /* NormalPointerListIBM */
+ { 8060, -1 }, /* FogCoordPointerListIBM */
+ { 8401, -1 }, /* VertexPointerListIBM */
+ { 12606, -1 }, /* ColorPointerListIBM */
+ { 13784, -1 }, /* TexCoordPointerListIBM */
+ { 14284, -1 }, /* IndexPointerListIBM */
+ { 33864, -1 }, /* EdgeFlagPointerListIBM */
{ -1, -1 }
};
#endif
@@ -6290,10 +6286,10 @@ static const struct gl_function_remap GL_INGR_blend_func_separate_functions[] =
#if defined(need_GL_INTEL_parallel_arrays)
static const struct gl_function_remap GL_INTEL_parallel_arrays_functions[] = {
- { 13131, -1 }, /* VertexPointervINTEL */
- { 16005, -1 }, /* ColorPointervINTEL */
- { 31053, -1 }, /* NormalPointervINTEL */
- { 31576, -1 }, /* TexCoordPointervINTEL */
+ { 13124, -1 }, /* VertexPointervINTEL */
+ { 15998, -1 }, /* ColorPointervINTEL */
+ { 31046, -1 }, /* NormalPointervINTEL */
+ { 31569, -1 }, /* TexCoordPointervINTEL */
{ -1, -1 }
};
#endif
@@ -6308,9 +6304,9 @@ static const struct gl_function_remap GL_MESA_resize_buffers_functions[] = {
#if defined(need_GL_MESA_shader_debug)
static const struct gl_function_remap GL_MESA_shader_debug_functions[] = {
{ 1690, -1 }, /* GetDebugLogLengthMESA */
- { 3537, -1 }, /* ClearDebugLogMESA */
- { 4695, -1 }, /* GetDebugLogMESA */
- { 32087, -1 }, /* CreateDebugObjectMESA */
+ { 3566, -1 }, /* ClearDebugLogMESA */
+ { 4724, -1 }, /* GetDebugLogMESA */
+ { 32080, -1 }, /* CreateDebugObjectMESA */
{ -1, -1 }
};
#endif
@@ -6331,15 +6327,15 @@ static const struct gl_function_remap GL_NV_condtitional_render_functions[] = {
#if defined(need_GL_NV_evaluators)
static const struct gl_function_remap GL_NV_evaluators_functions[] = {
- { 7070, -1 }, /* GetMapAttribParameterivNV */
- { 8803, -1 }, /* MapControlPointsNV */
- { 8902, -1 }, /* MapParameterfvNV */
- { 11026, -1 }, /* EvalMapsNV */
- { 17830, -1 }, /* GetMapAttribParameterfvNV */
- { 18047, -1 }, /* MapParameterivNV */
- { 25800, -1 }, /* GetMapParameterivNV */
- { 26343, -1 }, /* GetMapParameterfvNV */
- { 30368, -1 }, /* GetMapControlPointsNV */
+ { 7099, -1 }, /* GetMapAttribParameterivNV */
+ { 8832, -1 }, /* MapControlPointsNV */
+ { 8931, -1 }, /* MapParameterfvNV */
+ { 11055, -1 }, /* EvalMapsNV */
+ { 17823, -1 }, /* GetMapAttribParameterfvNV */
+ { 18040, -1 }, /* MapParameterivNV */
+ { 25793, -1 }, /* GetMapParameterivNV */
+ { 26336, -1 }, /* GetMapParameterfvNV */
+ { 30361, -1 }, /* GetMapControlPointsNV */
{ -1, -1 }
};
#endif
@@ -6381,8 +6377,8 @@ static const struct gl_function_remap GL_NV_register_combiners_functions[] = {
#if defined(need_GL_NV_register_combiners2)
static const struct gl_function_remap GL_NV_register_combiners2_functions[] = {
- { 16424, -1 }, /* CombinerStageParameterfvNV */
- { 16820, -1 }, /* GetCombinerStageParameterfvNV */
+ { 16417, -1 }, /* CombinerStageParameterfvNV */
+ { 16813, -1 }, /* GetCombinerStageParameterfvNV */
{ -1, -1 }
};
#endif
@@ -6417,23 +6413,23 @@ static const struct gl_function_remap GL_OES_EGL_image_functions[] = {
#if defined(need_GL_PGI_misc_hints)
static const struct gl_function_remap GL_PGI_misc_hints_functions[] = {
- { 9023, -1 }, /* HintPGI */
+ { 9052, -1 }, /* HintPGI */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_detail_texture)
static const struct gl_function_remap GL_SGIS_detail_texture_functions[] = {
- { 16793, -1 }, /* GetDetailTexFuncSGIS */
- { 17264, -1 }, /* DetailTexFuncSGIS */
+ { 16786, -1 }, /* GetDetailTexFuncSGIS */
+ { 17257, -1 }, /* DetailTexFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_fog_function)
static const struct gl_function_remap GL_SGIS_fog_function_functions[] = {
- { 28279, -1 }, /* FogFuncSGIS */
- { 29000, -1 }, /* GetFogFuncSGIS */
+ { 28272, -1 }, /* FogFuncSGIS */
+ { 28993, -1 }, /* GetFogFuncSGIS */
{ -1, -1 }
};
#endif
@@ -6461,8 +6457,8 @@ static const struct gl_function_remap GL_SGIS_point_parameters_functions[] = {
#if defined(need_GL_SGIS_sharpen_texture)
static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = {
- { 7131, -1 }, /* GetSharpenTexFuncSGIS */
- { 23048, -1 }, /* SharpenTexFuncSGIS */
+ { 7160, -1 }, /* GetSharpenTexFuncSGIS */
+ { 23041, -1 }, /* SharpenTexFuncSGIS */
{ -1, -1 }
};
#endif
@@ -6470,41 +6466,41 @@ static const struct gl_function_remap GL_SGIS_sharpen_texture_functions[] = {
#if defined(need_GL_SGIS_texture4D)
static const struct gl_function_remap GL_SGIS_texture4D_functions[] = {
{ 995, -1 }, /* TexImage4DSGIS */
- { 16340, -1 }, /* TexSubImage4DSGIS */
+ { 16333, -1 }, /* TexSubImage4DSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_color_mask)
static const struct gl_function_remap GL_SGIS_texture_color_mask_functions[] = {
- { 15711, -1 }, /* TextureColorMaskSGIS */
+ { 15704, -1 }, /* TextureColorMaskSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIS_texture_filter4)
static const struct gl_function_remap GL_SGIS_texture_filter4_functions[] = {
- { 7308, -1 }, /* GetTexFilterFuncSGIS */
- { 16966, -1 }, /* TexFilterFuncSGIS */
+ { 7337, -1 }, /* GetTexFilterFuncSGIS */
+ { 16959, -1 }, /* TexFilterFuncSGIS */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_async)
static const struct gl_function_remap GL_SGIX_async_functions[] = {
- { 3463, -1 }, /* AsyncMarkerSGIX */
- { 4649, -1 }, /* FinishAsyncSGIX */
- { 5721, -1 }, /* PollAsyncSGIX */
- { 23257, -1 }, /* DeleteAsyncMarkersSGIX */
- { 23312, -1 }, /* IsAsyncMarkerSGIX */
- { 33668, -1 }, /* GenAsyncMarkersSGIX */
+ { 3492, -1 }, /* AsyncMarkerSGIX */
+ { 4678, -1 }, /* FinishAsyncSGIX */
+ { 5750, -1 }, /* PollAsyncSGIX */
+ { 23250, -1 }, /* DeleteAsyncMarkersSGIX */
+ { 23305, -1 }, /* IsAsyncMarkerSGIX */
+ { 33661, -1 }, /* GenAsyncMarkersSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_flush_raster)
static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = {
- { 7685, -1 }, /* FlushRasterSGIX */
+ { 7714, -1 }, /* FlushRasterSGIX */
{ -1, -1 }
};
#endif
@@ -6512,37 +6508,37 @@ static const struct gl_function_remap GL_SGIX_flush_raster_functions[] = {
#if defined(need_GL_SGIX_fragment_lighting)
static const struct gl_function_remap GL_SGIX_fragment_lighting_functions[] = {
{ 2698, -1 }, /* FragmentMaterialfvSGIX */
- { 5625, -1 }, /* FragmentLightiSGIX */
- { 8439, -1 }, /* FragmentMaterialfSGIX */
- { 8576, -1 }, /* GetFragmentLightivSGIX */
- { 9449, -1 }, /* FragmentLightModeliSGIX */
- { 11089, -1 }, /* FragmentLightivSGIX */
- { 11396, -1 }, /* GetFragmentMaterialivSGIX */
- { 16733, -1 }, /* GetFragmentMaterialfvSGIX */
- { 20313, -1 }, /* FragmentLightModelfSGIX */
- { 20631, -1 }, /* FragmentColorMaterialSGIX */
- { 21048, -1 }, /* FragmentMaterialiSGIX */
- { 22343, -1 }, /* LightEnviSGIX */
- { 24029, -1 }, /* FragmentLightModelfvSGIX */
- { 24364, -1 }, /* FragmentLightfvSGIX */
- { 29384, -1 }, /* FragmentLightModelivSGIX */
- { 29533, -1 }, /* FragmentLightfSGIX */
- { 32463, -1 }, /* GetFragmentLightfvSGIX */
- { 34151, -1 }, /* FragmentMaterialivSGIX */
+ { 5654, -1 }, /* FragmentLightiSGIX */
+ { 8468, -1 }, /* FragmentMaterialfSGIX */
+ { 8605, -1 }, /* GetFragmentLightivSGIX */
+ { 9478, -1 }, /* FragmentLightModeliSGIX */
+ { 11118, -1 }, /* FragmentLightivSGIX */
+ { 11425, -1 }, /* GetFragmentMaterialivSGIX */
+ { 16726, -1 }, /* GetFragmentMaterialfvSGIX */
+ { 20306, -1 }, /* FragmentLightModelfSGIX */
+ { 20624, -1 }, /* FragmentColorMaterialSGIX */
+ { 21041, -1 }, /* FragmentMaterialiSGIX */
+ { 22336, -1 }, /* LightEnviSGIX */
+ { 24022, -1 }, /* FragmentLightModelfvSGIX */
+ { 24357, -1 }, /* FragmentLightfvSGIX */
+ { 29377, -1 }, /* FragmentLightModelivSGIX */
+ { 29526, -1 }, /* FragmentLightfSGIX */
+ { 32456, -1 }, /* GetFragmentLightfvSGIX */
+ { 34144, -1 }, /* FragmentMaterialivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_framezoom)
static const struct gl_function_remap GL_SGIX_framezoom_functions[] = {
- { 23335, -1 }, /* FrameZoomSGIX */
+ { 23328, -1 }, /* FrameZoomSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_igloo_interface)
static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = {
- { 29841, -1 }, /* IglooInterfaceSGIX */
+ { 29834, -1 }, /* IglooInterfaceSGIX */
{ -1, -1 }
};
#endif
@@ -6550,11 +6546,11 @@ static const struct gl_function_remap GL_SGIX_igloo_interface_functions[] = {
#if defined(need_GL_SGIX_instruments)
static const struct gl_function_remap GL_SGIX_instruments_functions[] = {
{ 2878, -1 }, /* ReadInstrumentsSGIX */
- { 6904, -1 }, /* PollInstrumentsSGIX */
- { 10947, -1 }, /* GetInstrumentsSGIX */
- { 13389, -1 }, /* StartInstrumentsSGIX */
- { 16458, -1 }, /* StopInstrumentsSGIX */
- { 18495, -1 }, /* InstrumentsBufferSGIX */
+ { 6933, -1 }, /* PollInstrumentsSGIX */
+ { 10976, -1 }, /* GetInstrumentsSGIX */
+ { 13382, -1 }, /* StartInstrumentsSGIX */
+ { 16451, -1 }, /* StopInstrumentsSGIX */
+ { 18488, -1 }, /* InstrumentsBufferSGIX */
{ -1, -1 }
};
#endif
@@ -6562,11 +6558,11 @@ static const struct gl_function_remap GL_SGIX_instruments_functions[] = {
#if defined(need_GL_SGIX_list_priority)
static const struct gl_function_remap GL_SGIX_list_priority_functions[] = {
{ 1226, -1 }, /* ListParameterfSGIX */
- { 3165, -1 }, /* GetListParameterfvSGIX */
- { 18360, -1 }, /* ListParameteriSGIX */
- { 19519, -1 }, /* ListParameterfvSGIX */
- { 21714, -1 }, /* ListParameterivSGIX */
- { 33712, -1 }, /* GetListParameterivSGIX */
+ { 3194, -1 }, /* GetListParameterfvSGIX */
+ { 18353, -1 }, /* ListParameteriSGIX */
+ { 19512, -1 }, /* ListParameterfvSGIX */
+ { 21707, -1 }, /* ListParameterivSGIX */
+ { 33705, -1 }, /* GetListParameterivSGIX */
{ -1, -1 }
};
#endif
@@ -6580,88 +6576,88 @@ static const struct gl_function_remap GL_SGIX_pixel_texture_functions[] = {
#if defined(need_GL_SGIX_polynomial_ffd)
static const struct gl_function_remap GL_SGIX_polynomial_ffd_functions[] = {
- { 3761, -1 }, /* LoadIdentityDeformationMapSGIX */
- { 16558, -1 }, /* DeformSGIX */
- { 25298, -1 }, /* DeformationMap3fSGIX */
- { 32351, -1 }, /* DeformationMap3dSGIX */
+ { 3790, -1 }, /* LoadIdentityDeformationMapSGIX */
+ { 16551, -1 }, /* DeformSGIX */
+ { 25291, -1 }, /* DeformationMap3fSGIX */
+ { 32344, -1 }, /* DeformationMap3dSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_reference_plane)
static const struct gl_function_remap GL_SGIX_reference_plane_functions[] = {
- { 15262, -1 }, /* ReferencePlaneSGIX */
+ { 15255, -1 }, /* ReferencePlaneSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_sprite)
static const struct gl_function_remap GL_SGIX_sprite_functions[] = {
- { 9947, -1 }, /* SpriteParameterfvSGIX */
- { 21503, -1 }, /* SpriteParameteriSGIX */
- { 27683, -1 }, /* SpriteParameterfSGIX */
- { 30511, -1 }, /* SpriteParameterivSGIX */
+ { 9976, -1 }, /* SpriteParameterfvSGIX */
+ { 21496, -1 }, /* SpriteParameteriSGIX */
+ { 27676, -1 }, /* SpriteParameterfSGIX */
+ { 30504, -1 }, /* SpriteParameterivSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGIX_tag_sample_buffer)
static const struct gl_function_remap GL_SGIX_tag_sample_buffer_functions[] = {
- { 21562, -1 }, /* TagSampleBufferSGIX */
+ { 21555, -1 }, /* TagSampleBufferSGIX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SGI_color_table)
static const struct gl_function_remap GL_SGI_color_table_functions[] = {
- { 7975, _gloffset_ColorTableParameteriv },
- { 8697, _gloffset_ColorTable },
- { 15758, _gloffset_GetColorTable },
- { 15868, _gloffset_CopyColorTable },
- { 20257, _gloffset_ColorTableParameterfv },
- { 23937, _gloffset_GetColorTableParameterfv },
- { 26101, _gloffset_GetColorTableParameteriv },
+ { 8004, _gloffset_ColorTableParameteriv },
+ { 8726, _gloffset_ColorTable },
+ { 15751, _gloffset_GetColorTable },
+ { 15861, _gloffset_CopyColorTable },
+ { 20250, _gloffset_ColorTableParameterfv },
+ { 23930, _gloffset_GetColorTableParameterfv },
+ { 26094, _gloffset_GetColorTableParameteriv },
{ -1, -1 }
};
#endif
#if defined(need_GL_SUNX_constant_data)
static const struct gl_function_remap GL_SUNX_constant_data_functions[] = {
- { 32441, -1 }, /* FinishTextureSUNX */
+ { 32434, -1 }, /* FinishTextureSUNX */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_global_alpha)
static const struct gl_function_remap GL_SUN_global_alpha_functions[] = {
- { 3484, -1 }, /* GlobalAlphaFactorubSUN */
- { 5002, -1 }, /* GlobalAlphaFactoriSUN */
- { 6929, -1 }, /* GlobalAlphaFactordSUN */
- { 10031, -1 }, /* GlobalAlphaFactoruiSUN */
- { 10538, -1 }, /* GlobalAlphaFactorbSUN */
- { 13704, -1 }, /* GlobalAlphaFactorfSUN */
- { 13868, -1 }, /* GlobalAlphaFactorusSUN */
- { 23624, -1 }, /* GlobalAlphaFactorsSUN */
+ { 3513, -1 }, /* GlobalAlphaFactorubSUN */
+ { 5031, -1 }, /* GlobalAlphaFactoriSUN */
+ { 6958, -1 }, /* GlobalAlphaFactordSUN */
+ { 10060, -1 }, /* GlobalAlphaFactoruiSUN */
+ { 10567, -1 }, /* GlobalAlphaFactorbSUN */
+ { 13697, -1 }, /* GlobalAlphaFactorfSUN */
+ { 13861, -1 }, /* GlobalAlphaFactorusSUN */
+ { 23617, -1 }, /* GlobalAlphaFactorsSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_mesh_array)
static const struct gl_function_remap GL_SUN_mesh_array_functions[] = {
- { 30302, -1 }, /* DrawMeshArraysSUN */
+ { 30295, -1 }, /* DrawMeshArraysSUN */
{ -1, -1 }
};
#endif
#if defined(need_GL_SUN_triangle_list)
static const struct gl_function_remap GL_SUN_triangle_list_functions[] = {
- { 4623, -1 }, /* ReplacementCodeubSUN */
- { 6688, -1 }, /* ReplacementCodeubvSUN */
- { 19978, -1 }, /* ReplacementCodeusvSUN */
- { 20166, -1 }, /* ReplacementCodePointerSUN */
- { 22407, -1 }, /* ReplacementCodeuiSUN */
- { 23286, -1 }, /* ReplacementCodeusSUN */
- { 30968, -1 }, /* ReplacementCodeuivSUN */
+ { 4652, -1 }, /* ReplacementCodeubSUN */
+ { 6717, -1 }, /* ReplacementCodeubvSUN */
+ { 19971, -1 }, /* ReplacementCodeusvSUN */
+ { 20159, -1 }, /* ReplacementCodePointerSUN */
+ { 22400, -1 }, /* ReplacementCodeuiSUN */
+ { 23279, -1 }, /* ReplacementCodeusSUN */
+ { 30961, -1 }, /* ReplacementCodeuivSUN */
{ -1, -1 }
};
#endif
@@ -6675,39 +6671,39 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = {
{ 2055, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fvSUN */
{ 2634, -1 }, /* ReplacementCodeuiNormal3fVertex3fSUN */
{ 2974, -1 }, /* Color4ubVertex3fvSUN */
- { 4807, -1 }, /* Color4ubVertex3fSUN */
- { 4930, -1 }, /* TexCoord2fVertex3fSUN */
- { 5348, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
- { 5825, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
- { 6583, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
- { 7363, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
- { 7722, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
- { 9248, -1 }, /* Color3fVertex3fSUN */
- { 10447, -1 }, /* Color3fVertex3fvSUN */
- { 10912, -1 }, /* Color4fNormal3fVertex3fvSUN */
- { 11741, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
- { 13252, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
- { 14878, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
- { 15404, -1 }, /* TexCoord2fColor3fVertex3fSUN */
- { 16483, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
- { 16925, -1 }, /* Color4ubVertex2fvSUN */
- { 17289, -1 }, /* Normal3fVertex3fSUN */
- { 18436, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
- { 18788, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
- { 19095, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
- { 19771, -1 }, /* TexCoord2fVertex3fvSUN */
- { 20601, -1 }, /* Color4ubVertex2fSUN */
- { 20839, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
- { 22873, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
- { 23354, -1 }, /* Normal3fVertex3fvSUN */
- { 23846, -1 }, /* Color4fNormal3fVertex3fSUN */
- { 24847, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
- { 27004, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
- { 28395, -1 }, /* TexCoord4fVertex4fSUN */
- { 28841, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
- { 29228, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
- { 29355, -1 }, /* TexCoord4fVertex4fvSUN */
- { 30089, -1 }, /* ReplacementCodeuiVertex3fSUN */
+ { 4836, -1 }, /* Color4ubVertex3fSUN */
+ { 4959, -1 }, /* TexCoord2fVertex3fSUN */
+ { 5377, -1 }, /* TexCoord2fColor4fNormal3fVertex3fSUN */
+ { 5854, -1 }, /* TexCoord2fNormal3fVertex3fvSUN */
+ { 6612, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN */
+ { 7392, -1 }, /* ReplacementCodeuiColor4ubVertex3fvSUN */
+ { 7751, -1 }, /* ReplacementCodeuiTexCoord2fVertex3fSUN */
+ { 9277, -1 }, /* Color3fVertex3fSUN */
+ { 10476, -1 }, /* Color3fVertex3fvSUN */
+ { 10941, -1 }, /* Color4fNormal3fVertex3fvSUN */
+ { 11770, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 13245, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fvSUN */
+ { 14871, -1 }, /* ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN */
+ { 15397, -1 }, /* TexCoord2fColor3fVertex3fSUN */
+ { 16476, -1 }, /* TexCoord4fColor4fNormal3fVertex4fSUN */
+ { 16918, -1 }, /* Color4ubVertex2fvSUN */
+ { 17282, -1 }, /* Normal3fVertex3fSUN */
+ { 18429, -1 }, /* ReplacementCodeuiColor4fNormal3fVertex3fSUN */
+ { 18781, -1 }, /* TexCoord2fColor4fNormal3fVertex3fvSUN */
+ { 19088, -1 }, /* TexCoord2fNormal3fVertex3fSUN */
+ { 19764, -1 }, /* TexCoord2fVertex3fvSUN */
+ { 20594, -1 }, /* Color4ubVertex2fSUN */
+ { 20832, -1 }, /* ReplacementCodeuiColor4ubVertex3fSUN */
+ { 22866, -1 }, /* TexCoord2fColor4ubVertex3fSUN */
+ { 23347, -1 }, /* Normal3fVertex3fvSUN */
+ { 23839, -1 }, /* Color4fNormal3fVertex3fSUN */
+ { 24840, -1 }, /* ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN */
+ { 26997, -1 }, /* ReplacementCodeuiColor3fVertex3fSUN */
+ { 28388, -1 }, /* TexCoord4fVertex4fSUN */
+ { 28834, -1 }, /* TexCoord2fColor3fVertex3fvSUN */
+ { 29221, -1 }, /* ReplacementCodeuiNormal3fVertex3fvSUN */
+ { 29348, -1 }, /* TexCoord4fVertex4fvSUN */
+ { 30082, -1 }, /* ReplacementCodeuiVertex3fSUN */
{ -1, -1 }
};
#endif
@@ -6717,38 +6713,38 @@ static const struct gl_function_remap GL_SUN_vertex_functions[] = {
static const struct gl_function_remap GL_VERSION_1_3_functions[] = {
{ 425, _gloffset_MultiTexCoord3sARB },
{ 657, _gloffset_ActiveTextureARB },
- { 4378, _gloffset_MultiTexCoord1fvARB },
- { 6474, _gloffset_MultiTexCoord3dARB },
- { 6519, _gloffset_MultiTexCoord2iARB },
- { 6643, _gloffset_MultiTexCoord2svARB },
- { 8653, _gloffset_MultiTexCoord2fARB },
- { 10748, _gloffset_MultiTexCoord3fvARB },
- { 11350, _gloffset_MultiTexCoord4sARB },
- { 12031, _gloffset_MultiTexCoord2dvARB },
- { 12438, _gloffset_MultiTexCoord1svARB },
- { 12839, _gloffset_MultiTexCoord3svARB },
- { 12900, _gloffset_MultiTexCoord4iARB },
- { 13731, _gloffset_MultiTexCoord3iARB },
- { 14601, _gloffset_MultiTexCoord1dARB },
- { 14833, _gloffset_MultiTexCoord3dvARB },
- { 16112, _gloffset_MultiTexCoord3ivARB },
- { 16157, _gloffset_MultiTexCoord2sARB },
- { 17689, _gloffset_MultiTexCoord4ivARB },
- { 19897, _gloffset_ClientActiveTextureARB },
- { 22260, _gloffset_MultiTexCoord2dARB },
- { 22697, _gloffset_MultiTexCoord4dvARB },
- { 23074, _gloffset_MultiTexCoord4fvARB },
- { 24078, _gloffset_MultiTexCoord3fARB },
- { 26695, _gloffset_MultiTexCoord4dARB },
- { 26961, _gloffset_MultiTexCoord1sARB },
- { 27165, _gloffset_MultiTexCoord1dvARB },
- { 28141, _gloffset_MultiTexCoord1ivARB },
- { 28234, _gloffset_MultiTexCoord2ivARB },
- { 28573, _gloffset_MultiTexCoord1iARB },
- { 29957, _gloffset_MultiTexCoord4svARB },
- { 30581, _gloffset_MultiTexCoord1fARB },
- { 30844, _gloffset_MultiTexCoord4fARB },
- { 33313, _gloffset_MultiTexCoord2fvARB },
+ { 4407, _gloffset_MultiTexCoord1fvARB },
+ { 6503, _gloffset_MultiTexCoord3dARB },
+ { 6548, _gloffset_MultiTexCoord2iARB },
+ { 6672, _gloffset_MultiTexCoord2svARB },
+ { 8682, _gloffset_MultiTexCoord2fARB },
+ { 10777, _gloffset_MultiTexCoord3fvARB },
+ { 11379, _gloffset_MultiTexCoord4sARB },
+ { 12060, _gloffset_MultiTexCoord2dvARB },
+ { 12467, _gloffset_MultiTexCoord1svARB },
+ { 12832, _gloffset_MultiTexCoord3svARB },
+ { 12893, _gloffset_MultiTexCoord4iARB },
+ { 13724, _gloffset_MultiTexCoord3iARB },
+ { 14594, _gloffset_MultiTexCoord1dARB },
+ { 14826, _gloffset_MultiTexCoord3dvARB },
+ { 16105, _gloffset_MultiTexCoord3ivARB },
+ { 16150, _gloffset_MultiTexCoord2sARB },
+ { 17682, _gloffset_MultiTexCoord4ivARB },
+ { 19890, _gloffset_ClientActiveTextureARB },
+ { 22253, _gloffset_MultiTexCoord2dARB },
+ { 22690, _gloffset_MultiTexCoord4dvARB },
+ { 23067, _gloffset_MultiTexCoord4fvARB },
+ { 24071, _gloffset_MultiTexCoord3fARB },
+ { 26688, _gloffset_MultiTexCoord4dARB },
+ { 26954, _gloffset_MultiTexCoord1sARB },
+ { 27158, _gloffset_MultiTexCoord1dvARB },
+ { 28134, _gloffset_MultiTexCoord1ivARB },
+ { 28227, _gloffset_MultiTexCoord2ivARB },
+ { 28566, _gloffset_MultiTexCoord1iARB },
+ { 29950, _gloffset_MultiTexCoord4svARB },
+ { 30574, _gloffset_MultiTexCoord1fARB },
+ { 30837, _gloffset_MultiTexCoord4fARB },
+ { 33306, _gloffset_MultiTexCoord2fvARB },
{ -1, -1 }
};
#endif
diff --git a/mesalib/src/mesa/main/shared.c b/mesalib/src/mesa/main/shared.c
index a36083a37..3b3a07f34 100644
--- a/mesalib/src/mesa/main/shared.c
+++ b/mesalib/src/mesa/main/shared.c
@@ -200,7 +200,7 @@ delete_bufferobj_cb(GLuint id, void *data, void *userData)
struct gl_buffer_object *bufObj = (struct gl_buffer_object *) data;
struct gl_context *ctx = (struct gl_context *) userData;
if (_mesa_bufferobj_mapped(bufObj)) {
- ctx->Driver.UnmapBuffer(ctx, 0, bufObj);
+ ctx->Driver.UnmapBuffer(ctx, bufObj);
bufObj->Pointer = NULL;
}
_mesa_reference_buffer_object(ctx, &bufObj, NULL);
diff --git a/mesalib/src/mesa/main/texgetimage.c b/mesalib/src/mesa/main/texgetimage.c
index 2efd5e75b..5374c1a1a 100644
--- a/mesalib/src/mesa/main/texgetimage.c
+++ b/mesalib/src/mesa/main/texgetimage.c
@@ -441,8 +441,8 @@ _mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level,
* texture data to the PBO if the PBO is in VRAM along with the texture.
*/
GLubyte *buf = (GLubyte *)
- ctx->Driver.MapBuffer(ctx, GL_PIXEL_PACK_BUFFER_EXT,
- GL_WRITE_ONLY_ARB, ctx->Pack.BufferObj);
+ ctx->Driver.MapBufferRange(ctx, 0, ctx->Pack.BufferObj->Size,
+ GL_MAP_WRITE_BIT, ctx->Pack.BufferObj);
if (!buf) {
/* out of memory or other unexpected error */
_mesa_error(ctx, GL_OUT_OF_MEMORY, "glGetTexImage(map PBO failed)");
@@ -474,8 +474,7 @@ _mesa_get_teximage(struct gl_context *ctx, GLenum target, GLint level,
}
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_PACK_BUFFER_EXT,
- ctx->Pack.BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj);
}
}
@@ -500,8 +499,8 @@ _mesa_get_compressed_teximage(struct gl_context *ctx, GLenum target, GLint level
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
/* pack texture image into a PBO */
GLubyte *buf = (GLubyte *)
- ctx->Driver.MapBuffer(ctx, GL_PIXEL_PACK_BUFFER_EXT,
- GL_WRITE_ONLY_ARB, ctx->Pack.BufferObj);
+ ctx->Driver.MapBufferRange(ctx, 0, ctx->Pack.BufferObj->Size,
+ GL_MAP_WRITE_BIT, ctx->Pack.BufferObj);
if (!buf) {
/* out of memory or other unexpected error */
_mesa_error(ctx, GL_OUT_OF_MEMORY,
@@ -531,8 +530,7 @@ _mesa_get_compressed_teximage(struct gl_context *ctx, GLenum target, GLint level
}
if (_mesa_is_bufferobj(ctx->Pack.BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_PIXEL_PACK_BUFFER_EXT,
- ctx->Pack.BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Pack.BufferObj);
}
}
diff --git a/mesalib/src/mesa/main/teximage.c b/mesalib/src/mesa/main/teximage.c
index 1cca7d90e..2b0c08c2e 100644
--- a/mesalib/src/mesa/main/teximage.c
+++ b/mesalib/src/mesa/main/teximage.c
@@ -571,6 +571,8 @@ _mesa_set_tex_image(struct gl_texture_object *tObj,
/* Set the 'back' pointer */
texImage->TexObject = tObj;
+ texImage->Level = level;
+ texImage->Face = face;
}
diff --git a/mesalib/src/mesa/main/uniforms.c b/mesalib/src/mesa/main/uniforms.c
index 71285e30a..f251a70f5 100644
--- a/mesalib/src/mesa/main/uniforms.c
+++ b/mesalib/src/mesa/main/uniforms.c
@@ -454,9 +454,9 @@ get_uniform(struct gl_context *ctx, GLuint program, GLint location,
for (i = 0; i < rows; i++) {
const int base = paramPos + offset + i;
for (j = 0; j < cols; j++ ) {
- params[k++] = ctx->Const.GLSLVersion <= 120 ?
- (GLint) prog->Parameters->ParameterValues[base][j].f :
- prog->Parameters->ParameterValues[base][j].i;
+ params[k++] = ctx->Const.NativeIntegers ?
+ prog->Parameters->ParameterValues[base][j].i :
+ (GLint) prog->Parameters->ParameterValues[base][j].f;
}
}
}
@@ -468,9 +468,9 @@ get_uniform(struct gl_context *ctx, GLuint program, GLint location,
for (i = 0; i < rows; i++) {
const int base = paramPos + offset + i;
for (j = 0; j < cols; j++ ) {
- params[k++] = ctx->Const.GLSLVersion <= 120 ?
- (GLuint) prog->Parameters->ParameterValues[base][j].f :
- prog->Parameters->ParameterValues[base][j].u;
+ params[k++] = ctx->Const.NativeIntegers ?
+ prog->Parameters->ParameterValues[base][j].u :
+ (GLuint) prog->Parameters->ParameterValues[base][j].f;
}
}
}
@@ -750,7 +750,7 @@ set_program_uniform(struct gl_context *ctx, struct gl_program *program,
if (basicType == GL_INT) {
const GLint *iValues = ((const GLint *) values) + k * elems;
for (i = 0; i < elems; i++) {
- if (ctx->Const.GLSLVersion <= 120)
+ if (!ctx->Const.NativeIntegers)
uniformVal[i].f = (GLfloat) iValues[i];
else
uniformVal[i].i = iValues[i];
@@ -759,7 +759,7 @@ set_program_uniform(struct gl_context *ctx, struct gl_program *program,
else if (basicType == GL_UNSIGNED_INT) {
const GLuint *iValues = ((const GLuint *) values) + k * elems;
for (i = 0; i < elems; i++) {
- if (ctx->Const.GLSLVersion <= 120)
+ if (!ctx->Const.NativeIntegers)
uniformVal[i].f = (GLfloat)(GLuint) iValues[i];
else
uniformVal[i].u = iValues[i];
@@ -781,7 +781,7 @@ set_program_uniform(struct gl_context *ctx, struct gl_program *program,
else
uniformVal[i].b = uniformVal[i].u ? 1 : 0;
- if (ctx->Const.GLSLVersion <= 120)
+ if (!ctx->Const.NativeIntegers)
uniformVal[i].f = uniformVal[i].b ? 1.0f : 0.0f;
}
}
diff --git a/mesalib/src/mesa/program/ir_to_mesa.cpp b/mesalib/src/mesa/program/ir_to_mesa.cpp
index ae0df472d..1540eb77e 100644
--- a/mesalib/src/mesa/program/ir_to_mesa.cpp
+++ b/mesalib/src/mesa/program/ir_to_mesa.cpp
@@ -297,11 +297,11 @@ public:
/**
* Emit the correct dot-product instruction for the type of arguments
*/
- void emit_dp(ir_instruction *ir,
- dst_reg dst,
- src_reg src0,
- src_reg src1,
- unsigned elements);
+ ir_to_mesa_instruction * emit_dp(ir_instruction *ir,
+ dst_reg dst,
+ src_reg src0,
+ src_reg src1,
+ unsigned elements);
void emit_scalar(ir_instruction *ir, enum prog_opcode op,
dst_reg dst, src_reg src0);
@@ -312,9 +312,11 @@ public:
void emit_scs(ir_instruction *ir, enum prog_opcode op,
dst_reg dst, const src_reg &src);
- GLboolean try_emit_mad(ir_expression *ir,
+ bool try_emit_mad(ir_expression *ir,
int mul_operand);
- GLboolean try_emit_sat(ir_expression *ir);
+ bool try_emit_mad_for_and_not(ir_expression *ir,
+ int mul_operand);
+ bool try_emit_sat(ir_expression *ir);
void emit_swz(ir_expression *ir);
@@ -408,7 +410,7 @@ ir_to_mesa_visitor::emit(ir_instruction *ir, enum prog_opcode op)
return emit(ir, op, undef_dst, undef_src, undef_src, undef_src);
}
-void
+ir_to_mesa_instruction *
ir_to_mesa_visitor::emit_dp(ir_instruction *ir,
dst_reg dst, src_reg src0, src_reg src1,
unsigned elements)
@@ -417,7 +419,7 @@ ir_to_mesa_visitor::emit_dp(ir_instruction *ir,
OPCODE_DP2, OPCODE_DP3, OPCODE_DP4
};
- emit(ir, dot_opcodes[elements - 2], dst, src0, src1);
+ return emit(ir, dot_opcodes[elements - 2], dst, src0, src1);
}
/**
@@ -579,7 +581,7 @@ ir_to_mesa_visitor::emit_scs(ir_instruction *ir, enum prog_opcode op,
}
}
-struct src_reg
+src_reg
ir_to_mesa_visitor::src_reg_for_float(float val)
{
src_reg src(PROGRAM_CONSTANT, -1, NULL);
@@ -723,7 +725,7 @@ ir_to_mesa_visitor::visit(ir_variable *ir)
}
}
- struct variable_storage *storage;
+ variable_storage *storage;
dst_reg dst;
if (i == ir->num_state_slots) {
/* We'll set the index later. */
@@ -869,7 +871,7 @@ ir_to_mesa_visitor::visit(ir_function *ir)
}
}
-GLboolean
+bool
ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
{
int nonmul_operand = 1 - mul_operand;
@@ -892,7 +894,47 @@ ir_to_mesa_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
return true;
}
-GLboolean
+/**
+ * Emit OPCODE_MAD(a, -b, a) instead of AND(a, NOT(b))
+ *
+ * The logic values are 1.0 for true and 0.0 for false. Logical-and is
+ * implemented using multiplication, and logical-or is implemented using
+ * addition. Logical-not can be implemented as (true - x), or (1.0 - x).
+ * As result, the logical expression (a & !b) can be rewritten as:
+ *
+ * - a * !b
+ * - a * (1 - b)
+ * - (a * 1) - (a * b)
+ * - a + -(a * b)
+ * - a + (a * -b)
+ *
+ * This final expression can be implemented as a single MAD(a, -b, a)
+ * instruction.
+ */
+bool
+ir_to_mesa_visitor::try_emit_mad_for_and_not(ir_expression *ir, int try_operand)
+{
+ const int other_operand = 1 - try_operand;
+ src_reg a, b;
+
+ ir_expression *expr = ir->operands[try_operand]->as_expression();
+ if (!expr || expr->operation != ir_unop_logic_not)
+ return false;
+
+ ir->operands[other_operand]->accept(this);
+ a = this->result;
+ expr->operands[0]->accept(this);
+ b = this->result;
+
+ b.negate = ~b.negate;
+
+ this->result = get_temp(ir->type);
+ emit(ir, OPCODE_MAD, dst_reg(this->result), a, b, a);
+
+ return true;
+}
+
+bool
ir_to_mesa_visitor::try_emit_sat(ir_expression *ir)
{
/* Saturates were only introduced to vertex programs in
@@ -1088,6 +1130,16 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
if (try_emit_mad(ir, 0))
return;
}
+
+ /* Quick peephole: Emit OPCODE_MAD(-a, -b, a) instead of AND(a, NOT(b))
+ */
+ if (ir->operation == ir_binop_logic_and) {
+ if (try_emit_mad_for_and_not(ir, 1))
+ return;
+ if (try_emit_mad_for_and_not(ir, 0))
+ return;
+ }
+
if (try_emit_sat(ir))
return;
@@ -1135,7 +1187,13 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
switch (ir->operation) {
case ir_unop_logic_not:
- emit(ir, OPCODE_SEQ, result_dst, op[0], src_reg_for_float(0.0));
+ /* Previously 'SEQ dst, src, 0.0' was used for this. However, many
+ * older GPUs implement SEQ using multiple instructions (i915 uses two
+ * SGE instructions and a MUL instruction). Since our logic values are
+ * 0.0 and 1.0, 1-x also implements !x.
+ */
+ op[0].negate = ~op[0].negate;
+ emit(ir, OPCODE_ADD, result_dst, op[0], src_reg_for_float(1.0));
break;
case ir_unop_neg:
op[0].negate = ~op[0].negate;
@@ -1231,8 +1289,19 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
ir->operands[1]->type->is_vector()) {
src_reg temp = get_temp(glsl_type::vec4_type);
emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]);
+
+ /* After the dot-product, the value will be an integer on the
+ * range [0,4]. Zero becomes 1.0, and positive values become zero.
+ */
emit_dp(ir, result_dst, temp, temp, vector_elements);
- emit(ir, OPCODE_SEQ, result_dst, result_src, src_reg_for_float(0.0));
+
+ /* Negating the result of the dot-product gives values on the range
+ * [-4, 0]. Zero becomes 1.0, and negative values become zero. This
+ * achieved using SGE.
+ */
+ src_reg sge_src = result_src;
+ sge_src.negate = ~sge_src.negate;
+ emit(ir, OPCODE_SGE, result_dst, sge_src, src_reg_for_float(0.0));
} else {
emit(ir, OPCODE_SEQ, result_dst, op[0], op[1]);
}
@@ -1243,29 +1312,83 @@ ir_to_mesa_visitor::visit(ir_expression *ir)
ir->operands[1]->type->is_vector()) {
src_reg temp = get_temp(glsl_type::vec4_type);
emit(ir, OPCODE_SNE, dst_reg(temp), op[0], op[1]);
- emit_dp(ir, result_dst, temp, temp, vector_elements);
- emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0));
+
+ /* After the dot-product, the value will be an integer on the
+ * range [0,4]. Zero stays zero, and positive values become 1.0.
+ */
+ ir_to_mesa_instruction *const dp =
+ emit_dp(ir, result_dst, temp, temp, vector_elements);
+ if (this->prog->Target == GL_FRAGMENT_PROGRAM_ARB) {
+ /* The clamping to [0,1] can be done for free in the fragment
+ * shader with a saturate.
+ */
+ dp->saturate = true;
+ } else {
+ /* Negating the result of the dot-product gives values on the range
+ * [-4, 0]. Zero stays zero, and negative values become 1.0. This
+ * achieved using SLT.
+ */
+ src_reg slt_src = result_src;
+ slt_src.negate = ~slt_src.negate;
+ emit(ir, OPCODE_SLT, result_dst, slt_src, src_reg_for_float(0.0));
+ }
} else {
emit(ir, OPCODE_SNE, result_dst, op[0], op[1]);
}
break;
- case ir_unop_any:
+ case ir_unop_any: {
assert(ir->operands[0]->type->is_vector());
- emit_dp(ir, result_dst, op[0], op[0],
- ir->operands[0]->type->vector_elements);
- emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0));
+
+ /* After the dot-product, the value will be an integer on the
+ * range [0,4]. Zero stays zero, and positive values become 1.0.
+ */
+ ir_to_mesa_instruction *const dp =
+ emit_dp(ir, result_dst, op[0], op[0],
+ ir->operands[0]->type->vector_elements);
+ if (this->prog->Target == GL_FRAGMENT_PROGRAM_ARB) {
+ /* The clamping to [0,1] can be done for free in the fragment
+ * shader with a saturate.
+ */
+ dp->saturate = true;
+ } else {
+ /* Negating the result of the dot-product gives values on the range
+ * [-4, 0]. Zero stays zero, and negative values become 1.0. This
+ * is achieved using SLT.
+ */
+ src_reg slt_src = result_src;
+ slt_src.negate = ~slt_src.negate;
+ emit(ir, OPCODE_SLT, result_dst, slt_src, src_reg_for_float(0.0));
+ }
break;
+ }
case ir_binop_logic_xor:
emit(ir, OPCODE_SNE, result_dst, op[0], op[1]);
break;
- case ir_binop_logic_or:
- /* This could be a saturated add and skip the SNE. */
- emit(ir, OPCODE_ADD, result_dst, op[0], op[1]);
- emit(ir, OPCODE_SNE, result_dst, result_src, src_reg_for_float(0.0));
+ case ir_binop_logic_or: {
+ /* After the addition, the value will be an integer on the
+ * range [0,2]. Zero stays zero, and positive values become 1.0.
+ */
+ ir_to_mesa_instruction *add =
+ emit(ir, OPCODE_ADD, result_dst, op[0], op[1]);
+ if (this->prog->Target == GL_FRAGMENT_PROGRAM_ARB) {
+ /* The clamping to [0,1] can be done for free in the fragment
+ * shader with a saturate.
+ */
+ add->saturate = true;
+ } else {
+ /* Negating the result of the addition gives values on the range
+ * [-2, 0]. Zero stays zero, and negative values become 1.0. This
+ * is achieved using SLT.
+ */
+ src_reg slt_src = result_src;
+ slt_src.negate = ~slt_src.negate;
+ emit(ir, OPCODE_SLT, result_dst, slt_src, src_reg_for_float(0.0));
+ }
break;
+ }
case ir_binop_logic_and:
/* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */
@@ -1981,7 +2104,10 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
ir_to_mesa_instruction *inst = NULL;
prog_opcode opcode = OPCODE_NOP;
- ir->coordinate->accept(this);
+ if (ir->op == ir_txs)
+ this->result = src_reg_for_float(0.0);
+ else
+ ir->coordinate->accept(this);
/* Put our coords in a temp. We'll need to modify them for shadow,
* projection, or LOD, so the only case we'd use it as is is if
@@ -2005,6 +2131,7 @@ ir_to_mesa_visitor::visit(ir_texture *ir)
switch (ir->op) {
case ir_tex:
+ case ir_txs:
opcode = OPCODE_TEX;
break;
case ir_txb:
diff --git a/mesalib/src/mesa/program/prog_execute.c b/mesalib/src/mesa/program/prog_execute.c
index dbfd1b918..77f842a16 100644
--- a/mesalib/src/mesa/program/prog_execute.c
+++ b/mesalib/src/mesa/program/prog_execute.c
@@ -639,7 +639,7 @@ _mesa_execute_program(struct gl_context * ctx,
struct gl_program_machine *machine)
{
const GLuint numInst = program->NumInstructions;
- const GLuint maxExec = 10000;
+ const GLuint maxExec = 65536;
GLuint pc, numExec = 0;
machine->CurProgram = program;
@@ -1651,6 +1651,14 @@ _mesa_execute_program(struct gl_context * ctx,
GLfloat texcoord[4], color[4];
fetch_vector4(&inst->SrcReg[0], machine, texcoord);
+ /* For TEX, texcoord.Q should not be used and its value should not
+ * matter (at most, we pass coord.xyz to texture3D() in GLSL).
+ * Set Q=1 so that FetchTexelDeriv() doesn't get a garbage value
+ * which is effectively what happens when the texcoord swizzle
+ * is .xyzz
+ */
+ texcoord[3] = 1.0f;
+
fetch_texel(ctx, machine, inst, texcoord, 0.0, color);
if (DEBUG_PROG) {
diff --git a/mesalib/src/mesa/program/prog_opt_constant_fold.c b/mesalib/src/mesa/program/prog_opt_constant_fold.c
new file mode 100644
index 000000000..e2418b554
--- /dev/null
+++ b/mesalib/src/mesa/program/prog_opt_constant_fold.c
@@ -0,0 +1,451 @@
+/*
+ * Copyright © 2010 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+ * DEALINGS IN THE SOFTWARE.
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/macros.h"
+#include "program.h"
+#include "prog_instruction.h"
+#include "prog_optimize.h"
+#include "prog_parameter.h"
+#include <stdbool.h>
+
+static bool
+src_regs_are_constant(const struct prog_instruction *inst, unsigned num_srcs)
+{
+ unsigned i;
+
+ for (i = 0; i < num_srcs; i++) {
+ if (inst->SrcReg[i].File != PROGRAM_CONSTANT)
+ return false;
+ }
+
+ return true;
+}
+
+static struct prog_src_register
+src_reg_for_float(struct gl_program *prog, float val)
+{
+ struct prog_src_register src;
+ unsigned swiz;
+
+ memset(&src, 0, sizeof(src));
+
+ src.File = PROGRAM_CONSTANT;
+ src.Index = _mesa_add_unnamed_constant(prog->Parameters,
+ (gl_constant_value *) &val, 1, &swiz);
+ src.Swizzle = swiz;
+ return src;
+}
+
+static struct prog_src_register
+src_reg_for_vec4(struct gl_program *prog, const float *val)
+{
+ struct prog_src_register src;
+ unsigned swiz;
+
+ memset(&src, 0, sizeof(src));
+
+ src.File = PROGRAM_CONSTANT;
+ src.Index = _mesa_add_unnamed_constant(prog->Parameters,
+ (gl_constant_value *) val, 4, &swiz);
+ src.Swizzle = swiz;
+ return src;
+}
+
+static bool
+src_regs_are_same(const struct prog_src_register *a,
+ const struct prog_src_register *b)
+{
+ return (a->File == b->File)
+ && (a->Index == b->Index)
+ && (a->Swizzle == b->Swizzle)
+ && (a->Abs == b->Abs)
+ && (a->Negate == b->Negate)
+ && (a->RelAddr == 0)
+ && (b->RelAddr == 0);
+}
+
+static void
+get_value(struct gl_program *prog, struct prog_src_register *r, float *data)
+{
+ const gl_constant_value *const value =
+ prog->Parameters->ParameterValues[r->Index];
+
+ data[0] = value[GET_SWZ(r->Swizzle, 0)].f;
+ data[1] = value[GET_SWZ(r->Swizzle, 1)].f;
+ data[2] = value[GET_SWZ(r->Swizzle, 2)].f;
+ data[3] = value[GET_SWZ(r->Swizzle, 3)].f;
+
+ if (r->Abs) {
+ data[0] = fabsf(data[0]);
+ data[1] = fabsf(data[1]);
+ data[2] = fabsf(data[2]);
+ data[3] = fabsf(data[3]);
+ }
+
+ if (r->Negate & 0x01) {
+ data[0] = -data[0];
+ }
+
+ if (r->Negate & 0x02) {
+ data[1] = -data[1];
+ }
+
+ if (r->Negate & 0x04) {
+ data[2] = -data[2];
+ }
+
+ if (r->Negate & 0x08) {
+ data[3] = -data[3];
+ }
+}
+
+/**
+ * Try to replace instructions that produce a constant result with simple moves
+ *
+ * The hope is that a following copy propagation pass will eliminate the
+ * unnecessary move instructions.
+ */
+GLboolean
+_mesa_constant_fold(struct gl_program *prog)
+{
+ bool progress = false;
+ unsigned i;
+
+ for (i = 0; i < prog->NumInstructions; i++) {
+ struct prog_instruction *const inst = &prog->Instructions[i];
+
+ switch (inst->Opcode) {
+ case OPCODE_ADD:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = a[0] + b[0];
+ result[1] = a[1] + b[1];
+ result[2] = a[2] + b[2];
+ result[3] = a[3] + b[3];
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_CMP:
+ /* FINISHME: We could also optimize CMP instructions where the first
+ * FINISHME: source is a constant that is either all < 0.0 or all
+ * FINISHME: >= 0.0.
+ */
+ if (src_regs_are_constant(inst, 3)) {
+ float a[4];
+ float b[4];
+ float c[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+ get_value(prog, &inst->SrcReg[2], c);
+
+ result[0] = a[0] < 0.0f ? b[0] : c[0];
+ result[1] = a[1] < 0.0f ? b[1] : c[1];
+ result[2] = a[2] < 0.0f ? b[2] : c[2];
+ result[3] = a[3] < 0.0f ? b[3] : c[3];
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+ inst->SrcReg[2].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[2].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_DP2:
+ case OPCODE_DP3:
+ case OPCODE_DP4:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result;
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ /* It seems like a loop could be used here, but we cleverly put
+ * DP2A between DP2 and DP3. Subtracting DP2 (or similar) from
+ * the opcode results in various failures of the loop control.
+ */
+ result = (a[0] * b[0]) + (a[1] * b[1]);
+
+ if (inst->Opcode >= OPCODE_DP3)
+ result += a[2] * b[2];
+
+ if (inst->Opcode == OPCODE_DP4)
+ result += a[3] * b[3];
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_float(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_MUL:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = a[0] * b[0];
+ result[1] = a[1] * b[1];
+ result[2] = a[2] * b[2];
+ result[3] = a[3] * b[3];
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_SEQ:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = (a[0] == b[0]) ? 1.0f : 0.0f;
+ result[1] = (a[1] == b[1]) ? 1.0f : 0.0f;
+ result[2] = (a[2] == b[2]) ? 1.0f : 0.0f;
+ result[3] = (a[3] == b[3]) ? 1.0f : 0.0f;
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ } else if (src_regs_are_same(&inst->SrcReg[0], &inst->SrcReg[1])) {
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_float(prog, 1.0f);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_SGE:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = (a[0] >= b[0]) ? 1.0f : 0.0f;
+ result[1] = (a[1] >= b[1]) ? 1.0f : 0.0f;
+ result[2] = (a[2] >= b[2]) ? 1.0f : 0.0f;
+ result[3] = (a[3] >= b[3]) ? 1.0f : 0.0f;
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ } else if (src_regs_are_same(&inst->SrcReg[0], &inst->SrcReg[1])) {
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_float(prog, 1.0f);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_SGT:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = (a[0] > b[0]) ? 1.0f : 0.0f;
+ result[1] = (a[1] > b[1]) ? 1.0f : 0.0f;
+ result[2] = (a[2] > b[2]) ? 1.0f : 0.0f;
+ result[3] = (a[3] > b[3]) ? 1.0f : 0.0f;
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ } else if (src_regs_are_same(&inst->SrcReg[0], &inst->SrcReg[1])) {
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_float(prog, 0.0f);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_SLE:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = (a[0] <= b[0]) ? 1.0f : 0.0f;
+ result[1] = (a[1] <= b[1]) ? 1.0f : 0.0f;
+ result[2] = (a[2] <= b[2]) ? 1.0f : 0.0f;
+ result[3] = (a[3] <= b[3]) ? 1.0f : 0.0f;
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ } else if (src_regs_are_same(&inst->SrcReg[0], &inst->SrcReg[1])) {
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_float(prog, 1.0f);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_SLT:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = (a[0] < b[0]) ? 1.0f : 0.0f;
+ result[1] = (a[1] < b[1]) ? 1.0f : 0.0f;
+ result[2] = (a[2] < b[2]) ? 1.0f : 0.0f;
+ result[3] = (a[3] < b[3]) ? 1.0f : 0.0f;
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ } else if (src_regs_are_same(&inst->SrcReg[0], &inst->SrcReg[1])) {
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_float(prog, 0.0f);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ case OPCODE_SNE:
+ if (src_regs_are_constant(inst, 2)) {
+ float a[4];
+ float b[4];
+ float result[4];
+
+ get_value(prog, &inst->SrcReg[0], a);
+ get_value(prog, &inst->SrcReg[1], b);
+
+ result[0] = (a[0] != b[0]) ? 1.0f : 0.0f;
+ result[1] = (a[1] != b[1]) ? 1.0f : 0.0f;
+ result[2] = (a[2] != b[2]) ? 1.0f : 0.0f;
+ result[3] = (a[3] != b[3]) ? 1.0f : 0.0f;
+
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_vec4(prog, result);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ } else if (src_regs_are_same(&inst->SrcReg[0], &inst->SrcReg[1])) {
+ inst->Opcode = OPCODE_MOV;
+ inst->SrcReg[0] = src_reg_for_float(prog, 0.0f);
+
+ inst->SrcReg[1].File = PROGRAM_UNDEFINED;
+ inst->SrcReg[1].Swizzle = SWIZZLE_NOOP;
+
+ progress = true;
+ }
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ return progress;
+}
diff --git a/mesalib/src/mesa/program/prog_optimize.c b/mesalib/src/mesa/program/prog_optimize.c
index 70e2d85eb..1fe1c9add 100644
--- a/mesalib/src/mesa/program/prog_optimize.c
+++ b/mesalib/src/mesa/program/prog_optimize.c
@@ -1358,6 +1358,8 @@ _mesa_optimize_program(struct gl_context *ctx, struct gl_program *program)
any_change = GL_TRUE;
if (_mesa_remove_dead_code_local(program))
any_change = GL_TRUE;
+
+ any_change = _mesa_constant_fold(program) || any_change;
_mesa_reallocate_registers(program);
} while (any_change);
}
diff --git a/mesalib/src/mesa/program/prog_optimize.h b/mesalib/src/mesa/program/prog_optimize.h
index 8dc58ee52..9854fb7a4 100644
--- a/mesalib/src/mesa/program/prog_optimize.h
+++ b/mesalib/src/mesa/program/prog_optimize.h
@@ -1,47 +1,50 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.5
- *
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, 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
- * VMWARE 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 PROG_OPT_H
-#define PROG_OPT_H
-
-
-#include "main/config.h"
-#include "main/glheader.h"
-
-
-struct gl_context;
-struct gl_program;
-struct prog_instruction;
-
-
-extern GLboolean
-_mesa_find_temp_intervals(const struct prog_instruction *instructions,
- GLuint numInstructions,
- GLint intBegin[MAX_PROGRAM_TEMPS],
- GLint intEnd[MAX_PROGRAM_TEMPS]);
-
-extern void
-_mesa_optimize_program(struct gl_context *ctx, struct gl_program *program);
-
-#endif
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.5
+ *
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, 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
+ * VMWARE 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 PROG_OPT_H
+#define PROG_OPT_H
+
+
+#include "main/config.h"
+#include "main/glheader.h"
+
+
+struct gl_context;
+struct gl_program;
+struct prog_instruction;
+
+
+extern GLboolean
+_mesa_find_temp_intervals(const struct prog_instruction *instructions,
+ GLuint numInstructions,
+ GLint intBegin[MAX_PROGRAM_TEMPS],
+ GLint intEnd[MAX_PROGRAM_TEMPS]);
+
+extern void
+_mesa_optimize_program(struct gl_context *ctx, struct gl_program *program);
+
+extern GLboolean
+_mesa_constant_fold(struct gl_program *prog);
+
+#endif
diff --git a/mesalib/src/mesa/program/register_allocate.c b/mesalib/src/mesa/program/register_allocate.c
index 095d53796..a41a6ad6d 100644
--- a/mesalib/src/mesa/program/register_allocate.c
+++ b/mesalib/src/mesa/program/register_allocate.c
@@ -200,6 +200,27 @@ ra_add_reg_conflict(struct ra_regs *regs, unsigned int r1, unsigned int r2)
}
}
+/**
+ * Adds a conflict between base_reg and reg, and also between reg and
+ * anything that base_reg conflicts with.
+ *
+ * This can simplify code for setting up multiple register classes
+ * which are aggregates of some base hardware registers, compared to
+ * explicitly using ra_add_reg_conflict.
+ */
+void
+ra_add_transitive_reg_conflict(struct ra_regs *regs,
+ unsigned int base_reg, unsigned int reg)
+{
+ int i;
+
+ ra_add_reg_conflict(regs, reg, base_reg);
+
+ for (i = 0; i < regs->regs[base_reg].num_conflicts; i++) {
+ ra_add_reg_conflict(regs, reg, regs->regs[base_reg].conflict_list[i]);
+ }
+}
+
unsigned int
ra_alloc_reg_class(struct ra_regs *regs)
{
diff --git a/mesalib/src/mesa/program/register_allocate.h b/mesalib/src/mesa/program/register_allocate.h
index 1345debd0..2d5a630bf 100644
--- a/mesalib/src/mesa/program/register_allocate.h
+++ b/mesalib/src/mesa/program/register_allocate.h
@@ -40,6 +40,8 @@ struct ra_regs *ra_alloc_reg_set(unsigned int count);
unsigned int ra_alloc_reg_class(struct ra_regs *regs);
void ra_add_reg_conflict(struct ra_regs *regs,
unsigned int r1, unsigned int r2);
+void ra_add_transitive_reg_conflict(struct ra_regs *regs,
+ unsigned int base_reg, unsigned int reg);
void ra_class_add_reg(struct ra_regs *regs, unsigned int c, unsigned int reg);
void ra_set_finalize(struct ra_regs *regs);
/** @} */
diff --git a/mesalib/src/mesa/sources.mak b/mesalib/src/mesa/sources.mak
index 9c7a8c38c..e0548178e 100644
--- a/mesalib/src/mesa/sources.mak
+++ b/mesalib/src/mesa/sources.mak
@@ -251,6 +251,7 @@ PROGRAM_SOURCES = \
program/prog_instruction.c \
program/prog_noise.c \
program/prog_optimize.c \
+ program/prog_opt_constant_fold.c \
program/prog_parameter.c \
program/prog_parameter_layout.c \
program/prog_print.c \
diff --git a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c
index 331defb52..59c59e113 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_bufferobjects.c
@@ -93,7 +93,6 @@ st_bufferobj_free(struct gl_context *ctx, struct gl_buffer_object *obj)
*/
static void
st_bufferobj_subdata(struct gl_context *ctx,
- GLenum target,
GLintptrARB offset,
GLsizeiptrARB size,
const GLvoid * data, struct gl_buffer_object *obj)
@@ -133,7 +132,6 @@ st_bufferobj_subdata(struct gl_context *ctx,
*/
static void
st_bufferobj_get_subdata(struct gl_context *ctx,
- GLenum target,
GLintptrARB offset,
GLsizeiptrARB size,
GLvoid * data, struct gl_buffer_object *obj)
@@ -238,52 +236,10 @@ static long st_bufferobj_zero_length = 0;
/**
- * Called via glMapBufferARB().
- */
-static void *
-st_bufferobj_map(struct gl_context *ctx, GLenum target, GLenum access,
- struct gl_buffer_object *obj)
-{
- struct st_buffer_object *st_obj = st_buffer_object(obj);
- uint flags;
-
- switch (access) {
- case GL_WRITE_ONLY:
- flags = PIPE_TRANSFER_WRITE;
- break;
- case GL_READ_ONLY:
- flags = PIPE_TRANSFER_READ;
- break;
- case GL_READ_WRITE:
- default:
- flags = PIPE_TRANSFER_READ_WRITE;
- break;
- }
-
- /* Handle zero-size buffers here rather than in drivers */
- if (obj->Size == 0) {
- obj->Pointer = &st_bufferobj_zero_length;
- }
- else {
- obj->Pointer = pipe_buffer_map(st_context(ctx)->pipe,
- st_obj->buffer,
- flags,
- &st_obj->transfer);
- }
-
- if (obj->Pointer) {
- obj->Offset = 0;
- obj->Length = obj->Size;
- }
- return obj->Pointer;
-}
-
-
-/**
* Called via glMapBufferRange().
*/
static void *
-st_bufferobj_map_range(struct gl_context *ctx, GLenum target,
+st_bufferobj_map_range(struct gl_context *ctx,
GLintptr offset, GLsizeiptr length, GLbitfield access,
struct gl_buffer_object *obj)
{
@@ -353,7 +309,7 @@ st_bufferobj_map_range(struct gl_context *ctx, GLenum target,
static void
-st_bufferobj_flush_mapped_range(struct gl_context *ctx, GLenum target,
+st_bufferobj_flush_mapped_range(struct gl_context *ctx,
GLintptr offset, GLsizeiptr length,
struct gl_buffer_object *obj)
{
@@ -378,7 +334,7 @@ st_bufferobj_flush_mapped_range(struct gl_context *ctx, GLenum target,
* Called via glUnmapBufferARB().
*/
static GLboolean
-st_bufferobj_unmap(struct gl_context *ctx, GLenum target, struct gl_buffer_object *obj)
+st_bufferobj_unmap(struct gl_context *ctx, struct gl_buffer_object *obj)
{
struct pipe_context *pipe = st_context(ctx)->pipe;
struct st_buffer_object *st_obj = st_buffer_object(obj);
@@ -444,7 +400,6 @@ st_init_bufferobject_functions(struct dd_function_table *functions)
functions->BufferData = st_bufferobj_data;
functions->BufferSubData = st_bufferobj_subdata;
functions->GetBufferSubData = st_bufferobj_get_subdata;
- functions->MapBuffer = st_bufferobj_map;
functions->MapBufferRange = st_bufferobj_map_range;
functions->FlushMappedBufferRange = st_bufferobj_flush_mapped_range;
functions->UnmapBuffer = st_bufferobj_unmap;
diff --git a/mesalib/src/mesa/state_tracker/st_cb_texture.c b/mesalib/src/mesa/state_tracker/st_cb_texture.c
index 7f6ffee5e..82a1079a2 100644
--- a/mesalib/src/mesa/state_tracker/st_cb_texture.c
+++ b/mesalib/src/mesa/state_tracker/st_cb_texture.c
@@ -344,7 +344,7 @@ guess_and_alloc_texture(struct st_context *st,
stImage->base.Width2,
stImage->base.Height2,
stImage->base.Depth2,
- stImage->level,
+ stImage->base.Level,
&width, &height, &depth)) {
/* we can't determine the image size at level=0 */
stObj->width0 = stObj->height0 = stObj->depth0 = 0;
@@ -367,7 +367,7 @@ 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 == 0) {
+ stImage->base.Level == 0) {
/* only alloc space for a single mipmap level */
lastLevel = 0;
}
@@ -506,8 +506,8 @@ st_TexImage(struct gl_context * ctx,
assert(texImage->Depth == depth);
}
- stImage->face = _mesa_tex_target_to_face(target);
- stImage->level = level;
+ stImage->base.Face = _mesa_tex_target_to_face(target);
+ stImage->base.Level = level;
_mesa_set_fetch_functions(texImage, dims);
@@ -529,7 +529,7 @@ st_TexImage(struct gl_context * ctx,
if (stObj->pt) {
if (level > (GLint) stObj->pt->last_level ||
!st_texture_match_image(stObj->pt, &stImage->base,
- stImage->face, stImage->level)) {
+ stImage->base.Face, stImage->base.Level)) {
DBG("release it\n");
pipe_resource_reference(&stObj->pt, NULL);
assert(!stObj->pt);
@@ -563,7 +563,7 @@ st_TexImage(struct gl_context * ctx,
*/
if (stObj->pt &&
st_texture_match_image(stObj->pt, &stImage->base,
- stImage->face, stImage->level)) {
+ stImage->base.Face, stImage->base.Level)) {
pipe_resource_reference(&stImage->pt, stObj->pt);
assert(stImage->pt);
@@ -1501,8 +1501,8 @@ st_copy_texsubimage(struct gl_context *ctx,
pipe->resource_copy_region(pipe,
/* dest */
stImage->pt,
- stImage->level,
- destX, destY, destZ + stImage->face,
+ stImage->base.Level,
+ destX, destY, destZ + stImage->base.Face,
/* src */
strb->texture,
strb->surface->u.tex.level,
@@ -1524,9 +1524,9 @@ st_copy_texsubimage(struct gl_context *ctx,
memset(&surf_tmpl, 0, sizeof(surf_tmpl));
surf_tmpl.format = util_format_linear(stImage->pt->format);
surf_tmpl.usage = PIPE_BIND_RENDER_TARGET;
- surf_tmpl.u.tex.level = stImage->level;
- surf_tmpl.u.tex.first_layer = stImage->face + destZ;
- surf_tmpl.u.tex.last_layer = stImage->face + destZ;
+ surf_tmpl.u.tex.level = stImage->base.Level;
+ surf_tmpl.u.tex.first_layer = stImage->base.Face + destZ;
+ surf_tmpl.u.tex.last_layer = stImage->base.Face + destZ;
dest_surface = pipe->create_surface(pipe, stImage->pt,
&surf_tmpl);
@@ -1629,7 +1629,7 @@ copy_image_data_to_texture(struct st_context *st,
/* debug checks */
{
const struct gl_texture_image *dstImage =
- stObj->base.Image[stImage->face][dstLevel];
+ stObj->base.Image[stImage->base.Face][dstLevel];
assert(dstImage);
assert(dstImage->Width == stImage->base.Width);
assert(dstImage->Height == stImage->base.Height);
@@ -1641,15 +1641,15 @@ copy_image_data_to_texture(struct st_context *st,
*/
st_texture_image_copy(st->pipe,
stObj->pt, dstLevel, /* dest texture, level */
- stImage->pt, stImage->level, /* src texture, level */
- stImage->face);
+ stImage->pt, stImage->base.Level, /* src texture, level */
+ stImage->base.Face);
pipe_resource_reference(&stImage->pt, NULL);
}
else if (stImage->base.Data) {
st_texture_image_data(st,
stObj->pt,
- stImage->face,
+ stImage->base.Face,
dstLevel,
stImage->base.Data,
stImage->base.RowStride *
diff --git a/mesalib/src/mesa/state_tracker/st_gen_mipmap.c b/mesalib/src/mesa/state_tracker/st_gen_mipmap.c
index b0911294a..82ca4af7f 100644
--- a/mesalib/src/mesa/state_tracker/st_gen_mipmap.c
+++ b/mesalib/src/mesa/state_tracker/st_gen_mipmap.c
@@ -453,7 +453,6 @@ st_generate_mipmap(struct gl_context *ctx, GLenum target,
srcImage->TexFormat);
stImage = st_texture_image(dstImage);
- stImage->level = dstLevel;
pipe_resource_reference(&stImage->pt, pt);
}
diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
index aef23e7d2..22660830a 100644
--- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
+++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
@@ -295,6 +295,7 @@ public:
bool indirect_addr_consts;
int glsl_version;
+ bool native_integers;
variable_storage *find_variable_storage(ir_variable *var);
@@ -372,11 +373,11 @@ public:
/**
* Emit the correct dot-product instruction for the type of arguments
*/
- void emit_dp(ir_instruction *ir,
- st_dst_reg dst,
- st_src_reg src0,
- st_src_reg src1,
- unsigned elements);
+ glsl_to_tgsi_instruction *emit_dp(ir_instruction *ir,
+ st_dst_reg dst,
+ st_src_reg src0,
+ st_src_reg src1,
+ unsigned elements);
void emit_scalar(ir_instruction *ir, unsigned op,
st_dst_reg dst, st_src_reg src0);
@@ -389,9 +390,11 @@ public:
void emit_scs(ir_instruction *ir, unsigned op,
st_dst_reg dst, const st_src_reg &src);
- GLboolean try_emit_mad(ir_expression *ir,
- int mul_operand);
- GLboolean try_emit_sat(ir_expression *ir);
+ bool try_emit_mad(ir_expression *ir,
+ int mul_operand);
+ bool try_emit_mad_for_and_not(ir_expression *ir,
+ int mul_operand);
+ bool try_emit_sat(ir_expression *ir);
void emit_swz(ir_expression *ir);
@@ -600,7 +603,7 @@ glsl_to_tgsi_visitor::get_opcode(ir_instruction *ir, unsigned op,
if (src0.type == GLSL_TYPE_FLOAT || src1.type == GLSL_TYPE_FLOAT)
type = GLSL_TYPE_FLOAT;
- else if (glsl_version >= 130)
+ else if (native_integers)
type = src0.type;
#define case4(c, f, i, u) \
@@ -641,7 +644,7 @@ glsl_to_tgsi_visitor::get_opcode(ir_instruction *ir, unsigned op,
return op;
}
-void
+glsl_to_tgsi_instruction *
glsl_to_tgsi_visitor::emit_dp(ir_instruction *ir,
st_dst_reg dst, st_src_reg src0, st_src_reg src1,
unsigned elements)
@@ -650,7 +653,7 @@ glsl_to_tgsi_visitor::emit_dp(ir_instruction *ir,
TGSI_OPCODE_DP2, TGSI_OPCODE_DP3, TGSI_OPCODE_DP4
};
- emit(ir, dot_opcodes[elements - 2], dst, src0, src1);
+ return emit(ir, dot_opcodes[elements - 2], dst, src0, src1);
}
/**
@@ -863,7 +866,7 @@ glsl_to_tgsi_visitor::add_constant(gl_register_file file,
}
}
-struct st_src_reg
+st_src_reg
glsl_to_tgsi_visitor::st_src_reg_for_float(float val)
{
st_src_reg src(PROGRAM_IMMEDIATE, -1, GLSL_TYPE_FLOAT);
@@ -875,13 +878,13 @@ glsl_to_tgsi_visitor::st_src_reg_for_float(float val)
return src;
}
-struct st_src_reg
+st_src_reg
glsl_to_tgsi_visitor::st_src_reg_for_int(int val)
{
st_src_reg src(PROGRAM_IMMEDIATE, -1, GLSL_TYPE_INT);
union gl_constant_value uval;
- assert(glsl_version >= 130);
+ assert(native_integers);
uval.i = val;
src.index = add_constant(src.file, &uval, 1, GL_INT, &src.swizzle);
@@ -889,10 +892,10 @@ glsl_to_tgsi_visitor::st_src_reg_for_int(int val)
return src;
}
-struct st_src_reg
+st_src_reg
glsl_to_tgsi_visitor::st_src_reg_for_type(int type, int val)
{
- if (glsl_version >= 130)
+ if (native_integers)
return type == GLSL_TYPE_FLOAT ? st_src_reg_for_float(val) :
st_src_reg_for_int(val);
else
@@ -950,7 +953,7 @@ glsl_to_tgsi_visitor::get_temp(const glsl_type *type)
{
st_src_reg src;
- src.type = glsl_version >= 130 ? type->base_type : GLSL_TYPE_FLOAT;
+ src.type = native_integers ? type->base_type : GLSL_TYPE_FLOAT;
src.file = PROGRAM_TEMPORARY;
src.index = next_temp;
src.reladdr = NULL;
@@ -1032,7 +1035,7 @@ glsl_to_tgsi_visitor::visit(ir_variable *ir)
}
}
- struct variable_storage *storage;
+ variable_storage *storage;
st_dst_reg dst;
if (i == ir->num_state_slots) {
/* We'll set the index later. */
@@ -1053,7 +1056,7 @@ glsl_to_tgsi_visitor::visit(ir_variable *ir)
this->next_temp += type_size(ir->type);
dst = st_dst_reg(st_src_reg(PROGRAM_TEMPORARY, storage->index,
- glsl_version >= 130 ? ir->type->base_type : GLSL_TYPE_FLOAT));
+ native_integers ? ir->type->base_type : GLSL_TYPE_FLOAT));
}
@@ -1069,7 +1072,7 @@ glsl_to_tgsi_visitor::visit(ir_variable *ir)
}
} else {
st_src_reg src(PROGRAM_STATE_VAR, index,
- glsl_version >= 130 ? ir->type->base_type : GLSL_TYPE_FLOAT);
+ native_integers ? ir->type->base_type : GLSL_TYPE_FLOAT);
src.swizzle = slots[i].swizzle;
emit(ir, TGSI_OPCODE_MOV, dst, src);
/* even a float takes up a whole vec4 reg in a struct/array. */
@@ -1183,7 +1186,7 @@ glsl_to_tgsi_visitor::visit(ir_function *ir)
}
}
-GLboolean
+bool
glsl_to_tgsi_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
{
int nonmul_operand = 1 - mul_operand;
@@ -1209,7 +1212,47 @@ glsl_to_tgsi_visitor::try_emit_mad(ir_expression *ir, int mul_operand)
return true;
}
-GLboolean
+/**
+ * Emit MAD(a, -b, a) instead of AND(a, NOT(b))
+ *
+ * The logic values are 1.0 for true and 0.0 for false. Logical-and is
+ * implemented using multiplication, and logical-or is implemented using
+ * addition. Logical-not can be implemented as (true - x), or (1.0 - x).
+ * As result, the logical expression (a & !b) can be rewritten as:
+ *
+ * - a * !b
+ * - a * (1 - b)
+ * - (a * 1) - (a * b)
+ * - a + -(a * b)
+ * - a + (a * -b)
+ *
+ * This final expression can be implemented as a single MAD(a, -b, a)
+ * instruction.
+ */
+bool
+glsl_to_tgsi_visitor::try_emit_mad_for_and_not(ir_expression *ir, int try_operand)
+{
+ const int other_operand = 1 - try_operand;
+ st_src_reg a, b;
+
+ ir_expression *expr = ir->operands[try_operand]->as_expression();
+ if (!expr || expr->operation != ir_unop_logic_not)
+ return false;
+
+ ir->operands[other_operand]->accept(this);
+ a = this->result;
+ expr->operands[0]->accept(this);
+ b = this->result;
+
+ b.negate = ~b.negate;
+
+ this->result = get_temp(ir->type);
+ emit(ir, TGSI_OPCODE_MAD, st_dst_reg(this->result), a, b, a);
+
+ return true;
+}
+
+bool
glsl_to_tgsi_visitor::try_emit_sat(ir_expression *ir)
{
/* Saturates were only introduced to vertex programs in
@@ -1290,6 +1333,16 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
if (try_emit_mad(ir, 0))
return;
}
+
+ /* Quick peephole: Emit OPCODE_MAD(-a, -b, a) instead of AND(a, NOT(b))
+ */
+ if (ir->operation == ir_binop_logic_and) {
+ if (try_emit_mad_for_and_not(ir, 1))
+ return;
+ if (try_emit_mad_for_and_not(ir, 0))
+ return;
+ }
+
if (try_emit_sat(ir))
return;
@@ -1335,7 +1388,17 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
switch (ir->operation) {
case ir_unop_logic_not:
- emit(ir, TGSI_OPCODE_SEQ, result_dst, op[0], st_src_reg_for_type(result_dst.type, 0));
+ if (result_dst.type != GLSL_TYPE_FLOAT)
+ emit(ir, TGSI_OPCODE_SEQ, result_dst, op[0], st_src_reg_for_type(result_dst.type, 0));
+ else {
+ /* Previously 'SEQ dst, src, 0.0' was used for this. However, many
+ * older GPUs implement SEQ using multiple instructions (i915 uses two
+ * SGE instructions and a MUL instruction). Since our logic values are
+ * 0.0 and 1.0, 1-x also implements !x.
+ */
+ op[0].negate = ~op[0].negate;
+ emit(ir, TGSI_OPCODE_ADD, result_dst, op[0], st_src_reg_for_float(1.0));
+ }
break;
case ir_unop_neg:
assert(result_dst.type == GLSL_TYPE_FLOAT || result_dst.type == GLSL_TYPE_INT);
@@ -1444,13 +1507,31 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
/* "==" operator producing a scalar boolean. */
if (ir->operands[0]->type->is_vector() ||
ir->operands[1]->type->is_vector()) {
- st_src_reg temp = get_temp(glsl_version >= 130 ?
+ st_src_reg temp = get_temp(native_integers ?
glsl_type::get_instance(ir->operands[0]->type->base_type, 4, 1) :
glsl_type::vec4_type);
assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT);
emit(ir, TGSI_OPCODE_SNE, st_dst_reg(temp), op[0], op[1]);
+
+ /* After the dot-product, the value will be an integer on the
+ * range [0,4]. Zero becomes 1.0, and positive values become zero.
+ */
emit_dp(ir, result_dst, temp, temp, vector_elements);
- emit(ir, TGSI_OPCODE_SEQ, result_dst, result_src, st_src_reg_for_float(0.0));
+
+ if (result_dst.type == GLSL_TYPE_FLOAT) {
+ /* Negating the result of the dot-product gives values on the range
+ * [-4, 0]. Zero becomes 1.0, and negative values become zero.
+ * This is achieved using SGE.
+ */
+ st_src_reg sge_src = result_src;
+ sge_src.negate = ~sge_src.negate;
+ emit(ir, TGSI_OPCODE_SGE, result_dst, sge_src, st_src_reg_for_float(0.0));
+ } else {
+ /* The TGSI negate flag doesn't work for integers, so use SEQ 0
+ * instead.
+ */
+ emit(ir, TGSI_OPCODE_SEQ, result_dst, result_src, st_src_reg_for_int(0));
+ }
} else {
emit(ir, TGSI_OPCODE_SEQ, result_dst, op[0], op[1]);
}
@@ -1459,34 +1540,102 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
/* "!=" operator producing a scalar boolean. */
if (ir->operands[0]->type->is_vector() ||
ir->operands[1]->type->is_vector()) {
- st_src_reg temp = get_temp(glsl_version >= 130 ?
+ st_src_reg temp = get_temp(native_integers ?
glsl_type::get_instance(ir->operands[0]->type->base_type, 4, 1) :
glsl_type::vec4_type);
assert(ir->operands[0]->type->base_type == GLSL_TYPE_FLOAT);
emit(ir, TGSI_OPCODE_SNE, st_dst_reg(temp), op[0], op[1]);
- emit_dp(ir, result_dst, temp, temp, vector_elements);
- emit(ir, TGSI_OPCODE_SNE, result_dst, result_src, st_src_reg_for_float(0.0));
+
+ /* After the dot-product, the value will be an integer on the
+ * range [0,4]. Zero stays zero, and positive values become 1.0.
+ */
+ glsl_to_tgsi_instruction *const dp =
+ emit_dp(ir, result_dst, temp, temp, vector_elements);
+ if (this->prog->Target == GL_FRAGMENT_PROGRAM_ARB &&
+ result_dst.type == GLSL_TYPE_FLOAT) {
+ /* The clamping to [0,1] can be done for free in the fragment
+ * shader with a saturate.
+ */
+ dp->saturate = true;
+ } else if (result_dst.type == GLSL_TYPE_FLOAT) {
+ /* Negating the result of the dot-product gives values on the range
+ * [-4, 0]. Zero stays zero, and negative values become 1.0. This
+ * achieved using SLT.
+ */
+ st_src_reg slt_src = result_src;
+ slt_src.negate = ~slt_src.negate;
+ emit(ir, TGSI_OPCODE_SLT, result_dst, slt_src, st_src_reg_for_float(0.0));
+ } else {
+ emit(ir, TGSI_OPCODE_SNE, result_dst, result_src, st_src_reg_for_int(0));
+ }
} else {
emit(ir, TGSI_OPCODE_SNE, result_dst, op[0], op[1]);
}
break;
- case ir_unop_any:
+ case ir_unop_any: {
assert(ir->operands[0]->type->is_vector());
- emit_dp(ir, result_dst, op[0], op[0],
- ir->operands[0]->type->vector_elements);
- emit(ir, TGSI_OPCODE_SNE, result_dst, result_src, st_src_reg_for_float(0.0));
+
+ /* After the dot-product, the value will be an integer on the
+ * range [0,4]. Zero stays zero, and positive values become 1.0.
+ */
+ glsl_to_tgsi_instruction *const dp =
+ emit_dp(ir, result_dst, op[0], op[0],
+ ir->operands[0]->type->vector_elements);
+ if (this->prog->Target == GL_FRAGMENT_PROGRAM_ARB &&
+ result_dst.type == GLSL_TYPE_FLOAT) {
+ /* The clamping to [0,1] can be done for free in the fragment
+ * shader with a saturate.
+ */
+ dp->saturate = true;
+ } else if (result_dst.type == GLSL_TYPE_FLOAT) {
+ /* Negating the result of the dot-product gives values on the range
+ * [-4, 0]. Zero stays zero, and negative values become 1.0. This
+ * is achieved using SLT.
+ */
+ st_src_reg slt_src = result_src;
+ slt_src.negate = ~slt_src.negate;
+ emit(ir, TGSI_OPCODE_SLT, result_dst, slt_src, st_src_reg_for_float(0.0));
+ }
+ else {
+ /* Use SNE 0 if integers are being used as boolean values. */
+ emit(ir, TGSI_OPCODE_SNE, result_dst, result_src, st_src_reg_for_int(0));
+ }
break;
+ }
case ir_binop_logic_xor:
emit(ir, TGSI_OPCODE_SNE, result_dst, op[0], op[1]);
break;
- case ir_binop_logic_or:
- /* This could be a saturated add and skip the SNE. */
- emit(ir, TGSI_OPCODE_ADD, result_dst, op[0], op[1]);
- emit(ir, TGSI_OPCODE_SNE, result_dst, result_src, st_src_reg_for_float(0.0));
+ case ir_binop_logic_or: {
+ /* After the addition, the value will be an integer on the
+ * range [0,2]. Zero stays zero, and positive values become 1.0.
+ */
+ glsl_to_tgsi_instruction *add =
+ emit(ir, TGSI_OPCODE_ADD, result_dst, op[0], op[1]);
+ if (this->prog->Target == GL_FRAGMENT_PROGRAM_ARB &&
+ result_dst.type == GLSL_TYPE_FLOAT) {
+ /* The clamping to [0,1] can be done for free in the fragment
+ * shader with a saturate if floats are being used as boolean values.
+ */
+ add->saturate = true;
+ } else if (result_dst.type == GLSL_TYPE_FLOAT) {
+ /* Negating the result of the addition gives values on the range
+ * [-2, 0]. Zero stays zero, and negative values become 1.0. This
+ * is achieved using SLT.
+ */
+ st_src_reg slt_src = result_src;
+ slt_src.negate = ~slt_src.negate;
+ emit(ir, TGSI_OPCODE_SLT, result_dst, slt_src, st_src_reg_for_float(0.0));
+ } else {
+ /* Use an SNE on the result of the addition. Zero stays zero,
+ * 1 stays 1, and 2 becomes 1.
+ */
+ emit(ir, TGSI_OPCODE_SNE, result_dst, result_src, st_src_reg_for_int(0));
+ }
break;
+ }
case ir_binop_logic_and:
/* the bool args are stored as float 0.0 or 1.0, so "mul" gives us "and". */
@@ -1514,7 +1663,7 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
break;
case ir_unop_i2f:
case ir_unop_b2f:
- if (glsl_version >= 130) {
+ if (native_integers) {
emit(ir, TGSI_OPCODE_I2F, result_dst, op[0]);
break;
}
@@ -1526,7 +1675,7 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
result_src = op[0];
break;
case ir_unop_f2i:
- if (glsl_version >= 130)
+ if (native_integers)
emit(ir, TGSI_OPCODE_F2I, result_dst, op[0]);
else
emit(ir, TGSI_OPCODE_TRUNC, result_dst, op[0]);
@@ -1567,7 +1716,7 @@ glsl_to_tgsi_visitor::visit(ir_expression *ir)
break;
}
case ir_unop_u2f:
- if (glsl_version >= 130) {
+ if (native_integers) {
emit(ir, TGSI_OPCODE_U2F, result_dst, op[0]);
break;
}
@@ -1719,7 +1868,7 @@ glsl_to_tgsi_visitor::visit(ir_dereference_variable *ir)
}
this->result = st_src_reg(entry->file, entry->index, var->type);
- if (glsl_version <= 120)
+ if (!native_integers)
this->result.type = GLSL_TYPE_FLOAT;
}
@@ -2109,27 +2258,27 @@ glsl_to_tgsi_visitor::visit(ir_constant *ir)
}
break;
case GLSL_TYPE_UINT:
- gl_type = glsl_version >= 130 ? GL_UNSIGNED_INT : GL_FLOAT;
+ gl_type = native_integers ? GL_UNSIGNED_INT : GL_FLOAT;
for (i = 0; i < ir->type->vector_elements; i++) {
- if (glsl_version >= 130)
+ if (native_integers)
values[i].u = ir->value.u[i];
else
values[i].f = ir->value.u[i];
}
break;
case GLSL_TYPE_INT:
- gl_type = glsl_version >= 130 ? GL_INT : GL_FLOAT;
+ gl_type = native_integers ? GL_INT : GL_FLOAT;
for (i = 0; i < ir->type->vector_elements; i++) {
- if (glsl_version >= 130)
+ if (native_integers)
values[i].i = ir->value.i[i];
else
values[i].f = ir->value.i[i];
}
break;
case GLSL_TYPE_BOOL:
- gl_type = glsl_version >= 130 ? GL_BOOL : GL_FLOAT;
+ gl_type = native_integers ? GL_BOOL : GL_FLOAT;
for (i = 0; i < ir->type->vector_elements; i++) {
- if (glsl_version >= 130)
+ if (native_integers)
values[i].b = ir->value.b[i];
else
values[i].f = ir->value.b[i];
@@ -2277,16 +2426,18 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
glsl_to_tgsi_instruction *inst = NULL;
unsigned opcode = TGSI_OPCODE_NOP;
- ir->coordinate->accept(this);
+ if (ir->coordinate) {
+ ir->coordinate->accept(this);
- /* Put our coords in a temp. We'll need to modify them for shadow,
- * projection, or LOD, so the only case we'd use it as is is if
- * we're doing plain old texturing. The optimization passes on
- * glsl_to_tgsi_visitor should handle cleaning up our mess in that case.
- */
- coord = get_temp(glsl_type::vec4_type);
- coord_dst = st_dst_reg(coord);
- emit(ir, TGSI_OPCODE_MOV, coord_dst, this->result);
+ /* Put our coords in a temp. We'll need to modify them for shadow,
+ * projection, or LOD, so the only case we'd use it as is is if
+ * we're doing plain old texturing. The optimization passes on
+ * glsl_to_tgsi_visitor should handle cleaning up our mess in that case.
+ */
+ coord = get_temp(glsl_type::vec4_type);
+ coord_dst = st_dst_reg(coord);
+ emit(ir, TGSI_OPCODE_MOV, coord_dst, this->result);
+ }
if (ir->projector) {
ir->projector->accept(this);
@@ -2320,8 +2471,15 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
ir->lod_info.grad.dPdy->accept(this);
dy = this->result;
break;
- case ir_txf: /* TODO: use TGSI_OPCODE_TXF here */
- assert(!"GLSL 1.30 features unsupported");
+ case ir_txs:
+ opcode = TGSI_OPCODE_TXQ;
+ ir->lod_info.lod->accept(this);
+ lod_info = this->result;
+ break;
+ case ir_txf:
+ opcode = TGSI_OPCODE_TXF;
+ ir->lod_info.lod->accept(this);
+ lod_info = this->result;
break;
}
@@ -2385,7 +2543,8 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
coord_dst.writemask = WRITEMASK_XYZW;
}
- if (opcode == TGSI_OPCODE_TXL || opcode == TGSI_OPCODE_TXB) {
+ if (opcode == TGSI_OPCODE_TXL || opcode == TGSI_OPCODE_TXB ||
+ opcode == TGSI_OPCODE_TXF) {
/* TGSI stores LOD or LOD bias in the last channel of the coords. */
coord_dst.writemask = WRITEMASK_W;
emit(ir, TGSI_OPCODE_MOV, coord_dst, lod_info);
@@ -2394,6 +2553,8 @@ glsl_to_tgsi_visitor::visit(ir_texture *ir)
if (opcode == TGSI_OPCODE_TXD)
inst = emit(ir, opcode, result_dst, coord, dx, dy);
+ else if (opcode == TGSI_OPCODE_TXQ)
+ inst = emit(ir, opcode, result_dst, lod_info);
else
inst = emit(ir, opcode, result_dst, coord);
@@ -2802,36 +2963,6 @@ set_uniform_initializer(struct gl_context *ctx, void *mem_ctx,
}
}
-static void
-set_uniform_initializers(struct gl_context *ctx,
- struct gl_shader_program *shader_program)
-{
- void *mem_ctx = NULL;
-
- for (unsigned int i = 0; i < MESA_SHADER_TYPES; i++) {
- struct gl_shader *shader = shader_program->_LinkedShaders[i];
-
- if (shader == NULL)
- continue;
-
- foreach_iter(exec_list_iterator, iter, *shader->ir) {
- ir_instruction *ir = (ir_instruction *)iter.get();
- ir_variable *var = ir->as_variable();
-
- if (!var || var->mode != ir_var_uniform || !var->constant_value)
- continue;
-
- if (!mem_ctx)
- mem_ctx = ralloc_context(NULL);
-
- set_uniform_initializer(ctx, mem_ctx, shader_program, var->name,
- var->type, var->constant_value);
- }
- }
-
- ralloc_free(mem_ctx);
-}
-
/*
* Scan/rewrite program to remove reads of custom (output) registers.
* The passed type has to be either PROGRAM_OUTPUT or PROGRAM_VARYING
@@ -3443,7 +3574,7 @@ glsl_to_tgsi_visitor::eliminate_dead_code_advanced(void)
/* Continuing the block, clear any channels from the write array that
* are read by this instruction.
*/
- for (int i = 0; i < 4; i++) {
+ for (unsigned i = 0; i < Elements(inst->src); i++) {
if (inst->src[i].file == PROGRAM_TEMPORARY && inst->src[i].reladdr){
/* Any temporary might be read, so no dead code elimination
* across this instruction.
@@ -3611,6 +3742,7 @@ get_pixel_transfer_visitor(struct st_fragment_program *fp,
v->ctx = original->ctx;
v->prog = prog;
v->glsl_version = original->glsl_version;
+ v->native_integers = original->native_integers;
v->options = original->options;
v->next_temp = original->next_temp;
v->num_address_regs = original->num_address_regs;
@@ -3739,6 +3871,7 @@ get_bitmap_visitor(struct st_fragment_program *fp,
v->ctx = original->ctx;
v->prog = prog;
v->glsl_version = original->glsl_version;
+ v->native_integers = original->native_integers;
v->options = original->options;
v->next_temp = original->next_temp;
v->num_address_regs = original->num_address_regs;
@@ -4085,7 +4218,7 @@ translate_src(struct st_translate *t, const st_src_reg *src_reg)
static void
compile_tgsi_instruction(struct st_translate *t,
- const struct glsl_to_tgsi_instruction *inst)
+ const glsl_to_tgsi_instruction *inst)
{
struct ureg_program *ureg = t->ureg;
GLuint i;
@@ -4124,6 +4257,8 @@ compile_tgsi_instruction(struct st_translate *t,
case TGSI_OPCODE_TXD:
case TGSI_OPCODE_TXL:
case TGSI_OPCODE_TXP:
+ case TGSI_OPCODE_TXQ:
+ case TGSI_OPCODE_TXF:
src[num_src++] = t->samplers[inst->sampler];
ureg_tex_insn(ureg,
inst->op,
@@ -4674,6 +4809,7 @@ get_mesa_program(struct gl_context *ctx,
v->shader_program = shader_program;
v->options = options;
v->glsl_version = ctx->Const.GLSLVersion;
+ v->native_integers = ctx->Const.NativeIntegers;
add_uniforms_to_parameters_list(shader_program, shader, prog);
@@ -4924,53 +5060,4 @@ st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
return GL_TRUE;
}
-
-/**
- * Link a GLSL shader program. Called via glLinkProgram().
- */
-void
-st_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog)
-{
- unsigned int i;
-
- _mesa_clear_shader_program_data(ctx, prog);
-
- prog->LinkStatus = GL_TRUE;
-
- for (i = 0; i < prog->NumShaders; i++) {
- if (!prog->Shaders[i]->CompileStatus) {
- fail_link(prog, "linking with uncompiled shader");
- prog->LinkStatus = GL_FALSE;
- }
- }
-
- prog->Varying = _mesa_new_parameter_list();
- _mesa_reference_vertprog(ctx, &prog->VertexProgram, NULL);
- _mesa_reference_fragprog(ctx, &prog->FragmentProgram, NULL);
- _mesa_reference_geomprog(ctx, &prog->GeometryProgram, NULL);
-
- if (prog->LinkStatus) {
- link_shaders(ctx, prog);
- }
-
- if (prog->LinkStatus) {
- if (!ctx->Driver.LinkShader(ctx, prog)) {
- prog->LinkStatus = GL_FALSE;
- }
- }
-
- set_uniform_initializers(ctx, prog);
-
- if (ctx->Shader.Flags & GLSL_DUMP) {
- if (!prog->LinkStatus) {
- printf("GLSL shader program %d failed to link\n", prog->Name);
- }
-
- if (prog->InfoLog && prog->InfoLog[0] != 0) {
- printf("GLSL shader program %d info log:\n", prog->Name);
- printf("%s\n", prog->InfoLog);
- }
- }
-}
-
} /* extern "C" */
diff --git a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.h b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.h
index d87747178..fafe52e31 100644
--- a/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.h
+++ b/mesalib/src/mesa/state_tracker/st_glsl_to_tgsi.h
@@ -64,7 +64,6 @@ struct gl_shader *st_new_shader(struct gl_context *ctx, GLuint name, GLuint type
struct gl_shader_program *
st_new_shader_program(struct gl_context *ctx, GLuint name);
-void st_glsl_link_shader(struct gl_context *ctx, struct gl_shader_program *prog);
GLboolean st_link_shader(struct gl_context *ctx, struct gl_shader_program *prog);
#ifdef __cplusplus
diff --git a/mesalib/src/mesa/state_tracker/st_texture.c b/mesalib/src/mesa/state_tracker/st_texture.c
index 0e857fddc..232c286c1 100644
--- a/mesalib/src/mesa/state_tracker/st_texture.c
+++ b/mesalib/src/mesa/state_tracker/st_texture.c
@@ -221,8 +221,8 @@ st_texture_image_map(struct st_context *st, struct st_texture_image *stImage,
DBG("%s \n", __FUNCTION__);
- stImage->transfer = pipe_get_transfer(st->pipe, pt, stImage->level,
- stImage->face + zoffset,
+ stImage->transfer = pipe_get_transfer(st->pipe, pt, stImage->base.Level,
+ stImage->base.Face + zoffset,
usage, x, y, w, h);
if (stImage->transfer)
diff --git a/mesalib/src/mesa/state_tracker/st_texture.h b/mesalib/src/mesa/state_tracker/st_texture.h
index a84050f3b..fb1071fc3 100644
--- a/mesalib/src/mesa/state_tracker/st_texture.h
+++ b/mesalib/src/mesa/state_tracker/st_texture.h
@@ -45,11 +45,6 @@ struct st_texture_image
{
struct gl_texture_image base;
- /* These aren't stored in gl_texture_image
- */
- GLuint level;
- GLuint face;
-
/* If stImage->pt != NULL, image data is stored here.
* Else if stImage->base.Data != NULL, image is stored there.
* Else there is no image data.
diff --git a/mesalib/src/mesa/swrast/s_aatritemp.h b/mesalib/src/mesa/swrast/s_aatritemp.h
index 4136df3a7..77b3ae6ec 100644
--- a/mesalib/src/mesa/swrast/s_aatritemp.h
+++ b/mesalib/src/mesa/swrast/s_aatritemp.h
@@ -1,331 +1,343 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.0.3
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/*
- * Antialiased Triangle Rasterizer Template
- *
- * This file is #include'd to generate custom AA triangle rasterizers.
- * NOTE: this code hasn't been optimized yet. That'll come after it
- * works correctly.
- *
- * The following macros may be defined to indicate what auxillary information
- * must be copmuted across the triangle:
- * DO_Z - if defined, compute Z values
- * DO_ATTRIBS - if defined, compute texcoords, varying, etc.
- */
-
-/*void triangle( struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint pv )*/
-{
- const SWcontext *swrast = SWRAST_CONTEXT(ctx);
- const GLfloat *p0 = v0->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat *p1 = v1->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat *p2 = v2->attrib[FRAG_ATTRIB_WPOS];
- const SWvertex *vMin, *vMid, *vMax;
- GLint iyMin, iyMax;
- GLfloat yMin, yMax;
- GLboolean ltor;
- GLfloat majDx, majDy; /* major (i.e. long) edge dx and dy */
-
- SWspan span;
-
-#ifdef DO_Z
- GLfloat zPlane[4];
-#endif
- GLfloat rPlane[4], gPlane[4], bPlane[4], aPlane[4];
-#if defined(DO_ATTRIBS)
- GLfloat attrPlane[FRAG_ATTRIB_MAX][4][4];
- GLfloat wPlane[4]; /* win[3] */
-#endif
- GLfloat bf = SWRAST_CONTEXT(ctx)->_BackfaceCullSign;
-
- (void) swrast;
-
- INIT_SPAN(span, GL_POLYGON);
- span.arrayMask = SPAN_COVERAGE;
-
- /* determine bottom to top order of vertices */
- {
- GLfloat y0 = v0->attrib[FRAG_ATTRIB_WPOS][1];
- GLfloat y1 = v1->attrib[FRAG_ATTRIB_WPOS][1];
- GLfloat y2 = v2->attrib[FRAG_ATTRIB_WPOS][1];
- if (y0 <= y1) {
- if (y1 <= y2) {
- vMin = v0; vMid = v1; vMax = v2; /* y0<=y1<=y2 */
- }
- else if (y2 <= y0) {
- vMin = v2; vMid = v0; vMax = v1; /* y2<=y0<=y1 */
- }
- else {
- vMin = v0; vMid = v2; vMax = v1; bf = -bf; /* y0<=y2<=y1 */
- }
- }
- else {
- if (y0 <= y2) {
- vMin = v1; vMid = v0; vMax = v2; bf = -bf; /* y1<=y0<=y2 */
- }
- else if (y2 <= y1) {
- vMin = v2; vMid = v1; vMax = v0; bf = -bf; /* y2<=y1<=y0 */
- }
- else {
- vMin = v1; vMid = v2; vMax = v0; /* y1<=y2<=y0 */
- }
- }
- }
-
- majDx = vMax->attrib[FRAG_ATTRIB_WPOS][0] - vMin->attrib[FRAG_ATTRIB_WPOS][0];
- majDy = vMax->attrib[FRAG_ATTRIB_WPOS][1] - vMin->attrib[FRAG_ATTRIB_WPOS][1];
-
- /* front/back-face determination and cullling */
- {
- const GLfloat botDx = vMid->attrib[FRAG_ATTRIB_WPOS][0] - vMin->attrib[FRAG_ATTRIB_WPOS][0];
- const GLfloat botDy = vMid->attrib[FRAG_ATTRIB_WPOS][1] - vMin->attrib[FRAG_ATTRIB_WPOS][1];
- const GLfloat area = majDx * botDy - botDx * majDy;
- /* Do backface culling */
- if (area * bf < 0 || area == 0 || IS_INF_OR_NAN(area))
- return;
- ltor = (GLboolean) (area < 0.0F);
-
- span.facing = area * swrast->_BackfaceSign > 0.0F;
- }
-
- /* Plane equation setup:
- * We evaluate plane equations at window (x,y) coordinates in order
- * to compute color, Z, fog, texcoords, etc. This isn't terribly
- * efficient but it's easy and reliable.
- */
-#ifdef DO_Z
- compute_plane(p0, p1, p2, p0[2], p1[2], p2[2], zPlane);
- span.arrayMask |= SPAN_Z;
-#endif
- if (ctx->Light.ShadeModel == GL_SMOOTH) {
- compute_plane(p0, p1, p2, v0->color[RCOMP], v1->color[RCOMP], v2->color[RCOMP], rPlane);
- compute_plane(p0, p1, p2, v0->color[GCOMP], v1->color[GCOMP], v2->color[GCOMP], gPlane);
- compute_plane(p0, p1, p2, v0->color[BCOMP], v1->color[BCOMP], v2->color[BCOMP], bPlane);
- compute_plane(p0, p1, p2, v0->color[ACOMP], v1->color[ACOMP], v2->color[ACOMP], aPlane);
- }
- else {
- constant_plane(v2->color[RCOMP], rPlane);
- constant_plane(v2->color[GCOMP], gPlane);
- constant_plane(v2->color[BCOMP], bPlane);
- constant_plane(v2->color[ACOMP], aPlane);
- }
- span.arrayMask |= SPAN_RGBA;
-#if defined(DO_ATTRIBS)
- {
- const GLfloat invW0 = v0->attrib[FRAG_ATTRIB_WPOS][3];
- const GLfloat invW1 = v1->attrib[FRAG_ATTRIB_WPOS][3];
- const GLfloat invW2 = v2->attrib[FRAG_ATTRIB_WPOS][3];
- compute_plane(p0, p1, p2, invW0, invW1, invW2, wPlane);
- span.attrStepX[FRAG_ATTRIB_WPOS][3] = plane_dx(wPlane);
- span.attrStepY[FRAG_ATTRIB_WPOS][3] = plane_dy(wPlane);
- ATTRIB_LOOP_BEGIN
- GLuint c;
- if (swrast->_InterpMode[attr] == GL_FLAT) {
- for (c = 0; c < 4; c++) {
- constant_plane(v2->attrib[attr][c] * invW2, attrPlane[attr][c]);
- }
- }
- else {
- for (c = 0; c < 4; c++) {
- const GLfloat a0 = v0->attrib[attr][c] * invW0;
- const GLfloat a1 = v1->attrib[attr][c] * invW1;
- const GLfloat a2 = v2->attrib[attr][c] * invW2;
- compute_plane(p0, p1, p2, a0, a1, a2, attrPlane[attr][c]);
- }
- }
- for (c = 0; c < 4; c++) {
- span.attrStepX[attr][c] = plane_dx(attrPlane[attr][c]);
- span.attrStepY[attr][c] = plane_dy(attrPlane[attr][c]);
- }
- ATTRIB_LOOP_END
- }
-#endif
-
- /* Begin bottom-to-top scan over the triangle.
- * The long edge will either be on the left or right side of the
- * triangle. We always scan from the long edge toward the shorter
- * edges, stopping when we find that coverage = 0. If the long edge
- * is on the left we scan left-to-right. Else, we scan right-to-left.
- */
- yMin = vMin->attrib[FRAG_ATTRIB_WPOS][1];
- yMax = vMax->attrib[FRAG_ATTRIB_WPOS][1];
- iyMin = (GLint) yMin;
- iyMax = (GLint) yMax + 1;
-
- if (ltor) {
- /* scan left to right */
- const GLfloat *pMin = vMin->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat *pMid = vMid->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat *pMax = vMax->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat dxdy = majDx / majDy;
- const GLfloat xAdj = dxdy < 0.0F ? -dxdy : 0.0F;
- GLfloat x = pMin[0] - (yMin - iyMin) * dxdy;
- GLint iy;
- for (iy = iyMin; iy < iyMax; iy++, x += dxdy) {
- GLint ix, startX = (GLint) (x - xAdj);
- GLuint count;
- GLfloat coverage = 0.0F;
-
- /* skip over fragments with zero coverage */
- while (startX < MAX_WIDTH) {
- coverage = compute_coveragef(pMin, pMid, pMax, startX, iy);
- if (coverage > 0.0F)
- break;
- startX++;
- }
-
- /* enter interior of triangle */
- ix = startX;
-
-#if defined(DO_ATTRIBS)
- /* compute attributes at left-most fragment */
- span.attrStart[FRAG_ATTRIB_WPOS][3] = solve_plane(ix + 0.5F, iy + 0.5F, wPlane);
- ATTRIB_LOOP_BEGIN
- GLuint c;
- for (c = 0; c < 4; c++) {
- span.attrStart[attr][c] = solve_plane(ix + 0.5F, iy + 0.5F, attrPlane[attr][c]);
- }
- ATTRIB_LOOP_END
-#endif
-
- count = 0;
- while (coverage > 0.0F) {
- /* (cx,cy) = center of fragment */
- const GLfloat cx = ix + 0.5F, cy = iy + 0.5F;
- SWspanarrays *array = span.array;
- array->coverage[count] = coverage;
-#ifdef DO_Z
- array->z[count] = (GLuint) solve_plane(cx, cy, zPlane);
-#endif
- array->rgba[count][RCOMP] = solve_plane_chan(cx, cy, rPlane);
- array->rgba[count][GCOMP] = solve_plane_chan(cx, cy, gPlane);
- array->rgba[count][BCOMP] = solve_plane_chan(cx, cy, bPlane);
- array->rgba[count][ACOMP] = solve_plane_chan(cx, cy, aPlane);
- ix++;
- count++;
- coverage = compute_coveragef(pMin, pMid, pMax, ix, iy);
- }
-
- if (ix <= startX)
- continue;
-
- span.x = startX;
- span.y = iy;
- span.end = (GLuint) ix - (GLuint) startX;
- _swrast_write_rgba_span(ctx, &span);
- }
- }
- else {
- /* scan right to left */
- const GLfloat *pMin = vMin->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat *pMid = vMid->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat *pMax = vMax->attrib[FRAG_ATTRIB_WPOS];
- const GLfloat dxdy = majDx / majDy;
- const GLfloat xAdj = dxdy > 0 ? dxdy : 0.0F;
- GLfloat x = pMin[0] - (yMin - iyMin) * dxdy;
- GLint iy;
- for (iy = iyMin; iy < iyMax; iy++, x += dxdy) {
- GLint ix, left, startX = (GLint) (x + xAdj);
- GLuint count, n;
- GLfloat coverage = 0.0F;
-
- /* make sure we're not past the window edge */
- if (startX >= ctx->DrawBuffer->_Xmax) {
- startX = ctx->DrawBuffer->_Xmax - 1;
- }
-
- /* skip fragments with zero coverage */
- while (startX > 0) {
- coverage = compute_coveragef(pMin, pMax, pMid, startX, iy);
- if (coverage > 0.0F)
- break;
- startX--;
- }
-
- /* enter interior of triangle */
- ix = startX;
- count = 0;
- while (coverage > 0.0F) {
- /* (cx,cy) = center of fragment */
- const GLfloat cx = ix + 0.5F, cy = iy + 0.5F;
- SWspanarrays *array = span.array;
- ASSERT(ix >= 0);
- array->coverage[ix] = coverage;
-#ifdef DO_Z
- array->z[ix] = (GLuint) solve_plane(cx, cy, zPlane);
-#endif
- array->rgba[ix][RCOMP] = solve_plane_chan(cx, cy, rPlane);
- array->rgba[ix][GCOMP] = solve_plane_chan(cx, cy, gPlane);
- array->rgba[ix][BCOMP] = solve_plane_chan(cx, cy, bPlane);
- array->rgba[ix][ACOMP] = solve_plane_chan(cx, cy, aPlane);
- ix--;
- count++;
- coverage = compute_coveragef(pMin, pMax, pMid, ix, iy);
- }
-
-#if defined(DO_ATTRIBS)
- /* compute attributes at left-most fragment */
- span.attrStart[FRAG_ATTRIB_WPOS][3] = solve_plane(ix + 1.5F, iy + 0.5F, wPlane);
- ATTRIB_LOOP_BEGIN
- GLuint c;
- for (c = 0; c < 4; c++) {
- span.attrStart[attr][c] = solve_plane(ix + 1.5F, iy + 0.5F, attrPlane[attr][c]);
- }
- ATTRIB_LOOP_END
-#endif
-
- if (startX <= ix)
- continue;
-
- n = (GLuint) startX - (GLuint) ix;
-
- left = ix + 1;
-
- /* shift all values to the left */
- /* XXX this is temporary */
- {
- SWspanarrays *array = span.array;
- GLint j;
- for (j = 0; j < (GLint) n; j++) {
- array->coverage[j] = array->coverage[j + left];
- COPY_CHAN4(array->rgba[j], array->rgba[j + left]);
-#ifdef DO_Z
- array->z[j] = array->z[j + left];
-#endif
- }
- }
-
- span.x = left;
- span.y = iy;
- span.end = n;
- _swrast_write_rgba_span(ctx, &span);
- }
- }
-}
-
-
-#undef DO_Z
-#undef DO_ATTRIBS
-#undef DO_OCCLUSION_TEST
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.0.3
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/*
+ * Antialiased Triangle Rasterizer Template
+ *
+ * This file is #include'd to generate custom AA triangle rasterizers.
+ * NOTE: this code hasn't been optimized yet. That'll come after it
+ * works correctly.
+ *
+ * The following macros may be defined to indicate what auxillary information
+ * must be copmuted across the triangle:
+ * DO_Z - if defined, compute Z values
+ * DO_ATTRIBS - if defined, compute texcoords, varying, etc.
+ */
+
+/*void triangle( struct gl_context *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint pv )*/
+{
+ const SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ const GLfloat *p0 = v0->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat *p1 = v1->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat *p2 = v2->attrib[FRAG_ATTRIB_WPOS];
+ const SWvertex *vMin, *vMid, *vMax;
+ GLint iyMin, iyMax;
+ GLfloat yMin, yMax;
+ GLboolean ltor;
+ GLfloat majDx, majDy; /* major (i.e. long) edge dx and dy */
+
+ SWspan span;
+
+#ifdef DO_Z
+ GLfloat zPlane[4];
+#endif
+ GLfloat rPlane[4], gPlane[4], bPlane[4], aPlane[4];
+#if defined(DO_ATTRIBS)
+ GLfloat attrPlane[FRAG_ATTRIB_MAX][4][4];
+ GLfloat wPlane[4]; /* win[3] */
+#endif
+ GLfloat bf = SWRAST_CONTEXT(ctx)->_BackfaceCullSign;
+
+ (void) swrast;
+
+ INIT_SPAN(span, GL_POLYGON);
+ span.arrayMask = SPAN_COVERAGE;
+
+ /* determine bottom to top order of vertices */
+ {
+ GLfloat y0 = v0->attrib[FRAG_ATTRIB_WPOS][1];
+ GLfloat y1 = v1->attrib[FRAG_ATTRIB_WPOS][1];
+ GLfloat y2 = v2->attrib[FRAG_ATTRIB_WPOS][1];
+ if (y0 <= y1) {
+ if (y1 <= y2) {
+ vMin = v0; vMid = v1; vMax = v2; /* y0<=y1<=y2 */
+ }
+ else if (y2 <= y0) {
+ vMin = v2; vMid = v0; vMax = v1; /* y2<=y0<=y1 */
+ }
+ else {
+ vMin = v0; vMid = v2; vMax = v1; bf = -bf; /* y0<=y2<=y1 */
+ }
+ }
+ else {
+ if (y0 <= y2) {
+ vMin = v1; vMid = v0; vMax = v2; bf = -bf; /* y1<=y0<=y2 */
+ }
+ else if (y2 <= y1) {
+ vMin = v2; vMid = v1; vMax = v0; bf = -bf; /* y2<=y1<=y0 */
+ }
+ else {
+ vMin = v1; vMid = v2; vMax = v0; /* y1<=y2<=y0 */
+ }
+ }
+ }
+
+ majDx = vMax->attrib[FRAG_ATTRIB_WPOS][0] - vMin->attrib[FRAG_ATTRIB_WPOS][0];
+ majDy = vMax->attrib[FRAG_ATTRIB_WPOS][1] - vMin->attrib[FRAG_ATTRIB_WPOS][1];
+
+ /* front/back-face determination and cullling */
+ {
+ const GLfloat botDx = vMid->attrib[FRAG_ATTRIB_WPOS][0] - vMin->attrib[FRAG_ATTRIB_WPOS][0];
+ const GLfloat botDy = vMid->attrib[FRAG_ATTRIB_WPOS][1] - vMin->attrib[FRAG_ATTRIB_WPOS][1];
+ const GLfloat area = majDx * botDy - botDx * majDy;
+ /* Do backface culling */
+ if (area * bf < 0 || area == 0 || IS_INF_OR_NAN(area))
+ return;
+ ltor = (GLboolean) (area < 0.0F);
+
+ span.facing = area * swrast->_BackfaceSign > 0.0F;
+ }
+
+ /* Plane equation setup:
+ * We evaluate plane equations at window (x,y) coordinates in order
+ * to compute color, Z, fog, texcoords, etc. This isn't terribly
+ * efficient but it's easy and reliable.
+ */
+#ifdef DO_Z
+ compute_plane(p0, p1, p2, p0[2], p1[2], p2[2], zPlane);
+ span.arrayMask |= SPAN_Z;
+#endif
+ if (ctx->Light.ShadeModel == GL_SMOOTH) {
+ compute_plane(p0, p1, p2, v0->color[RCOMP], v1->color[RCOMP], v2->color[RCOMP], rPlane);
+ compute_plane(p0, p1, p2, v0->color[GCOMP], v1->color[GCOMP], v2->color[GCOMP], gPlane);
+ compute_plane(p0, p1, p2, v0->color[BCOMP], v1->color[BCOMP], v2->color[BCOMP], bPlane);
+ compute_plane(p0, p1, p2, v0->color[ACOMP], v1->color[ACOMP], v2->color[ACOMP], aPlane);
+ }
+ else {
+ constant_plane(v2->color[RCOMP], rPlane);
+ constant_plane(v2->color[GCOMP], gPlane);
+ constant_plane(v2->color[BCOMP], bPlane);
+ constant_plane(v2->color[ACOMP], aPlane);
+ }
+ span.arrayMask |= SPAN_RGBA;
+#if defined(DO_ATTRIBS)
+ {
+ const GLfloat invW0 = v0->attrib[FRAG_ATTRIB_WPOS][3];
+ const GLfloat invW1 = v1->attrib[FRAG_ATTRIB_WPOS][3];
+ const GLfloat invW2 = v2->attrib[FRAG_ATTRIB_WPOS][3];
+ compute_plane(p0, p1, p2, invW0, invW1, invW2, wPlane);
+ span.attrStepX[FRAG_ATTRIB_WPOS][3] = plane_dx(wPlane);
+ span.attrStepY[FRAG_ATTRIB_WPOS][3] = plane_dy(wPlane);
+ ATTRIB_LOOP_BEGIN
+ GLuint c;
+ if (swrast->_InterpMode[attr] == GL_FLAT) {
+ for (c = 0; c < 4; c++) {
+ constant_plane(v2->attrib[attr][c] * invW2, attrPlane[attr][c]);
+ }
+ }
+ else {
+ for (c = 0; c < 4; c++) {
+ const GLfloat a0 = v0->attrib[attr][c] * invW0;
+ const GLfloat a1 = v1->attrib[attr][c] * invW1;
+ const GLfloat a2 = v2->attrib[attr][c] * invW2;
+ compute_plane(p0, p1, p2, a0, a1, a2, attrPlane[attr][c]);
+ }
+ }
+ for (c = 0; c < 4; c++) {
+ span.attrStepX[attr][c] = plane_dx(attrPlane[attr][c]);
+ span.attrStepY[attr][c] = plane_dy(attrPlane[attr][c]);
+ }
+ ATTRIB_LOOP_END
+ }
+#endif
+
+ /* Begin bottom-to-top scan over the triangle.
+ * The long edge will either be on the left or right side of the
+ * triangle. We always scan from the long edge toward the shorter
+ * edges, stopping when we find that coverage = 0. If the long edge
+ * is on the left we scan left-to-right. Else, we scan right-to-left.
+ */
+ yMin = vMin->attrib[FRAG_ATTRIB_WPOS][1];
+ yMax = vMax->attrib[FRAG_ATTRIB_WPOS][1];
+ iyMin = (GLint) yMin;
+ iyMax = (GLint) yMax + 1;
+
+ if (ltor) {
+ /* scan left to right */
+ const GLfloat *pMin = vMin->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat *pMid = vMid->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat *pMax = vMax->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat dxdy = majDx / majDy;
+ const GLfloat xAdj = dxdy < 0.0F ? -dxdy : 0.0F;
+ GLint iy;
+#ifdef _OPENMP
+#pragma omp parallel for schedule(dynamic) private(iy) firstprivate(span)
+#endif
+ for (iy = iyMin; iy < iyMax; iy++) {
+ GLfloat x = pMin[0] - (yMin - iy) * dxdy;
+ GLint ix, startX = (GLint) (x - xAdj);
+ GLuint count;
+ GLfloat coverage = 0.0F;
+
+#ifdef _OPENMP
+ /* each thread needs to use a different (global) SpanArrays variable */
+ span.array = SWRAST_CONTEXT(ctx)->SpanArrays + omp_get_thread_num();
+#endif
+ /* skip over fragments with zero coverage */
+ while (startX < MAX_WIDTH) {
+ coverage = compute_coveragef(pMin, pMid, pMax, startX, iy);
+ if (coverage > 0.0F)
+ break;
+ startX++;
+ }
+
+ /* enter interior of triangle */
+ ix = startX;
+
+#if defined(DO_ATTRIBS)
+ /* compute attributes at left-most fragment */
+ span.attrStart[FRAG_ATTRIB_WPOS][3] = solve_plane(ix + 0.5F, iy + 0.5F, wPlane);
+ ATTRIB_LOOP_BEGIN
+ GLuint c;
+ for (c = 0; c < 4; c++) {
+ span.attrStart[attr][c] = solve_plane(ix + 0.5F, iy + 0.5F, attrPlane[attr][c]);
+ }
+ ATTRIB_LOOP_END
+#endif
+
+ count = 0;
+ while (coverage > 0.0F) {
+ /* (cx,cy) = center of fragment */
+ const GLfloat cx = ix + 0.5F, cy = iy + 0.5F;
+ SWspanarrays *array = span.array;
+ array->coverage[count] = coverage;
+#ifdef DO_Z
+ array->z[count] = (GLuint) solve_plane(cx, cy, zPlane);
+#endif
+ array->rgba[count][RCOMP] = solve_plane_chan(cx, cy, rPlane);
+ array->rgba[count][GCOMP] = solve_plane_chan(cx, cy, gPlane);
+ array->rgba[count][BCOMP] = solve_plane_chan(cx, cy, bPlane);
+ array->rgba[count][ACOMP] = solve_plane_chan(cx, cy, aPlane);
+ ix++;
+ count++;
+ coverage = compute_coveragef(pMin, pMid, pMax, ix, iy);
+ }
+
+ if (ix > startX) {
+ span.x = startX;
+ span.y = iy;
+ span.end = (GLuint) ix - (GLuint) startX;
+ _swrast_write_rgba_span(ctx, &span);
+ }
+ }
+ }
+ else {
+ /* scan right to left */
+ const GLfloat *pMin = vMin->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat *pMid = vMid->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat *pMax = vMax->attrib[FRAG_ATTRIB_WPOS];
+ const GLfloat dxdy = majDx / majDy;
+ const GLfloat xAdj = dxdy > 0 ? dxdy : 0.0F;
+ GLint iy;
+#ifdef _OPENMP
+#pragma omp parallel for schedule(dynamic) private(iy) firstprivate(span)
+#endif
+ for (iy = iyMin; iy < iyMax; iy++) {
+ GLfloat x = pMin[0] - (yMin - iy) * dxdy;
+ GLint ix, left, startX = (GLint) (x + xAdj);
+ GLuint count, n;
+ GLfloat coverage = 0.0F;
+
+#ifdef _OPENMP
+ /* each thread needs to use a different (global) SpanArrays variable */
+ span.array = SWRAST_CONTEXT(ctx)->SpanArrays + omp_get_thread_num();
+#endif
+ /* make sure we're not past the window edge */
+ if (startX >= ctx->DrawBuffer->_Xmax) {
+ startX = ctx->DrawBuffer->_Xmax - 1;
+ }
+
+ /* skip fragments with zero coverage */
+ while (startX > 0) {
+ coverage = compute_coveragef(pMin, pMax, pMid, startX, iy);
+ if (coverage > 0.0F)
+ break;
+ startX--;
+ }
+
+ /* enter interior of triangle */
+ ix = startX;
+ count = 0;
+ while (coverage > 0.0F) {
+ /* (cx,cy) = center of fragment */
+ const GLfloat cx = ix + 0.5F, cy = iy + 0.5F;
+ SWspanarrays *array = span.array;
+ ASSERT(ix >= 0);
+ array->coverage[ix] = coverage;
+#ifdef DO_Z
+ array->z[ix] = (GLuint) solve_plane(cx, cy, zPlane);
+#endif
+ array->rgba[ix][RCOMP] = solve_plane_chan(cx, cy, rPlane);
+ array->rgba[ix][GCOMP] = solve_plane_chan(cx, cy, gPlane);
+ array->rgba[ix][BCOMP] = solve_plane_chan(cx, cy, bPlane);
+ array->rgba[ix][ACOMP] = solve_plane_chan(cx, cy, aPlane);
+ ix--;
+ count++;
+ coverage = compute_coveragef(pMin, pMax, pMid, ix, iy);
+ }
+
+#if defined(DO_ATTRIBS)
+ /* compute attributes at left-most fragment */
+ span.attrStart[FRAG_ATTRIB_WPOS][3] = solve_plane(ix + 1.5F, iy + 0.5F, wPlane);
+ ATTRIB_LOOP_BEGIN
+ GLuint c;
+ for (c = 0; c < 4; c++) {
+ span.attrStart[attr][c] = solve_plane(ix + 1.5F, iy + 0.5F, attrPlane[attr][c]);
+ }
+ ATTRIB_LOOP_END
+#endif
+
+ if (startX > ix) {
+ n = (GLuint) startX - (GLuint) ix;
+
+ left = ix + 1;
+
+ /* shift all values to the left */
+ /* XXX this is temporary */
+ {
+ SWspanarrays *array = span.array;
+ GLint j;
+ for (j = 0; j < (GLint) n; j++) {
+ array->coverage[j] = array->coverage[j + left];
+ COPY_CHAN4(array->rgba[j], array->rgba[j + left]);
+#ifdef DO_Z
+ array->z[j] = array->z[j + left];
+#endif
+ }
+ }
+
+ span.x = left;
+ span.y = iy;
+ span.end = n;
+ _swrast_write_rgba_span(ctx, &span);
+ }
+ }
+ }
+}
+
+
+#undef DO_Z
+#undef DO_ATTRIBS
+#undef DO_OCCLUSION_TEST
diff --git a/mesalib/src/mesa/swrast/s_context.c b/mesalib/src/mesa/swrast/s_context.c
index d5f49923c..fbecbc55e 100644
--- a/mesalib/src/mesa/swrast/s_context.c
+++ b/mesalib/src/mesa/swrast/s_context.c
@@ -417,84 +417,6 @@ _swrast_validate_blend_func(struct gl_context *ctx, GLuint n, const GLubyte mask
swrast->BlendFunc( ctx, n, mask, src, dst, chanType );
}
-
-/**
- * Make sure we have texture image data for all the textures we may need
- * for subsequent rendering.
- */
-static void
-_swrast_validate_texture_images(struct gl_context *ctx)
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- GLuint u;
-
- if (!swrast->ValidateTextureImage || !ctx->Texture._EnabledUnits) {
- /* no textures enabled, or no way to validate images! */
- return;
- }
-
- for (u = 0; u < ctx->Const.MaxTextureImageUnits; u++) {
- if (ctx->Texture.Unit[u]._ReallyEnabled) {
- struct gl_texture_object *texObj = ctx->Texture.Unit[u]._Current;
- ASSERT(texObj);
- if (texObj) {
- GLuint numFaces = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
- GLuint face;
- for (face = 0; face < numFaces; face++) {
- GLint lvl;
- for (lvl = texObj->BaseLevel; lvl <= texObj->_MaxLevel; lvl++) {
- struct gl_texture_image *texImg = texObj->Image[face][lvl];
- if (texImg && !texImg->Data) {
- swrast->ValidateTextureImage(ctx, texObj, face, lvl);
- ASSERT(texObj->Image[face][lvl]->Data);
- }
- }
- }
- }
- }
- }
-}
-
-
-/**
- * Free the texture image data attached to all currently enabled
- * textures. Meant to be called by device drivers when transitioning
- * from software to hardware rendering.
- */
-void
-_swrast_eject_texture_images(struct gl_context *ctx)
-{
- GLuint u;
-
- if (!ctx->Texture._EnabledUnits) {
- /* no textures enabled */
- return;
- }
-
- for (u = 0; u < ctx->Const.MaxTextureImageUnits; u++) {
- if (ctx->Texture.Unit[u]._ReallyEnabled) {
- struct gl_texture_object *texObj = ctx->Texture.Unit[u]._Current;
- ASSERT(texObj);
- if (texObj) {
- GLuint numFaces = (texObj->Target == GL_TEXTURE_CUBE_MAP) ? 6 : 1;
- GLuint face;
- for (face = 0; face < numFaces; face++) {
- GLint lvl;
- for (lvl = texObj->BaseLevel; lvl <= texObj->_MaxLevel; lvl++) {
- struct gl_texture_image *texImg = texObj->Image[face][lvl];
- if (texImg && texImg->Data) {
- _mesa_free_texmemory(texImg->Data);
- texImg->Data = NULL;
- }
- }
- }
- }
- }
- }
-}
-
-
-
static void
_swrast_sleep( struct gl_context *ctx, GLbitfield new_state )
{
@@ -640,7 +562,6 @@ _swrast_validate_derived( struct gl_context *ctx )
if (swrast->NewState & (_NEW_TEXTURE | _NEW_PROGRAM)) {
_swrast_update_texture_samplers( ctx );
- _swrast_validate_texture_images(ctx);
}
if (swrast->NewState & (_NEW_COLOR | _NEW_PROGRAM))
@@ -772,6 +693,11 @@ _swrast_CreateContext( struct gl_context *ctx )
{
GLuint i;
SWcontext *swrast = (SWcontext *)CALLOC(sizeof(SWcontext));
+#ifdef _OPENMP
+ const GLint maxThreads = omp_get_max_threads();
+#else
+ const GLint maxThreads = 1;
+#endif
if (SWRAST_DEBUG) {
_mesa_debug(ctx, "_swrast_CreateContext\n");
@@ -806,19 +732,25 @@ _swrast_CreateContext( struct gl_context *ctx )
for (i = 0; i < MAX_TEXTURE_IMAGE_UNITS; i++)
swrast->TextureSample[i] = NULL;
- swrast->SpanArrays = MALLOC_STRUCT(sw_span_arrays);
+ /* SpanArrays is global and shared by all SWspan instances. However, when
+ * using multiple threads, it is necessary to have one SpanArrays instance
+ * per thread.
+ */
+ swrast->SpanArrays = (SWspanarrays *) MALLOC(maxThreads * sizeof(SWspanarrays));
if (!swrast->SpanArrays) {
FREE(swrast);
return GL_FALSE;
}
- swrast->SpanArrays->ChanType = CHAN_TYPE;
+ for(i = 0; i < maxThreads; i++) {
+ swrast->SpanArrays[i].ChanType = CHAN_TYPE;
#if CHAN_TYPE == GL_UNSIGNED_BYTE
- swrast->SpanArrays->rgba = swrast->SpanArrays->rgba8;
+ swrast->SpanArrays[i].rgba = swrast->SpanArrays[i].rgba8;
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
- swrast->SpanArrays->rgba = swrast->SpanArrays->rgba16;
+ swrast->SpanArrays[i].rgba = swrast->SpanArrays[i].rgba16;
#else
- swrast->SpanArrays->rgba = swrast->SpanArrays->attribs[FRAG_ATTRIB_COL0];
+ swrast->SpanArrays[i].rgba = swrast->SpanArrays[i].attribs[FRAG_ATTRIB_COL0];
#endif
+ }
/* init point span buffer */
swrast->PointSpan.primitive = GL_POINT;
@@ -826,7 +758,10 @@ _swrast_CreateContext( struct gl_context *ctx )
swrast->PointSpan.facing = 0;
swrast->PointSpan.array = swrast->SpanArrays;
- swrast->TexelBuffer = (GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits *
+ /* TexelBuffer is also global and normally shared by all SWspan instances;
+ * when running with multiple threads, create one per thread.
+ */
+ swrast->TexelBuffer = (GLfloat *) MALLOC(ctx->Const.MaxTextureImageUnits * maxThreads *
MAX_WIDTH * 4 * sizeof(GLfloat));
if (!swrast->TexelBuffer) {
FREE(swrast->SpanArrays);
diff --git a/mesalib/src/mesa/swrast/s_stencil.c b/mesalib/src/mesa/swrast/s_stencil.c
index 999fe3c3f..fa5093a34 100644
--- a/mesalib/src/mesa/swrast/s_stencil.c
+++ b/mesalib/src/mesa/swrast/s_stencil.c
@@ -1,1245 +1,1246 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.1
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/imports.h"
-
-#include "s_context.h"
-#include "s_depth.h"
-#include "s_stencil.h"
-#include "s_span.h"
-
-
-
-/* Stencil Logic:
-
-IF stencil test fails THEN
- Apply fail-op to stencil value
- Don't write the pixel (RGBA,Z)
-ELSE
- IF doing depth test && depth test fails THEN
- Apply zfail-op to stencil value
- Write RGBA and Z to appropriate buffers
- ELSE
- Apply zpass-op to stencil value
-ENDIF
-
-*/
-
-
-/**
- * Apply the given stencil operator to the array of stencil values.
- * Don't touch stencil[i] if mask[i] is zero.
- * Input: n - size of stencil array
- * oper - the stencil buffer operator
- * face - 0 or 1 for front or back face operation
- * stencil - array of stencil values
- * mask - array [n] of flag: 1=apply operator, 0=don't apply operator
- * Output: stencil - modified values
- */
-static void
-apply_stencil_op( const struct gl_context *ctx, GLenum oper, GLuint face,
- GLuint n, GLstencil stencil[], const GLubyte mask[] )
-{
- const GLstencil ref = ctx->Stencil.Ref[face];
- const GLstencil wrtmask = ctx->Stencil.WriteMask[face];
- const GLstencil invmask = (GLstencil) (~wrtmask);
- const GLstencil stencilMax = (1 << ctx->DrawBuffer->Visual.stencilBits) - 1;
- GLuint i;
-
- switch (oper) {
- case GL_KEEP:
- /* do nothing */
- break;
- case GL_ZERO:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- stencil[i] = 0;
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- stencil[i] = (GLstencil) (stencil[i] & invmask);
- }
- }
- }
- break;
- case GL_REPLACE:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- stencil[i] = ref;
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil s = stencil[i];
- stencil[i] = (GLstencil) ((invmask & s ) | (wrtmask & ref));
- }
- }
- }
- break;
- case GL_INCR:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil s = stencil[i];
- if (s < stencilMax) {
- stencil[i] = (GLstencil) (s+1);
- }
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- /* VERIFY logic of adding 1 to a write-masked value */
- GLstencil s = stencil[i];
- if (s < stencilMax) {
- stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s+1)));
- }
- }
- }
- }
- break;
- case GL_DECR:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil s = stencil[i];
- if (s>0) {
- stencil[i] = (GLstencil) (s-1);
- }
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- /* VERIFY logic of subtracting 1 to a write-masked value */
- GLstencil s = stencil[i];
- if (s>0) {
- stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s-1)));
- }
- }
- }
- }
- break;
- case GL_INCR_WRAP_EXT:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- stencil[i]++;
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil s = stencil[i];
- stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s+1)));
- }
- }
- }
- break;
- case GL_DECR_WRAP_EXT:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- stencil[i]--;
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil s = stencil[i];
- stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s-1)));
- }
- }
- }
- break;
- case GL_INVERT:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil s = stencil[i];
- stencil[i] = (GLstencil) ~s;
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil s = stencil[i];
- stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & ~s));
- }
- }
- }
- break;
- default:
- _mesa_problem(ctx, "Bad stencil op in apply_stencil_op");
- }
-}
-
-
-
-
-/**
- * Apply stencil test to an array of stencil values (before depth buffering).
- * Input: face - 0 or 1 for front or back-face polygons
- * n - number of pixels in the array
- * stencil - array of [n] stencil values
- * mask - array [n] of flag: 0=skip the pixel, 1=stencil the pixel
- * Output: mask - pixels which fail the stencil test will have their
- * mask flag set to 0.
- * stencil - updated stencil values (where the test passed)
- * Return: GL_FALSE = all pixels failed, GL_TRUE = zero or more pixels passed.
- */
-static GLboolean
-do_stencil_test( struct gl_context *ctx, GLuint face, GLuint n, GLstencil stencil[],
- GLubyte mask[] )
-{
- GLubyte fail[MAX_WIDTH];
- GLboolean allfail = GL_FALSE;
- GLuint i;
- const GLuint valueMask = ctx->Stencil.ValueMask[face];
- const GLstencil r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
- GLstencil s;
-
- ASSERT(n <= MAX_WIDTH);
-
- /*
- * Perform stencil test. The results of this operation are stored
- * in the fail[] array:
- * IF fail[i] is non-zero THEN
- * the stencil fail operator is to be applied
- * ELSE
- * the stencil fail operator is not to be applied
- * ENDIF
- */
- switch (ctx->Stencil.Function[face]) {
- case GL_NEVER:
- /* never pass; always fail */
- for (i=0;i<n;i++) {
- if (mask[i]) {
- mask[i] = 0;
- fail[i] = 1;
- }
- else {
- fail[i] = 0;
- }
- }
- allfail = GL_TRUE;
- break;
- case GL_LESS:
- for (i=0;i<n;i++) {
- if (mask[i]) {
- s = (GLstencil) (stencil[i] & valueMask);
- if (r < s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_LEQUAL:
- for (i=0;i<n;i++) {
- if (mask[i]) {
- s = (GLstencil) (stencil[i] & valueMask);
- if (r <= s) {
- /* pass */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_GREATER:
- for (i=0;i<n;i++) {
- if (mask[i]) {
- s = (GLstencil) (stencil[i] & valueMask);
- if (r > s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_GEQUAL:
- for (i=0;i<n;i++) {
- if (mask[i]) {
- s = (GLstencil) (stencil[i] & valueMask);
- if (r >= s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_EQUAL:
- for (i=0;i<n;i++) {
- if (mask[i]) {
- s = (GLstencil) (stencil[i] & valueMask);
- if (r == s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_NOTEQUAL:
- for (i=0;i<n;i++) {
- if (mask[i]) {
- s = (GLstencil) (stencil[i] & valueMask);
- if (r != s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_ALWAYS:
- /* always pass */
- for (i=0;i<n;i++) {
- fail[i] = 0;
- }
- break;
- default:
- _mesa_problem(ctx, "Bad stencil func in gl_stencil_span");
- return 0;
- }
-
- if (ctx->Stencil.FailFunc[face] != GL_KEEP) {
- apply_stencil_op( ctx, ctx->Stencil.FailFunc[face], face, n, stencil, fail );
- }
-
- return !allfail;
-}
-
-
-/**
- * Compute the zpass/zfail masks by comparing the pre- and post-depth test
- * masks.
- */
-static INLINE void
-compute_pass_fail_masks(GLuint n, const GLubyte origMask[],
- const GLubyte newMask[],
- GLubyte passMask[], GLubyte failMask[])
-{
- GLuint i;
- for (i = 0; i < n; i++) {
- ASSERT(newMask[i] == 0 || newMask[i] == 1);
- passMask[i] = origMask[i] & newMask[i];
- failMask[i] = origMask[i] & (newMask[i] ^ 1);
- }
-}
-
-
-/**
- * Apply stencil and depth testing to the span of pixels.
- * Both software and hardware stencil buffers are acceptable.
- * Input: n - number of pixels in the span
- * x, y - location of leftmost pixel in span
- * z - array [n] of z values
- * mask - array [n] of flags (1=test this pixel, 0=skip the pixel)
- * Output: mask - array [n] of flags (1=stencil and depth test passed)
- * Return: GL_FALSE - all fragments failed the testing
- * GL_TRUE - one or more fragments passed the testing
- *
- */
-static GLboolean
-stencil_and_ztest_span(struct gl_context *ctx, SWspan *span, GLuint face)
-{
- struct gl_framebuffer *fb = ctx->DrawBuffer;
- struct gl_renderbuffer *rb = fb->_StencilBuffer;
- GLstencil stencilRow[MAX_WIDTH];
- GLstencil *stencil;
- const GLuint n = span->end;
- const GLint x = span->x;
- const GLint y = span->y;
- GLubyte *mask = span->array->mask;
-
- ASSERT((span->arrayMask & SPAN_XY) == 0);
- ASSERT(ctx->Stencil.Enabled);
- ASSERT(n <= MAX_WIDTH);
-#ifdef DEBUG
- if (ctx->Depth.Test) {
- ASSERT(span->arrayMask & SPAN_Z);
- }
-#endif
-
- stencil = (GLstencil *) rb->GetPointer(ctx, rb, x, y);
- if (!stencil) {
- rb->GetRow(ctx, rb, n, x, y, stencilRow);
- stencil = stencilRow;
- }
-
- /*
- * Apply the stencil test to the fragments.
- * failMask[i] is 1 if the stencil test failed.
- */
- if (do_stencil_test( ctx, face, n, stencil, mask ) == GL_FALSE) {
- /* all fragments failed the stencil test, we're done. */
- span->writeAll = GL_FALSE;
- if (!rb->GetPointer(ctx, rb, 0, 0)) {
- /* put updated stencil values into buffer */
- rb->PutRow(ctx, rb, n, x, y, stencil, NULL);
- }
- return GL_FALSE;
- }
-
- /*
- * Some fragments passed the stencil test, apply depth test to them
- * and apply Zpass and Zfail stencil ops.
- */
- if (ctx->Depth.Test == GL_FALSE) {
- /*
- * No depth buffer, just apply zpass stencil function to active pixels.
- */
- apply_stencil_op( ctx, ctx->Stencil.ZPassFunc[face], face, n, stencil, mask );
- }
- else {
- /*
- * Perform depth buffering, then apply zpass or zfail stencil function.
- */
- GLubyte passMask[MAX_WIDTH], failMask[MAX_WIDTH], origMask[MAX_WIDTH];
-
- /* save the current mask bits */
- memcpy(origMask, mask, n * sizeof(GLubyte));
-
- /* apply the depth test */
- _swrast_depth_test_span(ctx, span);
-
- compute_pass_fail_masks(n, origMask, mask, passMask, failMask);
-
- /* apply the pass and fail operations */
- if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
- apply_stencil_op( ctx, ctx->Stencil.ZFailFunc[face], face,
- n, stencil, failMask );
- }
- if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
- apply_stencil_op( ctx, ctx->Stencil.ZPassFunc[face], face,
- n, stencil, passMask );
- }
- }
-
- /*
- * Write updated stencil values back into hardware stencil buffer.
- */
- if (!rb->GetPointer(ctx, rb, 0, 0)) {
- rb->PutRow(ctx, rb, n, x, y, stencil, NULL);
- }
-
- span->writeAll = GL_FALSE;
-
- return GL_TRUE; /* one or more fragments passed both tests */
-}
-
-
-
-/*
- * Return the address of a stencil buffer value given the window coords:
- */
-#define STENCIL_ADDRESS(X, Y) (stencilStart + (Y) * stride + (X))
-
-
-
-/**
- * Apply the given stencil operator for each pixel in the array whose
- * mask flag is set.
- * \note This is for software stencil buffers only.
- * Input: n - number of pixels in the span
- * x, y - array of [n] pixels
- * operator - the stencil buffer operator
- * mask - array [n] of flag: 1=apply operator, 0=don't apply operator
- */
-static void
-apply_stencil_op_to_pixels( struct gl_context *ctx,
- GLuint n, const GLint x[], const GLint y[],
- GLenum oper, GLuint face, const GLubyte mask[] )
-{
- struct gl_framebuffer *fb = ctx->DrawBuffer;
- struct gl_renderbuffer *rb = fb->_StencilBuffer;
- const GLstencil stencilMax = (1 << fb->Visual.stencilBits) - 1;
- const GLstencil ref = ctx->Stencil.Ref[face];
- const GLstencil wrtmask = ctx->Stencil.WriteMask[face];
- const GLstencil invmask = (GLstencil) (~wrtmask);
- GLuint i;
- GLstencil *stencilStart = (GLubyte *) rb->Data;
- const GLuint stride = rb->Width;
-
- ASSERT(rb->GetPointer(ctx, rb, 0, 0));
- ASSERT(sizeof(GLstencil) == 1);
-
- switch (oper) {
- case GL_KEEP:
- /* do nothing */
- break;
- case GL_ZERO:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = 0;
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) (invmask & *sptr);
- }
- }
- }
- break;
- case GL_REPLACE:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = ref;
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) ((invmask & *sptr ) | (wrtmask & ref));
- }
- }
- }
- break;
- case GL_INCR:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- if (*sptr < stencilMax) {
- *sptr = (GLstencil) (*sptr + 1);
- }
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- if (*sptr < stencilMax) {
- *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr+1)));
- }
- }
- }
- }
- break;
- case GL_DECR:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- if (*sptr>0) {
- *sptr = (GLstencil) (*sptr - 1);
- }
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- if (*sptr>0) {
- *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr-1)));
- }
- }
- }
- }
- break;
- case GL_INCR_WRAP_EXT:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) (*sptr + 1);
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr+1)));
- }
- }
- }
- break;
- case GL_DECR_WRAP_EXT:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) (*sptr - 1);
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr-1)));
- }
- }
- }
- break;
- case GL_INVERT:
- if (invmask==0) {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) (~*sptr);
- }
- }
- }
- else {
- for (i=0;i<n;i++) {
- if (mask[i]) {
- GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
- *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & ~*sptr));
- }
- }
- }
- break;
- default:
- _mesa_problem(ctx, "Bad stencilop in apply_stencil_op_to_pixels");
- }
-}
-
-
-
-/**
- * Apply stencil test to an array of pixels before depth buffering.
- *
- * \note Used for software stencil buffer only.
- * Input: n - number of pixels in the span
- * x, y - array of [n] pixels to stencil
- * mask - array [n] of flag: 0=skip the pixel, 1=stencil the pixel
- * Output: mask - pixels which fail the stencil test will have their
- * mask flag set to 0.
- * \return GL_FALSE = all pixels failed, GL_TRUE = zero or more pixels passed.
- */
-static GLboolean
-stencil_test_pixels( struct gl_context *ctx, GLuint face, GLuint n,
- const GLint x[], const GLint y[], GLubyte mask[] )
-{
- const struct gl_framebuffer *fb = ctx->DrawBuffer;
- struct gl_renderbuffer *rb = fb->_StencilBuffer;
- GLubyte fail[MAX_WIDTH];
- GLstencil r, s;
- GLuint i;
- GLboolean allfail = GL_FALSE;
- const GLuint valueMask = ctx->Stencil.ValueMask[face];
- const GLstencil *stencilStart = (GLstencil *) rb->Data;
- const GLuint stride = rb->Width;
-
- ASSERT(rb->GetPointer(ctx, rb, 0, 0));
- ASSERT(sizeof(GLstencil) == 1);
-
- /*
- * Perform stencil test. The results of this operation are stored
- * in the fail[] array:
- * IF fail[i] is non-zero THEN
- * the stencil fail operator is to be applied
- * ELSE
- * the stencil fail operator is not to be applied
- * ENDIF
- */
-
- switch (ctx->Stencil.Function[face]) {
- case GL_NEVER:
- /* always fail */
- for (i=0;i<n;i++) {
- if (mask[i]) {
- mask[i] = 0;
- fail[i] = 1;
- }
- else {
- fail[i] = 0;
- }
- }
- allfail = GL_TRUE;
- break;
- case GL_LESS:
- r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
- for (i=0;i<n;i++) {
- if (mask[i]) {
- const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
- s = (GLstencil) (*sptr & valueMask);
- if (r < s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_LEQUAL:
- r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
- for (i=0;i<n;i++) {
- if (mask[i]) {
- const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
- s = (GLstencil) (*sptr & valueMask);
- if (r <= s) {
- /* pass */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_GREATER:
- r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
- for (i=0;i<n;i++) {
- if (mask[i]) {
- const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
- s = (GLstencil) (*sptr & valueMask);
- if (r > s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_GEQUAL:
- r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
- for (i=0;i<n;i++) {
- if (mask[i]) {
- const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
- s = (GLstencil) (*sptr & valueMask);
- if (r >= s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_EQUAL:
- r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
- for (i=0;i<n;i++) {
- if (mask[i]) {
- const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
- s = (GLstencil) (*sptr & valueMask);
- if (r == s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_NOTEQUAL:
- r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
- for (i=0;i<n;i++) {
- if (mask[i]) {
- const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
- s = (GLstencil) (*sptr & valueMask);
- if (r != s) {
- /* passed */
- fail[i] = 0;
- }
- else {
- fail[i] = 1;
- mask[i] = 0;
- }
- }
- else {
- fail[i] = 0;
- }
- }
- break;
- case GL_ALWAYS:
- /* always pass */
- for (i=0;i<n;i++) {
- fail[i] = 0;
- }
- break;
- default:
- _mesa_problem(ctx, "Bad stencil func in gl_stencil_pixels");
- return 0;
- }
-
- if (ctx->Stencil.FailFunc[face] != GL_KEEP) {
- apply_stencil_op_to_pixels( ctx, n, x, y, ctx->Stencil.FailFunc[face],
- face, fail );
- }
-
- return !allfail;
-}
-
-
-
-
-/**
- * Apply stencil and depth testing to an array of pixels.
- * This is used both for software and hardware stencil buffers.
- *
- * The comments in this function are a bit sparse but the code is
- * almost identical to stencil_and_ztest_span(), which is well
- * commented.
- *
- * Input: n - number of pixels in the array
- * x, y - array of [n] pixel positions
- * z - array [n] of z values
- * mask - array [n] of flags (1=test this pixel, 0=skip the pixel)
- * Output: mask - array [n] of flags (1=stencil and depth test passed)
- * Return: GL_FALSE - all fragments failed the testing
- * GL_TRUE - one or more fragments passed the testing
- */
-static GLboolean
-stencil_and_ztest_pixels( struct gl_context *ctx, SWspan *span, GLuint face )
-{
- GLubyte passMask[MAX_WIDTH], failMask[MAX_WIDTH], origMask[MAX_WIDTH];
- struct gl_framebuffer *fb = ctx->DrawBuffer;
- struct gl_renderbuffer *rb = fb->_StencilBuffer;
- const GLuint n = span->end;
- const GLint *x = span->array->x;
- const GLint *y = span->array->y;
- GLubyte *mask = span->array->mask;
-
- ASSERT(span->arrayMask & SPAN_XY);
- ASSERT(ctx->Stencil.Enabled);
- ASSERT(n <= MAX_WIDTH);
-
- if (!rb->GetPointer(ctx, rb, 0, 0)) {
- /* No direct access */
- GLstencil stencil[MAX_WIDTH];
-
- ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
- _swrast_get_values(ctx, rb, n, x, y, stencil, sizeof(GLubyte));
-
- memcpy(origMask, mask, n * sizeof(GLubyte));
-
- (void) do_stencil_test(ctx, face, n, stencil, mask);
-
- if (ctx->Depth.Test == GL_FALSE) {
- apply_stencil_op(ctx, ctx->Stencil.ZPassFunc[face], face,
- n, stencil, mask);
- }
- else {
- GLubyte tmpMask[MAX_WIDTH];
- memcpy(tmpMask, mask, n * sizeof(GLubyte));
-
- _swrast_depth_test_span(ctx, span);
-
- compute_pass_fail_masks(n, tmpMask, mask, passMask, failMask);
-
- if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
- apply_stencil_op(ctx, ctx->Stencil.ZFailFunc[face], face,
- n, stencil, failMask);
- }
- if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
- apply_stencil_op(ctx, ctx->Stencil.ZPassFunc[face], face,
- n, stencil, passMask);
- }
- }
-
- /* Write updated stencil values into hardware stencil buffer */
- rb->PutValues(ctx, rb, n, x, y, stencil, origMask);
-
- return GL_TRUE;
- }
- else {
- /* Direct access to stencil buffer */
-
- if (stencil_test_pixels(ctx, face, n, x, y, mask) == GL_FALSE) {
- /* all fragments failed the stencil test, we're done. */
- return GL_FALSE;
- }
-
- if (ctx->Depth.Test==GL_FALSE) {
- apply_stencil_op_to_pixels(ctx, n, x, y,
- ctx->Stencil.ZPassFunc[face], face, mask);
- }
- else {
- memcpy(origMask, mask, n * sizeof(GLubyte));
-
- _swrast_depth_test_span(ctx, span);
-
- compute_pass_fail_masks(n, origMask, mask, passMask, failMask);
-
- if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
- apply_stencil_op_to_pixels(ctx, n, x, y,
- ctx->Stencil.ZFailFunc[face],
- face, failMask);
- }
- if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
- apply_stencil_op_to_pixels(ctx, n, x, y,
- ctx->Stencil.ZPassFunc[face],
- face, passMask);
- }
- }
-
- return GL_TRUE; /* one or more fragments passed both tests */
- }
-}
-
-
-/**
- * /return GL_TRUE = one or more fragments passed,
- * GL_FALSE = all fragments failed.
- */
-GLboolean
-_swrast_stencil_and_ztest_span(struct gl_context *ctx, SWspan *span)
-{
- const GLuint face = (span->facing == 0) ? 0 : ctx->Stencil._BackFace;
-
- if (span->arrayMask & SPAN_XY)
- return stencil_and_ztest_pixels(ctx, span, face);
- else
- return stencil_and_ztest_span(ctx, span, face);
-}
-
-
-#if 0
-GLuint
-clip_span(GLuint bufferWidth, GLuint bufferHeight,
- GLint x, GLint y, GLuint *count)
-{
- GLuint n = *count;
- GLuint skipPixels = 0;
-
- if (y < 0 || y >= bufferHeight || x + n <= 0 || x >= bufferWidth) {
- /* totally out of bounds */
- n = 0;
- }
- else {
- /* left clip */
- if (x < 0) {
- skipPixels = -x;
- x = 0;
- n -= skipPixels;
- }
- /* right clip */
- if (x + n > bufferWidth) {
- GLint dx = x + n - bufferWidth;
- n -= dx;
- }
- }
-
- *count = n;
-
- return skipPixels;
-}
-#endif
-
-
-/**
- * Return a span of stencil values from the stencil buffer.
- * Used for glRead/CopyPixels
- * Input: n - how many pixels
- * x,y - location of first pixel
- * Output: stencil - the array of stencil values
- */
-void
-_swrast_read_stencil_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
- GLint n, GLint x, GLint y, GLstencil stencil[])
-{
- if (y < 0 || y >= (GLint) rb->Height ||
- x + n <= 0 || x >= (GLint) rb->Width) {
- /* span is completely outside framebuffer */
- return; /* undefined values OK */
- }
-
- if (x < 0) {
- GLint dx = -x;
- x = 0;
- n -= dx;
- stencil += dx;
- }
- if (x + n > (GLint) rb->Width) {
- GLint dx = x + n - rb->Width;
- n -= dx;
- }
- if (n <= 0) {
- return;
- }
-
- rb->GetRow(ctx, rb, n, x, y, stencil);
-}
-
-
-
-/**
- * Write a span of stencil values to the stencil buffer. This function
- * applies the stencil write mask when needed.
- * Used for glDraw/CopyPixels
- * Input: n - how many pixels
- * x, y - location of first pixel
- * stencil - the array of stencil values
- */
-void
-_swrast_write_stencil_span(struct gl_context *ctx, GLint n, GLint x, GLint y,
- const GLstencil stencil[] )
-{
- struct gl_framebuffer *fb = ctx->DrawBuffer;
- struct gl_renderbuffer *rb = fb->_StencilBuffer;
- const GLuint stencilMax = (1 << fb->Visual.stencilBits) - 1;
- const GLuint stencilMask = ctx->Stencil.WriteMask[0];
-
- if (y < 0 || y >= (GLint) rb->Height ||
- x + n <= 0 || x >= (GLint) rb->Width) {
- /* span is completely outside framebuffer */
- return; /* undefined values OK */
- }
- if (x < 0) {
- GLint dx = -x;
- x = 0;
- n -= dx;
- stencil += dx;
- }
- if (x + n > (GLint) rb->Width) {
- GLint dx = x + n - rb->Width;
- n -= dx;
- }
- if (n <= 0) {
- return;
- }
-
- if ((stencilMask & stencilMax) != stencilMax) {
- /* need to apply writemask */
- GLstencil destVals[MAX_WIDTH], newVals[MAX_WIDTH];
- GLint i;
- rb->GetRow(ctx, rb, n, x, y, destVals);
- for (i = 0; i < n; i++) {
- newVals[i]
- = (stencil[i] & stencilMask) | (destVals[i] & ~stencilMask);
- }
- rb->PutRow(ctx, rb, n, x, y, newVals, NULL);
- }
- else {
- rb->PutRow(ctx, rb, n, x, y, stencil, NULL);
- }
-}
-
-
-
-/**
- * Clear the stencil buffer.
- */
-void
-_swrast_clear_stencil_buffer( struct gl_context *ctx, struct gl_renderbuffer *rb )
-{
- const GLubyte stencilBits = ctx->DrawBuffer->Visual.stencilBits;
- const GLuint mask = ctx->Stencil.WriteMask[0];
- const GLuint invMask = ~mask;
- const GLuint clearVal = (ctx->Stencil.Clear & mask);
- const GLuint stencilMax = (1 << stencilBits) - 1;
- GLint x, y, width, height;
-
- if (!rb || mask == 0)
- return;
-
- ASSERT(rb->DataType == GL_UNSIGNED_BYTE ||
- rb->DataType == GL_UNSIGNED_SHORT);
-
- ASSERT(rb->_BaseFormat == GL_STENCIL_INDEX);
-
- /* compute region to clear */
- x = ctx->DrawBuffer->_Xmin;
- y = ctx->DrawBuffer->_Ymin;
- width = ctx->DrawBuffer->_Xmax - ctx->DrawBuffer->_Xmin;
- height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin;
-
- if (rb->GetPointer(ctx, rb, 0, 0)) {
- /* Direct buffer access */
- if ((mask & stencilMax) != stencilMax) {
- /* need to mask the clear */
- if (rb->DataType == GL_UNSIGNED_BYTE) {
- GLint i, j;
- for (i = 0; i < height; i++) {
- GLubyte *stencil = (GLubyte*) rb->GetPointer(ctx, rb, x, y + i);
- for (j = 0; j < width; j++) {
- stencil[j] = (stencil[j] & invMask) | clearVal;
- }
- }
- }
- else {
- GLint i, j;
- for (i = 0; i < height; i++) {
- GLushort *stencil = (GLushort*) rb->GetPointer(ctx, rb, x, y + i);
- for (j = 0; j < width; j++) {
- stencil[j] = (stencil[j] & invMask) | clearVal;
- }
- }
- }
- }
- else {
- /* no bit masking */
- if (width == (GLint) rb->Width && rb->DataType == GL_UNSIGNED_BYTE) {
- /* optimized case */
- /* Note: bottom-to-top raster assumed! */
- GLubyte *stencil = (GLubyte *) rb->GetPointer(ctx, rb, x, y);
- GLuint len = width * height * sizeof(GLubyte);
- memset(stencil, clearVal, len);
- }
- else {
- /* general case */
- GLint i;
- for (i = 0; i < height; i++) {
- GLvoid *stencil = rb->GetPointer(ctx, rb, x, y + i);
- if (rb->DataType == GL_UNSIGNED_BYTE) {
- memset(stencil, clearVal, width);
- }
- else {
- _mesa_memset16((short unsigned int*) stencil, clearVal, width);
- }
- }
- }
- }
- }
- else {
- /* no direct access */
- if ((mask & stencilMax) != stencilMax) {
- /* need to mask the clear */
- if (rb->DataType == GL_UNSIGNED_BYTE) {
- GLint i, j;
- for (i = 0; i < height; i++) {
- GLubyte stencil[MAX_WIDTH];
- rb->GetRow(ctx, rb, width, x, y + i, stencil);
- for (j = 0; j < width; j++) {
- stencil[j] = (stencil[j] & invMask) | clearVal;
- }
- rb->PutRow(ctx, rb, width, x, y + i, stencil, NULL);
- }
- }
- else {
- GLint i, j;
- for (i = 0; i < height; i++) {
- GLushort stencil[MAX_WIDTH];
- rb->GetRow(ctx, rb, width, x, y + i, stencil);
- for (j = 0; j < width; j++) {
- stencil[j] = (stencil[j] & invMask) | clearVal;
- }
- rb->PutRow(ctx, rb, width, x, y + i, stencil, NULL);
- }
- }
- }
- else {
- /* no bit masking */
- const GLubyte clear8 = (GLubyte) clearVal;
- const GLushort clear16 = (GLushort) clearVal;
- const void *clear;
- GLint i;
- if (rb->DataType == GL_UNSIGNED_BYTE) {
- clear = &clear8;
- }
- else {
- clear = &clear16;
- }
- for (i = 0; i < height; i++) {
- rb->PutMonoRow(ctx, rb, width, x, y + i, clear, NULL);
- }
- }
- }
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.1
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/imports.h"
+
+#include "s_context.h"
+#include "s_depth.h"
+#include "s_stencil.h"
+#include "s_span.h"
+
+
+
+/* Stencil Logic:
+
+IF stencil test fails THEN
+ Apply fail-op to stencil value
+ Don't write the pixel (RGBA,Z)
+ELSE
+ IF doing depth test && depth test fails THEN
+ Apply zfail-op to stencil value
+ Write RGBA and Z to appropriate buffers
+ ELSE
+ Apply zpass-op to stencil value
+ENDIF
+
+*/
+
+
+/**
+ * Apply the given stencil operator to the array of stencil values.
+ * Don't touch stencil[i] if mask[i] is zero.
+ * Input: n - size of stencil array
+ * oper - the stencil buffer operator
+ * face - 0 or 1 for front or back face operation
+ * stencil - array of stencil values
+ * mask - array [n] of flag: 1=apply operator, 0=don't apply operator
+ * Output: stencil - modified values
+ */
+static void
+apply_stencil_op( const struct gl_context *ctx, GLenum oper, GLuint face,
+ GLuint n, GLstencil stencil[], const GLubyte mask[] )
+{
+ const GLstencil ref = ctx->Stencil.Ref[face];
+ const GLstencil wrtmask = ctx->Stencil.WriteMask[face];
+ const GLstencil invmask = (GLstencil) (~wrtmask);
+ const GLstencil stencilMax = (1 << ctx->DrawBuffer->Visual.stencilBits) - 1;
+ GLuint i;
+
+ switch (oper) {
+ case GL_KEEP:
+ /* do nothing */
+ break;
+ case GL_ZERO:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ stencil[i] = 0;
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ stencil[i] = (GLstencil) (stencil[i] & invmask);
+ }
+ }
+ }
+ break;
+ case GL_REPLACE:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ stencil[i] = ref;
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil s = stencil[i];
+ stencil[i] = (GLstencil) ((invmask & s ) | (wrtmask & ref));
+ }
+ }
+ }
+ break;
+ case GL_INCR:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil s = stencil[i];
+ if (s < stencilMax) {
+ stencil[i] = (GLstencil) (s+1);
+ }
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ /* VERIFY logic of adding 1 to a write-masked value */
+ GLstencil s = stencil[i];
+ if (s < stencilMax) {
+ stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s+1)));
+ }
+ }
+ }
+ }
+ break;
+ case GL_DECR:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil s = stencil[i];
+ if (s>0) {
+ stencil[i] = (GLstencil) (s-1);
+ }
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ /* VERIFY logic of subtracting 1 to a write-masked value */
+ GLstencil s = stencil[i];
+ if (s>0) {
+ stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s-1)));
+ }
+ }
+ }
+ }
+ break;
+ case GL_INCR_WRAP_EXT:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ stencil[i]++;
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil s = stencil[i];
+ stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s+1)));
+ }
+ }
+ }
+ break;
+ case GL_DECR_WRAP_EXT:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ stencil[i]--;
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil s = stencil[i];
+ stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & (s-1)));
+ }
+ }
+ }
+ break;
+ case GL_INVERT:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil s = stencil[i];
+ stencil[i] = (GLstencil) ~s;
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil s = stencil[i];
+ stencil[i] = (GLstencil) ((invmask & s) | (wrtmask & ~s));
+ }
+ }
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "Bad stencil op in apply_stencil_op");
+ }
+}
+
+
+
+
+/**
+ * Apply stencil test to an array of stencil values (before depth buffering).
+ * Input: face - 0 or 1 for front or back-face polygons
+ * n - number of pixels in the array
+ * stencil - array of [n] stencil values
+ * mask - array [n] of flag: 0=skip the pixel, 1=stencil the pixel
+ * Output: mask - pixels which fail the stencil test will have their
+ * mask flag set to 0.
+ * stencil - updated stencil values (where the test passed)
+ * Return: GL_FALSE = all pixels failed, GL_TRUE = zero or more pixels passed.
+ */
+static GLboolean
+do_stencil_test( struct gl_context *ctx, GLuint face, GLuint n, GLstencil stencil[],
+ GLubyte mask[] )
+{
+ GLubyte fail[MAX_WIDTH];
+ GLboolean allfail = GL_FALSE;
+ GLuint i;
+ const GLuint valueMask = ctx->Stencil.ValueMask[face];
+ const GLstencil r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
+ GLstencil s;
+
+ ASSERT(n <= MAX_WIDTH);
+
+ /*
+ * Perform stencil test. The results of this operation are stored
+ * in the fail[] array:
+ * IF fail[i] is non-zero THEN
+ * the stencil fail operator is to be applied
+ * ELSE
+ * the stencil fail operator is not to be applied
+ * ENDIF
+ */
+ switch (ctx->Stencil.Function[face]) {
+ case GL_NEVER:
+ /* never pass; always fail */
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ mask[i] = 0;
+ fail[i] = 1;
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ allfail = GL_TRUE;
+ break;
+ case GL_LESS:
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ s = (GLstencil) (stencil[i] & valueMask);
+ if (r < s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_LEQUAL:
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ s = (GLstencil) (stencil[i] & valueMask);
+ if (r <= s) {
+ /* pass */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_GREATER:
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ s = (GLstencil) (stencil[i] & valueMask);
+ if (r > s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_GEQUAL:
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ s = (GLstencil) (stencil[i] & valueMask);
+ if (r >= s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_EQUAL:
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ s = (GLstencil) (stencil[i] & valueMask);
+ if (r == s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_NOTEQUAL:
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ s = (GLstencil) (stencil[i] & valueMask);
+ if (r != s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_ALWAYS:
+ /* always pass */
+ for (i=0;i<n;i++) {
+ fail[i] = 0;
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "Bad stencil func in gl_stencil_span");
+ return 0;
+ }
+
+ if (ctx->Stencil.FailFunc[face] != GL_KEEP) {
+ apply_stencil_op( ctx, ctx->Stencil.FailFunc[face], face, n, stencil, fail );
+ }
+
+ return !allfail;
+}
+
+
+/**
+ * Compute the zpass/zfail masks by comparing the pre- and post-depth test
+ * masks.
+ */
+static INLINE void
+compute_pass_fail_masks(GLuint n, const GLubyte origMask[],
+ const GLubyte newMask[],
+ GLubyte passMask[], GLubyte failMask[])
+{
+ GLuint i;
+ for (i = 0; i < n; i++) {
+ ASSERT(newMask[i] == 0 || newMask[i] == 1);
+ passMask[i] = origMask[i] & newMask[i];
+ failMask[i] = origMask[i] & (newMask[i] ^ 1);
+ }
+}
+
+
+/**
+ * Apply stencil and depth testing to the span of pixels.
+ * Both software and hardware stencil buffers are acceptable.
+ * Input: n - number of pixels in the span
+ * x, y - location of leftmost pixel in span
+ * z - array [n] of z values
+ * mask - array [n] of flags (1=test this pixel, 0=skip the pixel)
+ * Output: mask - array [n] of flags (1=stencil and depth test passed)
+ * Return: GL_FALSE - all fragments failed the testing
+ * GL_TRUE - one or more fragments passed the testing
+ *
+ */
+static GLboolean
+stencil_and_ztest_span(struct gl_context *ctx, SWspan *span, GLuint face)
+{
+ struct gl_framebuffer *fb = ctx->DrawBuffer;
+ struct gl_renderbuffer *rb = fb->_StencilBuffer;
+ GLstencil stencilRow[MAX_WIDTH];
+ GLstencil *stencil;
+ const GLuint n = span->end;
+ const GLint x = span->x;
+ const GLint y = span->y;
+ GLubyte *mask = span->array->mask;
+
+ ASSERT((span->arrayMask & SPAN_XY) == 0);
+ ASSERT(ctx->Stencil.Enabled);
+ ASSERT(n <= MAX_WIDTH);
+#ifdef DEBUG
+ if (ctx->Depth.Test) {
+ ASSERT(span->arrayMask & SPAN_Z);
+ }
+#endif
+
+ stencil = (GLstencil *) rb->GetPointer(ctx, rb, x, y);
+ if (!stencil) {
+ rb->GetRow(ctx, rb, n, x, y, stencilRow);
+ stencil = stencilRow;
+ }
+
+ /*
+ * Apply the stencil test to the fragments.
+ * failMask[i] is 1 if the stencil test failed.
+ */
+ if (do_stencil_test( ctx, face, n, stencil, mask ) == GL_FALSE) {
+ /* all fragments failed the stencil test, we're done. */
+ span->writeAll = GL_FALSE;
+ if (!rb->GetPointer(ctx, rb, 0, 0)) {
+ /* put updated stencil values into buffer */
+ rb->PutRow(ctx, rb, n, x, y, stencil, NULL);
+ }
+ return GL_FALSE;
+ }
+
+ /*
+ * Some fragments passed the stencil test, apply depth test to them
+ * and apply Zpass and Zfail stencil ops.
+ */
+ if (ctx->Depth.Test == GL_FALSE ||
+ ctx->DrawBuffer->_DepthBuffer == NULL) {
+ /*
+ * No depth buffer, just apply zpass stencil function to active pixels.
+ */
+ apply_stencil_op( ctx, ctx->Stencil.ZPassFunc[face], face, n, stencil, mask );
+ }
+ else {
+ /*
+ * Perform depth buffering, then apply zpass or zfail stencil function.
+ */
+ GLubyte passMask[MAX_WIDTH], failMask[MAX_WIDTH], origMask[MAX_WIDTH];
+
+ /* save the current mask bits */
+ memcpy(origMask, mask, n * sizeof(GLubyte));
+
+ /* apply the depth test */
+ _swrast_depth_test_span(ctx, span);
+
+ compute_pass_fail_masks(n, origMask, mask, passMask, failMask);
+
+ /* apply the pass and fail operations */
+ if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
+ apply_stencil_op( ctx, ctx->Stencil.ZFailFunc[face], face,
+ n, stencil, failMask );
+ }
+ if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
+ apply_stencil_op( ctx, ctx->Stencil.ZPassFunc[face], face,
+ n, stencil, passMask );
+ }
+ }
+
+ /*
+ * Write updated stencil values back into hardware stencil buffer.
+ */
+ if (!rb->GetPointer(ctx, rb, 0, 0)) {
+ rb->PutRow(ctx, rb, n, x, y, stencil, NULL);
+ }
+
+ span->writeAll = GL_FALSE;
+
+ return GL_TRUE; /* one or more fragments passed both tests */
+}
+
+
+
+/*
+ * Return the address of a stencil buffer value given the window coords:
+ */
+#define STENCIL_ADDRESS(X, Y) (stencilStart + (Y) * stride + (X))
+
+
+
+/**
+ * Apply the given stencil operator for each pixel in the array whose
+ * mask flag is set.
+ * \note This is for software stencil buffers only.
+ * Input: n - number of pixels in the span
+ * x, y - array of [n] pixels
+ * operator - the stencil buffer operator
+ * mask - array [n] of flag: 1=apply operator, 0=don't apply operator
+ */
+static void
+apply_stencil_op_to_pixels( struct gl_context *ctx,
+ GLuint n, const GLint x[], const GLint y[],
+ GLenum oper, GLuint face, const GLubyte mask[] )
+{
+ struct gl_framebuffer *fb = ctx->DrawBuffer;
+ struct gl_renderbuffer *rb = fb->_StencilBuffer;
+ const GLstencil stencilMax = (1 << fb->Visual.stencilBits) - 1;
+ const GLstencil ref = ctx->Stencil.Ref[face];
+ const GLstencil wrtmask = ctx->Stencil.WriteMask[face];
+ const GLstencil invmask = (GLstencil) (~wrtmask);
+ GLuint i;
+ GLstencil *stencilStart = (GLubyte *) rb->Data;
+ const GLuint stride = rb->Width;
+
+ ASSERT(rb->GetPointer(ctx, rb, 0, 0));
+ ASSERT(sizeof(GLstencil) == 1);
+
+ switch (oper) {
+ case GL_KEEP:
+ /* do nothing */
+ break;
+ case GL_ZERO:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = 0;
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) (invmask & *sptr);
+ }
+ }
+ }
+ break;
+ case GL_REPLACE:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = ref;
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) ((invmask & *sptr ) | (wrtmask & ref));
+ }
+ }
+ }
+ break;
+ case GL_INCR:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ if (*sptr < stencilMax) {
+ *sptr = (GLstencil) (*sptr + 1);
+ }
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ if (*sptr < stencilMax) {
+ *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr+1)));
+ }
+ }
+ }
+ }
+ break;
+ case GL_DECR:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ if (*sptr>0) {
+ *sptr = (GLstencil) (*sptr - 1);
+ }
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ if (*sptr>0) {
+ *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr-1)));
+ }
+ }
+ }
+ }
+ break;
+ case GL_INCR_WRAP_EXT:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) (*sptr + 1);
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr+1)));
+ }
+ }
+ }
+ break;
+ case GL_DECR_WRAP_EXT:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) (*sptr - 1);
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & (*sptr-1)));
+ }
+ }
+ }
+ break;
+ case GL_INVERT:
+ if (invmask==0) {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) (~*sptr);
+ }
+ }
+ }
+ else {
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ GLstencil *sptr = STENCIL_ADDRESS( x[i], y[i] );
+ *sptr = (GLstencil) ((invmask & *sptr) | (wrtmask & ~*sptr));
+ }
+ }
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "Bad stencilop in apply_stencil_op_to_pixels");
+ }
+}
+
+
+
+/**
+ * Apply stencil test to an array of pixels before depth buffering.
+ *
+ * \note Used for software stencil buffer only.
+ * Input: n - number of pixels in the span
+ * x, y - array of [n] pixels to stencil
+ * mask - array [n] of flag: 0=skip the pixel, 1=stencil the pixel
+ * Output: mask - pixels which fail the stencil test will have their
+ * mask flag set to 0.
+ * \return GL_FALSE = all pixels failed, GL_TRUE = zero or more pixels passed.
+ */
+static GLboolean
+stencil_test_pixels( struct gl_context *ctx, GLuint face, GLuint n,
+ const GLint x[], const GLint y[], GLubyte mask[] )
+{
+ const struct gl_framebuffer *fb = ctx->DrawBuffer;
+ struct gl_renderbuffer *rb = fb->_StencilBuffer;
+ GLubyte fail[MAX_WIDTH];
+ GLstencil r, s;
+ GLuint i;
+ GLboolean allfail = GL_FALSE;
+ const GLuint valueMask = ctx->Stencil.ValueMask[face];
+ const GLstencil *stencilStart = (GLstencil *) rb->Data;
+ const GLuint stride = rb->Width;
+
+ ASSERT(rb->GetPointer(ctx, rb, 0, 0));
+ ASSERT(sizeof(GLstencil) == 1);
+
+ /*
+ * Perform stencil test. The results of this operation are stored
+ * in the fail[] array:
+ * IF fail[i] is non-zero THEN
+ * the stencil fail operator is to be applied
+ * ELSE
+ * the stencil fail operator is not to be applied
+ * ENDIF
+ */
+
+ switch (ctx->Stencil.Function[face]) {
+ case GL_NEVER:
+ /* always fail */
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ mask[i] = 0;
+ fail[i] = 1;
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ allfail = GL_TRUE;
+ break;
+ case GL_LESS:
+ r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
+ s = (GLstencil) (*sptr & valueMask);
+ if (r < s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_LEQUAL:
+ r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
+ s = (GLstencil) (*sptr & valueMask);
+ if (r <= s) {
+ /* pass */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_GREATER:
+ r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
+ s = (GLstencil) (*sptr & valueMask);
+ if (r > s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_GEQUAL:
+ r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
+ s = (GLstencil) (*sptr & valueMask);
+ if (r >= s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_EQUAL:
+ r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
+ s = (GLstencil) (*sptr & valueMask);
+ if (r == s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_NOTEQUAL:
+ r = (GLstencil) (ctx->Stencil.Ref[face] & valueMask);
+ for (i=0;i<n;i++) {
+ if (mask[i]) {
+ const GLstencil *sptr = STENCIL_ADDRESS(x[i],y[i]);
+ s = (GLstencil) (*sptr & valueMask);
+ if (r != s) {
+ /* passed */
+ fail[i] = 0;
+ }
+ else {
+ fail[i] = 1;
+ mask[i] = 0;
+ }
+ }
+ else {
+ fail[i] = 0;
+ }
+ }
+ break;
+ case GL_ALWAYS:
+ /* always pass */
+ for (i=0;i<n;i++) {
+ fail[i] = 0;
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "Bad stencil func in gl_stencil_pixels");
+ return 0;
+ }
+
+ if (ctx->Stencil.FailFunc[face] != GL_KEEP) {
+ apply_stencil_op_to_pixels( ctx, n, x, y, ctx->Stencil.FailFunc[face],
+ face, fail );
+ }
+
+ return !allfail;
+}
+
+
+
+
+/**
+ * Apply stencil and depth testing to an array of pixels.
+ * This is used both for software and hardware stencil buffers.
+ *
+ * The comments in this function are a bit sparse but the code is
+ * almost identical to stencil_and_ztest_span(), which is well
+ * commented.
+ *
+ * Input: n - number of pixels in the array
+ * x, y - array of [n] pixel positions
+ * z - array [n] of z values
+ * mask - array [n] of flags (1=test this pixel, 0=skip the pixel)
+ * Output: mask - array [n] of flags (1=stencil and depth test passed)
+ * Return: GL_FALSE - all fragments failed the testing
+ * GL_TRUE - one or more fragments passed the testing
+ */
+static GLboolean
+stencil_and_ztest_pixels( struct gl_context *ctx, SWspan *span, GLuint face )
+{
+ GLubyte passMask[MAX_WIDTH], failMask[MAX_WIDTH], origMask[MAX_WIDTH];
+ struct gl_framebuffer *fb = ctx->DrawBuffer;
+ struct gl_renderbuffer *rb = fb->_StencilBuffer;
+ const GLuint n = span->end;
+ const GLint *x = span->array->x;
+ const GLint *y = span->array->y;
+ GLubyte *mask = span->array->mask;
+
+ ASSERT(span->arrayMask & SPAN_XY);
+ ASSERT(ctx->Stencil.Enabled);
+ ASSERT(n <= MAX_WIDTH);
+
+ if (!rb->GetPointer(ctx, rb, 0, 0)) {
+ /* No direct access */
+ GLstencil stencil[MAX_WIDTH];
+
+ ASSERT(rb->DataType == GL_UNSIGNED_BYTE);
+ _swrast_get_values(ctx, rb, n, x, y, stencil, sizeof(GLubyte));
+
+ memcpy(origMask, mask, n * sizeof(GLubyte));
+
+ (void) do_stencil_test(ctx, face, n, stencil, mask);
+
+ if (ctx->Depth.Test == GL_FALSE) {
+ apply_stencil_op(ctx, ctx->Stencil.ZPassFunc[face], face,
+ n, stencil, mask);
+ }
+ else {
+ GLubyte tmpMask[MAX_WIDTH];
+ memcpy(tmpMask, mask, n * sizeof(GLubyte));
+
+ _swrast_depth_test_span(ctx, span);
+
+ compute_pass_fail_masks(n, tmpMask, mask, passMask, failMask);
+
+ if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
+ apply_stencil_op(ctx, ctx->Stencil.ZFailFunc[face], face,
+ n, stencil, failMask);
+ }
+ if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
+ apply_stencil_op(ctx, ctx->Stencil.ZPassFunc[face], face,
+ n, stencil, passMask);
+ }
+ }
+
+ /* Write updated stencil values into hardware stencil buffer */
+ rb->PutValues(ctx, rb, n, x, y, stencil, origMask);
+
+ return GL_TRUE;
+ }
+ else {
+ /* Direct access to stencil buffer */
+
+ if (stencil_test_pixels(ctx, face, n, x, y, mask) == GL_FALSE) {
+ /* all fragments failed the stencil test, we're done. */
+ return GL_FALSE;
+ }
+
+ if (ctx->Depth.Test==GL_FALSE) {
+ apply_stencil_op_to_pixels(ctx, n, x, y,
+ ctx->Stencil.ZPassFunc[face], face, mask);
+ }
+ else {
+ memcpy(origMask, mask, n * sizeof(GLubyte));
+
+ _swrast_depth_test_span(ctx, span);
+
+ compute_pass_fail_masks(n, origMask, mask, passMask, failMask);
+
+ if (ctx->Stencil.ZFailFunc[face] != GL_KEEP) {
+ apply_stencil_op_to_pixels(ctx, n, x, y,
+ ctx->Stencil.ZFailFunc[face],
+ face, failMask);
+ }
+ if (ctx->Stencil.ZPassFunc[face] != GL_KEEP) {
+ apply_stencil_op_to_pixels(ctx, n, x, y,
+ ctx->Stencil.ZPassFunc[face],
+ face, passMask);
+ }
+ }
+
+ return GL_TRUE; /* one or more fragments passed both tests */
+ }
+}
+
+
+/**
+ * /return GL_TRUE = one or more fragments passed,
+ * GL_FALSE = all fragments failed.
+ */
+GLboolean
+_swrast_stencil_and_ztest_span(struct gl_context *ctx, SWspan *span)
+{
+ const GLuint face = (span->facing == 0) ? 0 : ctx->Stencil._BackFace;
+
+ if (span->arrayMask & SPAN_XY)
+ return stencil_and_ztest_pixels(ctx, span, face);
+ else
+ return stencil_and_ztest_span(ctx, span, face);
+}
+
+
+#if 0
+GLuint
+clip_span(GLuint bufferWidth, GLuint bufferHeight,
+ GLint x, GLint y, GLuint *count)
+{
+ GLuint n = *count;
+ GLuint skipPixels = 0;
+
+ if (y < 0 || y >= bufferHeight || x + n <= 0 || x >= bufferWidth) {
+ /* totally out of bounds */
+ n = 0;
+ }
+ else {
+ /* left clip */
+ if (x < 0) {
+ skipPixels = -x;
+ x = 0;
+ n -= skipPixels;
+ }
+ /* right clip */
+ if (x + n > bufferWidth) {
+ GLint dx = x + n - bufferWidth;
+ n -= dx;
+ }
+ }
+
+ *count = n;
+
+ return skipPixels;
+}
+#endif
+
+
+/**
+ * Return a span of stencil values from the stencil buffer.
+ * Used for glRead/CopyPixels
+ * Input: n - how many pixels
+ * x,y - location of first pixel
+ * Output: stencil - the array of stencil values
+ */
+void
+_swrast_read_stencil_span(struct gl_context *ctx, struct gl_renderbuffer *rb,
+ GLint n, GLint x, GLint y, GLstencil stencil[])
+{
+ if (y < 0 || y >= (GLint) rb->Height ||
+ x + n <= 0 || x >= (GLint) rb->Width) {
+ /* span is completely outside framebuffer */
+ return; /* undefined values OK */
+ }
+
+ if (x < 0) {
+ GLint dx = -x;
+ x = 0;
+ n -= dx;
+ stencil += dx;
+ }
+ if (x + n > (GLint) rb->Width) {
+ GLint dx = x + n - rb->Width;
+ n -= dx;
+ }
+ if (n <= 0) {
+ return;
+ }
+
+ rb->GetRow(ctx, rb, n, x, y, stencil);
+}
+
+
+
+/**
+ * Write a span of stencil values to the stencil buffer. This function
+ * applies the stencil write mask when needed.
+ * Used for glDraw/CopyPixels
+ * Input: n - how many pixels
+ * x, y - location of first pixel
+ * stencil - the array of stencil values
+ */
+void
+_swrast_write_stencil_span(struct gl_context *ctx, GLint n, GLint x, GLint y,
+ const GLstencil stencil[] )
+{
+ struct gl_framebuffer *fb = ctx->DrawBuffer;
+ struct gl_renderbuffer *rb = fb->_StencilBuffer;
+ const GLuint stencilMax = (1 << fb->Visual.stencilBits) - 1;
+ const GLuint stencilMask = ctx->Stencil.WriteMask[0];
+
+ if (y < 0 || y >= (GLint) rb->Height ||
+ x + n <= 0 || x >= (GLint) rb->Width) {
+ /* span is completely outside framebuffer */
+ return; /* undefined values OK */
+ }
+ if (x < 0) {
+ GLint dx = -x;
+ x = 0;
+ n -= dx;
+ stencil += dx;
+ }
+ if (x + n > (GLint) rb->Width) {
+ GLint dx = x + n - rb->Width;
+ n -= dx;
+ }
+ if (n <= 0) {
+ return;
+ }
+
+ if ((stencilMask & stencilMax) != stencilMax) {
+ /* need to apply writemask */
+ GLstencil destVals[MAX_WIDTH], newVals[MAX_WIDTH];
+ GLint i;
+ rb->GetRow(ctx, rb, n, x, y, destVals);
+ for (i = 0; i < n; i++) {
+ newVals[i]
+ = (stencil[i] & stencilMask) | (destVals[i] & ~stencilMask);
+ }
+ rb->PutRow(ctx, rb, n, x, y, newVals, NULL);
+ }
+ else {
+ rb->PutRow(ctx, rb, n, x, y, stencil, NULL);
+ }
+}
+
+
+
+/**
+ * Clear the stencil buffer.
+ */
+void
+_swrast_clear_stencil_buffer( struct gl_context *ctx, struct gl_renderbuffer *rb )
+{
+ const GLubyte stencilBits = ctx->DrawBuffer->Visual.stencilBits;
+ const GLuint mask = ctx->Stencil.WriteMask[0];
+ const GLuint invMask = ~mask;
+ const GLuint clearVal = (ctx->Stencil.Clear & mask);
+ const GLuint stencilMax = (1 << stencilBits) - 1;
+ GLint x, y, width, height;
+
+ if (!rb || mask == 0)
+ return;
+
+ ASSERT(rb->DataType == GL_UNSIGNED_BYTE ||
+ rb->DataType == GL_UNSIGNED_SHORT);
+
+ ASSERT(rb->_BaseFormat == GL_STENCIL_INDEX);
+
+ /* compute region to clear */
+ x = ctx->DrawBuffer->_Xmin;
+ y = ctx->DrawBuffer->_Ymin;
+ width = ctx->DrawBuffer->_Xmax - ctx->DrawBuffer->_Xmin;
+ height = ctx->DrawBuffer->_Ymax - ctx->DrawBuffer->_Ymin;
+
+ if (rb->GetPointer(ctx, rb, 0, 0)) {
+ /* Direct buffer access */
+ if ((mask & stencilMax) != stencilMax) {
+ /* need to mask the clear */
+ if (rb->DataType == GL_UNSIGNED_BYTE) {
+ GLint i, j;
+ for (i = 0; i < height; i++) {
+ GLubyte *stencil = (GLubyte*) rb->GetPointer(ctx, rb, x, y + i);
+ for (j = 0; j < width; j++) {
+ stencil[j] = (stencil[j] & invMask) | clearVal;
+ }
+ }
+ }
+ else {
+ GLint i, j;
+ for (i = 0; i < height; i++) {
+ GLushort *stencil = (GLushort*) rb->GetPointer(ctx, rb, x, y + i);
+ for (j = 0; j < width; j++) {
+ stencil[j] = (stencil[j] & invMask) | clearVal;
+ }
+ }
+ }
+ }
+ else {
+ /* no bit masking */
+ if (width == (GLint) rb->Width && rb->DataType == GL_UNSIGNED_BYTE) {
+ /* optimized case */
+ /* Note: bottom-to-top raster assumed! */
+ GLubyte *stencil = (GLubyte *) rb->GetPointer(ctx, rb, x, y);
+ GLuint len = width * height * sizeof(GLubyte);
+ memset(stencil, clearVal, len);
+ }
+ else {
+ /* general case */
+ GLint i;
+ for (i = 0; i < height; i++) {
+ GLvoid *stencil = rb->GetPointer(ctx, rb, x, y + i);
+ if (rb->DataType == GL_UNSIGNED_BYTE) {
+ memset(stencil, clearVal, width);
+ }
+ else {
+ _mesa_memset16((short unsigned int*) stencil, clearVal, width);
+ }
+ }
+ }
+ }
+ }
+ else {
+ /* no direct access */
+ if ((mask & stencilMax) != stencilMax) {
+ /* need to mask the clear */
+ if (rb->DataType == GL_UNSIGNED_BYTE) {
+ GLint i, j;
+ for (i = 0; i < height; i++) {
+ GLubyte stencil[MAX_WIDTH];
+ rb->GetRow(ctx, rb, width, x, y + i, stencil);
+ for (j = 0; j < width; j++) {
+ stencil[j] = (stencil[j] & invMask) | clearVal;
+ }
+ rb->PutRow(ctx, rb, width, x, y + i, stencil, NULL);
+ }
+ }
+ else {
+ GLint i, j;
+ for (i = 0; i < height; i++) {
+ GLushort stencil[MAX_WIDTH];
+ rb->GetRow(ctx, rb, width, x, y + i, stencil);
+ for (j = 0; j < width; j++) {
+ stencil[j] = (stencil[j] & invMask) | clearVal;
+ }
+ rb->PutRow(ctx, rb, width, x, y + i, stencil, NULL);
+ }
+ }
+ }
+ else {
+ /* no bit masking */
+ const GLubyte clear8 = (GLubyte) clearVal;
+ const GLushort clear16 = (GLushort) clearVal;
+ const void *clear;
+ GLint i;
+ if (rb->DataType == GL_UNSIGNED_BYTE) {
+ clear = &clear8;
+ }
+ else {
+ clear = &clear16;
+ }
+ for (i = 0; i < height; i++) {
+ rb->PutMonoRow(ctx, rb, width, x, y + i, clear, NULL);
+ }
+ }
+ }
+}
diff --git a/mesalib/src/mesa/swrast/s_texcombine.c b/mesalib/src/mesa/swrast/s_texcombine.c
index 53ef2f890..80b9dff3c 100644
--- a/mesalib/src/mesa/swrast/s_texcombine.c
+++ b/mesalib/src/mesa/swrast/s_texcombine.c
@@ -1,751 +1,755 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.5
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/colormac.h"
-#include "main/imports.h"
-#include "main/pixeltransfer.h"
-#include "program/prog_instruction.h"
-
-#include "s_context.h"
-#include "s_texcombine.h"
-
-
-/**
- * Pointer to array of float[4]
- * This type makes the code below more concise and avoids a lot of casting.
- */
-typedef float (*float4_array)[4];
-
-
-/**
- * Return array of texels for given unit.
- */
-static INLINE float4_array
-get_texel_array(SWcontext *swrast, GLuint unit)
-{
- return (float4_array) (swrast->TexelBuffer + unit * MAX_WIDTH * 4);
-}
-
-
-
-/**
- * Do texture application for:
- * GL_EXT_texture_env_combine
- * GL_ARB_texture_env_combine
- * GL_EXT_texture_env_dot3
- * GL_ARB_texture_env_dot3
- * GL_ATI_texture_env_combine3
- * GL_NV_texture_env_combine4
- * conventional GL texture env modes
- *
- * \param ctx rendering context
- * \param unit the texture combiner unit
- * \param n number of fragments to process (span width)
- * \param primary_rgba incoming fragment color array
- * \param texelBuffer pointer to texel colors for all texture units
- *
- * \param rgba incoming/result fragment colors
- */
-static void
-texture_combine( struct gl_context *ctx, GLuint unit, GLuint n,
- const float4_array primary_rgba,
- const GLfloat *texelBuffer,
- GLchan (*rgbaChan)[4] )
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- const struct gl_texture_unit *textureUnit = &(ctx->Texture.Unit[unit]);
- const struct gl_tex_env_combine_state *combine = textureUnit->_CurrentCombine;
- float4_array argRGB[MAX_COMBINER_TERMS];
- float4_array argA[MAX_COMBINER_TERMS];
- const GLfloat scaleRGB = (GLfloat) (1 << combine->ScaleShiftRGB);
- const GLfloat scaleA = (GLfloat) (1 << combine->ScaleShiftA);
- const GLuint numArgsRGB = combine->_NumArgsRGB;
- const GLuint numArgsA = combine->_NumArgsA;
- float4_array ccolor[4], rgba;
- GLuint i, term;
-
- /* alloc temp pixel buffers */
- rgba = (float4_array) malloc(4 * n * sizeof(GLfloat));
- if (!rgba) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine");
- return;
- }
-
- for (i = 0; i < numArgsRGB || i < numArgsA; i++) {
- ccolor[i] = (float4_array) malloc(4 * n * sizeof(GLfloat));
- if (!ccolor[i]) {
- while (i) {
- free(ccolor[i]);
- i--;
- }
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine");
- return;
- }
- }
-
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = CHAN_TO_FLOAT(rgbaChan[i][RCOMP]);
- rgba[i][GCOMP] = CHAN_TO_FLOAT(rgbaChan[i][GCOMP]);
- rgba[i][BCOMP] = CHAN_TO_FLOAT(rgbaChan[i][BCOMP]);
- rgba[i][ACOMP] = CHAN_TO_FLOAT(rgbaChan[i][ACOMP]);
- }
-
- /*
- printf("modeRGB 0x%x modeA 0x%x srcRGB1 0x%x srcA1 0x%x srcRGB2 0x%x srcA2 0x%x\n",
- combine->ModeRGB,
- combine->ModeA,
- combine->SourceRGB[0],
- combine->SourceA[0],
- combine->SourceRGB[1],
- combine->SourceA[1]);
- */
-
- /*
- * Do operand setup for up to 4 operands. Loop over the terms.
- */
- for (term = 0; term < numArgsRGB; term++) {
- const GLenum srcRGB = combine->SourceRGB[term];
- const GLenum operandRGB = combine->OperandRGB[term];
-
- switch (srcRGB) {
- case GL_TEXTURE:
- argRGB[term] = get_texel_array(swrast, unit);
- break;
- case GL_PRIMARY_COLOR:
- argRGB[term] = primary_rgba;
- break;
- case GL_PREVIOUS:
- argRGB[term] = rgba;
- break;
- case GL_CONSTANT:
- {
- float4_array c = ccolor[term];
- GLfloat red = textureUnit->EnvColor[0];
- GLfloat green = textureUnit->EnvColor[1];
- GLfloat blue = textureUnit->EnvColor[2];
- GLfloat alpha = textureUnit->EnvColor[3];
- for (i = 0; i < n; i++) {
- ASSIGN_4V(c[i], red, green, blue, alpha);
- }
- argRGB[term] = ccolor[term];
- }
- break;
- /* GL_ATI_texture_env_combine3 allows GL_ZERO & GL_ONE as sources.
- */
- case GL_ZERO:
- {
- float4_array c = ccolor[term];
- for (i = 0; i < n; i++) {
- ASSIGN_4V(c[i], 0.0F, 0.0F, 0.0F, 0.0F);
- }
- argRGB[term] = ccolor[term];
- }
- break;
- case GL_ONE:
- {
- float4_array c = ccolor[term];
- for (i = 0; i < n; i++) {
- ASSIGN_4V(c[i], 1.0F, 1.0F, 1.0F, 1.0F);
- }
- argRGB[term] = ccolor[term];
- }
- break;
- default:
- /* ARB_texture_env_crossbar source */
- {
- const GLuint srcUnit = srcRGB - GL_TEXTURE0;
- ASSERT(srcUnit < ctx->Const.MaxTextureUnits);
- if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled)
- goto end;
- argRGB[term] = get_texel_array(swrast, srcUnit);
- }
- }
-
- if (operandRGB != GL_SRC_COLOR) {
- float4_array src = argRGB[term];
- float4_array dst = ccolor[term];
-
- /* point to new arg[term] storage */
- argRGB[term] = ccolor[term];
-
- switch (operandRGB) {
- case GL_ONE_MINUS_SRC_COLOR:
- for (i = 0; i < n; i++) {
- dst[i][RCOMP] = 1.0F - src[i][RCOMP];
- dst[i][GCOMP] = 1.0F - src[i][GCOMP];
- dst[i][BCOMP] = 1.0F - src[i][BCOMP];
- }
- break;
- case GL_SRC_ALPHA:
- for (i = 0; i < n; i++) {
- dst[i][RCOMP] =
- dst[i][GCOMP] =
- dst[i][BCOMP] = src[i][ACOMP];
- }
- break;
- case GL_ONE_MINUS_SRC_ALPHA:
- for (i = 0; i < n; i++) {
- dst[i][RCOMP] =
- dst[i][GCOMP] =
- dst[i][BCOMP] = 1.0F - src[i][ACOMP];
- }
- break;
- default:
- _mesa_problem(ctx, "Bad operandRGB");
- }
- }
- }
-
- /*
- * Set up the argA[term] pointers
- */
- for (term = 0; term < numArgsA; term++) {
- const GLenum srcA = combine->SourceA[term];
- const GLenum operandA = combine->OperandA[term];
-
- switch (srcA) {
- case GL_TEXTURE:
- argA[term] = get_texel_array(swrast, unit);
- break;
- case GL_PRIMARY_COLOR:
- argA[term] = primary_rgba;
- break;
- case GL_PREVIOUS:
- argA[term] = rgba;
- break;
- case GL_CONSTANT:
- {
- float4_array c = ccolor[term];
- GLfloat alpha = textureUnit->EnvColor[3];
- for (i = 0; i < n; i++)
- c[i][ACOMP] = alpha;
- argA[term] = ccolor[term];
- }
- break;
- /* GL_ATI_texture_env_combine3 allows GL_ZERO & GL_ONE as sources.
- */
- case GL_ZERO:
- {
- float4_array c = ccolor[term];
- for (i = 0; i < n; i++)
- c[i][ACOMP] = 0.0F;
- argA[term] = ccolor[term];
- }
- break;
- case GL_ONE:
- {
- float4_array c = ccolor[term];
- for (i = 0; i < n; i++)
- c[i][ACOMP] = 1.0F;
- argA[term] = ccolor[term];
- }
- break;
- default:
- /* ARB_texture_env_crossbar source */
- {
- const GLuint srcUnit = srcA - GL_TEXTURE0;
- ASSERT(srcUnit < ctx->Const.MaxTextureUnits);
- if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled)
- goto end;
- argA[term] = get_texel_array(swrast, srcUnit);
- }
- }
-
- if (operandA == GL_ONE_MINUS_SRC_ALPHA) {
- float4_array src = argA[term];
- float4_array dst = ccolor[term];
- argA[term] = ccolor[term];
- for (i = 0; i < n; i++) {
- dst[i][ACOMP] = 1.0F - src[i][ACOMP];
- }
- }
- }
-
- /* RGB channel combine */
- {
- float4_array arg0 = argRGB[0];
- float4_array arg1 = argRGB[1];
- float4_array arg2 = argRGB[2];
- float4_array arg3 = argRGB[3];
-
- switch (combine->ModeRGB) {
- case GL_REPLACE:
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = arg0[i][RCOMP] * scaleRGB;
- rgba[i][GCOMP] = arg0[i][GCOMP] * scaleRGB;
- rgba[i][BCOMP] = arg0[i][BCOMP] * scaleRGB;
- }
- break;
- case GL_MODULATE:
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = arg0[i][RCOMP] * arg1[i][RCOMP] * scaleRGB;
- rgba[i][GCOMP] = arg0[i][GCOMP] * arg1[i][GCOMP] * scaleRGB;
- rgba[i][BCOMP] = arg0[i][BCOMP] * arg1[i][BCOMP] * scaleRGB;
- }
- break;
- case GL_ADD:
- if (textureUnit->EnvMode == GL_COMBINE4_NV) {
- /* (a * b) + (c * d) */
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = (arg0[i][RCOMP] * arg1[i][RCOMP] +
- arg2[i][RCOMP] * arg3[i][RCOMP]) * scaleRGB;
- rgba[i][GCOMP] = (arg0[i][GCOMP] * arg1[i][GCOMP] +
- arg2[i][GCOMP] * arg3[i][GCOMP]) * scaleRGB;
- rgba[i][BCOMP] = (arg0[i][BCOMP] * arg1[i][BCOMP] +
- arg2[i][BCOMP] * arg3[i][BCOMP]) * scaleRGB;
- }
- }
- else {
- /* 2-term addition */
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = (arg0[i][RCOMP] + arg1[i][RCOMP]) * scaleRGB;
- rgba[i][GCOMP] = (arg0[i][GCOMP] + arg1[i][GCOMP]) * scaleRGB;
- rgba[i][BCOMP] = (arg0[i][BCOMP] + arg1[i][BCOMP]) * scaleRGB;
- }
- }
- break;
- case GL_ADD_SIGNED:
- if (textureUnit->EnvMode == GL_COMBINE4_NV) {
- /* (a * b) + (c * d) - 0.5 */
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = (arg0[i][RCOMP] * arg1[i][RCOMP] +
- arg2[i][RCOMP] * arg3[i][RCOMP] - 0.5F) * scaleRGB;
- rgba[i][GCOMP] = (arg0[i][GCOMP] * arg1[i][GCOMP] +
- arg2[i][GCOMP] * arg3[i][GCOMP] - 0.5F) * scaleRGB;
- rgba[i][BCOMP] = (arg0[i][BCOMP] * arg1[i][BCOMP] +
- arg2[i][BCOMP] * arg3[i][BCOMP] - 0.5F) * scaleRGB;
- }
- }
- else {
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = (arg0[i][RCOMP] + arg1[i][RCOMP] - 0.5F) * scaleRGB;
- rgba[i][GCOMP] = (arg0[i][GCOMP] + arg1[i][GCOMP] - 0.5F) * scaleRGB;
- rgba[i][BCOMP] = (arg0[i][BCOMP] + arg1[i][BCOMP] - 0.5F) * scaleRGB;
- }
- }
- break;
- case GL_INTERPOLATE:
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = (arg0[i][RCOMP] * arg2[i][RCOMP] +
- arg1[i][RCOMP] * (1.0F - arg2[i][RCOMP])) * scaleRGB;
- rgba[i][GCOMP] = (arg0[i][GCOMP] * arg2[i][GCOMP] +
- arg1[i][GCOMP] * (1.0F - arg2[i][GCOMP])) * scaleRGB;
- rgba[i][BCOMP] = (arg0[i][BCOMP] * arg2[i][BCOMP] +
- arg1[i][BCOMP] * (1.0F - arg2[i][BCOMP])) * scaleRGB;
- }
- break;
- case GL_SUBTRACT:
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = (arg0[i][RCOMP] - arg1[i][RCOMP]) * scaleRGB;
- rgba[i][GCOMP] = (arg0[i][GCOMP] - arg1[i][GCOMP]) * scaleRGB;
- rgba[i][BCOMP] = (arg0[i][BCOMP] - arg1[i][BCOMP]) * scaleRGB;
- }
- break;
- case GL_DOT3_RGB_EXT:
- case GL_DOT3_RGBA_EXT:
- /* Do not scale the result by 1 2 or 4 */
- for (i = 0; i < n; i++) {
- GLfloat dot = ((arg0[i][RCOMP] - 0.5F) * (arg1[i][RCOMP] - 0.5F) +
- (arg0[i][GCOMP] - 0.5F) * (arg1[i][GCOMP] - 0.5F) +
- (arg0[i][BCOMP] - 0.5F) * (arg1[i][BCOMP] - 0.5F))
- * 4.0F;
- dot = CLAMP(dot, 0.0F, 1.0F);
- rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = dot;
- }
- break;
- case GL_DOT3_RGB:
- case GL_DOT3_RGBA:
- /* DO scale the result by 1 2 or 4 */
- for (i = 0; i < n; i++) {
- GLfloat dot = ((arg0[i][RCOMP] - 0.5F) * (arg1[i][RCOMP] - 0.5F) +
- (arg0[i][GCOMP] - 0.5F) * (arg1[i][GCOMP] - 0.5F) +
- (arg0[i][BCOMP] - 0.5F) * (arg1[i][BCOMP] - 0.5F))
- * 4.0F * scaleRGB;
- dot = CLAMP(dot, 0.0F, 1.0F);
- rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = dot;
- }
- break;
- case GL_MODULATE_ADD_ATI:
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) +
- arg1[i][RCOMP]) * scaleRGB;
- rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) +
- arg1[i][GCOMP]) * scaleRGB;
- rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) +
- arg1[i][BCOMP]) * scaleRGB;
- }
- break;
- case GL_MODULATE_SIGNED_ADD_ATI:
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) +
- arg1[i][RCOMP] - 0.5F) * scaleRGB;
- rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) +
- arg1[i][GCOMP] - 0.5F) * scaleRGB;
- rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) +
- arg1[i][BCOMP] - 0.5F) * scaleRGB;
- }
- break;
- case GL_MODULATE_SUBTRACT_ATI:
- for (i = 0; i < n; i++) {
- rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) -
- arg1[i][RCOMP]) * scaleRGB;
- rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) -
- arg1[i][GCOMP]) * scaleRGB;
- rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) -
- arg1[i][BCOMP]) * scaleRGB;
- }
- break;
- case GL_BUMP_ENVMAP_ATI:
- /* this produces a fixed rgba color, and the coord calc is done elsewhere */
- for (i = 0; i < n; i++) {
- /* rgba result is 0,0,0,1 */
- rgba[i][RCOMP] = 0.0;
- rgba[i][GCOMP] = 0.0;
- rgba[i][BCOMP] = 0.0;
- rgba[i][ACOMP] = 1.0;
- }
- goto end; /* no alpha processing */
- default:
- _mesa_problem(ctx, "invalid combine mode");
- }
- }
-
- /* Alpha channel combine */
- {
- float4_array arg0 = argA[0];
- float4_array arg1 = argA[1];
- float4_array arg2 = argA[2];
- float4_array arg3 = argA[3];
-
- switch (combine->ModeA) {
- case GL_REPLACE:
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = arg0[i][ACOMP] * scaleA;
- }
- break;
- case GL_MODULATE:
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = arg0[i][ACOMP] * arg1[i][ACOMP] * scaleA;
- }
- break;
- case GL_ADD:
- if (textureUnit->EnvMode == GL_COMBINE4_NV) {
- /* (a * b) + (c * d) */
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = (arg0[i][ACOMP] * arg1[i][ACOMP] +
- arg2[i][ACOMP] * arg3[i][ACOMP]) * scaleA;
- }
- }
- else {
- /* two-term add */
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = (arg0[i][ACOMP] + arg1[i][ACOMP]) * scaleA;
- }
- }
- break;
- case GL_ADD_SIGNED:
- if (textureUnit->EnvMode == GL_COMBINE4_NV) {
- /* (a * b) + (c * d) - 0.5 */
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = (arg0[i][ACOMP] * arg1[i][ACOMP] +
- arg2[i][ACOMP] * arg3[i][ACOMP] -
- 0.5F) * scaleA;
- }
- }
- else {
- /* a + b - 0.5 */
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = (arg0[i][ACOMP] + arg1[i][ACOMP] - 0.5F) * scaleA;
- }
- }
- break;
- case GL_INTERPOLATE:
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = (arg0[i][ACOMP] * arg2[i][ACOMP] +
- arg1[i][ACOMP] * (1.0F - arg2[i][ACOMP]))
- * scaleA;
- }
- break;
- case GL_SUBTRACT:
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = (arg0[i][ACOMP] - arg1[i][ACOMP]) * scaleA;
- }
- break;
- case GL_MODULATE_ADD_ATI:
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP])
- + arg1[i][ACOMP]) * scaleA;
- }
- break;
- case GL_MODULATE_SIGNED_ADD_ATI:
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP]) +
- arg1[i][ACOMP] - 0.5F) * scaleA;
- }
- break;
- case GL_MODULATE_SUBTRACT_ATI:
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP])
- - arg1[i][ACOMP]) * scaleA;
- }
- break;
- default:
- _mesa_problem(ctx, "invalid combine mode");
- }
- }
-
- /* Fix the alpha component for GL_DOT3_RGBA_EXT/ARB combining.
- * This is kind of a kludge. It would have been better if the spec
- * were written such that the GL_COMBINE_ALPHA value could be set to
- * GL_DOT3.
- */
- if (combine->ModeRGB == GL_DOT3_RGBA_EXT ||
- combine->ModeRGB == GL_DOT3_RGBA) {
- for (i = 0; i < n; i++) {
- rgba[i][ACOMP] = rgba[i][RCOMP];
- }
- }
-
- for (i = 0; i < n; i++) {
- UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][RCOMP], rgba[i][RCOMP]);
- UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][GCOMP], rgba[i][GCOMP]);
- UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][BCOMP], rgba[i][BCOMP]);
- UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][ACOMP], rgba[i][ACOMP]);
- }
-
-end:
- for (i = 0; i < numArgsRGB || i < numArgsA; i++) {
- free(ccolor[i]);
- }
- free(rgba);
-}
-
-
-/**
- * Apply X/Y/Z/W/0/1 swizzle to an array of colors/texels.
- * See GL_EXT_texture_swizzle.
- */
-static void
-swizzle_texels(GLuint swizzle, GLuint count, float4_array texels)
-{
- const GLuint swzR = GET_SWZ(swizzle, 0);
- const GLuint swzG = GET_SWZ(swizzle, 1);
- const GLuint swzB = GET_SWZ(swizzle, 2);
- const GLuint swzA = GET_SWZ(swizzle, 3);
- GLfloat vector[6];
- GLuint i;
-
- vector[SWIZZLE_ZERO] = 0;
- vector[SWIZZLE_ONE] = 1.0F;
-
- for (i = 0; i < count; i++) {
- vector[SWIZZLE_X] = texels[i][0];
- vector[SWIZZLE_Y] = texels[i][1];
- vector[SWIZZLE_Z] = texels[i][2];
- vector[SWIZZLE_W] = texels[i][3];
- texels[i][RCOMP] = vector[swzR];
- texels[i][GCOMP] = vector[swzG];
- texels[i][BCOMP] = vector[swzB];
- texels[i][ACOMP] = vector[swzA];
- }
-}
-
-
-/**
- * Apply texture mapping to a span of fragments.
- */
-void
-_swrast_texture_span( struct gl_context *ctx, SWspan *span )
-{
- SWcontext *swrast = SWRAST_CONTEXT(ctx);
- float4_array primary_rgba;
- GLuint unit;
-
- primary_rgba = (float4_array) malloc(span->end * 4 * sizeof(GLfloat));
-
- if (!primary_rgba) {
- _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_span");
- return;
- }
-
- ASSERT(span->end <= MAX_WIDTH);
-
- /*
- * Save copy of the incoming fragment colors (the GL_PRIMARY_COLOR)
- */
- if (swrast->_TextureCombinePrimary) {
- GLuint i;
- for (i = 0; i < span->end; i++) {
- primary_rgba[i][RCOMP] = CHAN_TO_FLOAT(span->array->rgba[i][RCOMP]);
- primary_rgba[i][GCOMP] = CHAN_TO_FLOAT(span->array->rgba[i][GCOMP]);
- primary_rgba[i][BCOMP] = CHAN_TO_FLOAT(span->array->rgba[i][BCOMP]);
- primary_rgba[i][ACOMP] = CHAN_TO_FLOAT(span->array->rgba[i][ACOMP]);
- }
- }
-
- /* First must sample all bump maps */
- for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
- const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
-
- if (texUnit->_ReallyEnabled &&
- texUnit->_CurrentCombine->ModeRGB == GL_BUMP_ENVMAP_ATI) {
- const GLfloat (*texcoords)[4] = (const GLfloat (*)[4])
- span->array->attribs[FRAG_ATTRIB_TEX0 + unit];
- float4_array targetcoords =
- span->array->attribs[FRAG_ATTRIB_TEX0 +
- ctx->Texture.Unit[unit].BumpTarget - GL_TEXTURE0];
-
- const struct gl_texture_object *curObj = texUnit->_Current;
- GLfloat *lambda = span->array->lambda[unit];
- float4_array texels = get_texel_array(swrast, unit);
- GLuint i;
- GLfloat rotMatrix00 = ctx->Texture.Unit[unit].RotMatrix[0];
- GLfloat rotMatrix01 = ctx->Texture.Unit[unit].RotMatrix[1];
- GLfloat rotMatrix10 = ctx->Texture.Unit[unit].RotMatrix[2];
- GLfloat rotMatrix11 = ctx->Texture.Unit[unit].RotMatrix[3];
-
- /* adjust texture lod (lambda) */
- if (span->arrayMask & SPAN_LAMBDA) {
- if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) {
- /* apply LOD bias, but don't clamp yet */
- const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias,
- -ctx->Const.MaxTextureLodBias,
- ctx->Const.MaxTextureLodBias);
- GLuint i;
- for (i = 0; i < span->end; i++) {
- lambda[i] += bias;
- }
- }
-
- if (curObj->Sampler.MinLod != -1000.0 ||
- curObj->Sampler.MaxLod != 1000.0) {
- /* apply LOD clamping to lambda */
- const GLfloat min = curObj->Sampler.MinLod;
- const GLfloat max = curObj->Sampler.MaxLod;
- GLuint i;
- for (i = 0; i < span->end; i++) {
- GLfloat l = lambda[i];
- lambda[i] = CLAMP(l, min, max);
- }
- }
- }
-
- /* Sample the texture (span->end = number of fragments) */
- swrast->TextureSample[unit]( ctx, texUnit->_Current, span->end,
- texcoords, lambda, texels );
-
- /* manipulate the span values of the bump target
- not sure this can work correctly even ignoring
- the problem that channel is unsigned */
- for (i = 0; i < span->end; i++) {
- targetcoords[i][0] += (texels[i][0] * rotMatrix00 + texels[i][1] *
- rotMatrix01) / targetcoords[i][3];
- targetcoords[i][1] += (texels[i][0] * rotMatrix10 + texels[i][1] *
- rotMatrix11) / targetcoords[i][3];
- }
- }
- }
-
- /*
- * Must do all texture sampling before combining in order to
- * accomodate GL_ARB_texture_env_crossbar.
- */
- for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
- const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
- if (texUnit->_ReallyEnabled &&
- texUnit->_CurrentCombine->ModeRGB != GL_BUMP_ENVMAP_ATI) {
- const GLfloat (*texcoords)[4] = (const GLfloat (*)[4])
- span->array->attribs[FRAG_ATTRIB_TEX0 + unit];
- const struct gl_texture_object *curObj = texUnit->_Current;
- GLfloat *lambda = span->array->lambda[unit];
- float4_array texels = get_texel_array(swrast, unit);
-
- /* adjust texture lod (lambda) */
- if (span->arrayMask & SPAN_LAMBDA) {
- if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) {
- /* apply LOD bias, but don't clamp yet */
- const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias,
- -ctx->Const.MaxTextureLodBias,
- ctx->Const.MaxTextureLodBias);
- GLuint i;
- for (i = 0; i < span->end; i++) {
- lambda[i] += bias;
- }
- }
-
- if (curObj->Sampler.MinLod != -1000.0 ||
- curObj->Sampler.MaxLod != 1000.0) {
- /* apply LOD clamping to lambda */
- const GLfloat min = curObj->Sampler.MinLod;
- const GLfloat max = curObj->Sampler.MaxLod;
- GLuint i;
- for (i = 0; i < span->end; i++) {
- GLfloat l = lambda[i];
- lambda[i] = CLAMP(l, min, max);
- }
- }
- }
- else if (curObj->Sampler.MaxAnisotropy > 1.0 &&
- curObj->Sampler.MinFilter == GL_LINEAR_MIPMAP_LINEAR) {
- /* sample_lambda_2d_aniso is beeing used as texture_sample_func,
- * it requires the current SWspan *span as an additional parameter.
- * In order to keep the same function signature, the unused lambda
- * parameter will be modified to actually contain the SWspan pointer.
- * This is a Hack. To make it right, the texture_sample_func
- * signature and all implementing functions need to be modified.
- */
- /* "hide" SWspan struct; cast to (GLfloat *) to suppress warning */
- lambda = (GLfloat *)span;
- }
-
- /* Sample the texture (span->end = number of fragments) */
- swrast->TextureSample[unit]( ctx, texUnit->_Current, span->end,
- texcoords, lambda, texels );
-
- /* GL_EXT_texture_swizzle */
- if (curObj->_Swizzle != SWIZZLE_NOOP) {
- swizzle_texels(curObj->_Swizzle, span->end, texels);
- }
- }
- }
-
- /*
- * OK, now apply the texture (aka texture combine/blend).
- * We modify the span->color.rgba values.
- */
- for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
- if (ctx->Texture.Unit[unit]._ReallyEnabled) {
- texture_combine( ctx, unit, span->end,
- primary_rgba,
- swrast->TexelBuffer,
- span->array->rgba );
- }
- }
-
- free(primary_rgba);
-}
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.5
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ * Copyright (C) 2009 VMware, Inc. All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/colormac.h"
+#include "main/imports.h"
+#include "main/pixeltransfer.h"
+#include "program/prog_instruction.h"
+
+#include "s_context.h"
+#include "s_texcombine.h"
+
+
+/**
+ * Pointer to array of float[4]
+ * This type makes the code below more concise and avoids a lot of casting.
+ */
+typedef float (*float4_array)[4];
+
+
+/**
+ * Return array of texels for given unit.
+ */
+static INLINE float4_array
+get_texel_array(SWcontext *swrast, GLuint unit)
+{
+#ifdef _OPENMP
+ return (float4_array) (swrast->TexelBuffer + unit * MAX_WIDTH * 4 * omp_get_num_threads() + (MAX_WIDTH * 4 * omp_get_thread_num()));
+#else
+ return (float4_array) (swrast->TexelBuffer + unit * MAX_WIDTH * 4);
+#endif
+}
+
+
+
+/**
+ * Do texture application for:
+ * GL_EXT_texture_env_combine
+ * GL_ARB_texture_env_combine
+ * GL_EXT_texture_env_dot3
+ * GL_ARB_texture_env_dot3
+ * GL_ATI_texture_env_combine3
+ * GL_NV_texture_env_combine4
+ * conventional GL texture env modes
+ *
+ * \param ctx rendering context
+ * \param unit the texture combiner unit
+ * \param n number of fragments to process (span width)
+ * \param primary_rgba incoming fragment color array
+ * \param texelBuffer pointer to texel colors for all texture units
+ *
+ * \param rgba incoming/result fragment colors
+ */
+static void
+texture_combine( struct gl_context *ctx, GLuint unit, GLuint n,
+ const float4_array primary_rgba,
+ const GLfloat *texelBuffer,
+ GLchan (*rgbaChan)[4] )
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ const struct gl_texture_unit *textureUnit = &(ctx->Texture.Unit[unit]);
+ const struct gl_tex_env_combine_state *combine = textureUnit->_CurrentCombine;
+ float4_array argRGB[MAX_COMBINER_TERMS];
+ float4_array argA[MAX_COMBINER_TERMS];
+ const GLfloat scaleRGB = (GLfloat) (1 << combine->ScaleShiftRGB);
+ const GLfloat scaleA = (GLfloat) (1 << combine->ScaleShiftA);
+ const GLuint numArgsRGB = combine->_NumArgsRGB;
+ const GLuint numArgsA = combine->_NumArgsA;
+ float4_array ccolor[4], rgba;
+ GLuint i, term;
+
+ /* alloc temp pixel buffers */
+ rgba = (float4_array) malloc(4 * n * sizeof(GLfloat));
+ if (!rgba) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine");
+ return;
+ }
+
+ for (i = 0; i < numArgsRGB || i < numArgsA; i++) {
+ ccolor[i] = (float4_array) malloc(4 * n * sizeof(GLfloat));
+ if (!ccolor[i]) {
+ while (i) {
+ free(ccolor[i]);
+ i--;
+ }
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_combine");
+ return;
+ }
+ }
+
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = CHAN_TO_FLOAT(rgbaChan[i][RCOMP]);
+ rgba[i][GCOMP] = CHAN_TO_FLOAT(rgbaChan[i][GCOMP]);
+ rgba[i][BCOMP] = CHAN_TO_FLOAT(rgbaChan[i][BCOMP]);
+ rgba[i][ACOMP] = CHAN_TO_FLOAT(rgbaChan[i][ACOMP]);
+ }
+
+ /*
+ printf("modeRGB 0x%x modeA 0x%x srcRGB1 0x%x srcA1 0x%x srcRGB2 0x%x srcA2 0x%x\n",
+ combine->ModeRGB,
+ combine->ModeA,
+ combine->SourceRGB[0],
+ combine->SourceA[0],
+ combine->SourceRGB[1],
+ combine->SourceA[1]);
+ */
+
+ /*
+ * Do operand setup for up to 4 operands. Loop over the terms.
+ */
+ for (term = 0; term < numArgsRGB; term++) {
+ const GLenum srcRGB = combine->SourceRGB[term];
+ const GLenum operandRGB = combine->OperandRGB[term];
+
+ switch (srcRGB) {
+ case GL_TEXTURE:
+ argRGB[term] = get_texel_array(swrast, unit);
+ break;
+ case GL_PRIMARY_COLOR:
+ argRGB[term] = primary_rgba;
+ break;
+ case GL_PREVIOUS:
+ argRGB[term] = rgba;
+ break;
+ case GL_CONSTANT:
+ {
+ float4_array c = ccolor[term];
+ GLfloat red = textureUnit->EnvColor[0];
+ GLfloat green = textureUnit->EnvColor[1];
+ GLfloat blue = textureUnit->EnvColor[2];
+ GLfloat alpha = textureUnit->EnvColor[3];
+ for (i = 0; i < n; i++) {
+ ASSIGN_4V(c[i], red, green, blue, alpha);
+ }
+ argRGB[term] = ccolor[term];
+ }
+ break;
+ /* GL_ATI_texture_env_combine3 allows GL_ZERO & GL_ONE as sources.
+ */
+ case GL_ZERO:
+ {
+ float4_array c = ccolor[term];
+ for (i = 0; i < n; i++) {
+ ASSIGN_4V(c[i], 0.0F, 0.0F, 0.0F, 0.0F);
+ }
+ argRGB[term] = ccolor[term];
+ }
+ break;
+ case GL_ONE:
+ {
+ float4_array c = ccolor[term];
+ for (i = 0; i < n; i++) {
+ ASSIGN_4V(c[i], 1.0F, 1.0F, 1.0F, 1.0F);
+ }
+ argRGB[term] = ccolor[term];
+ }
+ break;
+ default:
+ /* ARB_texture_env_crossbar source */
+ {
+ const GLuint srcUnit = srcRGB - GL_TEXTURE0;
+ ASSERT(srcUnit < ctx->Const.MaxTextureUnits);
+ if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled)
+ goto end;
+ argRGB[term] = get_texel_array(swrast, srcUnit);
+ }
+ }
+
+ if (operandRGB != GL_SRC_COLOR) {
+ float4_array src = argRGB[term];
+ float4_array dst = ccolor[term];
+
+ /* point to new arg[term] storage */
+ argRGB[term] = ccolor[term];
+
+ switch (operandRGB) {
+ case GL_ONE_MINUS_SRC_COLOR:
+ for (i = 0; i < n; i++) {
+ dst[i][RCOMP] = 1.0F - src[i][RCOMP];
+ dst[i][GCOMP] = 1.0F - src[i][GCOMP];
+ dst[i][BCOMP] = 1.0F - src[i][BCOMP];
+ }
+ break;
+ case GL_SRC_ALPHA:
+ for (i = 0; i < n; i++) {
+ dst[i][RCOMP] =
+ dst[i][GCOMP] =
+ dst[i][BCOMP] = src[i][ACOMP];
+ }
+ break;
+ case GL_ONE_MINUS_SRC_ALPHA:
+ for (i = 0; i < n; i++) {
+ dst[i][RCOMP] =
+ dst[i][GCOMP] =
+ dst[i][BCOMP] = 1.0F - src[i][ACOMP];
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "Bad operandRGB");
+ }
+ }
+ }
+
+ /*
+ * Set up the argA[term] pointers
+ */
+ for (term = 0; term < numArgsA; term++) {
+ const GLenum srcA = combine->SourceA[term];
+ const GLenum operandA = combine->OperandA[term];
+
+ switch (srcA) {
+ case GL_TEXTURE:
+ argA[term] = get_texel_array(swrast, unit);
+ break;
+ case GL_PRIMARY_COLOR:
+ argA[term] = primary_rgba;
+ break;
+ case GL_PREVIOUS:
+ argA[term] = rgba;
+ break;
+ case GL_CONSTANT:
+ {
+ float4_array c = ccolor[term];
+ GLfloat alpha = textureUnit->EnvColor[3];
+ for (i = 0; i < n; i++)
+ c[i][ACOMP] = alpha;
+ argA[term] = ccolor[term];
+ }
+ break;
+ /* GL_ATI_texture_env_combine3 allows GL_ZERO & GL_ONE as sources.
+ */
+ case GL_ZERO:
+ {
+ float4_array c = ccolor[term];
+ for (i = 0; i < n; i++)
+ c[i][ACOMP] = 0.0F;
+ argA[term] = ccolor[term];
+ }
+ break;
+ case GL_ONE:
+ {
+ float4_array c = ccolor[term];
+ for (i = 0; i < n; i++)
+ c[i][ACOMP] = 1.0F;
+ argA[term] = ccolor[term];
+ }
+ break;
+ default:
+ /* ARB_texture_env_crossbar source */
+ {
+ const GLuint srcUnit = srcA - GL_TEXTURE0;
+ ASSERT(srcUnit < ctx->Const.MaxTextureUnits);
+ if (!ctx->Texture.Unit[srcUnit]._ReallyEnabled)
+ goto end;
+ argA[term] = get_texel_array(swrast, srcUnit);
+ }
+ }
+
+ if (operandA == GL_ONE_MINUS_SRC_ALPHA) {
+ float4_array src = argA[term];
+ float4_array dst = ccolor[term];
+ argA[term] = ccolor[term];
+ for (i = 0; i < n; i++) {
+ dst[i][ACOMP] = 1.0F - src[i][ACOMP];
+ }
+ }
+ }
+
+ /* RGB channel combine */
+ {
+ float4_array arg0 = argRGB[0];
+ float4_array arg1 = argRGB[1];
+ float4_array arg2 = argRGB[2];
+ float4_array arg3 = argRGB[3];
+
+ switch (combine->ModeRGB) {
+ case GL_REPLACE:
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = arg0[i][RCOMP] * scaleRGB;
+ rgba[i][GCOMP] = arg0[i][GCOMP] * scaleRGB;
+ rgba[i][BCOMP] = arg0[i][BCOMP] * scaleRGB;
+ }
+ break;
+ case GL_MODULATE:
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = arg0[i][RCOMP] * arg1[i][RCOMP] * scaleRGB;
+ rgba[i][GCOMP] = arg0[i][GCOMP] * arg1[i][GCOMP] * scaleRGB;
+ rgba[i][BCOMP] = arg0[i][BCOMP] * arg1[i][BCOMP] * scaleRGB;
+ }
+ break;
+ case GL_ADD:
+ if (textureUnit->EnvMode == GL_COMBINE4_NV) {
+ /* (a * b) + (c * d) */
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = (arg0[i][RCOMP] * arg1[i][RCOMP] +
+ arg2[i][RCOMP] * arg3[i][RCOMP]) * scaleRGB;
+ rgba[i][GCOMP] = (arg0[i][GCOMP] * arg1[i][GCOMP] +
+ arg2[i][GCOMP] * arg3[i][GCOMP]) * scaleRGB;
+ rgba[i][BCOMP] = (arg0[i][BCOMP] * arg1[i][BCOMP] +
+ arg2[i][BCOMP] * arg3[i][BCOMP]) * scaleRGB;
+ }
+ }
+ else {
+ /* 2-term addition */
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = (arg0[i][RCOMP] + arg1[i][RCOMP]) * scaleRGB;
+ rgba[i][GCOMP] = (arg0[i][GCOMP] + arg1[i][GCOMP]) * scaleRGB;
+ rgba[i][BCOMP] = (arg0[i][BCOMP] + arg1[i][BCOMP]) * scaleRGB;
+ }
+ }
+ break;
+ case GL_ADD_SIGNED:
+ if (textureUnit->EnvMode == GL_COMBINE4_NV) {
+ /* (a * b) + (c * d) - 0.5 */
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = (arg0[i][RCOMP] * arg1[i][RCOMP] +
+ arg2[i][RCOMP] * arg3[i][RCOMP] - 0.5F) * scaleRGB;
+ rgba[i][GCOMP] = (arg0[i][GCOMP] * arg1[i][GCOMP] +
+ arg2[i][GCOMP] * arg3[i][GCOMP] - 0.5F) * scaleRGB;
+ rgba[i][BCOMP] = (arg0[i][BCOMP] * arg1[i][BCOMP] +
+ arg2[i][BCOMP] * arg3[i][BCOMP] - 0.5F) * scaleRGB;
+ }
+ }
+ else {
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = (arg0[i][RCOMP] + arg1[i][RCOMP] - 0.5F) * scaleRGB;
+ rgba[i][GCOMP] = (arg0[i][GCOMP] + arg1[i][GCOMP] - 0.5F) * scaleRGB;
+ rgba[i][BCOMP] = (arg0[i][BCOMP] + arg1[i][BCOMP] - 0.5F) * scaleRGB;
+ }
+ }
+ break;
+ case GL_INTERPOLATE:
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = (arg0[i][RCOMP] * arg2[i][RCOMP] +
+ arg1[i][RCOMP] * (1.0F - arg2[i][RCOMP])) * scaleRGB;
+ rgba[i][GCOMP] = (arg0[i][GCOMP] * arg2[i][GCOMP] +
+ arg1[i][GCOMP] * (1.0F - arg2[i][GCOMP])) * scaleRGB;
+ rgba[i][BCOMP] = (arg0[i][BCOMP] * arg2[i][BCOMP] +
+ arg1[i][BCOMP] * (1.0F - arg2[i][BCOMP])) * scaleRGB;
+ }
+ break;
+ case GL_SUBTRACT:
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = (arg0[i][RCOMP] - arg1[i][RCOMP]) * scaleRGB;
+ rgba[i][GCOMP] = (arg0[i][GCOMP] - arg1[i][GCOMP]) * scaleRGB;
+ rgba[i][BCOMP] = (arg0[i][BCOMP] - arg1[i][BCOMP]) * scaleRGB;
+ }
+ break;
+ case GL_DOT3_RGB_EXT:
+ case GL_DOT3_RGBA_EXT:
+ /* Do not scale the result by 1 2 or 4 */
+ for (i = 0; i < n; i++) {
+ GLfloat dot = ((arg0[i][RCOMP] - 0.5F) * (arg1[i][RCOMP] - 0.5F) +
+ (arg0[i][GCOMP] - 0.5F) * (arg1[i][GCOMP] - 0.5F) +
+ (arg0[i][BCOMP] - 0.5F) * (arg1[i][BCOMP] - 0.5F))
+ * 4.0F;
+ dot = CLAMP(dot, 0.0F, 1.0F);
+ rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = dot;
+ }
+ break;
+ case GL_DOT3_RGB:
+ case GL_DOT3_RGBA:
+ /* DO scale the result by 1 2 or 4 */
+ for (i = 0; i < n; i++) {
+ GLfloat dot = ((arg0[i][RCOMP] - 0.5F) * (arg1[i][RCOMP] - 0.5F) +
+ (arg0[i][GCOMP] - 0.5F) * (arg1[i][GCOMP] - 0.5F) +
+ (arg0[i][BCOMP] - 0.5F) * (arg1[i][BCOMP] - 0.5F))
+ * 4.0F * scaleRGB;
+ dot = CLAMP(dot, 0.0F, 1.0F);
+ rgba[i][RCOMP] = rgba[i][GCOMP] = rgba[i][BCOMP] = dot;
+ }
+ break;
+ case GL_MODULATE_ADD_ATI:
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) +
+ arg1[i][RCOMP]) * scaleRGB;
+ rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) +
+ arg1[i][GCOMP]) * scaleRGB;
+ rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) +
+ arg1[i][BCOMP]) * scaleRGB;
+ }
+ break;
+ case GL_MODULATE_SIGNED_ADD_ATI:
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) +
+ arg1[i][RCOMP] - 0.5F) * scaleRGB;
+ rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) +
+ arg1[i][GCOMP] - 0.5F) * scaleRGB;
+ rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) +
+ arg1[i][BCOMP] - 0.5F) * scaleRGB;
+ }
+ break;
+ case GL_MODULATE_SUBTRACT_ATI:
+ for (i = 0; i < n; i++) {
+ rgba[i][RCOMP] = ((arg0[i][RCOMP] * arg2[i][RCOMP]) -
+ arg1[i][RCOMP]) * scaleRGB;
+ rgba[i][GCOMP] = ((arg0[i][GCOMP] * arg2[i][GCOMP]) -
+ arg1[i][GCOMP]) * scaleRGB;
+ rgba[i][BCOMP] = ((arg0[i][BCOMP] * arg2[i][BCOMP]) -
+ arg1[i][BCOMP]) * scaleRGB;
+ }
+ break;
+ case GL_BUMP_ENVMAP_ATI:
+ /* this produces a fixed rgba color, and the coord calc is done elsewhere */
+ for (i = 0; i < n; i++) {
+ /* rgba result is 0,0,0,1 */
+ rgba[i][RCOMP] = 0.0;
+ rgba[i][GCOMP] = 0.0;
+ rgba[i][BCOMP] = 0.0;
+ rgba[i][ACOMP] = 1.0;
+ }
+ goto end; /* no alpha processing */
+ default:
+ _mesa_problem(ctx, "invalid combine mode");
+ }
+ }
+
+ /* Alpha channel combine */
+ {
+ float4_array arg0 = argA[0];
+ float4_array arg1 = argA[1];
+ float4_array arg2 = argA[2];
+ float4_array arg3 = argA[3];
+
+ switch (combine->ModeA) {
+ case GL_REPLACE:
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = arg0[i][ACOMP] * scaleA;
+ }
+ break;
+ case GL_MODULATE:
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = arg0[i][ACOMP] * arg1[i][ACOMP] * scaleA;
+ }
+ break;
+ case GL_ADD:
+ if (textureUnit->EnvMode == GL_COMBINE4_NV) {
+ /* (a * b) + (c * d) */
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = (arg0[i][ACOMP] * arg1[i][ACOMP] +
+ arg2[i][ACOMP] * arg3[i][ACOMP]) * scaleA;
+ }
+ }
+ else {
+ /* two-term add */
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = (arg0[i][ACOMP] + arg1[i][ACOMP]) * scaleA;
+ }
+ }
+ break;
+ case GL_ADD_SIGNED:
+ if (textureUnit->EnvMode == GL_COMBINE4_NV) {
+ /* (a * b) + (c * d) - 0.5 */
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = (arg0[i][ACOMP] * arg1[i][ACOMP] +
+ arg2[i][ACOMP] * arg3[i][ACOMP] -
+ 0.5F) * scaleA;
+ }
+ }
+ else {
+ /* a + b - 0.5 */
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = (arg0[i][ACOMP] + arg1[i][ACOMP] - 0.5F) * scaleA;
+ }
+ }
+ break;
+ case GL_INTERPOLATE:
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = (arg0[i][ACOMP] * arg2[i][ACOMP] +
+ arg1[i][ACOMP] * (1.0F - arg2[i][ACOMP]))
+ * scaleA;
+ }
+ break;
+ case GL_SUBTRACT:
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = (arg0[i][ACOMP] - arg1[i][ACOMP]) * scaleA;
+ }
+ break;
+ case GL_MODULATE_ADD_ATI:
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP])
+ + arg1[i][ACOMP]) * scaleA;
+ }
+ break;
+ case GL_MODULATE_SIGNED_ADD_ATI:
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP]) +
+ arg1[i][ACOMP] - 0.5F) * scaleA;
+ }
+ break;
+ case GL_MODULATE_SUBTRACT_ATI:
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = ((arg0[i][ACOMP] * arg2[i][ACOMP])
+ - arg1[i][ACOMP]) * scaleA;
+ }
+ break;
+ default:
+ _mesa_problem(ctx, "invalid combine mode");
+ }
+ }
+
+ /* Fix the alpha component for GL_DOT3_RGBA_EXT/ARB combining.
+ * This is kind of a kludge. It would have been better if the spec
+ * were written such that the GL_COMBINE_ALPHA value could be set to
+ * GL_DOT3.
+ */
+ if (combine->ModeRGB == GL_DOT3_RGBA_EXT ||
+ combine->ModeRGB == GL_DOT3_RGBA) {
+ for (i = 0; i < n; i++) {
+ rgba[i][ACOMP] = rgba[i][RCOMP];
+ }
+ }
+
+ for (i = 0; i < n; i++) {
+ UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][RCOMP], rgba[i][RCOMP]);
+ UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][GCOMP], rgba[i][GCOMP]);
+ UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][BCOMP], rgba[i][BCOMP]);
+ UNCLAMPED_FLOAT_TO_CHAN(rgbaChan[i][ACOMP], rgba[i][ACOMP]);
+ }
+
+end:
+ for (i = 0; i < numArgsRGB || i < numArgsA; i++) {
+ free(ccolor[i]);
+ }
+ free(rgba);
+}
+
+
+/**
+ * Apply X/Y/Z/W/0/1 swizzle to an array of colors/texels.
+ * See GL_EXT_texture_swizzle.
+ */
+static void
+swizzle_texels(GLuint swizzle, GLuint count, float4_array texels)
+{
+ const GLuint swzR = GET_SWZ(swizzle, 0);
+ const GLuint swzG = GET_SWZ(swizzle, 1);
+ const GLuint swzB = GET_SWZ(swizzle, 2);
+ const GLuint swzA = GET_SWZ(swizzle, 3);
+ GLfloat vector[6];
+ GLuint i;
+
+ vector[SWIZZLE_ZERO] = 0;
+ vector[SWIZZLE_ONE] = 1.0F;
+
+ for (i = 0; i < count; i++) {
+ vector[SWIZZLE_X] = texels[i][0];
+ vector[SWIZZLE_Y] = texels[i][1];
+ vector[SWIZZLE_Z] = texels[i][2];
+ vector[SWIZZLE_W] = texels[i][3];
+ texels[i][RCOMP] = vector[swzR];
+ texels[i][GCOMP] = vector[swzG];
+ texels[i][BCOMP] = vector[swzB];
+ texels[i][ACOMP] = vector[swzA];
+ }
+}
+
+
+/**
+ * Apply texture mapping to a span of fragments.
+ */
+void
+_swrast_texture_span( struct gl_context *ctx, SWspan *span )
+{
+ SWcontext *swrast = SWRAST_CONTEXT(ctx);
+ float4_array primary_rgba;
+ GLuint unit;
+
+ primary_rgba = (float4_array) malloc(span->end * 4 * sizeof(GLfloat));
+
+ if (!primary_rgba) {
+ _mesa_error(ctx, GL_OUT_OF_MEMORY, "texture_span");
+ return;
+ }
+
+ ASSERT(span->end <= MAX_WIDTH);
+
+ /*
+ * Save copy of the incoming fragment colors (the GL_PRIMARY_COLOR)
+ */
+ if (swrast->_TextureCombinePrimary) {
+ GLuint i;
+ for (i = 0; i < span->end; i++) {
+ primary_rgba[i][RCOMP] = CHAN_TO_FLOAT(span->array->rgba[i][RCOMP]);
+ primary_rgba[i][GCOMP] = CHAN_TO_FLOAT(span->array->rgba[i][GCOMP]);
+ primary_rgba[i][BCOMP] = CHAN_TO_FLOAT(span->array->rgba[i][BCOMP]);
+ primary_rgba[i][ACOMP] = CHAN_TO_FLOAT(span->array->rgba[i][ACOMP]);
+ }
+ }
+
+ /* First must sample all bump maps */
+ for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
+ const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
+
+ if (texUnit->_ReallyEnabled &&
+ texUnit->_CurrentCombine->ModeRGB == GL_BUMP_ENVMAP_ATI) {
+ const GLfloat (*texcoords)[4] = (const GLfloat (*)[4])
+ span->array->attribs[FRAG_ATTRIB_TEX0 + unit];
+ float4_array targetcoords =
+ span->array->attribs[FRAG_ATTRIB_TEX0 +
+ ctx->Texture.Unit[unit].BumpTarget - GL_TEXTURE0];
+
+ const struct gl_texture_object *curObj = texUnit->_Current;
+ GLfloat *lambda = span->array->lambda[unit];
+ float4_array texels = get_texel_array(swrast, unit);
+ GLuint i;
+ GLfloat rotMatrix00 = ctx->Texture.Unit[unit].RotMatrix[0];
+ GLfloat rotMatrix01 = ctx->Texture.Unit[unit].RotMatrix[1];
+ GLfloat rotMatrix10 = ctx->Texture.Unit[unit].RotMatrix[2];
+ GLfloat rotMatrix11 = ctx->Texture.Unit[unit].RotMatrix[3];
+
+ /* adjust texture lod (lambda) */
+ if (span->arrayMask & SPAN_LAMBDA) {
+ if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) {
+ /* apply LOD bias, but don't clamp yet */
+ const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias,
+ -ctx->Const.MaxTextureLodBias,
+ ctx->Const.MaxTextureLodBias);
+ GLuint i;
+ for (i = 0; i < span->end; i++) {
+ lambda[i] += bias;
+ }
+ }
+
+ if (curObj->Sampler.MinLod != -1000.0 ||
+ curObj->Sampler.MaxLod != 1000.0) {
+ /* apply LOD clamping to lambda */
+ const GLfloat min = curObj->Sampler.MinLod;
+ const GLfloat max = curObj->Sampler.MaxLod;
+ GLuint i;
+ for (i = 0; i < span->end; i++) {
+ GLfloat l = lambda[i];
+ lambda[i] = CLAMP(l, min, max);
+ }
+ }
+ }
+
+ /* Sample the texture (span->end = number of fragments) */
+ swrast->TextureSample[unit]( ctx, texUnit->_Current, span->end,
+ texcoords, lambda, texels );
+
+ /* manipulate the span values of the bump target
+ not sure this can work correctly even ignoring
+ the problem that channel is unsigned */
+ for (i = 0; i < span->end; i++) {
+ targetcoords[i][0] += (texels[i][0] * rotMatrix00 + texels[i][1] *
+ rotMatrix01) / targetcoords[i][3];
+ targetcoords[i][1] += (texels[i][0] * rotMatrix10 + texels[i][1] *
+ rotMatrix11) / targetcoords[i][3];
+ }
+ }
+ }
+
+ /*
+ * Must do all texture sampling before combining in order to
+ * accomodate GL_ARB_texture_env_crossbar.
+ */
+ for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
+ const struct gl_texture_unit *texUnit = &ctx->Texture.Unit[unit];
+ if (texUnit->_ReallyEnabled &&
+ texUnit->_CurrentCombine->ModeRGB != GL_BUMP_ENVMAP_ATI) {
+ const GLfloat (*texcoords)[4] = (const GLfloat (*)[4])
+ span->array->attribs[FRAG_ATTRIB_TEX0 + unit];
+ const struct gl_texture_object *curObj = texUnit->_Current;
+ GLfloat *lambda = span->array->lambda[unit];
+ float4_array texels = get_texel_array(swrast, unit);
+
+ /* adjust texture lod (lambda) */
+ if (span->arrayMask & SPAN_LAMBDA) {
+ if (texUnit->LodBias + curObj->Sampler.LodBias != 0.0F) {
+ /* apply LOD bias, but don't clamp yet */
+ const GLfloat bias = CLAMP(texUnit->LodBias + curObj->Sampler.LodBias,
+ -ctx->Const.MaxTextureLodBias,
+ ctx->Const.MaxTextureLodBias);
+ GLuint i;
+ for (i = 0; i < span->end; i++) {
+ lambda[i] += bias;
+ }
+ }
+
+ if (curObj->Sampler.MinLod != -1000.0 ||
+ curObj->Sampler.MaxLod != 1000.0) {
+ /* apply LOD clamping to lambda */
+ const GLfloat min = curObj->Sampler.MinLod;
+ const GLfloat max = curObj->Sampler.MaxLod;
+ GLuint i;
+ for (i = 0; i < span->end; i++) {
+ GLfloat l = lambda[i];
+ lambda[i] = CLAMP(l, min, max);
+ }
+ }
+ }
+ else if (curObj->Sampler.MaxAnisotropy > 1.0 &&
+ curObj->Sampler.MinFilter == GL_LINEAR_MIPMAP_LINEAR) {
+ /* sample_lambda_2d_aniso is beeing used as texture_sample_func,
+ * it requires the current SWspan *span as an additional parameter.
+ * In order to keep the same function signature, the unused lambda
+ * parameter will be modified to actually contain the SWspan pointer.
+ * This is a Hack. To make it right, the texture_sample_func
+ * signature and all implementing functions need to be modified.
+ */
+ /* "hide" SWspan struct; cast to (GLfloat *) to suppress warning */
+ lambda = (GLfloat *)span;
+ }
+
+ /* Sample the texture (span->end = number of fragments) */
+ swrast->TextureSample[unit]( ctx, texUnit->_Current, span->end,
+ texcoords, lambda, texels );
+
+ /* GL_EXT_texture_swizzle */
+ if (curObj->_Swizzle != SWIZZLE_NOOP) {
+ swizzle_texels(curObj->_Swizzle, span->end, texels);
+ }
+ }
+ }
+
+ /*
+ * OK, now apply the texture (aka texture combine/blend).
+ * We modify the span->color.rgba values.
+ */
+ for (unit = 0; unit < ctx->Const.MaxTextureUnits; unit++) {
+ if (ctx->Texture.Unit[unit]._ReallyEnabled) {
+ texture_combine( ctx, unit, span->end,
+ primary_rgba,
+ swrast->TexelBuffer,
+ span->array->rgba );
+ }
+ }
+
+ free(primary_rgba);
+}
diff --git a/mesalib/src/mesa/tnl/NOTES b/mesalib/src/mesa/tnl/NOTES
index 9a35e948b..43c469201 100644
--- a/mesalib/src/mesa/tnl/NOTES
+++ b/mesalib/src/mesa/tnl/NOTES
@@ -1,102 +1,100 @@
-INTRODUCTION
-
-A generic, configurable software implementation of GL transformation &
-lighting.
-
-This module provides an implementation of the routines required by the
-'vtxfmt' mechanism of core mesa for tnl functionality in all
-combinations of compile and execute modes.
-
-Most current drivers use the tnl module exclusively to provide this
-functionality, though there is an experimental alternate
-implementation provided by the tnl_dd/t_dd_imm_* files which can
-handle a small subset of GL states in execute mode only.
-
-
-STATE
-
-To create and destroy the module:
-
- GLboolean _tnl_CreateContext( struct gl_context *ctx );
- void _tnl_DestroyContext( struct gl_context *ctx );
-
-The module is not active by default, and must be installed by calling
-_tnl_Wakeup(). This function installs internal tnl functions into all
-the vtxfmt dispatch hooks, thus taking over the task of transformation
-and lighting entirely:
-
- void _tnl_wakeup_exec( struct gl_context *ctx );
- void _tnl_wakeup_save_exec( struct gl_context *ctx );
-
-
-This module tracks state changes internally and maintains derived
-values based on the current state. For this to work, the driver
-ensure the following funciton is called whenever the state changes and
-the swsetup module is 'awake':
-
- void _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state );
-
-There is no explicit call to put the tnl module to sleep. Simply
-install other function pointers into all the vtxfmt dispatch slots,
-and (optionally) cease calling _tnl_InvalidateState().
-
-CUSTOMIZATION
-
-The module provides customizability through several mechanisms. The
-most important is by allowing drivers to specify the pipeline through
-which vertex data is passed, including its eventual transfer to
-rasterization hardware (or software).
-
-The default pipeline is specified in t_pipeline.c, and is usually a
-starting point for driver pipelines. Some drivers will remove a stage
-where hardware provides support for the implemented operation (for
-instance fog where per-pixel hardware fog is available, as in the dri
-tdfx driver), or add stages to shortcircuit latter operations (for
-example taking advantage of hardware support for strips and other
-higher-level primitives (for example the radeon driver).
-
-In addition, the following functions provide further tweaks:
-
-extern void
-_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag );
-
- - Direct the default vertex transformation stage to
- produce/not produce projected clip coordinates.
-
-extern void
-_tnl_need_dlist_loopback( struct gl_context *ctx, GLboolean flag );
-
- - Direct the display list component of the tnl module to
- replay display lists as 'glVertex' type calls, rather than
- passing the display list data directly into the tnl pipeline
- mechanism.
-
- This allows display lists to be replayed by the tnl module
- even when the module is not strictly active.
-
-
-extern void
-_tnl_need_dlist_norm_lengths( struct gl_context *ctx, GLboolean flag );
-
- - Direct the display list component to enable/disable caching
- 1/length values for display list normals. Doing so is
- ususally helpful when lighting is performed in software, but
- wasteful otherwise.
-
-
-DRIVER INTERFACE
-
-The module itself offers a minimal driver interface:
-
- void (*RunPipeline)( struct gl_context *ctx );
-
-Normally this is set to _tnl_RunPipeline(), however the driver can use
-this hook to wrap checks or other code around this call.
-
-In addition, the driver interface for the default render pipeline
-stage is housed in the tnl context struct (this could be cleaner).
-
-
-RENDER DRIVER INTERFACE
-
+INTRODUCTION
+
+A generic, configurable software implementation of GL transformation &
+lighting.
+
+This module provides an implementation of the routines required by the
+'vtxfmt' mechanism of core mesa for tnl functionality in all
+combinations of compile and execute modes.
+
+Most current drivers use the tnl module exclusively to provide this
+functionality.
+
+
+STATE
+
+To create and destroy the module:
+
+ GLboolean _tnl_CreateContext( struct gl_context *ctx );
+ void _tnl_DestroyContext( struct gl_context *ctx );
+
+The module is not active by default, and must be installed by calling
+_tnl_Wakeup(). This function installs internal tnl functions into all
+the vtxfmt dispatch hooks, thus taking over the task of transformation
+and lighting entirely:
+
+ void _tnl_wakeup_exec( struct gl_context *ctx );
+ void _tnl_wakeup_save_exec( struct gl_context *ctx );
+
+
+This module tracks state changes internally and maintains derived
+values based on the current state. For this to work, the driver
+ensure the following funciton is called whenever the state changes and
+the swsetup module is 'awake':
+
+ void _tnl_InvalidateState( struct gl_context *ctx, GLuint new_state );
+
+There is no explicit call to put the tnl module to sleep. Simply
+install other function pointers into all the vtxfmt dispatch slots,
+and (optionally) cease calling _tnl_InvalidateState().
+
+CUSTOMIZATION
+
+The module provides customizability through several mechanisms. The
+most important is by allowing drivers to specify the pipeline through
+which vertex data is passed, including its eventual transfer to
+rasterization hardware (or software).
+
+The default pipeline is specified in t_pipeline.c, and is usually a
+starting point for driver pipelines. Some drivers will remove a stage
+where hardware provides support for the implemented operation (for
+instance fog where per-pixel hardware fog is available),
+or add stages to shortcircuit latter operations (for
+example taking advantage of hardware support for strips and other
+higher-level primitives (for example the radeon driver).
+
+In addition, the following functions provide further tweaks:
+
+extern void
+_tnl_need_projected_coords( struct gl_context *ctx, GLboolean flag );
+
+ - Direct the default vertex transformation stage to
+ produce/not produce projected clip coordinates.
+
+extern void
+_tnl_need_dlist_loopback( struct gl_context *ctx, GLboolean flag );
+
+ - Direct the display list component of the tnl module to
+ replay display lists as 'glVertex' type calls, rather than
+ passing the display list data directly into the tnl pipeline
+ mechanism.
+
+ This allows display lists to be replayed by the tnl module
+ even when the module is not strictly active.
+
+
+extern void
+_tnl_need_dlist_norm_lengths( struct gl_context *ctx, GLboolean flag );
+
+ - Direct the display list component to enable/disable caching
+ 1/length values for display list normals. Doing so is
+ ususally helpful when lighting is performed in software, but
+ wasteful otherwise.
+
+
+DRIVER INTERFACE
+
+The module itself offers a minimal driver interface:
+
+ void (*RunPipeline)( struct gl_context *ctx );
+
+Normally this is set to _tnl_RunPipeline(), however the driver can use
+this hook to wrap checks or other code around this call.
+
+In addition, the driver interface for the default render pipeline
+stage is housed in the tnl context struct (this could be cleaner).
+
+
+RENDER DRIVER INTERFACE
+
See t_context.h for the definition and explanation of this. \ No newline at end of file
diff --git a/mesalib/src/mesa/tnl/t_draw.c b/mesalib/src/mesa/tnl/t_draw.c
index a2ca6225b..f3f324314 100644
--- a/mesalib/src/mesa/tnl/t_draw.c
+++ b/mesalib/src/mesa/tnl/t_draw.c
@@ -280,10 +280,9 @@ static void bind_inputs( struct gl_context *ctx,
if (!inputs[i]->BufferObj->Pointer) {
bo[*nr_bo] = inputs[i]->BufferObj;
(*nr_bo)++;
- ctx->Driver.MapBuffer(ctx,
- GL_ARRAY_BUFFER,
- GL_READ_ONLY_ARB,
- inputs[i]->BufferObj);
+ ctx->Driver.MapBufferRange(ctx, 0, inputs[i]->BufferObj->Size,
+ GL_MAP_READ_BIT,
+ inputs[i]->BufferObj);
assert(inputs[i]->BufferObj->Pointer);
}
@@ -348,18 +347,32 @@ static void bind_indices( struct gl_context *ctx,
}
if (ib->obj->Name && !ib->obj->Pointer) {
+ unsigned map_size;
+
+ switch (ib->type) {
+ case GL_UNSIGNED_BYTE:
+ map_size = ib->count * sizeof(GLubyte);
+ break;
+ case GL_UNSIGNED_SHORT:
+ map_size = ib->count * sizeof(GLushort);
+ break;
+ case GL_UNSIGNED_INT:
+ map_size = ib->count * sizeof(GLuint);
+ break;
+ default:
+ assert(0);
+ map_size = 0;
+ }
+
bo[*nr_bo] = ib->obj;
(*nr_bo)++;
- ctx->Driver.MapBuffer(ctx,
- GL_ELEMENT_ARRAY_BUFFER,
- GL_READ_ONLY_ARB,
- ib->obj);
-
+ ptr = ctx->Driver.MapBufferRange(ctx, (GLsizeiptr) ib->ptr, map_size,
+ GL_MAP_READ_BIT, ib->obj);
assert(ib->obj->Pointer);
+ } else {
+ ptr = ib->ptr;
}
- ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr);
-
if (ib->type == GL_UNSIGNED_INT && VB->Primitive[0].basevertex == 0) {
VB->Elts = (GLuint *) ptr;
}
@@ -402,9 +415,7 @@ static void unmap_vbos( struct gl_context *ctx,
{
GLuint i;
for (i = 0; i < nr_bo; i++) {
- ctx->Driver.UnmapBuffer(ctx,
- 0, /* target -- I don't see why this would be needed */
- bo[i]);
+ ctx->Driver.UnmapBuffer(ctx, bo[i]);
}
}
diff --git a/mesalib/src/mesa/tnl/t_pipeline.c b/mesalib/src/mesa/tnl/t_pipeline.c
index 27d7ecff7..881d5d5f5 100644
--- a/mesalib/src/mesa/tnl/t_pipeline.c
+++ b/mesalib/src/mesa/tnl/t_pipeline.c
@@ -1,210 +1,222 @@
-/*
- * Mesa 3-D graphics library
- * Version: 6.5.3
- *
- * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-
-#include "t_context.h"
-#include "t_pipeline.h"
-#include "t_vp_build.h"
-#include "t_vertex.h"
-
-void _tnl_install_pipeline( struct gl_context *ctx,
- const struct tnl_pipeline_stage **stages )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint i;
-
- tnl->pipeline.new_state = ~0;
-
- /* Create a writeable copy of each stage.
- */
- for (i = 0 ; i < MAX_PIPELINE_STAGES && stages[i] ; i++) {
- struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
- memcpy(s, stages[i], sizeof(*s));
- if (s->create)
- s->create(ctx, s);
- }
-
- tnl->pipeline.nr_stages = i;
-}
-
-void _tnl_destroy_pipeline( struct gl_context *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint i;
-
- for (i = 0 ; i < tnl->pipeline.nr_stages ; i++) {
- struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
- if (s->destroy)
- s->destroy(s);
- }
-
- tnl->pipeline.nr_stages = 0;
-}
-
-
-
-static GLuint check_input_changes( struct gl_context *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- GLuint i;
-
- for (i = 0; i <= _TNL_LAST_MAT; i++) {
- if (tnl->vb.AttribPtr[i]->size != tnl->pipeline.last_attrib_size[i] ||
- tnl->vb.AttribPtr[i]->stride != tnl->pipeline.last_attrib_stride[i]) {
- tnl->pipeline.last_attrib_size[i] = tnl->vb.AttribPtr[i]->size;
- tnl->pipeline.last_attrib_stride[i] = tnl->vb.AttribPtr[i]->stride;
- tnl->pipeline.input_changes |= 1<<i;
- }
- }
-
- return tnl->pipeline.input_changes;
-}
-
-
-static GLuint check_output_changes( struct gl_context *ctx )
-{
-#if 0
- TNLcontext *tnl = TNL_CONTEXT(ctx);
-
- for (i = 0; i < VERT_RESULT_MAX; i++) {
- if (tnl->vb.ResultPtr[i]->size != tnl->last_result_size[i] ||
- tnl->vb.ResultPtr[i]->stride != tnl->last_result_stride[i]) {
- tnl->last_result_size[i] = tnl->vb.ResultPtr[i]->size;
- tnl->last_result_stride[i] = tnl->vb.ResultPtr[i]->stride;
- tnl->pipeline.output_changes |= 1<<i;
- }
- }
-
- if (tnl->pipeline.output_changes)
- tnl->Driver.NotifyOutputChanges( ctx, tnl->pipeline.output_changes );
-
- return tnl->pipeline.output_changes;
-#else
- return ~0;
-#endif
-}
-
-
-void _tnl_run_pipeline( struct gl_context *ctx )
-{
- TNLcontext *tnl = TNL_CONTEXT(ctx);
- unsigned short __tmp;
- GLuint i;
-
- if (!tnl->vb.Count)
- return;
-
- /* Check for changed input sizes or change in stride to/from zero
- * (ie const or non-const).
- */
- if (check_input_changes( ctx ) || tnl->pipeline.new_state) {
- if (ctx->VertexProgram._MaintainTnlProgram)
- _tnl_UpdateFixedFunctionProgram( ctx );
-
- for (i = 0; i < tnl->pipeline.nr_stages ; i++) {
- struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
- if (s->validate)
- s->validate( ctx, s );
- }
-
- tnl->pipeline.new_state = 0;
- tnl->pipeline.input_changes = 0;
-
- /* Pipeline can only change its output in response to either a
- * statechange or an input size/stride change. No other changes
- * are allowed.
- */
- if (check_output_changes( ctx ))
- _tnl_notify_pipeline_output_change( ctx );
- }
-
- START_FAST_MATH(__tmp);
-
- for (i = 0; i < tnl->pipeline.nr_stages ; i++) {
- struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
- if (!s->run( ctx, s ))
- break;
- }
-
- END_FAST_MATH(__tmp);
-}
-
-
-
-/* The default pipeline. This is useful for software rasterizers, and
- * simple hardware rasterizers. For customization, I don't recommend
- * tampering with the internals of these stages in the way that
- * drivers did in Mesa 3.4. These stages are basically black boxes,
- * and should be left intact.
- *
- * To customize the pipeline, consider:
- *
- * - removing redundant stages (making sure that the software rasterizer
- * can cope with this on fallback paths). An example is fog
- * coordinate generation, which is not required in the FX driver.
- *
- * - replacing general-purpose machine-independent stages with
- * general-purpose machine-specific stages. There is no example of
- * this to date, though it must be borne in mind that all subsequent
- * stages that reference the output of the new stage must cope with
- * any machine-specific data introduced. This may not be easy
- * unless there are no such stages (ie the new stage is the last in
- * the pipe).
- *
- * - inserting optimized (but specialized) stages ahead of the
- * general-purpose fallback implementation. For example, the old
- * fastpath mechanism, which only works when the VB->Elts input is
- * available, can be duplicated by placing the fastpath stage at the
- * head of this pipeline. Such specialized stages are currently
- * constrained to have no outputs (ie. they must either finish the *
- * pipeline by returning GL_FALSE from run(), or do nothing).
- *
- * Some work can be done to lift some of the restrictions in the final
- * case, if it becomes necessary to do so.
- */
-const struct tnl_pipeline_stage *_tnl_default_pipeline[] = {
- &_tnl_vertex_transform_stage,
- &_tnl_normal_transform_stage,
- &_tnl_lighting_stage,
- &_tnl_texgen_stage,
- &_tnl_texture_transform_stage,
- &_tnl_point_attenuation_stage,
- &_tnl_vertex_program_stage,
- &_tnl_fog_coordinate_stage,
- &_tnl_render_stage,
- NULL
-};
-
-const struct tnl_pipeline_stage *_tnl_vp_pipeline[] = {
- &_tnl_vertex_program_stage,
- &_tnl_render_stage,
- NULL
-};
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5.3
+ *
+ * Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#include "main/glheader.h"
+#include "main/context.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+
+#include "t_context.h"
+#include "t_pipeline.h"
+#include "t_vp_build.h"
+#include "t_vertex.h"
+
+void _tnl_install_pipeline( struct gl_context *ctx,
+ const struct tnl_pipeline_stage **stages )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ GLuint i;
+
+ tnl->pipeline.new_state = ~0;
+
+ /* Create a writeable copy of each stage.
+ */
+ for (i = 0 ; i < MAX_PIPELINE_STAGES && stages[i] ; i++) {
+ struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
+ memcpy(s, stages[i], sizeof(*s));
+ if (s->create)
+ s->create(ctx, s);
+ }
+
+ tnl->pipeline.nr_stages = i;
+}
+
+void _tnl_destroy_pipeline( struct gl_context *ctx )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ GLuint i;
+
+ for (i = 0 ; i < tnl->pipeline.nr_stages ; i++) {
+ struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
+ if (s->destroy)
+ s->destroy(s);
+ }
+
+ tnl->pipeline.nr_stages = 0;
+}
+
+
+
+static GLuint check_input_changes( struct gl_context *ctx )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ GLuint i;
+
+ for (i = 0; i <= _TNL_LAST_MAT; i++) {
+ if (tnl->vb.AttribPtr[i]->size != tnl->pipeline.last_attrib_size[i] ||
+ tnl->vb.AttribPtr[i]->stride != tnl->pipeline.last_attrib_stride[i]) {
+ tnl->pipeline.last_attrib_size[i] = tnl->vb.AttribPtr[i]->size;
+ tnl->pipeline.last_attrib_stride[i] = tnl->vb.AttribPtr[i]->stride;
+ tnl->pipeline.input_changes |= 1<<i;
+ }
+ }
+
+ return tnl->pipeline.input_changes;
+}
+
+
+static GLuint check_output_changes( struct gl_context *ctx )
+{
+#if 0
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+
+ for (i = 0; i < VERT_RESULT_MAX; i++) {
+ if (tnl->vb.ResultPtr[i]->size != tnl->last_result_size[i] ||
+ tnl->vb.ResultPtr[i]->stride != tnl->last_result_stride[i]) {
+ tnl->last_result_size[i] = tnl->vb.ResultPtr[i]->size;
+ tnl->last_result_stride[i] = tnl->vb.ResultPtr[i]->stride;
+ tnl->pipeline.output_changes |= 1<<i;
+ }
+ }
+
+ if (tnl->pipeline.output_changes)
+ tnl->Driver.NotifyOutputChanges( ctx, tnl->pipeline.output_changes );
+
+ return tnl->pipeline.output_changes;
+#else
+ return ~0;
+#endif
+}
+
+
+void _tnl_run_pipeline( struct gl_context *ctx )
+{
+ TNLcontext *tnl = TNL_CONTEXT(ctx);
+ unsigned short __tmp;
+ GLuint i;
+
+ if (!tnl->vb.Count)
+ return;
+
+ /* Check for changed input sizes or change in stride to/from zero
+ * (ie const or non-const).
+ */
+ if (check_input_changes( ctx ) || tnl->pipeline.new_state) {
+ if (ctx->VertexProgram._MaintainTnlProgram)
+ _tnl_UpdateFixedFunctionProgram( ctx );
+
+ for (i = 0; i < tnl->pipeline.nr_stages ; i++) {
+ struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
+ if (s->validate)
+ s->validate( ctx, s );
+ }
+
+ tnl->pipeline.new_state = 0;
+ tnl->pipeline.input_changes = 0;
+
+ /* Pipeline can only change its output in response to either a
+ * statechange or an input size/stride change. No other changes
+ * are allowed.
+ */
+ if (check_output_changes( ctx ))
+ _tnl_notify_pipeline_output_change( ctx );
+ }
+
+#ifndef _OPENMP
+ /* Don't adjust FPU precision mode in case multiple threads are to be used.
+ * This would require that the additional threads also changed the FPU mode
+ * which is quite a mess as this had to be done in all parallelized sections;
+ * otherwise the master thread and all other threads are running in different
+ * modes, producing inconsistent results.
+ * Note that all x64 implementations don't define/use START_FAST_MATH, so
+ * this is "hack" is only used in i386 mode
+ */
+ START_FAST_MATH(__tmp);
+#endif
+
+ for (i = 0; i < tnl->pipeline.nr_stages ; i++) {
+ struct tnl_pipeline_stage *s = &tnl->pipeline.stages[i];
+ if (!s->run( ctx, s ))
+ break;
+ }
+
+#ifndef _OPENMP
+ END_FAST_MATH(__tmp);
+#endif
+}
+
+
+
+/* The default pipeline. This is useful for software rasterizers, and
+ * simple hardware rasterizers. For customization, I don't recommend
+ * tampering with the internals of these stages in the way that
+ * drivers did in Mesa 3.4. These stages are basically black boxes,
+ * and should be left intact.
+ *
+ * To customize the pipeline, consider:
+ *
+ * - removing redundant stages (making sure that the software rasterizer
+ * can cope with this on fallback paths). An example is fog
+ * coordinate generation, which is not required in the FX driver.
+ *
+ * - replacing general-purpose machine-independent stages with
+ * general-purpose machine-specific stages. There is no example of
+ * this to date, though it must be borne in mind that all subsequent
+ * stages that reference the output of the new stage must cope with
+ * any machine-specific data introduced. This may not be easy
+ * unless there are no such stages (ie the new stage is the last in
+ * the pipe).
+ *
+ * - inserting optimized (but specialized) stages ahead of the
+ * general-purpose fallback implementation. For example, the old
+ * fastpath mechanism, which only works when the VB->Elts input is
+ * available, can be duplicated by placing the fastpath stage at the
+ * head of this pipeline. Such specialized stages are currently
+ * constrained to have no outputs (ie. they must either finish the *
+ * pipeline by returning GL_FALSE from run(), or do nothing).
+ *
+ * Some work can be done to lift some of the restrictions in the final
+ * case, if it becomes necessary to do so.
+ */
+const struct tnl_pipeline_stage *_tnl_default_pipeline[] = {
+ &_tnl_vertex_transform_stage,
+ &_tnl_normal_transform_stage,
+ &_tnl_lighting_stage,
+ &_tnl_texgen_stage,
+ &_tnl_texture_transform_stage,
+ &_tnl_point_attenuation_stage,
+ &_tnl_vertex_program_stage,
+ &_tnl_fog_coordinate_stage,
+ &_tnl_render_stage,
+ NULL
+};
+
+const struct tnl_pipeline_stage *_tnl_vp_pipeline[] = {
+ &_tnl_vertex_program_stage,
+ &_tnl_render_stage,
+ NULL
+};
diff --git a/mesalib/src/mesa/vbo/vbo_exec_api.c b/mesalib/src/mesa/vbo/vbo_exec_api.c
index 2b8d38ef2..8474c787a 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_api.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_api.c
@@ -431,6 +431,24 @@ do { \
#include "vbo_attrib_tmp.h"
+/**
+ * Flush (draw) vertices.
+ * \param unmap - leave VBO unmapped after flushing?
+ */
+static void
+vbo_exec_FlushVertices_internal(struct vbo_exec_context *exec, GLboolean unmap)
+{
+ if (exec->vtx.vert_count || unmap) {
+ vbo_exec_vtx_flush( exec, unmap );
+ }
+
+ if (exec->vtx.vertex_size) {
+ vbo_exec_copy_to_current( exec );
+ reset_attrfv( exec );
+ }
+}
+
+
#if FEATURE_beginend
@@ -535,24 +553,6 @@ static void GLAPIENTRY vbo_exec_EvalPoint2( GLint i, GLint j )
/**
- * Flush (draw) vertices.
- * \param unmap - leave VBO unmapped after flushing?
- */
-static void
-vbo_exec_FlushVertices_internal(struct vbo_exec_context *exec, GLboolean unmap)
-{
- if (exec->vtx.vert_count || unmap) {
- vbo_exec_vtx_flush( exec, unmap );
- }
-
- if (exec->vtx.vertex_size) {
- vbo_exec_copy_to_current( exec );
- reset_attrfv( exec );
- }
-}
-
-
-/**
* Called via glBegin.
*/
static void GLAPIENTRY vbo_exec_Begin( GLenum mode )
@@ -947,7 +947,7 @@ void vbo_exec_vtx_destroy( struct vbo_exec_context *exec )
/* Free the vertex buffer. Unmap first if needed.
*/
if (_mesa_bufferobj_mapped(exec->vtx.bufferobj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_ARRAY_BUFFER, exec->vtx.bufferobj);
+ ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj);
}
_mesa_reference_buffer_object(ctx, &exec->vtx.bufferobj, NULL);
}
diff --git a/mesalib/src/mesa/vbo/vbo_exec_array.c b/mesalib/src/mesa/vbo/vbo_exec_array.c
index ea96761e7..5e34a2305 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_array.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_array.c
@@ -95,10 +95,25 @@ vbo_get_minmax_index(struct gl_context *ctx,
GLuint i;
if (_mesa_is_bufferobj(ib->obj)) {
- const GLvoid *map =
- ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER_ARB,
- GL_READ_ONLY, ib->obj);
- indices = ADD_POINTERS(map, ib->ptr);
+ unsigned map_size;
+
+ switch (ib->type) {
+ case GL_UNSIGNED_INT:
+ map_size = count * sizeof(GLuint);
+ break;
+ case GL_UNSIGNED_SHORT:
+ map_size = count * sizeof(GLushort);
+ break;
+ case GL_UNSIGNED_BYTE:
+ map_size = count * sizeof(GLubyte);
+ break;
+ default:
+ assert(0);
+ map_size = 0;
+ }
+
+ indices = ctx->Driver.MapBufferRange(ctx, (GLsizeiptr) ib->ptr, map_size,
+ GL_MAP_READ_BIT, ib->obj);
} else {
indices = ib->ptr;
}
@@ -176,7 +191,7 @@ vbo_get_minmax_index(struct gl_context *ctx,
}
if (_mesa_is_bufferobj(ib->obj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER_ARB, ib->obj);
+ ctx->Driver.UnmapBuffer(ctx, ib->obj);
}
}
@@ -196,8 +211,8 @@ check_array_data(struct gl_context *ctx, struct gl_client_array *array,
if (!array->BufferObj->Pointer) {
/* need to map now */
array->BufferObj->Pointer =
- ctx->Driver.MapBuffer(ctx, GL_ARRAY_BUFFER_ARB,
- GL_READ_ONLY, array->BufferObj);
+ ctx->Driver.MapBufferRange(ctx, 0, array->BufferObj->Size,
+ GL_MAP_READ_BIT, array->BufferObj);
}
data = ADD_POINTERS(data, array->BufferObj->Pointer);
}
@@ -238,7 +253,7 @@ unmap_array_buffer(struct gl_context *ctx, struct gl_client_array *array)
if (array->Enabled &&
_mesa_is_bufferobj(array->BufferObj) &&
_mesa_bufferobj_mapped(array->BufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_ARRAY_BUFFER_ARB, array->BufferObj);
+ ctx->Driver.UnmapBuffer(ctx, array->BufferObj);
}
}
@@ -256,10 +271,10 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType,
GLint i, k;
if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) {
- elemMap = ctx->Driver.MapBuffer(ctx,
- GL_ELEMENT_ARRAY_BUFFER_ARB,
- GL_READ_ONLY,
- ctx->Array.ElementArrayBufferObj);
+ elemMap = ctx->Driver.MapBufferRange(ctx, 0,
+ ctx->Array.ElementArrayBufferObj->Size,
+ GL_MAP_READ_BIT,
+ ctx->Array.ElementArrayBufferObj);
elements = ADD_POINTERS(elements, elemMap);
}
@@ -296,8 +311,7 @@ check_draw_elements_data(struct gl_context *ctx, GLsizei count, GLenum elemType,
}
if (_mesa_is_bufferobj(ctx->Array.ElementArrayBufferObj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER_ARB,
- ctx->Array.ElementArrayBufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Array.ElementArrayBufferObj);
}
unmap_array_buffer(ctx, &arrayObj->Vertex);
@@ -351,8 +365,8 @@ print_draw_arrays(struct gl_context *ctx,
bufName);
if (bufName) {
- GLubyte *p = ctx->Driver.MapBuffer(ctx, GL_ARRAY_BUFFER_ARB,
- GL_READ_ONLY_ARB, bufObj);
+ GLubyte *p = ctx->Driver.MapBufferRange(ctx, 0, bufObj->Size,
+ GL_MAP_READ_BIT, bufObj);
int offset = (int) (GLintptr) exec->array.inputs[i]->Ptr;
float *f = (float *) (p + offset);
int *k = (int *) f;
@@ -364,7 +378,7 @@ print_draw_arrays(struct gl_context *ctx,
for (i = 0; i < n; i++) {
printf(" float[%d] = 0x%08x %f\n", i, k[i], f[i]);
}
- ctx->Driver.UnmapBuffer(ctx, GL_ARRAY_BUFFER_ARB, bufObj);
+ ctx->Driver.UnmapBuffer(ctx, bufObj);
}
}
}
@@ -715,10 +729,11 @@ vbo_exec_DrawArraysInstanced(GLenum mode, GLint start, GLsizei count,
static void
dump_element_buffer(struct gl_context *ctx, GLenum type)
{
- const GLvoid *map = ctx->Driver.MapBuffer(ctx,
- GL_ELEMENT_ARRAY_BUFFER_ARB,
- GL_READ_ONLY,
- ctx->Array.ElementArrayBufferObj);
+ const GLvoid *map =
+ ctx->Driver.MapBufferRange(ctx, 0,
+ ctx->Array.ElementArrayBufferObj->Size,
+ GL_MAP_READ_BIT,
+ ctx->Array.ElementArrayBufferObj);
switch (type) {
case GL_UNSIGNED_BYTE:
{
@@ -760,8 +775,7 @@ dump_element_buffer(struct gl_context *ctx, GLenum type)
;
}
- ctx->Driver.UnmapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER_ARB,
- ctx->Array.ElementArrayBufferObj);
+ ctx->Driver.UnmapBuffer(ctx, ctx->Array.ElementArrayBufferObj);
}
diff --git a/mesalib/src/mesa/vbo/vbo_exec_draw.c b/mesalib/src/mesa/vbo/vbo_exec_draw.c
index 98f585792..8ffaaaa48 100644
--- a/mesalib/src/mesa/vbo/vbo_exec_draw.c
+++ b/mesalib/src/mesa/vbo/vbo_exec_draw.c
@@ -1,427 +1,416 @@
-/*
- * Mesa 3-D graphics library
- * Version: 7.2
- *
- * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-#include "main/glheader.h"
-#include "main/bufferobj.h"
-#include "main/compiler.h"
-#include "main/enums.h"
-#include "main/mfeatures.h"
-#include "main/state.h"
-
-#include "vbo_context.h"
-
-
-#if FEATURE_beginend
-
-
-static void
-vbo_exec_debug_verts( struct vbo_exec_context *exec )
-{
- GLuint count = exec->vtx.vert_count;
- GLuint i;
-
- printf("%s: %u vertices %d primitives, %d vertsize\n",
- __FUNCTION__,
- count,
- exec->vtx.prim_count,
- exec->vtx.vertex_size);
-
- for (i = 0 ; i < exec->vtx.prim_count ; i++) {
- struct _mesa_prim *prim = &exec->vtx.prim[i];
- printf(" prim %d: %s%s %d..%d %s %s\n",
- i,
- _mesa_lookup_prim_by_nr(prim->mode),
- prim->weak ? " (weak)" : "",
- prim->start,
- prim->start + prim->count,
- prim->begin ? "BEGIN" : "(wrap)",
- prim->end ? "END" : "(wrap)");
- }
-}
-
-
-/*
- * NOTE: Need to have calculated primitives by this point -- do it on the fly.
- * NOTE: Old 'parity' issue is gone.
- */
-static GLuint
-vbo_copy_vertices( struct vbo_exec_context *exec )
-{
- GLuint nr = exec->vtx.prim[exec->vtx.prim_count-1].count;
- GLuint ovf, i;
- GLuint sz = exec->vtx.vertex_size;
- GLfloat *dst = exec->vtx.copied.buffer;
- const GLfloat *src = (exec->vtx.buffer_map +
- exec->vtx.prim[exec->vtx.prim_count-1].start *
- exec->vtx.vertex_size);
-
-
- switch (exec->ctx->Driver.CurrentExecPrimitive) {
- case GL_POINTS:
- return 0;
- case GL_LINES:
- ovf = nr&1;
- for (i = 0 ; i < ovf ; i++)
- memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
- return i;
- case GL_TRIANGLES:
- ovf = nr%3;
- for (i = 0 ; i < ovf ; i++)
- memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
- return i;
- case GL_QUADS:
- ovf = nr&3;
- for (i = 0 ; i < ovf ; i++)
- memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
- return i;
- case GL_LINE_STRIP:
- if (nr == 0) {
- return 0;
- }
- else {
- memcpy( dst, src+(nr-1)*sz, sz * sizeof(GLfloat) );
- return 1;
- }
- case GL_LINE_LOOP:
- case GL_TRIANGLE_FAN:
- case GL_POLYGON:
- if (nr == 0) {
- return 0;
- }
- else if (nr == 1) {
- memcpy( dst, src+0, sz * sizeof(GLfloat) );
- return 1;
- }
- else {
- memcpy( dst, src+0, sz * sizeof(GLfloat) );
- memcpy( dst+sz, src+(nr-1)*sz, sz * sizeof(GLfloat) );
- return 2;
- }
- case GL_TRIANGLE_STRIP:
- /* no parity issue, but need to make sure the tri is not drawn twice */
- if (nr & 1) {
- exec->vtx.prim[exec->vtx.prim_count-1].count--;
- }
- /* fallthrough */
- case GL_QUAD_STRIP:
- switch (nr) {
- case 0:
- ovf = 0;
- break;
- case 1:
- ovf = 1;
- break;
- default:
- ovf = 2 + (nr & 1);
- break;
- }
- for (i = 0 ; i < ovf ; i++)
- memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
- return i;
- case PRIM_OUTSIDE_BEGIN_END:
- return 0;
- default:
- assert(0);
- return 0;
- }
-}
-
-
-
-/* TODO: populate these as the vertex is defined:
- */
-static void
-vbo_exec_bind_arrays( struct gl_context *ctx )
-{
- struct vbo_context *vbo = vbo_context(ctx);
- struct vbo_exec_context *exec = &vbo->exec;
- struct gl_client_array *arrays = exec->vtx.arrays;
- const GLuint count = exec->vtx.vert_count;
- const GLuint *map;
- GLuint attr;
- GLbitfield varying_inputs = 0x0;
-
- /* Install the default (ie Current) attributes first, then overlay
- * all active ones.
- */
- switch (get_program_mode(exec->ctx)) {
- case VP_NONE:
- for (attr = 0; attr < 16; attr++) {
- exec->vtx.inputs[attr] = &vbo->legacy_currval[attr];
- }
- for (attr = 0; attr < MAT_ATTRIB_MAX; attr++) {
- ASSERT(attr + 16 < Elements(exec->vtx.inputs));
- exec->vtx.inputs[attr + 16] = &vbo->mat_currval[attr];
- }
- map = vbo->map_vp_none;
- break;
- case VP_NV:
- case VP_ARB:
- /* The aliasing of attributes for NV vertex programs has already
- * occurred. NV vertex programs cannot access material values,
- * nor attributes greater than VERT_ATTRIB_TEX7.
- */
- for (attr = 0; attr < 16; attr++) {
- exec->vtx.inputs[attr] = &vbo->legacy_currval[attr];
- ASSERT(attr + 16 < Elements(exec->vtx.inputs));
- exec->vtx.inputs[attr + 16] = &vbo->generic_currval[attr];
- }
- map = vbo->map_vp_arb;
-
- /* check if VERT_ATTRIB_POS is not read but VERT_BIT_GENERIC0 is read.
- * In that case we effectively need to route the data from
- * glVertexAttrib(0, val) calls to feed into the GENERIC0 input.
- */
- if ((ctx->VertexProgram._Current->Base.InputsRead & VERT_BIT_POS) == 0 &&
- (ctx->VertexProgram._Current->Base.InputsRead & VERT_BIT_GENERIC0)) {
- exec->vtx.inputs[16] = exec->vtx.inputs[0];
- exec->vtx.attrsz[16] = exec->vtx.attrsz[0];
- exec->vtx.attrptr[16] = exec->vtx.attrptr[0];
- exec->vtx.attrsz[0] = 0;
- }
- break;
- default:
- assert(0);
- }
-
- /* Make all active attributes (including edgeflag) available as
- * arrays of floats.
- */
- for (attr = 0; attr < VERT_ATTRIB_MAX ; attr++) {
- const GLuint src = map[attr];
-
- if (exec->vtx.attrsz[src]) {
- GLsizeiptr offset = (GLbyte *)exec->vtx.attrptr[src] -
- (GLbyte *)exec->vtx.vertex;
-
- /* override the default array set above */
- ASSERT(attr < Elements(exec->vtx.inputs));
- ASSERT(attr < Elements(exec->vtx.arrays)); /* arrays[] */
- exec->vtx.inputs[attr] = &arrays[attr];
-
- if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
- /* a real buffer obj: Ptr is an offset, not a pointer*/
- assert(exec->vtx.bufferobj->Pointer); /* buf should be mapped */
- assert(offset >= 0);
- arrays[attr].Ptr = (GLubyte *)exec->vtx.bufferobj->Offset + offset;
- }
- else {
- /* Ptr into ordinary app memory */
- arrays[attr].Ptr = (GLubyte *)exec->vtx.buffer_map + offset;
- }
- arrays[attr].Size = exec->vtx.attrsz[src];
- arrays[attr].StrideB = exec->vtx.vertex_size * sizeof(GLfloat);
- arrays[attr].Stride = exec->vtx.vertex_size * sizeof(GLfloat);
- arrays[attr].Type = GL_FLOAT;
- arrays[attr].Format = GL_RGBA;
- arrays[attr].Enabled = 1;
- arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat);
- _mesa_reference_buffer_object(ctx,
- &arrays[attr].BufferObj,
- exec->vtx.bufferobj);
- arrays[attr]._MaxElement = count; /* ??? */
-
- varying_inputs |= 1 << attr;
- ctx->NewState |= _NEW_ARRAY;
- }
- }
-
- _mesa_set_varying_vp_inputs( ctx, varying_inputs );
-}
-
-
-/**
- * Unmap the VBO. This is called before drawing.
- */
-static void
-vbo_exec_vtx_unmap( struct vbo_exec_context *exec )
-{
- GLenum target = GL_ARRAY_BUFFER_ARB;
-
- if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
- struct gl_context *ctx = exec->ctx;
-
- if (ctx->Driver.FlushMappedBufferRange) {
- GLintptr offset = exec->vtx.buffer_used - exec->vtx.bufferobj->Offset;
- GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) * sizeof(float);
-
- if (length)
- ctx->Driver.FlushMappedBufferRange(ctx, target,
- offset, length,
- exec->vtx.bufferobj);
- }
-
- exec->vtx.buffer_used += (exec->vtx.buffer_ptr -
- exec->vtx.buffer_map) * sizeof(float);
-
- assert(exec->vtx.buffer_used <= VBO_VERT_BUFFER_SIZE);
- assert(exec->vtx.buffer_ptr != NULL);
-
- ctx->Driver.UnmapBuffer(ctx, target, exec->vtx.bufferobj);
- exec->vtx.buffer_map = NULL;
- exec->vtx.buffer_ptr = NULL;
- exec->vtx.max_vert = 0;
- }
-}
-
-
-/**
- * Map the vertex buffer to begin storing glVertex, glColor, etc data.
- */
-void
-vbo_exec_vtx_map( struct vbo_exec_context *exec )
-{
- struct gl_context *ctx = exec->ctx;
- const GLenum target = GL_ARRAY_BUFFER_ARB;
- const GLenum access = GL_READ_WRITE_ARB; /* for MapBuffer */
- const GLenum accessRange = GL_MAP_WRITE_BIT | /* for MapBufferRange */
- GL_MAP_INVALIDATE_RANGE_BIT |
- GL_MAP_UNSYNCHRONIZED_BIT |
- GL_MAP_FLUSH_EXPLICIT_BIT |
- MESA_MAP_NOWAIT_BIT;
- const GLenum usage = GL_STREAM_DRAW_ARB;
-
- if (!_mesa_is_bufferobj(exec->vtx.bufferobj))
- return;
-
- assert(!exec->vtx.buffer_map);
- assert(!exec->vtx.buffer_ptr);
-
- if (VBO_VERT_BUFFER_SIZE > exec->vtx.buffer_used + 1024 &&
- ctx->Driver.MapBufferRange) {
- /* The VBO exists and there's room for more */
- exec->vtx.buffer_map =
- (GLfloat *)ctx->Driver.MapBufferRange(ctx,
- target,
- exec->vtx.buffer_used,
- (VBO_VERT_BUFFER_SIZE -
- exec->vtx.buffer_used),
- accessRange,
- exec->vtx.bufferobj);
- exec->vtx.buffer_ptr = exec->vtx.buffer_map;
- }
-
- if (!exec->vtx.buffer_map) {
- /* Need to allocate a new VBO */
- exec->vtx.buffer_used = 0;
-
- ctx->Driver.BufferData(ctx, target,
- VBO_VERT_BUFFER_SIZE,
- NULL, usage, exec->vtx.bufferobj);
-
-
- if (ctx->Driver.MapBufferRange)
- exec->vtx.buffer_map =
- (GLfloat *)ctx->Driver.MapBufferRange(ctx, target,
- 0, VBO_VERT_BUFFER_SIZE,
- accessRange,
- exec->vtx.bufferobj);
- if (!exec->vtx.buffer_map)
- exec->vtx.buffer_map =
- (GLfloat *)ctx->Driver.MapBuffer(ctx, target, access, exec->vtx.bufferobj);
- assert(exec->vtx.buffer_map);
- exec->vtx.buffer_ptr = exec->vtx.buffer_map;
- }
-
- if (0)
- printf("map %d..\n", exec->vtx.buffer_used);
-}
-
-
-
-/**
- * Execute the buffer and save copied verts.
- * \param keep_unmapped if true, leave the VBO unmapped when we're done.
- */
-void
-vbo_exec_vtx_flush(struct vbo_exec_context *exec, GLboolean keepUnmapped)
-{
- if (0)
- vbo_exec_debug_verts( exec );
-
- if (exec->vtx.prim_count &&
- exec->vtx.vert_count) {
-
- exec->vtx.copied.nr = vbo_copy_vertices( exec );
-
- if (exec->vtx.copied.nr != exec->vtx.vert_count) {
- struct gl_context *ctx = exec->ctx;
-
- /* Before the update_state() as this may raise _NEW_ARRAY
- * from _mesa_set_varying_vp_inputs().
- */
- vbo_exec_bind_arrays( ctx );
-
- if (ctx->NewState)
- _mesa_update_state( ctx );
-
- if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
- vbo_exec_vtx_unmap( exec );
- }
-
- if (0)
- printf("%s %d %d\n", __FUNCTION__, exec->vtx.prim_count,
- exec->vtx.vert_count);
-
- vbo_context(ctx)->draw_prims( ctx,
- exec->vtx.inputs,
- exec->vtx.prim,
- exec->vtx.prim_count,
- NULL,
- GL_TRUE,
- 0,
- exec->vtx.vert_count - 1);
-
- /* If using a real VBO, get new storage -- unless asked not to.
- */
- if (_mesa_is_bufferobj(exec->vtx.bufferobj) && !keepUnmapped) {
- vbo_exec_vtx_map( exec );
- }
- }
- }
-
- /* May have to unmap explicitly if we didn't draw:
- */
- if (keepUnmapped &&
- _mesa_is_bufferobj(exec->vtx.bufferobj) &&
- exec->vtx.buffer_map) {
- vbo_exec_vtx_unmap( exec );
- }
-
- if (keepUnmapped || exec->vtx.vertex_size == 0)
- exec->vtx.max_vert = 0;
- else
- exec->vtx.max_vert = ((VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) /
- (exec->vtx.vertex_size * sizeof(GLfloat)));
-
- exec->vtx.buffer_ptr = exec->vtx.buffer_map;
- exec->vtx.prim_count = 0;
- exec->vtx.vert_count = 0;
-}
-
-
-#endif /* FEATURE_beginend */
+/*
+ * Mesa 3-D graphics library
+ * Version: 7.2
+ *
+ * Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+#include "main/glheader.h"
+#include "main/bufferobj.h"
+#include "main/compiler.h"
+#include "main/enums.h"
+#include "main/mfeatures.h"
+#include "main/state.h"
+
+#include "vbo_context.h"
+
+
+#if FEATURE_beginend
+
+
+static void
+vbo_exec_debug_verts( struct vbo_exec_context *exec )
+{
+ GLuint count = exec->vtx.vert_count;
+ GLuint i;
+
+ printf("%s: %u vertices %d primitives, %d vertsize\n",
+ __FUNCTION__,
+ count,
+ exec->vtx.prim_count,
+ exec->vtx.vertex_size);
+
+ for (i = 0 ; i < exec->vtx.prim_count ; i++) {
+ struct _mesa_prim *prim = &exec->vtx.prim[i];
+ printf(" prim %d: %s%s %d..%d %s %s\n",
+ i,
+ _mesa_lookup_prim_by_nr(prim->mode),
+ prim->weak ? " (weak)" : "",
+ prim->start,
+ prim->start + prim->count,
+ prim->begin ? "BEGIN" : "(wrap)",
+ prim->end ? "END" : "(wrap)");
+ }
+}
+
+
+/*
+ * NOTE: Need to have calculated primitives by this point -- do it on the fly.
+ * NOTE: Old 'parity' issue is gone.
+ */
+static GLuint
+vbo_copy_vertices( struct vbo_exec_context *exec )
+{
+ GLuint nr = exec->vtx.prim[exec->vtx.prim_count-1].count;
+ GLuint ovf, i;
+ GLuint sz = exec->vtx.vertex_size;
+ GLfloat *dst = exec->vtx.copied.buffer;
+ const GLfloat *src = (exec->vtx.buffer_map +
+ exec->vtx.prim[exec->vtx.prim_count-1].start *
+ exec->vtx.vertex_size);
+
+
+ switch (exec->ctx->Driver.CurrentExecPrimitive) {
+ case GL_POINTS:
+ return 0;
+ case GL_LINES:
+ ovf = nr&1;
+ for (i = 0 ; i < ovf ; i++)
+ memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
+ return i;
+ case GL_TRIANGLES:
+ ovf = nr%3;
+ for (i = 0 ; i < ovf ; i++)
+ memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
+ return i;
+ case GL_QUADS:
+ ovf = nr&3;
+ for (i = 0 ; i < ovf ; i++)
+ memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
+ return i;
+ case GL_LINE_STRIP:
+ if (nr == 0) {
+ return 0;
+ }
+ else {
+ memcpy( dst, src+(nr-1)*sz, sz * sizeof(GLfloat) );
+ return 1;
+ }
+ case GL_LINE_LOOP:
+ case GL_TRIANGLE_FAN:
+ case GL_POLYGON:
+ if (nr == 0) {
+ return 0;
+ }
+ else if (nr == 1) {
+ memcpy( dst, src+0, sz * sizeof(GLfloat) );
+ return 1;
+ }
+ else {
+ memcpy( dst, src+0, sz * sizeof(GLfloat) );
+ memcpy( dst+sz, src+(nr-1)*sz, sz * sizeof(GLfloat) );
+ return 2;
+ }
+ case GL_TRIANGLE_STRIP:
+ /* no parity issue, but need to make sure the tri is not drawn twice */
+ if (nr & 1) {
+ exec->vtx.prim[exec->vtx.prim_count-1].count--;
+ }
+ /* fallthrough */
+ case GL_QUAD_STRIP:
+ switch (nr) {
+ case 0:
+ ovf = 0;
+ break;
+ case 1:
+ ovf = 1;
+ break;
+ default:
+ ovf = 2 + (nr & 1);
+ break;
+ }
+ for (i = 0 ; i < ovf ; i++)
+ memcpy( dst+i*sz, src+(nr-ovf+i)*sz, sz * sizeof(GLfloat) );
+ return i;
+ case PRIM_OUTSIDE_BEGIN_END:
+ return 0;
+ default:
+ assert(0);
+ return 0;
+ }
+}
+
+
+
+/* TODO: populate these as the vertex is defined:
+ */
+static void
+vbo_exec_bind_arrays( struct gl_context *ctx )
+{
+ struct vbo_context *vbo = vbo_context(ctx);
+ struct vbo_exec_context *exec = &vbo->exec;
+ struct gl_client_array *arrays = exec->vtx.arrays;
+ const GLuint count = exec->vtx.vert_count;
+ const GLuint *map;
+ GLuint attr;
+ GLbitfield varying_inputs = 0x0;
+
+ /* Install the default (ie Current) attributes first, then overlay
+ * all active ones.
+ */
+ switch (get_program_mode(exec->ctx)) {
+ case VP_NONE:
+ for (attr = 0; attr < 16; attr++) {
+ exec->vtx.inputs[attr] = &vbo->legacy_currval[attr];
+ }
+ for (attr = 0; attr < MAT_ATTRIB_MAX; attr++) {
+ ASSERT(attr + 16 < Elements(exec->vtx.inputs));
+ exec->vtx.inputs[attr + 16] = &vbo->mat_currval[attr];
+ }
+ map = vbo->map_vp_none;
+ break;
+ case VP_NV:
+ case VP_ARB:
+ /* The aliasing of attributes for NV vertex programs has already
+ * occurred. NV vertex programs cannot access material values,
+ * nor attributes greater than VERT_ATTRIB_TEX7.
+ */
+ for (attr = 0; attr < 16; attr++) {
+ exec->vtx.inputs[attr] = &vbo->legacy_currval[attr];
+ ASSERT(attr + 16 < Elements(exec->vtx.inputs));
+ exec->vtx.inputs[attr + 16] = &vbo->generic_currval[attr];
+ }
+ map = vbo->map_vp_arb;
+
+ /* check if VERT_ATTRIB_POS is not read but VERT_BIT_GENERIC0 is read.
+ * In that case we effectively need to route the data from
+ * glVertexAttrib(0, val) calls to feed into the GENERIC0 input.
+ */
+ if ((ctx->VertexProgram._Current->Base.InputsRead & VERT_BIT_POS) == 0 &&
+ (ctx->VertexProgram._Current->Base.InputsRead & VERT_BIT_GENERIC0)) {
+ exec->vtx.inputs[16] = exec->vtx.inputs[0];
+ exec->vtx.attrsz[16] = exec->vtx.attrsz[0];
+ exec->vtx.attrptr[16] = exec->vtx.attrptr[0];
+ exec->vtx.attrsz[0] = 0;
+ }
+ break;
+ default:
+ assert(0);
+ }
+
+ /* Make all active attributes (including edgeflag) available as
+ * arrays of floats.
+ */
+ for (attr = 0; attr < VERT_ATTRIB_MAX ; attr++) {
+ const GLuint src = map[attr];
+
+ if (exec->vtx.attrsz[src]) {
+ GLsizeiptr offset = (GLbyte *)exec->vtx.attrptr[src] -
+ (GLbyte *)exec->vtx.vertex;
+
+ /* override the default array set above */
+ ASSERT(attr < Elements(exec->vtx.inputs));
+ ASSERT(attr < Elements(exec->vtx.arrays)); /* arrays[] */
+ exec->vtx.inputs[attr] = &arrays[attr];
+
+ if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
+ /* a real buffer obj: Ptr is an offset, not a pointer*/
+ assert(exec->vtx.bufferobj->Pointer); /* buf should be mapped */
+ assert(offset >= 0);
+ arrays[attr].Ptr = (GLubyte *)exec->vtx.bufferobj->Offset + offset;
+ }
+ else {
+ /* Ptr into ordinary app memory */
+ arrays[attr].Ptr = (GLubyte *)exec->vtx.buffer_map + offset;
+ }
+ arrays[attr].Size = exec->vtx.attrsz[src];
+ arrays[attr].StrideB = exec->vtx.vertex_size * sizeof(GLfloat);
+ arrays[attr].Stride = exec->vtx.vertex_size * sizeof(GLfloat);
+ arrays[attr].Type = GL_FLOAT;
+ arrays[attr].Format = GL_RGBA;
+ arrays[attr].Enabled = 1;
+ arrays[attr]._ElementSize = arrays[attr].Size * sizeof(GLfloat);
+ _mesa_reference_buffer_object(ctx,
+ &arrays[attr].BufferObj,
+ exec->vtx.bufferobj);
+ arrays[attr]._MaxElement = count; /* ??? */
+
+ varying_inputs |= 1 << attr;
+ ctx->NewState |= _NEW_ARRAY;
+ }
+ }
+
+ _mesa_set_varying_vp_inputs( ctx, varying_inputs );
+}
+
+
+/**
+ * Unmap the VBO. This is called before drawing.
+ */
+static void
+vbo_exec_vtx_unmap( struct vbo_exec_context *exec )
+{
+ if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
+ struct gl_context *ctx = exec->ctx;
+
+ if (ctx->Driver.FlushMappedBufferRange) {
+ GLintptr offset = exec->vtx.buffer_used - exec->vtx.bufferobj->Offset;
+ GLsizeiptr length = (exec->vtx.buffer_ptr - exec->vtx.buffer_map) * sizeof(float);
+
+ if (length)
+ ctx->Driver.FlushMappedBufferRange(ctx, offset, length,
+ exec->vtx.bufferobj);
+ }
+
+ exec->vtx.buffer_used += (exec->vtx.buffer_ptr -
+ exec->vtx.buffer_map) * sizeof(float);
+
+ assert(exec->vtx.buffer_used <= VBO_VERT_BUFFER_SIZE);
+ assert(exec->vtx.buffer_ptr != NULL);
+
+ ctx->Driver.UnmapBuffer(ctx, exec->vtx.bufferobj);
+ exec->vtx.buffer_map = NULL;
+ exec->vtx.buffer_ptr = NULL;
+ exec->vtx.max_vert = 0;
+ }
+}
+
+
+/**
+ * Map the vertex buffer to begin storing glVertex, glColor, etc data.
+ */
+void
+vbo_exec_vtx_map( struct vbo_exec_context *exec )
+{
+ struct gl_context *ctx = exec->ctx;
+ const GLenum accessRange = GL_MAP_WRITE_BIT | /* for MapBufferRange */
+ GL_MAP_INVALIDATE_RANGE_BIT |
+ GL_MAP_UNSYNCHRONIZED_BIT |
+ GL_MAP_FLUSH_EXPLICIT_BIT |
+ MESA_MAP_NOWAIT_BIT;
+ const GLenum usage = GL_STREAM_DRAW_ARB;
+
+ if (!_mesa_is_bufferobj(exec->vtx.bufferobj))
+ return;
+
+ assert(!exec->vtx.buffer_map);
+ assert(!exec->vtx.buffer_ptr);
+
+ if (VBO_VERT_BUFFER_SIZE > exec->vtx.buffer_used + 1024) {
+ /* The VBO exists and there's room for more */
+ exec->vtx.buffer_map =
+ (GLfloat *)ctx->Driver.MapBufferRange(ctx,
+ exec->vtx.buffer_used,
+ (VBO_VERT_BUFFER_SIZE -
+ exec->vtx.buffer_used),
+ accessRange,
+ exec->vtx.bufferobj);
+ exec->vtx.buffer_ptr = exec->vtx.buffer_map;
+ }
+
+ if (!exec->vtx.buffer_map) {
+ /* Need to allocate a new VBO */
+ exec->vtx.buffer_used = 0;
+
+ ctx->Driver.BufferData(ctx, GL_ARRAY_BUFFER_ARB,
+ VBO_VERT_BUFFER_SIZE,
+ NULL, usage, exec->vtx.bufferobj);
+
+
+ exec->vtx.buffer_map =
+ (GLfloat *)ctx->Driver.MapBufferRange(ctx,
+ 0, VBO_VERT_BUFFER_SIZE,
+ accessRange,
+ exec->vtx.bufferobj);
+ assert(exec->vtx.buffer_map);
+ exec->vtx.buffer_ptr = exec->vtx.buffer_map;
+ }
+
+ if (0)
+ printf("map %d..\n", exec->vtx.buffer_used);
+}
+
+
+
+/**
+ * Execute the buffer and save copied verts.
+ * \param keep_unmapped if true, leave the VBO unmapped when we're done.
+ */
+void
+vbo_exec_vtx_flush(struct vbo_exec_context *exec, GLboolean keepUnmapped)
+{
+ if (0)
+ vbo_exec_debug_verts( exec );
+
+ if (exec->vtx.prim_count &&
+ exec->vtx.vert_count) {
+
+ exec->vtx.copied.nr = vbo_copy_vertices( exec );
+
+ if (exec->vtx.copied.nr != exec->vtx.vert_count) {
+ struct gl_context *ctx = exec->ctx;
+
+ /* Before the update_state() as this may raise _NEW_ARRAY
+ * from _mesa_set_varying_vp_inputs().
+ */
+ vbo_exec_bind_arrays( ctx );
+
+ if (ctx->NewState)
+ _mesa_update_state( ctx );
+
+ if (_mesa_is_bufferobj(exec->vtx.bufferobj)) {
+ vbo_exec_vtx_unmap( exec );
+ }
+
+ if (0)
+ printf("%s %d %d\n", __FUNCTION__, exec->vtx.prim_count,
+ exec->vtx.vert_count);
+
+ vbo_context(ctx)->draw_prims( ctx,
+ exec->vtx.inputs,
+ exec->vtx.prim,
+ exec->vtx.prim_count,
+ NULL,
+ GL_TRUE,
+ 0,
+ exec->vtx.vert_count - 1);
+
+ /* If using a real VBO, get new storage -- unless asked not to.
+ */
+ if (_mesa_is_bufferobj(exec->vtx.bufferobj) && !keepUnmapped) {
+ vbo_exec_vtx_map( exec );
+ }
+ }
+ }
+
+ /* May have to unmap explicitly if we didn't draw:
+ */
+ if (keepUnmapped &&
+ _mesa_is_bufferobj(exec->vtx.bufferobj) &&
+ exec->vtx.buffer_map) {
+ vbo_exec_vtx_unmap( exec );
+ }
+
+ if (keepUnmapped || exec->vtx.vertex_size == 0)
+ exec->vtx.max_vert = 0;
+ else
+ exec->vtx.max_vert = ((VBO_VERT_BUFFER_SIZE - exec->vtx.buffer_used) /
+ (exec->vtx.vertex_size * sizeof(GLfloat)));
+
+ exec->vtx.buffer_ptr = exec->vtx.buffer_map;
+ exec->vtx.prim_count = 0;
+ exec->vtx.vert_count = 0;
+}
+
+
+#endif /* FEATURE_beginend */
diff --git a/mesalib/src/mesa/vbo/vbo_rebase.c b/mesalib/src/mesa/vbo/vbo_rebase.c
index 1de290ff6..a1eab752a 100644
--- a/mesalib/src/mesa/vbo/vbo_rebase.c
+++ b/mesalib/src/mesa/vbo/vbo_rebase.c
@@ -159,10 +159,8 @@ void vbo_rebase_prims( struct gl_context *ctx,
void *ptr;
if (map_ib)
- ctx->Driver.MapBuffer(ctx,
- GL_ELEMENT_ARRAY_BUFFER,
- GL_READ_ONLY_ARB,
- ib->obj);
+ ctx->Driver.MapBufferRange(ctx, 0, ib->obj->Size, GL_MAP_READ_BIT,
+ ib->obj);
ptr = ADD_POINTERS(ib->obj->Pointer, ib->ptr);
@@ -183,9 +181,7 @@ void vbo_rebase_prims( struct gl_context *ctx,
}
if (map_ib)
- ctx->Driver.UnmapBuffer(ctx,
- GL_ELEMENT_ARRAY_BUFFER,
- ib->obj);
+ ctx->Driver.UnmapBuffer(ctx, ib->obj);
tmp_ib.obj = ctx->Shared->NullBufferObj;
tmp_ib.ptr = tmp_indices;
diff --git a/mesalib/src/mesa/vbo/vbo_save_api.c b/mesalib/src/mesa/vbo/vbo_save_api.c
index 0b8b7dac8..a4b728e79 100644
--- a/mesalib/src/mesa/vbo/vbo_save_api.c
+++ b/mesalib/src/mesa/vbo/vbo_save_api.c
@@ -232,11 +232,10 @@ map_vertex_store(struct gl_context *ctx,
assert(vertex_store->bufferobj);
assert(!vertex_store->buffer);
vertex_store->buffer =
- (GLfloat *) ctx->Driver.MapBuffer(ctx,
- GL_ARRAY_BUFFER_ARB, /* not used */
- GL_WRITE_ONLY, /* not used */
- vertex_store->
- bufferobj);
+ (GLfloat *) ctx->Driver.MapBufferRange(ctx, 0,
+ vertex_store->bufferobj->Size,
+ GL_MAP_WRITE_BIT, /* not used */
+ vertex_store->bufferobj);
assert(vertex_store->buffer);
return vertex_store->buffer + vertex_store->used;
@@ -247,7 +246,7 @@ static void
unmap_vertex_store(struct gl_context *ctx,
struct vbo_save_vertex_store *vertex_store)
{
- ctx->Driver.UnmapBuffer(ctx, GL_ARRAY_BUFFER_ARB, vertex_store->bufferobj);
+ ctx->Driver.UnmapBuffer(ctx, vertex_store->bufferobj);
vertex_store->buffer = NULL;
}
diff --git a/mesalib/src/mesa/vbo/vbo_save_draw.c b/mesalib/src/mesa/vbo/vbo_save_draw.c
index a37af73e0..6cda831aa 100644
--- a/mesalib/src/mesa/vbo/vbo_save_draw.c
+++ b/mesalib/src/mesa/vbo/vbo_save_draw.c
@@ -70,7 +70,7 @@ _playback_copy_to_current(struct gl_context *ctx,
else
offset = node->buffer_offset;
- ctx->Driver.GetBufferSubData( ctx, 0, offset,
+ ctx->Driver.GetBufferSubData( ctx, offset,
node->vertex_size * sizeof(GLfloat),
data, node->vertex_store->bufferobj );
@@ -217,10 +217,11 @@ static void
vbo_save_loopback_vertex_list(struct gl_context *ctx,
const struct vbo_save_vertex_list *list)
{
- const char *buffer = ctx->Driver.MapBuffer(ctx,
- GL_ARRAY_BUFFER_ARB,
- GL_READ_ONLY, /* ? */
- list->vertex_store->bufferobj);
+ const char *buffer =
+ ctx->Driver.MapBufferRange(ctx, 0,
+ list->vertex_store->bufferobj->Size,
+ GL_MAP_READ_BIT, /* ? */
+ list->vertex_store->bufferobj);
vbo_loopback_vertex_list(ctx,
(const GLfloat *)(buffer + list->buffer_offset),
@@ -230,8 +231,7 @@ vbo_save_loopback_vertex_list(struct gl_context *ctx,
list->wrap_count,
list->vertex_size);
- ctx->Driver.UnmapBuffer(ctx, GL_ARRAY_BUFFER_ARB,
- list->vertex_store->bufferobj);
+ ctx->Driver.UnmapBuffer(ctx, list->vertex_store->bufferobj);
}
diff --git a/mesalib/src/mesa/vbo/vbo_split.c b/mesalib/src/mesa/vbo/vbo_split.c
index e28f9afcf..c933a3f9a 100644
--- a/mesalib/src/mesa/vbo/vbo_split.c
+++ b/mesalib/src/mesa/vbo/vbo_split.c
@@ -1,169 +1,168 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-/* Deal with hardware and/or swtnl maximums:
- * - maximum number of vertices in buffer
- * - maximum number of elements (maybe zero)
- *
- * The maximums may vary with opengl state (eg if a larger hardware
- * vertex is required in this state, the maximum number of vertices
- * may be smaller than in another state).
- *
- * We want buffer splitting to be a convenience function for the code
- * actually drawing the primitives rather than a system-wide maximum,
- * otherwise it is hard to avoid pessimism.
- *
- * For instance, if a driver has no hardware limits on vertex buffer
- * dimensions, it would not ordinarily want to split vbos. But if
- * there is an unexpected fallback, eg memory manager fails to upload
- * textures, it will want to pass the drawing commands onto swtnl,
- * which does have limitations. A convenience function allows swtnl
- * to split the drawing and vbos internally without imposing its
- * limitations on drivers which want to use it as a fallback path.
- */
-
-#include "main/glheader.h"
-#include "main/imports.h"
-#include "main/mtypes.h"
-#include "main/macros.h"
-
-#include "vbo_split.h"
-#include "vbo.h"
-
-/* True if a primitive can be split without copying of vertices, false
- * otherwise.
- */
-GLboolean split_prim_inplace(GLenum mode, GLuint *first, GLuint *incr)
-{
- switch (mode) {
- case GL_POINTS:
- *first = 1;
- *incr = 1;
- return GL_TRUE;
- case GL_LINES:
- *first = 2;
- *incr = 2;
- return GL_TRUE;
- case GL_LINE_STRIP:
- *first = 2;
- *incr = 1;
- return GL_TRUE;
- case GL_TRIANGLES:
- *first = 3;
- *incr = 3;
- return GL_TRUE;
- case GL_TRIANGLE_STRIP:
- *first = 3;
- *incr = 1;
- return GL_TRUE;
- case GL_QUADS:
- *first = 4;
- *incr = 4;
- return GL_TRUE;
- case GL_QUAD_STRIP:
- *first = 4;
- *incr = 2;
- return GL_TRUE;
- default:
- *first = 0;
- *incr = 1; /* so that count % incr works */
- return GL_FALSE;
- }
-}
-
-
-
-void vbo_split_prims( struct gl_context *ctx,
- const struct gl_client_array *arrays[],
- const struct _mesa_prim *prim,
- GLuint nr_prims,
- const struct _mesa_index_buffer *ib,
- GLuint min_index,
- GLuint max_index,
- vbo_draw_func draw,
- const struct split_limits *limits )
-{
- GLint max_basevertex = prim->basevertex;
- GLuint i;
-
- for (i = 1; i < nr_prims; i++)
- max_basevertex = MAX2(max_basevertex, prim[i].basevertex);
-
- /* XXX max_basevertex is computed but not used, why? */
-
- if (ib) {
- if (limits->max_indices == 0) {
- /* Could traverse the indices, re-emitting vertices in turn.
- * But it's hard to see why this case would be needed - for
- * software tnl, it is better to convert to non-indexed
- * rendering after transformation is complete, as is done in
- * the t_dd_rendertmp.h templates. Are there any devices
- * with hardware tnl that cannot do indexed rendering?
- *
- * For now, this path is disabled.
- */
- assert(0);
- }
- else if (max_index - min_index >= limits->max_verts) {
- /* The vertex buffers are too large for hardware (or the
- * swtnl module). Traverse the indices, re-emitting vertices
- * in turn. Use a vertex cache to preserve some of the
- * sharing from the original index list.
- */
- vbo_split_copy(ctx, arrays, prim, nr_prims, ib,
- draw, limits );
- }
- else if (ib->count > limits->max_indices) {
- /* The index buffer is too large for hardware. Try to split
- * on whole-primitive boundaries, otherwise try to split the
- * individual primitives.
- */
- vbo_split_inplace(ctx, arrays, prim, nr_prims, ib,
- min_index, max_index, draw, limits );
- }
- else {
- /* Why were we called? */
- assert(0);
- }
- }
- else {
- if (max_index - min_index >= limits->max_verts) {
- /* The vertex buffer is too large for hardware (or the swtnl
- * module). Try to split on whole-primitive boundaries,
- * otherwise try to split the individual primitives.
- */
- vbo_split_inplace(ctx, arrays, prim, nr_prims, ib,
- min_index, max_index, draw, limits );
- }
- else {
- /* Why were we called? */
- assert(0);
- }
- }
-}
-
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+/* Deal with hardware and/or swtnl maximums:
+ * - maximum number of vertices in buffer
+ * - maximum number of elements (maybe zero)
+ *
+ * The maximums may vary with opengl state (eg if a larger hardware
+ * vertex is required in this state, the maximum number of vertices
+ * may be smaller than in another state).
+ *
+ * We want buffer splitting to be a convenience function for the code
+ * actually drawing the primitives rather than a system-wide maximum,
+ * otherwise it is hard to avoid pessimism.
+ *
+ * For instance, if a driver has no hardware limits on vertex buffer
+ * dimensions, it would not ordinarily want to split vbos. But if
+ * there is an unexpected fallback, eg memory manager fails to upload
+ * textures, it will want to pass the drawing commands onto swtnl,
+ * which does have limitations. A convenience function allows swtnl
+ * to split the drawing and vbos internally without imposing its
+ * limitations on drivers which want to use it as a fallback path.
+ */
+
+#include "main/glheader.h"
+#include "main/imports.h"
+#include "main/mtypes.h"
+#include "main/macros.h"
+
+#include "vbo_split.h"
+#include "vbo.h"
+
+/* True if a primitive can be split without copying of vertices, false
+ * otherwise.
+ */
+GLboolean split_prim_inplace(GLenum mode, GLuint *first, GLuint *incr)
+{
+ switch (mode) {
+ case GL_POINTS:
+ *first = 1;
+ *incr = 1;
+ return GL_TRUE;
+ case GL_LINES:
+ *first = 2;
+ *incr = 2;
+ return GL_TRUE;
+ case GL_LINE_STRIP:
+ *first = 2;
+ *incr = 1;
+ return GL_TRUE;
+ case GL_TRIANGLES:
+ *first = 3;
+ *incr = 3;
+ return GL_TRUE;
+ case GL_TRIANGLE_STRIP:
+ *first = 3;
+ *incr = 1;
+ return GL_TRUE;
+ case GL_QUADS:
+ *first = 4;
+ *incr = 4;
+ return GL_TRUE;
+ case GL_QUAD_STRIP:
+ *first = 4;
+ *incr = 2;
+ return GL_TRUE;
+ default:
+ *first = 0;
+ *incr = 1; /* so that count % incr works */
+ return GL_FALSE;
+ }
+}
+
+
+
+void vbo_split_prims( struct gl_context *ctx,
+ const struct gl_client_array *arrays[],
+ const struct _mesa_prim *prim,
+ GLuint nr_prims,
+ const struct _mesa_index_buffer *ib,
+ GLuint min_index,
+ GLuint max_index,
+ vbo_draw_func draw,
+ const struct split_limits *limits )
+{
+ GLint max_basevertex = prim->basevertex;
+ GLuint i;
+
+ for (i = 1; i < nr_prims; i++)
+ max_basevertex = MAX2(max_basevertex, prim[i].basevertex);
+
+ /* XXX max_basevertex is computed but not used, why? */
+
+ if (ib) {
+ if (limits->max_indices == 0) {
+ /* Could traverse the indices, re-emitting vertices in turn.
+ * But it's hard to see why this case would be needed - for
+ * software tnl, it is better to convert to non-indexed
+ * rendering after transformation is complete. Are there any devices
+ * with hardware tnl that cannot do indexed rendering?
+ *
+ * For now, this path is disabled.
+ */
+ assert(0);
+ }
+ else if (max_index - min_index >= limits->max_verts) {
+ /* The vertex buffers are too large for hardware (or the
+ * swtnl module). Traverse the indices, re-emitting vertices
+ * in turn. Use a vertex cache to preserve some of the
+ * sharing from the original index list.
+ */
+ vbo_split_copy(ctx, arrays, prim, nr_prims, ib,
+ draw, limits );
+ }
+ else if (ib->count > limits->max_indices) {
+ /* The index buffer is too large for hardware. Try to split
+ * on whole-primitive boundaries, otherwise try to split the
+ * individual primitives.
+ */
+ vbo_split_inplace(ctx, arrays, prim, nr_prims, ib,
+ min_index, max_index, draw, limits );
+ }
+ else {
+ /* Why were we called? */
+ assert(0);
+ }
+ }
+ else {
+ if (max_index - min_index >= limits->max_verts) {
+ /* The vertex buffer is too large for hardware (or the swtnl
+ * module). Try to split on whole-primitive boundaries,
+ * otherwise try to split the individual primitives.
+ */
+ vbo_split_inplace(ctx, arrays, prim, nr_prims, ib,
+ min_index, max_index, draw, limits );
+ }
+ else {
+ /* Why were we called? */
+ assert(0);
+ }
+ }
+}
+
diff --git a/mesalib/src/mesa/vbo/vbo_split_copy.c b/mesalib/src/mesa/vbo/vbo_split_copy.c
index 3a869d712..40906e389 100644
--- a/mesalib/src/mesa/vbo/vbo_split_copy.c
+++ b/mesalib/src/mesa/vbo/vbo_split_copy.c
@@ -1,627 +1,627 @@
-
-/*
- * Mesa 3-D graphics library
- * Version: 6.5
- *
- * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * Authors:
- * Keith Whitwell <keith@tungstengraphics.com>
- */
-
-/* Split indexed primitives with per-vertex copying.
- */
-
-#include "main/glheader.h"
-#include "main/bufferobj.h"
-#include "main/imports.h"
-#include "main/image.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-
-#include "vbo_split.h"
-#include "vbo.h"
-
-
-#define ELT_TABLE_SIZE 16
-
-/**
- * Used for vertex-level splitting of indexed buffers. Note that
- * non-indexed primitives may be converted to indexed in some cases
- * (eg loops, fans) in order to use this splitting path.
- */
-struct copy_context {
-
- struct gl_context *ctx;
- const struct gl_client_array **array;
- const struct _mesa_prim *prim;
- GLuint nr_prims;
- const struct _mesa_index_buffer *ib;
- vbo_draw_func draw;
-
- const struct split_limits *limits;
-
- struct {
- GLuint attr;
- GLuint size;
- const struct gl_client_array *array;
- const GLubyte *src_ptr;
-
- struct gl_client_array dstarray;
-
- } varying[VERT_ATTRIB_MAX];
- GLuint nr_varying;
-
- const struct gl_client_array *dstarray_ptr[VERT_ATTRIB_MAX];
- struct _mesa_index_buffer dstib;
-
- GLuint *translated_elt_buf;
- const GLuint *srcelt;
-
- /** A baby hash table to avoid re-emitting (some) duplicate
- * vertices when splitting indexed primitives.
- */
- struct {
- GLuint in;
- GLuint out;
- } vert_cache[ELT_TABLE_SIZE];
-
- GLuint vertex_size;
- GLubyte *dstbuf;
- GLubyte *dstptr; /**< dstptr == dstbuf + dstelt_max * vertsize */
- GLuint dstbuf_size; /**< in vertices */
- GLuint dstbuf_nr; /**< count of emitted vertices, also the largest value
- * in dstelt. Our MaxIndex.
- */
-
- GLuint *dstelt;
- GLuint dstelt_nr;
- GLuint dstelt_size;
-
-#define MAX_PRIM 32
- struct _mesa_prim dstprim[MAX_PRIM];
- GLuint dstprim_nr;
-
-};
-
-
-static GLuint attr_size( const struct gl_client_array *array )
-{
- return array->Size * _mesa_sizeof_type(array->Type);
-}
-
-
-/**
- * Starts returning true slightly before the buffer fills, to ensure
- * that there is sufficient room for any remaining vertices to finish
- * off the prim:
- */
-static GLboolean
-check_flush( struct copy_context *copy )
-{
- GLenum mode = copy->dstprim[copy->dstprim_nr].mode;
-
- if (GL_TRIANGLE_STRIP == mode &&
- copy->dstelt_nr & 1) { /* see bug9962 */
- return GL_FALSE;
- }
-
- if (copy->dstbuf_nr + 4 > copy->dstbuf_size)
- return GL_TRUE;
-
- if (copy->dstelt_nr + 4 > copy->dstelt_size)
- return GL_TRUE;
-
- return GL_FALSE;
-}
-
-
-/**
- * Dump the parameters/info for a vbo->draw() call.
- */
-static void
-dump_draw_info(struct gl_context *ctx,
- const struct gl_client_array **arrays,
- const struct _mesa_prim *prims,
- GLuint nr_prims,
- const struct _mesa_index_buffer *ib,
- GLuint min_index,
- GLuint max_index)
-{
- GLuint i, j;
-
- printf("VBO Draw:\n");
- for (i = 0; i < nr_prims; i++) {
- printf("Prim %u of %u\n", i, nr_prims);
- printf(" Prim mode 0x%x\n", prims[i].mode);
- printf(" IB: %p\n", (void*) ib);
- for (j = 0; j < VERT_ATTRIB_MAX; j++) {
- printf(" array %d at %p:\n", j, (void*) arrays[j]);
- printf(" enabled %d, ptr %p, size %d, type 0x%x, stride %d\n",
- arrays[j]->Enabled, arrays[j]->Ptr,
- arrays[j]->Size, arrays[j]->Type, arrays[j]->StrideB);
- if (0) {
- GLint k = prims[i].start + prims[i].count - 1;
- GLfloat *last = (GLfloat *) (arrays[j]->Ptr + arrays[j]->Stride * k);
- printf(" last: %f %f %f\n",
- last[0], last[1], last[2]);
- }
- }
- }
-}
-
-
-static void
-flush( struct copy_context *copy )
-{
- GLuint i;
-
- /* Set some counters:
- */
- copy->dstib.count = copy->dstelt_nr;
-
-#if 0
- dump_draw_info(copy->ctx,
- copy->dstarray_ptr,
- copy->dstprim,
- copy->dstprim_nr,
- &copy->dstib,
- 0,
- copy->dstbuf_nr);
-#else
- (void) dump_draw_info;
-#endif
-
- copy->draw( copy->ctx,
- copy->dstarray_ptr,
- copy->dstprim,
- copy->dstprim_nr,
- &copy->dstib,
- GL_TRUE,
- 0,
- copy->dstbuf_nr - 1 );
-
- /* Reset all pointers:
- */
- copy->dstprim_nr = 0;
- copy->dstelt_nr = 0;
- copy->dstbuf_nr = 0;
- copy->dstptr = copy->dstbuf;
-
- /* Clear the vertex cache:
- */
- for (i = 0; i < ELT_TABLE_SIZE; i++)
- copy->vert_cache[i].in = ~0;
-}
-
-
-/**
- * Called at begin of each primitive during replay.
- */
-static void
-begin( struct copy_context *copy, GLenum mode, GLboolean begin_flag )
-{
- struct _mesa_prim *prim = &copy->dstprim[copy->dstprim_nr];
-
- prim->mode = mode;
- prim->begin = begin_flag;
- prim->num_instances = 1;
-}
-
-
-/**
- * Use a hashtable to attempt to identify recently-emitted vertices
- * and avoid re-emitting them.
- */
-static GLuint
-elt(struct copy_context *copy, GLuint elt_idx)
-{
- GLuint elt = copy->srcelt[elt_idx];
- GLuint slot = elt & (ELT_TABLE_SIZE-1);
-
-/* printf("elt %d\n", elt); */
-
- /* Look up the incoming element in the vertex cache. Re-emit if
- * necessary.
- */
- if (copy->vert_cache[slot].in != elt) {
- GLubyte *csr = copy->dstptr;
- GLuint i;
-
-/* printf(" --> emit to dstelt %d\n", copy->dstbuf_nr); */
-
- for (i = 0; i < copy->nr_varying; i++) {
- const struct gl_client_array *srcarray = copy->varying[i].array;
- const GLubyte *srcptr = copy->varying[i].src_ptr + elt * srcarray->StrideB;
-
- memcpy(csr, srcptr, copy->varying[i].size);
- csr += copy->varying[i].size;
-
-#ifdef NAN_CHECK
- if (srcarray->Type == GL_FLOAT) {
- GLuint k;
- GLfloat *f = (GLfloat *) srcptr;
- for (k = 0; k < srcarray->Size; k++) {
- assert(!IS_INF_OR_NAN(f[k]));
- assert(f[k] <= 1.0e20 && f[k] >= -1.0e20);
- }
- }
-#endif
-
- if (0)
- {
- const GLuint *f = (const GLuint *)srcptr;
- GLuint j;
- printf(" varying %d: ", i);
- for(j = 0; j < copy->varying[i].size / 4; j++)
- printf("%x ", f[j]);
- printf("\n");
- }
- }
-
- copy->vert_cache[slot].in = elt;
- copy->vert_cache[slot].out = copy->dstbuf_nr++;
- copy->dstptr += copy->vertex_size;
-
- assert(csr == copy->dstptr);
- assert(copy->dstptr == (copy->dstbuf +
- copy->dstbuf_nr * copy->vertex_size));
- }
-/* else */
-/* printf(" --> reuse vertex\n"); */
-
-/* printf(" --> emit %d\n", copy->vert_cache[slot].out); */
- copy->dstelt[copy->dstelt_nr++] = copy->vert_cache[slot].out;
- return check_flush(copy);
-}
-
-
-/**
- * Called at end of each primitive during replay.
- */
-static void
-end( struct copy_context *copy, GLboolean end_flag )
-{
- struct _mesa_prim *prim = &copy->dstprim[copy->dstprim_nr];
-
-/* printf("end (%d)\n", end_flag); */
-
- prim->end = end_flag;
- prim->count = copy->dstelt_nr - prim->start;
-
- if (++copy->dstprim_nr == MAX_PRIM ||
- check_flush(copy))
- flush(copy);
-}
-
-
-static void
-replay_elts( struct copy_context *copy )
-{
- GLuint i, j, k;
- GLboolean split;
-
- for (i = 0; i < copy->nr_prims; i++) {
- const struct _mesa_prim *prim = &copy->prim[i];
- const GLuint start = prim->start;
- GLuint first, incr;
-
- switch (prim->mode) {
-
- case GL_LINE_LOOP:
- /* Convert to linestrip and emit the final vertex explicitly,
- * but only in the resultant strip that requires it.
- */
- j = 0;
- while (j != prim->count) {
- begin(copy, GL_LINE_STRIP, prim->begin && j == 0);
-
- for (split = GL_FALSE; j != prim->count && !split; j++)
- split = elt(copy, start + j);
-
- if (j == prim->count) {
- /* Done, emit final line. Split doesn't matter as
- * it is always raised a bit early so we can emit
- * the last verts if necessary!
- */
- if (prim->end)
- (void)elt(copy, start + 0);
-
- end(copy, prim->end);
- }
- else {
- /* Wrap
- */
- assert(split);
- end(copy, 0);
- j--;
- }
- }
- break;
-
- case GL_TRIANGLE_FAN:
- case GL_POLYGON:
- j = 2;
- while (j != prim->count) {
- begin(copy, prim->mode, prim->begin && j == 0);
-
- split = elt(copy, start+0);
- assert(!split);
-
- split = elt(copy, start+j-1);
- assert(!split);
-
- for (; j != prim->count && !split; j++)
- split = elt(copy, start+j);
-
- end(copy, prim->end && j == prim->count);
-
- if (j != prim->count) {
- /* Wrapped the primitive, need to repeat some vertices:
- */
- j -= 1;
- }
- }
- break;
-
- default:
- (void)split_prim_inplace(prim->mode, &first, &incr);
-
- j = 0;
- while (j != prim->count) {
-
- begin(copy, prim->mode, prim->begin && j == 0);
-
- split = 0;
- for (k = 0; k < first; k++, j++)
- split |= elt(copy, start+j);
-
- assert(!split);
-
- for (; j != prim->count && !split; )
- for (k = 0; k < incr; k++, j++)
- split |= elt(copy, start+j);
-
- end(copy, prim->end && j == prim->count);
-
- if (j != prim->count) {
- /* Wrapped the primitive, need to repeat some vertices:
- */
- assert(j > first - incr);
- j -= (first - incr);
- }
- }
- break;
- }
- }
-
- if (copy->dstprim_nr)
- flush(copy);
-}
-
-
-static void
-replay_init( struct copy_context *copy )
-{
- struct gl_context *ctx = copy->ctx;
- GLuint i;
- GLuint offset;
- const GLvoid *srcptr;
-
- /* Make a list of varying attributes and their vbo's. Also
- * calculate vertex size.
- */
- copy->vertex_size = 0;
- for (i = 0; i < VERT_ATTRIB_MAX; i++) {
- struct gl_buffer_object *vbo = copy->array[i]->BufferObj;
-
- if (copy->array[i]->StrideB == 0) {
- copy->dstarray_ptr[i] = copy->array[i];
- }
- else {
- GLuint j = copy->nr_varying++;
-
- copy->varying[j].attr = i;
- copy->varying[j].array = copy->array[i];
- copy->varying[j].size = attr_size(copy->array[i]);
- copy->vertex_size += attr_size(copy->array[i]);
-
- if (_mesa_is_bufferobj(vbo) && !_mesa_bufferobj_mapped(vbo))
- ctx->Driver.MapBuffer(ctx, GL_ARRAY_BUFFER, GL_READ_ONLY, vbo);
-
- copy->varying[j].src_ptr = ADD_POINTERS(vbo->Pointer,
- copy->array[i]->Ptr);
-
- copy->dstarray_ptr[i] = &copy->varying[j].dstarray;
- }
- }
-
- /* There must always be an index buffer. Currently require the
- * caller convert non-indexed prims to indexed. Could alternately
- * do it internally.
- */
- if (_mesa_is_bufferobj(copy->ib->obj) &&
- !_mesa_bufferobj_mapped(copy->ib->obj))
- ctx->Driver.MapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, GL_READ_ONLY,
- copy->ib->obj);
-
- srcptr = (const GLubyte *) ADD_POINTERS(copy->ib->obj->Pointer,
- copy->ib->ptr);
-
- switch (copy->ib->type) {
- case GL_UNSIGNED_BYTE:
- copy->translated_elt_buf = malloc(sizeof(GLuint) * copy->ib->count);
- copy->srcelt = copy->translated_elt_buf;
-
- for (i = 0; i < copy->ib->count; i++)
- copy->translated_elt_buf[i] = ((const GLubyte *)srcptr)[i];
- break;
-
- case GL_UNSIGNED_SHORT:
- copy->translated_elt_buf = malloc(sizeof(GLuint) * copy->ib->count);
- copy->srcelt = copy->translated_elt_buf;
-
- for (i = 0; i < copy->ib->count; i++)
- copy->translated_elt_buf[i] = ((const GLushort *)srcptr)[i];
- break;
-
- case GL_UNSIGNED_INT:
- copy->translated_elt_buf = NULL;
- copy->srcelt = (const GLuint *)srcptr;
- break;
- }
-
- /* Figure out the maximum allowed vertex buffer size:
- */
- if (copy->vertex_size * copy->limits->max_verts <= copy->limits->max_vb_size) {
- copy->dstbuf_size = copy->limits->max_verts;
- }
- else {
- copy->dstbuf_size = copy->limits->max_vb_size / copy->vertex_size;
- }
-
- /* Allocate an output vertex buffer:
- *
- * XXX: This should be a VBO!
- */
- copy->dstbuf = malloc(copy->dstbuf_size * copy->vertex_size);
- copy->dstptr = copy->dstbuf;
-
- /* Setup new vertex arrays to point into the output buffer:
- */
- for (offset = 0, i = 0; i < copy->nr_varying; i++) {
- const struct gl_client_array *src = copy->varying[i].array;
- struct gl_client_array *dst = &copy->varying[i].dstarray;
-
- dst->Size = src->Size;
- dst->Type = src->Type;
- dst->Format = GL_RGBA;
- dst->Stride = copy->vertex_size;
- dst->StrideB = copy->vertex_size;
- dst->Ptr = copy->dstbuf + offset;
- dst->Enabled = GL_TRUE;
- dst->Normalized = src->Normalized;
- dst->BufferObj = ctx->Shared->NullBufferObj;
- dst->_ElementSize = src->_ElementSize;
- dst->_MaxElement = copy->dstbuf_size; /* may be less! */
-
- offset += copy->varying[i].size;
- }
-
- /* Allocate an output element list:
- */
- copy->dstelt_size = MIN2(65536,
- copy->ib->count * 2 + 3);
- copy->dstelt_size = MIN2(copy->dstelt_size,
- copy->limits->max_indices);
- copy->dstelt = malloc(sizeof(GLuint) * copy->dstelt_size);
- copy->dstelt_nr = 0;
-
- /* Setup the new index buffer to point to the allocated element
- * list:
- */
- copy->dstib.count = 0; /* duplicates dstelt_nr */
- copy->dstib.type = GL_UNSIGNED_INT;
- copy->dstib.obj = ctx->Shared->NullBufferObj;
- copy->dstib.ptr = copy->dstelt;
-}
-
-
-/**
- * Free up everything allocated during split/replay.
- */
-static void
-replay_finish( struct copy_context *copy )
-{
- struct gl_context *ctx = copy->ctx;
- GLuint i;
-
- /* Free our vertex and index buffers:
- */
- free(copy->translated_elt_buf);
- free(copy->dstbuf);
- free(copy->dstelt);
-
- /* Unmap VBO's
- */
- for (i = 0; i < copy->nr_varying; i++) {
- struct gl_buffer_object *vbo = copy->varying[i].array->BufferObj;
- if (_mesa_is_bufferobj(vbo) && _mesa_bufferobj_mapped(vbo))
- ctx->Driver.UnmapBuffer(ctx, GL_ARRAY_BUFFER, vbo);
- }
-
- /* Unmap index buffer:
- */
- if (_mesa_is_bufferobj(copy->ib->obj) &&
- _mesa_bufferobj_mapped(copy->ib->obj)) {
- ctx->Driver.UnmapBuffer(ctx, GL_ELEMENT_ARRAY_BUFFER, copy->ib->obj);
- }
-}
-
-
-/**
- * Split VBO into smaller pieces, draw the pieces.
- */
-void vbo_split_copy( struct gl_context *ctx,
- const struct gl_client_array *arrays[],
- const struct _mesa_prim *prim,
- GLuint nr_prims,
- const struct _mesa_index_buffer *ib,
- vbo_draw_func draw,
- const struct split_limits *limits )
-{
- struct copy_context copy;
- GLuint i, this_nr_prims;
-
- for (i = 0; i < nr_prims;) {
- /* Our SW TNL pipeline doesn't handle basevertex yet, so bind_indices
- * will rebase the elements to the basevertex, and we'll only
- * emit strings of prims with the same basevertex in one draw call.
- */
- for (this_nr_prims = 1; i + this_nr_prims < nr_prims;
- this_nr_prims++) {
- if (prim[i].basevertex != prim[i + this_nr_prims].basevertex)
- break;
- }
-
- memset(&copy, 0, sizeof(copy));
-
- /* Require indexed primitives:
- */
- assert(ib);
-
- copy.ctx = ctx;
- copy.array = arrays;
- copy.prim = &prim[i];
- copy.nr_prims = this_nr_prims;
- copy.ib = ib;
- copy.draw = draw;
- copy.limits = limits;
-
- /* Clear the vertex cache:
- */
- for (i = 0; i < ELT_TABLE_SIZE; i++)
- copy.vert_cache[i].in = ~0;
-
- replay_init(&copy);
- replay_elts(&copy);
- replay_finish(&copy);
- }
-}
+
+/*
+ * Mesa 3-D graphics library
+ * Version: 6.5
+ *
+ * Copyright (C) 1999-2006 Brian Paul All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Authors:
+ * Keith Whitwell <keith@tungstengraphics.com>
+ */
+
+/* Split indexed primitives with per-vertex copying.
+ */
+
+#include "main/glheader.h"
+#include "main/bufferobj.h"
+#include "main/imports.h"
+#include "main/image.h"
+#include "main/macros.h"
+#include "main/mtypes.h"
+
+#include "vbo_split.h"
+#include "vbo.h"
+
+
+#define ELT_TABLE_SIZE 16
+
+/**
+ * Used for vertex-level splitting of indexed buffers. Note that
+ * non-indexed primitives may be converted to indexed in some cases
+ * (eg loops, fans) in order to use this splitting path.
+ */
+struct copy_context {
+
+ struct gl_context *ctx;
+ const struct gl_client_array **array;
+ const struct _mesa_prim *prim;
+ GLuint nr_prims;
+ const struct _mesa_index_buffer *ib;
+ vbo_draw_func draw;
+
+ const struct split_limits *limits;
+
+ struct {
+ GLuint attr;
+ GLuint size;
+ const struct gl_client_array *array;
+ const GLubyte *src_ptr;
+
+ struct gl_client_array dstarray;
+
+ } varying[VERT_ATTRIB_MAX];
+ GLuint nr_varying;
+
+ const struct gl_client_array *dstarray_ptr[VERT_ATTRIB_MAX];
+ struct _mesa_index_buffer dstib;
+
+ GLuint *translated_elt_buf;
+ const GLuint *srcelt;
+
+ /** A baby hash table to avoid re-emitting (some) duplicate
+ * vertices when splitting indexed primitives.
+ */
+ struct {
+ GLuint in;
+ GLuint out;
+ } vert_cache[ELT_TABLE_SIZE];
+
+ GLuint vertex_size;
+ GLubyte *dstbuf;
+ GLubyte *dstptr; /**< dstptr == dstbuf + dstelt_max * vertsize */
+ GLuint dstbuf_size; /**< in vertices */
+ GLuint dstbuf_nr; /**< count of emitted vertices, also the largest value
+ * in dstelt. Our MaxIndex.
+ */
+
+ GLuint *dstelt;
+ GLuint dstelt_nr;
+ GLuint dstelt_size;
+
+#define MAX_PRIM 32
+ struct _mesa_prim dstprim[MAX_PRIM];
+ GLuint dstprim_nr;
+
+};
+
+
+static GLuint attr_size( const struct gl_client_array *array )
+{
+ return array->Size * _mesa_sizeof_type(array->Type);
+}
+
+
+/**
+ * Starts returning true slightly before the buffer fills, to ensure
+ * that there is sufficient room for any remaining vertices to finish
+ * off the prim:
+ */
+static GLboolean
+check_flush( struct copy_context *copy )
+{
+ GLenum mode = copy->dstprim[copy->dstprim_nr].mode;
+
+ if (GL_TRIANGLE_STRIP == mode &&
+ copy->dstelt_nr & 1) { /* see bug9962 */
+ return GL_FALSE;
+ }
+
+ if (copy->dstbuf_nr + 4 > copy->dstbuf_size)
+ return GL_TRUE;
+
+ if (copy->dstelt_nr + 4 > copy->dstelt_size)
+ return GL_TRUE;
+
+ return GL_FALSE;
+}
+
+
+/**
+ * Dump the parameters/info for a vbo->draw() call.
+ */
+static void
+dump_draw_info(struct gl_context *ctx,
+ const struct gl_client_array **arrays,
+ const struct _mesa_prim *prims,
+ GLuint nr_prims,
+ const struct _mesa_index_buffer *ib,
+ GLuint min_index,
+ GLuint max_index)
+{
+ GLuint i, j;
+
+ printf("VBO Draw:\n");
+ for (i = 0; i < nr_prims; i++) {
+ printf("Prim %u of %u\n", i, nr_prims);
+ printf(" Prim mode 0x%x\n", prims[i].mode);
+ printf(" IB: %p\n", (void*) ib);
+ for (j = 0; j < VERT_ATTRIB_MAX; j++) {
+ printf(" array %d at %p:\n", j, (void*) arrays[j]);
+ printf(" enabled %d, ptr %p, size %d, type 0x%x, stride %d\n",
+ arrays[j]->Enabled, arrays[j]->Ptr,
+ arrays[j]->Size, arrays[j]->Type, arrays[j]->StrideB);
+ if (0) {
+ GLint k = prims[i].start + prims[i].count - 1;
+ GLfloat *last = (GLfloat *) (arrays[j]->Ptr + arrays[j]->Stride * k);
+ printf(" last: %f %f %f\n",
+ last[0], last[1], last[2]);
+ }
+ }
+ }
+}
+
+
+static void
+flush( struct copy_context *copy )
+{
+ GLuint i;
+
+ /* Set some counters:
+ */
+ copy->dstib.count = copy->dstelt_nr;
+
+#if 0
+ dump_draw_info(copy->ctx,
+ copy->dstarray_ptr,
+ copy->dstprim,
+ copy->dstprim_nr,
+ &copy->dstib,
+ 0,
+ copy->dstbuf_nr);
+#else
+ (void) dump_draw_info;
+#endif
+
+ copy->draw( copy->ctx,
+ copy->dstarray_ptr,
+ copy->dstprim,
+ copy->dstprim_nr,
+ &copy->dstib,
+ GL_TRUE,
+ 0,
+ copy->dstbuf_nr - 1 );
+
+ /* Reset all pointers:
+ */
+ copy->dstprim_nr = 0;
+ copy->dstelt_nr = 0;
+ copy->dstbuf_nr = 0;
+ copy->dstptr = copy->dstbuf;
+
+ /* Clear the vertex cache:
+ */
+ for (i = 0; i < ELT_TABLE_SIZE; i++)
+ copy->vert_cache[i].in = ~0;
+}
+
+
+/**
+ * Called at begin of each primitive during replay.
+ */
+static void
+begin( struct copy_context *copy, GLenum mode, GLboolean begin_flag )
+{
+ struct _mesa_prim *prim = &copy->dstprim[copy->dstprim_nr];
+
+ prim->mode = mode;
+ prim->begin = begin_flag;
+ prim->num_instances = 1;
+}
+
+
+/**
+ * Use a hashtable to attempt to identify recently-emitted vertices
+ * and avoid re-emitting them.
+ */
+static GLuint
+elt(struct copy_context *copy, GLuint elt_idx)
+{
+ GLuint elt = copy->srcelt[elt_idx];
+ GLuint slot = elt & (ELT_TABLE_SIZE-1);
+
+/* printf("elt %d\n", elt); */
+
+ /* Look up the incoming element in the vertex cache. Re-emit if
+ * necessary.
+ */
+ if (copy->vert_cache[slot].in != elt) {
+ GLubyte *csr = copy->dstptr;
+ GLuint i;
+
+/* printf(" --> emit to dstelt %d\n", copy->dstbuf_nr); */
+
+ for (i = 0; i < copy->nr_varying; i++) {
+ const struct gl_client_array *srcarray = copy->varying[i].array;
+ const GLubyte *srcptr = copy->varying[i].src_ptr + elt * srcarray->StrideB;
+
+ memcpy(csr, srcptr, copy->varying[i].size);
+ csr += copy->varying[i].size;
+
+#ifdef NAN_CHECK
+ if (srcarray->Type == GL_FLOAT) {
+ GLuint k;
+ GLfloat *f = (GLfloat *) srcptr;
+ for (k = 0; k < srcarray->Size; k++) {
+ assert(!IS_INF_OR_NAN(f[k]));
+ assert(f[k] <= 1.0e20 && f[k] >= -1.0e20);
+ }
+ }
+#endif
+
+ if (0)
+ {
+ const GLuint *f = (const GLuint *)srcptr;
+ GLuint j;
+ printf(" varying %d: ", i);
+ for(j = 0; j < copy->varying[i].size / 4; j++)
+ printf("%x ", f[j]);
+ printf("\n");
+ }
+ }
+
+ copy->vert_cache[slot].in = elt;
+ copy->vert_cache[slot].out = copy->dstbuf_nr++;
+ copy->dstptr += copy->vertex_size;
+
+ assert(csr == copy->dstptr);
+ assert(copy->dstptr == (copy->dstbuf +
+ copy->dstbuf_nr * copy->vertex_size));
+ }
+/* else */
+/* printf(" --> reuse vertex\n"); */
+
+/* printf(" --> emit %d\n", copy->vert_cache[slot].out); */
+ copy->dstelt[copy->dstelt_nr++] = copy->vert_cache[slot].out;
+ return check_flush(copy);
+}
+
+
+/**
+ * Called at end of each primitive during replay.
+ */
+static void
+end( struct copy_context *copy, GLboolean end_flag )
+{
+ struct _mesa_prim *prim = &copy->dstprim[copy->dstprim_nr];
+
+/* printf("end (%d)\n", end_flag); */
+
+ prim->end = end_flag;
+ prim->count = copy->dstelt_nr - prim->start;
+
+ if (++copy->dstprim_nr == MAX_PRIM ||
+ check_flush(copy))
+ flush(copy);
+}
+
+
+static void
+replay_elts( struct copy_context *copy )
+{
+ GLuint i, j, k;
+ GLboolean split;
+
+ for (i = 0; i < copy->nr_prims; i++) {
+ const struct _mesa_prim *prim = &copy->prim[i];
+ const GLuint start = prim->start;
+ GLuint first, incr;
+
+ switch (prim->mode) {
+
+ case GL_LINE_LOOP:
+ /* Convert to linestrip and emit the final vertex explicitly,
+ * but only in the resultant strip that requires it.
+ */
+ j = 0;
+ while (j != prim->count) {
+ begin(copy, GL_LINE_STRIP, prim->begin && j == 0);
+
+ for (split = GL_FALSE; j != prim->count && !split; j++)
+ split = elt(copy, start + j);
+
+ if (j == prim->count) {
+ /* Done, emit final line. Split doesn't matter as
+ * it is always raised a bit early so we can emit
+ * the last verts if necessary!
+ */
+ if (prim->end)
+ (void)elt(copy, start + 0);
+
+ end(copy, prim->end);
+ }
+ else {
+ /* Wrap
+ */
+ assert(split);
+ end(copy, 0);
+ j--;
+ }
+ }
+ break;
+
+ case GL_TRIANGLE_FAN:
+ case GL_POLYGON:
+ j = 2;
+ while (j != prim->count) {
+ begin(copy, prim->mode, prim->begin && j == 0);
+
+ split = elt(copy, start+0);
+ assert(!split);
+
+ split = elt(copy, start+j-1);
+ assert(!split);
+
+ for (; j != prim->count && !split; j++)
+ split = elt(copy, start+j);
+
+ end(copy, prim->end && j == prim->count);
+
+ if (j != prim->count) {
+ /* Wrapped the primitive, need to repeat some vertices:
+ */
+ j -= 1;
+ }
+ }
+ break;
+
+ default:
+ (void)split_prim_inplace(prim->mode, &first, &incr);
+
+ j = 0;
+ while (j != prim->count) {
+
+ begin(copy, prim->mode, prim->begin && j == 0);
+
+ split = 0;
+ for (k = 0; k < first; k++, j++)
+ split |= elt(copy, start+j);
+
+ assert(!split);
+
+ for (; j != prim->count && !split; )
+ for (k = 0; k < incr; k++, j++)
+ split |= elt(copy, start+j);
+
+ end(copy, prim->end && j == prim->count);
+
+ if (j != prim->count) {
+ /* Wrapped the primitive, need to repeat some vertices:
+ */
+ assert(j > first - incr);
+ j -= (first - incr);
+ }
+ }
+ break;
+ }
+ }
+
+ if (copy->dstprim_nr)
+ flush(copy);
+}
+
+
+static void
+replay_init( struct copy_context *copy )
+{
+ struct gl_context *ctx = copy->ctx;
+ GLuint i;
+ GLuint offset;
+ const GLvoid *srcptr;
+
+ /* Make a list of varying attributes and their vbo's. Also
+ * calculate vertex size.
+ */
+ copy->vertex_size = 0;
+ for (i = 0; i < VERT_ATTRIB_MAX; i++) {
+ struct gl_buffer_object *vbo = copy->array[i]->BufferObj;
+
+ if (copy->array[i]->StrideB == 0) {
+ copy->dstarray_ptr[i] = copy->array[i];
+ }
+ else {
+ GLuint j = copy->nr_varying++;
+
+ copy->varying[j].attr = i;
+ copy->varying[j].array = copy->array[i];
+ copy->varying[j].size = attr_size(copy->array[i]);
+ copy->vertex_size += attr_size(copy->array[i]);
+
+ if (_mesa_is_bufferobj(vbo) && !_mesa_bufferobj_mapped(vbo))
+ ctx->Driver.MapBufferRange(ctx, 0, vbo->Size, GL_MAP_READ_BIT, vbo);
+
+ copy->varying[j].src_ptr = ADD_POINTERS(vbo->Pointer,
+ copy->array[i]->Ptr);
+
+ copy->dstarray_ptr[i] = &copy->varying[j].dstarray;
+ }
+ }
+
+ /* There must always be an index buffer. Currently require the
+ * caller convert non-indexed prims to indexed. Could alternately
+ * do it internally.
+ */
+ if (_mesa_is_bufferobj(copy->ib->obj) &&
+ !_mesa_bufferobj_mapped(copy->ib->obj))
+ ctx->Driver.MapBufferRange(ctx, 0, copy->ib->obj->Size, GL_MAP_READ_BIT,
+ copy->ib->obj);
+
+ srcptr = (const GLubyte *) ADD_POINTERS(copy->ib->obj->Pointer,
+ copy->ib->ptr);
+
+ switch (copy->ib->type) {
+ case GL_UNSIGNED_BYTE:
+ copy->translated_elt_buf = malloc(sizeof(GLuint) * copy->ib->count);
+ copy->srcelt = copy->translated_elt_buf;
+
+ for (i = 0; i < copy->ib->count; i++)
+ copy->translated_elt_buf[i] = ((const GLubyte *)srcptr)[i];
+ break;
+
+ case GL_UNSIGNED_SHORT:
+ copy->translated_elt_buf = malloc(sizeof(GLuint) * copy->ib->count);
+ copy->srcelt = copy->translated_elt_buf;
+
+ for (i = 0; i < copy->ib->count; i++)
+ copy->translated_elt_buf[i] = ((const GLushort *)srcptr)[i];
+ break;
+
+ case GL_UNSIGNED_INT:
+ copy->translated_elt_buf = NULL;
+ copy->srcelt = (const GLuint *)srcptr;
+ break;
+ }
+
+ /* Figure out the maximum allowed vertex buffer size:
+ */
+ if (copy->vertex_size * copy->limits->max_verts <= copy->limits->max_vb_size) {
+ copy->dstbuf_size = copy->limits->max_verts;
+ }
+ else {
+ copy->dstbuf_size = copy->limits->max_vb_size / copy->vertex_size;
+ }
+
+ /* Allocate an output vertex buffer:
+ *
+ * XXX: This should be a VBO!
+ */
+ copy->dstbuf = malloc(copy->dstbuf_size * copy->vertex_size);
+ copy->dstptr = copy->dstbuf;
+
+ /* Setup new vertex arrays to point into the output buffer:
+ */
+ for (offset = 0, i = 0; i < copy->nr_varying; i++) {
+ const struct gl_client_array *src = copy->varying[i].array;
+ struct gl_client_array *dst = &copy->varying[i].dstarray;
+
+ dst->Size = src->Size;
+ dst->Type = src->Type;
+ dst->Format = GL_RGBA;
+ dst->Stride = copy->vertex_size;
+ dst->StrideB = copy->vertex_size;
+ dst->Ptr = copy->dstbuf + offset;
+ dst->Enabled = GL_TRUE;
+ dst->Normalized = src->Normalized;
+ dst->BufferObj = ctx->Shared->NullBufferObj;
+ dst->_ElementSize = src->_ElementSize;
+ dst->_MaxElement = copy->dstbuf_size; /* may be less! */
+
+ offset += copy->varying[i].size;
+ }
+
+ /* Allocate an output element list:
+ */
+ copy->dstelt_size = MIN2(65536,
+ copy->ib->count * 2 + 3);
+ copy->dstelt_size = MIN2(copy->dstelt_size,
+ copy->limits->max_indices);
+ copy->dstelt = malloc(sizeof(GLuint) * copy->dstelt_size);
+ copy->dstelt_nr = 0;
+
+ /* Setup the new index buffer to point to the allocated element
+ * list:
+ */
+ copy->dstib.count = 0; /* duplicates dstelt_nr */
+ copy->dstib.type = GL_UNSIGNED_INT;
+ copy->dstib.obj = ctx->Shared->NullBufferObj;
+ copy->dstib.ptr = copy->dstelt;
+}
+
+
+/**
+ * Free up everything allocated during split/replay.
+ */
+static void
+replay_finish( struct copy_context *copy )
+{
+ struct gl_context *ctx = copy->ctx;
+ GLuint i;
+
+ /* Free our vertex and index buffers:
+ */
+ free(copy->translated_elt_buf);
+ free(copy->dstbuf);
+ free(copy->dstelt);
+
+ /* Unmap VBO's
+ */
+ for (i = 0; i < copy->nr_varying; i++) {
+ struct gl_buffer_object *vbo = copy->varying[i].array->BufferObj;
+ if (_mesa_is_bufferobj(vbo) && _mesa_bufferobj_mapped(vbo))
+ ctx->Driver.UnmapBuffer(ctx, vbo);
+ }
+
+ /* Unmap index buffer:
+ */
+ if (_mesa_is_bufferobj(copy->ib->obj) &&
+ _mesa_bufferobj_mapped(copy->ib->obj)) {
+ ctx->Driver.UnmapBuffer(ctx, copy->ib->obj);
+ }
+}
+
+
+/**
+ * Split VBO into smaller pieces, draw the pieces.
+ */
+void vbo_split_copy( struct gl_context *ctx,
+ const struct gl_client_array *arrays[],
+ const struct _mesa_prim *prim,
+ GLuint nr_prims,
+ const struct _mesa_index_buffer *ib,
+ vbo_draw_func draw,
+ const struct split_limits *limits )
+{
+ struct copy_context copy;
+ GLuint i, this_nr_prims;
+
+ for (i = 0; i < nr_prims;) {
+ /* Our SW TNL pipeline doesn't handle basevertex yet, so bind_indices
+ * will rebase the elements to the basevertex, and we'll only
+ * emit strings of prims with the same basevertex in one draw call.
+ */
+ for (this_nr_prims = 1; i + this_nr_prims < nr_prims;
+ this_nr_prims++) {
+ if (prim[i].basevertex != prim[i + this_nr_prims].basevertex)
+ break;
+ }
+
+ memset(&copy, 0, sizeof(copy));
+
+ /* Require indexed primitives:
+ */
+ assert(ib);
+
+ copy.ctx = ctx;
+ copy.array = arrays;
+ copy.prim = &prim[i];
+ copy.nr_prims = this_nr_prims;
+ copy.ib = ib;
+ copy.draw = draw;
+ copy.limits = limits;
+
+ /* Clear the vertex cache:
+ */
+ for (i = 0; i < ELT_TABLE_SIZE; i++)
+ copy.vert_cache[i].in = ~0;
+
+ replay_init(&copy);
+ replay_elts(&copy);
+ replay_finish(&copy);
+ }
+}
diff --git a/pixman/pixman/Makefile.am b/pixman/pixman/Makefile.am
index acc273145..44e6b17e4 100644
--- a/pixman/pixman/Makefile.am
+++ b/pixman/pixman/Makefile.am
@@ -1,129 +1,129 @@
-lib_LTLIBRARIES = libpixman-1.la
-libpixman_1_la_LDFLAGS = -version-info $(LT_VERSION_INFO) -no-undefined @PTHREAD_LDFLAGS@
-libpixman_1_la_LIBADD = @PTHREAD_LIBS@ @DEP_LIBS@ -lm
-libpixman_1_la_SOURCES = \
- pixman.h \
- pixman-accessor.h \
- pixman-access.c \
- pixman-access-accessors.c \
- pixman-cpu.c \
- pixman-gradient-walker.c \
- pixman-region16.c \
- pixman-region32.c \
- pixman-compiler.h \
- pixman-private.h \
- pixman-image.c \
- pixman-implementation.c \
- pixman-combine32.c \
- pixman-combine32.h \
- pixman-combine64.c \
- pixman-combine64.h \
- pixman-general.c \
- pixman.c \
- pixman-noop.c \
- pixman-fast-path.c \
- pixman-fast-path.h \
- pixman-solid-fill.c \
- pixman-conical-gradient.c \
- pixman-linear-gradient.c \
- pixman-radial-gradient.c \
- pixman-bits-image.c \
- pixman-utils.c \
- pixman-edge.c \
- pixman-edge-accessors.c \
- pixman-edge-imp.h \
- pixman-trap.c \
- pixman-timer.c \
- pixman-matrix.c
-
-libpixmanincludedir = $(includedir)/pixman-1
-libpixmaninclude_HEADERS = pixman.h pixman-version.h
-noinst_LTLIBRARIES =
-
-BUILT_SOURCES = pixman-combine32.h pixman-combine32.c pixman-combine64.h pixman-combine64.c
-
-pixman-combine32.c : pixman-combine.c.template pixman-combine32.h make-combine.pl
- $(PERL) $(srcdir)/make-combine.pl 8 < $(srcdir)/pixman-combine.c.template > $@ || ($(RM) $@; exit 1)
-pixman-combine32.h : pixman-combine.h.template make-combine.pl
- $(PERL) $(srcdir)/make-combine.pl 8 < $(srcdir)/pixman-combine.h.template > $@ || ($(RM) $@; exit 1)
-
-pixman-combine64.c : pixman-combine.c.template pixman-combine64.h make-combine.pl
- $(PERL) $(srcdir)/make-combine.pl 16 < $(srcdir)/pixman-combine.c.template > $@ || ($(RM) $@; exit 1)
-pixman-combine64.h : pixman-combine.h.template make-combine.pl
- $(PERL) $(srcdir)/make-combine.pl 16 < $(srcdir)/pixman-combine.h.template > $@ || ($(RM) $@; exit 1)
-
-EXTRA_DIST = Makefile.win32 pixman-combine.c.template make-combine.pl pixman-region.c \
- pixman-combine.h.template solaris-hwcap.mapfile
-CLEANFILES = pixman-combine32.c pixman-combine64.c pixman-combine32.h pixman-combine64.h
-
-# mmx code
-if USE_MMX
-noinst_LTLIBRARIES += libpixman-mmx.la
-libpixman_mmx_la_SOURCES = \
- pixman-mmx.c
-libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS)
-libpixman_mmx_la_LIBADD = $(DEP_LIBS)
-libpixman_1_la_LDFLAGS += $(MMX_LDFLAGS)
-libpixman_1_la_LIBADD += libpixman-mmx.la
-
-ASM_CFLAGS_mmx=$(MMX_CFLAGS)
-endif
-
-# vmx code
-if USE_VMX
-noinst_LTLIBRARIES += libpixman-vmx.la
-libpixman_vmx_la_SOURCES = \
- pixman-vmx.c \
- pixman-combine32.h
-libpixman_vmx_la_CFLAGS = $(DEP_CFLAGS) $(VMX_CFLAGS)
-libpixman_vmx_la_LIBADD = $(DEP_LIBS)
-libpixman_1_la_LIBADD += libpixman-vmx.la
-
-ASM_CFLAGS_vmx=$(VMX_CFLAGS)
-endif
-
-# sse2 code
-if USE_SSE2
-noinst_LTLIBRARIES += libpixman-sse2.la
-libpixman_sse2_la_SOURCES = \
- pixman-sse2.c
-libpixman_sse2_la_CFLAGS = $(DEP_CFLAGS) $(SSE2_CFLAGS)
-libpixman_sse2_la_LIBADD = $(DEP_LIBS)
-libpixman_1_la_LDFLAGS += $(SSE2_LDFLAGS)
-libpixman_1_la_LIBADD += libpixman-sse2.la
-
-ASM_CFLAGS_sse2=$(SSE2_CFLAGS)
-endif
-
-# arm simd code
-if USE_ARM_SIMD
-noinst_LTLIBRARIES += libpixman-arm-simd.la
-libpixman_arm_simd_la_SOURCES = \
- pixman-arm-simd.c \
- pixman-arm-common.h \
- pixman-arm-simd-asm.S
-libpixman_arm_simd_la_CFLAGS = $(DEP_CFLAGS)
-libpixman_arm_simd_la_LIBADD = $(DEP_LIBS)
-libpixman_1_la_LIBADD += libpixman-arm-simd.la
-
-ASM_CFLAGS_arm_simd=
-endif
-
-# arm neon code
-if USE_ARM_NEON
-noinst_LTLIBRARIES += libpixman-arm-neon.la
-libpixman_arm_neon_la_SOURCES = \
- pixman-arm-neon.c \
- pixman-arm-common.h \
- pixman-arm-neon-asm.S \
- pixman-arm-neon-asm-bilinear.S \
- pixman-arm-neon-asm.h
-libpixman_arm_neon_la_CFLAGS = $(DEP_CFLAGS)
-libpixman_arm_neon_la_LIBADD = $(DEP_LIBS)
-libpixman_1_la_LIBADD += libpixman-arm-neon.la
-
-ASM_CFLAGS_arm_neon=
-endif
-
-.c.s : $(libpixmaninclude_HEADERS) $(BUILT_SOURCES)
- $(CC) $(CFLAGS) $(ASM_CFLAGS_$(@:pixman-%.s=%)) $(ASM_CFLAGS_$(@:pixman-arm-%.s=arm_%)) -DHAVE_CONFIG_H -I$(srcdir) -I$(builddir) -I$(top_builddir) -S -o $@ $<
+lib_LTLIBRARIES = libpixman-1.la
+libpixman_1_la_LDFLAGS = -version-info $(LT_VERSION_INFO) -no-undefined @PTHREAD_LDFLAGS@
+libpixman_1_la_LIBADD = @PTHREAD_LIBS@ @DEP_LIBS@ -lm
+libpixman_1_la_SOURCES = \
+ pixman.h \
+ pixman-accessor.h \
+ pixman-access.c \
+ pixman-access-accessors.c \
+ pixman-cpu.c \
+ pixman-gradient-walker.c \
+ pixman-region16.c \
+ pixman-region32.c \
+ pixman-compiler.h \
+ pixman-private.h \
+ pixman-image.c \
+ pixman-implementation.c \
+ pixman-combine32.c \
+ pixman-combine32.h \
+ pixman-combine64.c \
+ pixman-combine64.h \
+ pixman-general.c \
+ pixman.c \
+ pixman-noop.c \
+ pixman-fast-path.c \
+ pixman-solid-fill.c \
+ pixman-conical-gradient.c \
+ pixman-linear-gradient.c \
+ pixman-radial-gradient.c \
+ pixman-bits-image.c \
+ pixman-utils.c \
+ pixman-edge.c \
+ pixman-edge-accessors.c \
+ pixman-edge-imp.h \
+ pixman-inlines.h \
+ pixman-trap.c \
+ pixman-timer.c \
+ pixman-matrix.c
+
+libpixmanincludedir = $(includedir)/pixman-1
+libpixmaninclude_HEADERS = pixman.h pixman-version.h
+noinst_LTLIBRARIES =
+
+BUILT_SOURCES = pixman-combine32.h pixman-combine32.c pixman-combine64.h pixman-combine64.c
+
+pixman-combine32.c : pixman-combine.c.template pixman-combine32.h make-combine.pl
+ $(PERL) $(srcdir)/make-combine.pl 8 < $(srcdir)/pixman-combine.c.template > $@ || ($(RM) $@; exit 1)
+pixman-combine32.h : pixman-combine.h.template make-combine.pl
+ $(PERL) $(srcdir)/make-combine.pl 8 < $(srcdir)/pixman-combine.h.template > $@ || ($(RM) $@; exit 1)
+
+pixman-combine64.c : pixman-combine.c.template pixman-combine64.h make-combine.pl
+ $(PERL) $(srcdir)/make-combine.pl 16 < $(srcdir)/pixman-combine.c.template > $@ || ($(RM) $@; exit 1)
+pixman-combine64.h : pixman-combine.h.template make-combine.pl
+ $(PERL) $(srcdir)/make-combine.pl 16 < $(srcdir)/pixman-combine.h.template > $@ || ($(RM) $@; exit 1)
+
+EXTRA_DIST = Makefile.win32 pixman-combine.c.template make-combine.pl pixman-region.c \
+ pixman-combine.h.template solaris-hwcap.mapfile
+CLEANFILES = pixman-combine32.c pixman-combine64.c pixman-combine32.h pixman-combine64.h
+
+# mmx code
+if USE_MMX
+noinst_LTLIBRARIES += libpixman-mmx.la
+libpixman_mmx_la_SOURCES = \
+ pixman-mmx.c
+libpixman_mmx_la_CFLAGS = $(DEP_CFLAGS) $(MMX_CFLAGS)
+libpixman_mmx_la_LIBADD = $(DEP_LIBS)
+libpixman_1_la_LDFLAGS += $(MMX_LDFLAGS)
+libpixman_1_la_LIBADD += libpixman-mmx.la
+
+ASM_CFLAGS_mmx=$(MMX_CFLAGS)
+endif
+
+# vmx code
+if USE_VMX
+noinst_LTLIBRARIES += libpixman-vmx.la
+libpixman_vmx_la_SOURCES = \
+ pixman-vmx.c \
+ pixman-combine32.h
+libpixman_vmx_la_CFLAGS = $(DEP_CFLAGS) $(VMX_CFLAGS)
+libpixman_vmx_la_LIBADD = $(DEP_LIBS)
+libpixman_1_la_LIBADD += libpixman-vmx.la
+
+ASM_CFLAGS_vmx=$(VMX_CFLAGS)
+endif
+
+# sse2 code
+if USE_SSE2
+noinst_LTLIBRARIES += libpixman-sse2.la
+libpixman_sse2_la_SOURCES = \
+ pixman-sse2.c
+libpixman_sse2_la_CFLAGS = $(DEP_CFLAGS) $(SSE2_CFLAGS)
+libpixman_sse2_la_LIBADD = $(DEP_LIBS)
+libpixman_1_la_LDFLAGS += $(SSE2_LDFLAGS)
+libpixman_1_la_LIBADD += libpixman-sse2.la
+
+ASM_CFLAGS_sse2=$(SSE2_CFLAGS)
+endif
+
+# arm simd code
+if USE_ARM_SIMD
+noinst_LTLIBRARIES += libpixman-arm-simd.la
+libpixman_arm_simd_la_SOURCES = \
+ pixman-arm-simd.c \
+ pixman-arm-common.h \
+ pixman-arm-simd-asm.S
+libpixman_arm_simd_la_CFLAGS = $(DEP_CFLAGS)
+libpixman_arm_simd_la_LIBADD = $(DEP_LIBS)
+libpixman_1_la_LIBADD += libpixman-arm-simd.la
+
+ASM_CFLAGS_arm_simd=
+endif
+
+# arm neon code
+if USE_ARM_NEON
+noinst_LTLIBRARIES += libpixman-arm-neon.la
+libpixman_arm_neon_la_SOURCES = \
+ pixman-arm-neon.c \
+ pixman-arm-common.h \
+ pixman-arm-neon-asm.S \
+ pixman-arm-neon-asm-bilinear.S \
+ pixman-arm-neon-asm.h
+libpixman_arm_neon_la_CFLAGS = $(DEP_CFLAGS)
+libpixman_arm_neon_la_LIBADD = $(DEP_LIBS)
+libpixman_1_la_LIBADD += libpixman-arm-neon.la
+
+ASM_CFLAGS_arm_neon=
+endif
+
+.c.s : $(libpixmaninclude_HEADERS) $(BUILT_SOURCES)
+ $(CC) $(CFLAGS) $(ASM_CFLAGS_$(@:pixman-%.s=%)) $(ASM_CFLAGS_$(@:pixman-arm-%.s=arm_%)) -DHAVE_CONFIG_H -I$(srcdir) -I$(builddir) -I$(top_builddir) -S -o $@ $<
diff --git a/pixman/pixman/pixman-arm-common.h b/pixman/pixman/pixman-arm-common.h
index de1fd4872..c15af540a 100644
--- a/pixman/pixman/pixman-arm-common.h
+++ b/pixman/pixman/pixman-arm-common.h
@@ -26,7 +26,7 @@
#ifndef PIXMAN_ARM_COMMON_H
#define PIXMAN_ARM_COMMON_H
-#include "pixman-fast-path.h"
+#include "pixman-inlines.h"
/* Define some macros which can expand into proxy functions between
* ARM assembly optimized functions and the rest of pixman fast path API.
diff --git a/pixman/pixman/pixman-arm-simd.c b/pixman/pixman/pixman-arm-simd.c
index 45981a6b0..3d19bfac1 100644
--- a/pixman/pixman/pixman-arm-simd.c
+++ b/pixman/pixman/pixman-arm-simd.c
@@ -1,432 +1,432 @@
-/*
- * Copyright © 2008 Mozilla Corporation
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Mozilla Corporation not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Mozilla Corporation makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- *
- * Author: Jeff Muizelaar (jeff@infidigm.net)
- *
- */
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include "pixman-private.h"
-#include "pixman-arm-common.h"
-#include "pixman-fast-path.h"
-
-#if 0 /* This code was moved to 'pixman-arm-simd-asm.S' */
-
-void
-pixman_composite_add_8_8_asm_armv6 (int32_t width,
- int32_t height,
- uint8_t *dst_line,
- int32_t dst_stride,
- uint8_t *src_line,
- int32_t src_stride)
-{
- uint8_t *dst, *src;
- int32_t w;
- uint8_t s, d;
-
- while (height--)
- {
- dst = dst_line;
- dst_line += dst_stride;
- src = src_line;
- src_line += src_stride;
- w = width;
-
- /* ensure both src and dst are properly aligned before doing 32 bit reads
- * we'll stay in this loop if src and dst have differing alignments
- */
- while (w && (((unsigned long)dst & 3) || ((unsigned long)src & 3)))
- {
- s = *src;
- d = *dst;
- asm ("uqadd8 %0, %1, %2" : "+r" (d) : "r" (s));
- *dst = d;
-
- dst++;
- src++;
- w--;
- }
-
- while (w >= 4)
- {
- asm ("uqadd8 %0, %1, %2"
- : "=r" (*(uint32_t*)dst)
- : "r" (*(uint32_t*)src), "r" (*(uint32_t*)dst));
- dst += 4;
- src += 4;
- w -= 4;
- }
-
- while (w)
- {
- s = *src;
- d = *dst;
- asm ("uqadd8 %0, %1, %2" : "+r" (d) : "r" (s));
- *dst = d;
-
- dst++;
- src++;
- w--;
- }
- }
-
-}
-
-void
-pixman_composite_over_8888_8888_asm_armv6 (int32_t width,
- int32_t height,
- uint32_t *dst_line,
- int32_t dst_stride,
- uint32_t *src_line,
- int32_t src_stride)
-{
- uint32_t *dst;
- uint32_t *src;
- int32_t w;
- uint32_t component_half = 0x800080;
- uint32_t upper_component_mask = 0xff00ff00;
- uint32_t alpha_mask = 0xff;
-
- while (height--)
- {
- dst = dst_line;
- dst_line += dst_stride;
- src = src_line;
- src_line += src_stride;
- w = width;
-
-/* #define inner_branch */
- asm volatile (
- "cmp %[w], #0\n\t"
- "beq 2f\n\t"
- "1:\n\t"
- /* load src */
- "ldr r5, [%[src]], #4\n\t"
-#ifdef inner_branch
- /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
- * The 0x0 case also allows us to avoid doing an unecessary data
- * write which is more valuable so we only check for that
- */
- "cmp r5, #0\n\t"
- "beq 3f\n\t"
-
- /* = 255 - alpha */
- "sub r8, %[alpha_mask], r5, lsr #24\n\t"
-
- "ldr r4, [%[dest]] \n\t"
-
-#else
- "ldr r4, [%[dest]] \n\t"
-
- /* = 255 - alpha */
- "sub r8, %[alpha_mask], r5, lsr #24\n\t"
-#endif
- "uxtb16 r6, r4\n\t"
- "uxtb16 r7, r4, ror #8\n\t"
-
- /* multiply by 257 and divide by 65536 */
- "mla r6, r6, r8, %[component_half]\n\t"
- "mla r7, r7, r8, %[component_half]\n\t"
-
- "uxtab16 r6, r6, r6, ror #8\n\t"
- "uxtab16 r7, r7, r7, ror #8\n\t"
-
- /* recombine the 0xff00ff00 bytes of r6 and r7 */
- "and r7, r7, %[upper_component_mask]\n\t"
- "uxtab16 r6, r7, r6, ror #8\n\t"
-
- "uqadd8 r5, r6, r5\n\t"
-
-#ifdef inner_branch
- "3:\n\t"
-
-#endif
- "str r5, [%[dest]], #4\n\t"
- /* increment counter and jmp to top */
- "subs %[w], %[w], #1\n\t"
- "bne 1b\n\t"
- "2:\n\t"
- : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
- : [component_half] "r" (component_half), [upper_component_mask] "r" (upper_component_mask),
- [alpha_mask] "r" (alpha_mask)
- : "r4", "r5", "r6", "r7", "r8", "cc", "memory"
- );
- }
-}
-
-void
-pixman_composite_over_8888_n_8888_asm_armv6 (int32_t width,
- int32_t height,
- uint32_t *dst_line,
- int32_t dst_stride,
- uint32_t *src_line,
- int32_t src_stride,
- uint32_t mask)
-{
- uint32_t *dst;
- uint32_t *src;
- int32_t w;
- uint32_t component_half = 0x800080;
- uint32_t alpha_mask = 0xff;
-
- mask = (mask) >> 24;
-
- while (height--)
- {
- dst = dst_line;
- dst_line += dst_stride;
- src = src_line;
- src_line += src_stride;
- w = width;
-
-/* #define inner_branch */
- asm volatile (
- "cmp %[w], #0\n\t"
- "beq 2f\n\t"
- "1:\n\t"
- /* load src */
- "ldr r5, [%[src]], #4\n\t"
-#ifdef inner_branch
- /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
- * The 0x0 case also allows us to avoid doing an unecessary data
- * write which is more valuable so we only check for that
- */
- "cmp r5, #0\n\t"
- "beq 3f\n\t"
-
-#endif
- "ldr r4, [%[dest]] \n\t"
-
- "uxtb16 r6, r5\n\t"
- "uxtb16 r7, r5, ror #8\n\t"
-
- /* multiply by alpha (r8) then by 257 and divide by 65536 */
- "mla r6, r6, %[mask_alpha], %[component_half]\n\t"
- "mla r7, r7, %[mask_alpha], %[component_half]\n\t"
-
- "uxtab16 r6, r6, r6, ror #8\n\t"
- "uxtab16 r7, r7, r7, ror #8\n\t"
-
- "uxtb16 r6, r6, ror #8\n\t"
- "uxtb16 r7, r7, ror #8\n\t"
-
- /* recombine */
- "orr r5, r6, r7, lsl #8\n\t"
-
- "uxtb16 r6, r4\n\t"
- "uxtb16 r7, r4, ror #8\n\t"
-
- /* 255 - alpha */
- "sub r8, %[alpha_mask], r5, lsr #24\n\t"
-
- /* multiply by alpha (r8) then by 257 and divide by 65536 */
- "mla r6, r6, r8, %[component_half]\n\t"
- "mla r7, r7, r8, %[component_half]\n\t"
-
- "uxtab16 r6, r6, r6, ror #8\n\t"
- "uxtab16 r7, r7, r7, ror #8\n\t"
-
- "uxtb16 r6, r6, ror #8\n\t"
- "uxtb16 r7, r7, ror #8\n\t"
-
- /* recombine */
- "orr r6, r6, r7, lsl #8\n\t"
-
- "uqadd8 r5, r6, r5\n\t"
-
-#ifdef inner_branch
- "3:\n\t"
-
-#endif
- "str r5, [%[dest]], #4\n\t"
- /* increment counter and jmp to top */
- "subs %[w], %[w], #1\n\t"
- "bne 1b\n\t"
- "2:\n\t"
- : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
- : [component_half] "r" (component_half), [mask_alpha] "r" (mask),
- [alpha_mask] "r" (alpha_mask)
- : "r4", "r5", "r6", "r7", "r8", "r9", "cc", "memory"
- );
- }
-}
-
-void
-pixman_composite_over_n_8_8888_asm_armv6 (int32_t width,
- int32_t height,
- uint32_t *dst_line,
- int32_t dst_stride,
- uint32_t src,
- int32_t unused,
- uint8_t *mask_line,
- int32_t mask_stride)
-{
- uint32_t srca;
- uint32_t *dst;
- uint8_t *mask;
- int32_t w;
-
- srca = src >> 24;
-
- uint32_t component_mask = 0xff00ff;
- uint32_t component_half = 0x800080;
-
- uint32_t src_hi = (src >> 8) & component_mask;
- uint32_t src_lo = src & component_mask;
-
- while (height--)
- {
- dst = dst_line;
- dst_line += dst_stride;
- mask = mask_line;
- mask_line += mask_stride;
- w = width;
-
-/* #define inner_branch */
- asm volatile (
- "cmp %[w], #0\n\t"
- "beq 2f\n\t"
- "1:\n\t"
- /* load mask */
- "ldrb r5, [%[mask]], #1\n\t"
-#ifdef inner_branch
- /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
- * The 0x0 case also allows us to avoid doing an unecessary data
- * write which is more valuable so we only check for that
- */
- "cmp r5, #0\n\t"
- "beq 3f\n\t"
-
-#endif
- "ldr r4, [%[dest]] \n\t"
-
- /* multiply by alpha (r8) then by 257 and divide by 65536 */
- "mla r6, %[src_lo], r5, %[component_half]\n\t"
- "mla r7, %[src_hi], r5, %[component_half]\n\t"
-
- "uxtab16 r6, r6, r6, ror #8\n\t"
- "uxtab16 r7, r7, r7, ror #8\n\t"
-
- "uxtb16 r6, r6, ror #8\n\t"
- "uxtb16 r7, r7, ror #8\n\t"
-
- /* recombine */
- "orr r5, r6, r7, lsl #8\n\t"
-
- "uxtb16 r6, r4\n\t"
- "uxtb16 r7, r4, ror #8\n\t"
-
- /* we could simplify this to use 'sub' if we were
- * willing to give up a register for alpha_mask
- */
- "mvn r8, r5\n\t"
- "mov r8, r8, lsr #24\n\t"
-
- /* multiply by alpha (r8) then by 257 and divide by 65536 */
- "mla r6, r6, r8, %[component_half]\n\t"
- "mla r7, r7, r8, %[component_half]\n\t"
-
- "uxtab16 r6, r6, r6, ror #8\n\t"
- "uxtab16 r7, r7, r7, ror #8\n\t"
-
- "uxtb16 r6, r6, ror #8\n\t"
- "uxtb16 r7, r7, ror #8\n\t"
-
- /* recombine */
- "orr r6, r6, r7, lsl #8\n\t"
-
- "uqadd8 r5, r6, r5\n\t"
-
-#ifdef inner_branch
- "3:\n\t"
-
-#endif
- "str r5, [%[dest]], #4\n\t"
- /* increment counter and jmp to top */
- "subs %[w], %[w], #1\n\t"
- "bne 1b\n\t"
- "2:\n\t"
- : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src), [mask] "+r" (mask)
- : [component_half] "r" (component_half),
- [src_hi] "r" (src_hi), [src_lo] "r" (src_lo)
- : "r4", "r5", "r6", "r7", "r8", "cc", "memory");
- }
-}
-
-#endif
-
-PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, add_8_8,
- uint8_t, 1, uint8_t, 1)
-PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, over_8888_8888,
- uint32_t, 1, uint32_t, 1)
-
-PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (SKIP_ZERO_MASK, armv6, over_8888_n_8888,
- uint32_t, 1, uint32_t, 1)
-
-PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (SKIP_ZERO_SRC, armv6, over_n_8_8888,
- uint8_t, 1, uint32_t, 1)
-
-PIXMAN_ARM_BIND_SCALED_NEAREST_SRC_DST (armv6, 0565_0565, SRC,
- uint16_t, uint16_t)
-PIXMAN_ARM_BIND_SCALED_NEAREST_SRC_DST (armv6, 8888_8888, SRC,
- uint32_t, uint32_t)
-
-static const pixman_fast_path_t arm_simd_fast_paths[] =
-{
- PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, armv6_composite_over_8888_8888),
- PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, armv6_composite_over_8888_8888),
- PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, armv6_composite_over_8888_8888),
- PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, armv6_composite_over_8888_8888),
- PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, armv6_composite_over_8888_n_8888),
- PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, armv6_composite_over_8888_n_8888),
- PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, solid, a8b8g8r8, armv6_composite_over_8888_n_8888),
- PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, solid, x8b8g8r8, armv6_composite_over_8888_n_8888),
-
- PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, armv6_composite_add_8_8),
-
- PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8r8g8b8, armv6_composite_over_n_8_8888),
- PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, armv6_composite_over_n_8_8888),
- PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, armv6_composite_over_n_8_8888),
- PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, armv6_composite_over_n_8_8888),
-
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, r5g6b5, r5g6b5, armv6_0565_0565),
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, b5g6r5, b5g6r5, armv6_0565_0565),
-
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8r8g8b8, a8r8g8b8, armv6_8888_8888),
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8r8g8b8, x8r8g8b8, armv6_8888_8888),
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, x8r8g8b8, x8r8g8b8, armv6_8888_8888),
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8b8g8r8, a8b8g8r8, armv6_8888_8888),
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8b8g8r8, x8b8g8r8, armv6_8888_8888),
- PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, x8b8g8r8, x8b8g8r8, armv6_8888_8888),
-
- { PIXMAN_OP_NONE },
-};
-
-pixman_implementation_t *
-_pixman_implementation_create_arm_simd (pixman_implementation_t *fallback)
-{
- pixman_implementation_t *imp = _pixman_implementation_create (fallback, arm_simd_fast_paths);
-
- return imp;
-}
+/*
+ * Copyright © 2008 Mozilla Corporation
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Mozilla Corporation not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Mozilla Corporation makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ *
+ * Author: Jeff Muizelaar (jeff@infidigm.net)
+ *
+ */
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "pixman-private.h"
+#include "pixman-arm-common.h"
+#include "pixman-inlines.h"
+
+#if 0 /* This code was moved to 'pixman-arm-simd-asm.S' */
+
+void
+pixman_composite_add_8_8_asm_armv6 (int32_t width,
+ int32_t height,
+ uint8_t *dst_line,
+ int32_t dst_stride,
+ uint8_t *src_line,
+ int32_t src_stride)
+{
+ uint8_t *dst, *src;
+ int32_t w;
+ uint8_t s, d;
+
+ while (height--)
+ {
+ dst = dst_line;
+ dst_line += dst_stride;
+ src = src_line;
+ src_line += src_stride;
+ w = width;
+
+ /* ensure both src and dst are properly aligned before doing 32 bit reads
+ * we'll stay in this loop if src and dst have differing alignments
+ */
+ while (w && (((unsigned long)dst & 3) || ((unsigned long)src & 3)))
+ {
+ s = *src;
+ d = *dst;
+ asm ("uqadd8 %0, %1, %2" : "+r" (d) : "r" (s));
+ *dst = d;
+
+ dst++;
+ src++;
+ w--;
+ }
+
+ while (w >= 4)
+ {
+ asm ("uqadd8 %0, %1, %2"
+ : "=r" (*(uint32_t*)dst)
+ : "r" (*(uint32_t*)src), "r" (*(uint32_t*)dst));
+ dst += 4;
+ src += 4;
+ w -= 4;
+ }
+
+ while (w)
+ {
+ s = *src;
+ d = *dst;
+ asm ("uqadd8 %0, %1, %2" : "+r" (d) : "r" (s));
+ *dst = d;
+
+ dst++;
+ src++;
+ w--;
+ }
+ }
+
+}
+
+void
+pixman_composite_over_8888_8888_asm_armv6 (int32_t width,
+ int32_t height,
+ uint32_t *dst_line,
+ int32_t dst_stride,
+ uint32_t *src_line,
+ int32_t src_stride)
+{
+ uint32_t *dst;
+ uint32_t *src;
+ int32_t w;
+ uint32_t component_half = 0x800080;
+ uint32_t upper_component_mask = 0xff00ff00;
+ uint32_t alpha_mask = 0xff;
+
+ while (height--)
+ {
+ dst = dst_line;
+ dst_line += dst_stride;
+ src = src_line;
+ src_line += src_stride;
+ w = width;
+
+/* #define inner_branch */
+ asm volatile (
+ "cmp %[w], #0\n\t"
+ "beq 2f\n\t"
+ "1:\n\t"
+ /* load src */
+ "ldr r5, [%[src]], #4\n\t"
+#ifdef inner_branch
+ /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
+ * The 0x0 case also allows us to avoid doing an unecessary data
+ * write which is more valuable so we only check for that
+ */
+ "cmp r5, #0\n\t"
+ "beq 3f\n\t"
+
+ /* = 255 - alpha */
+ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
+
+ "ldr r4, [%[dest]] \n\t"
+
+#else
+ "ldr r4, [%[dest]] \n\t"
+
+ /* = 255 - alpha */
+ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
+#endif
+ "uxtb16 r6, r4\n\t"
+ "uxtb16 r7, r4, ror #8\n\t"
+
+ /* multiply by 257 and divide by 65536 */
+ "mla r6, r6, r8, %[component_half]\n\t"
+ "mla r7, r7, r8, %[component_half]\n\t"
+
+ "uxtab16 r6, r6, r6, ror #8\n\t"
+ "uxtab16 r7, r7, r7, ror #8\n\t"
+
+ /* recombine the 0xff00ff00 bytes of r6 and r7 */
+ "and r7, r7, %[upper_component_mask]\n\t"
+ "uxtab16 r6, r7, r6, ror #8\n\t"
+
+ "uqadd8 r5, r6, r5\n\t"
+
+#ifdef inner_branch
+ "3:\n\t"
+
+#endif
+ "str r5, [%[dest]], #4\n\t"
+ /* increment counter and jmp to top */
+ "subs %[w], %[w], #1\n\t"
+ "bne 1b\n\t"
+ "2:\n\t"
+ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
+ : [component_half] "r" (component_half), [upper_component_mask] "r" (upper_component_mask),
+ [alpha_mask] "r" (alpha_mask)
+ : "r4", "r5", "r6", "r7", "r8", "cc", "memory"
+ );
+ }
+}
+
+void
+pixman_composite_over_8888_n_8888_asm_armv6 (int32_t width,
+ int32_t height,
+ uint32_t *dst_line,
+ int32_t dst_stride,
+ uint32_t *src_line,
+ int32_t src_stride,
+ uint32_t mask)
+{
+ uint32_t *dst;
+ uint32_t *src;
+ int32_t w;
+ uint32_t component_half = 0x800080;
+ uint32_t alpha_mask = 0xff;
+
+ mask = (mask) >> 24;
+
+ while (height--)
+ {
+ dst = dst_line;
+ dst_line += dst_stride;
+ src = src_line;
+ src_line += src_stride;
+ w = width;
+
+/* #define inner_branch */
+ asm volatile (
+ "cmp %[w], #0\n\t"
+ "beq 2f\n\t"
+ "1:\n\t"
+ /* load src */
+ "ldr r5, [%[src]], #4\n\t"
+#ifdef inner_branch
+ /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
+ * The 0x0 case also allows us to avoid doing an unecessary data
+ * write which is more valuable so we only check for that
+ */
+ "cmp r5, #0\n\t"
+ "beq 3f\n\t"
+
+#endif
+ "ldr r4, [%[dest]] \n\t"
+
+ "uxtb16 r6, r5\n\t"
+ "uxtb16 r7, r5, ror #8\n\t"
+
+ /* multiply by alpha (r8) then by 257 and divide by 65536 */
+ "mla r6, r6, %[mask_alpha], %[component_half]\n\t"
+ "mla r7, r7, %[mask_alpha], %[component_half]\n\t"
+
+ "uxtab16 r6, r6, r6, ror #8\n\t"
+ "uxtab16 r7, r7, r7, ror #8\n\t"
+
+ "uxtb16 r6, r6, ror #8\n\t"
+ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r5, r6, r7, lsl #8\n\t"
+
+ "uxtb16 r6, r4\n\t"
+ "uxtb16 r7, r4, ror #8\n\t"
+
+ /* 255 - alpha */
+ "sub r8, %[alpha_mask], r5, lsr #24\n\t"
+
+ /* multiply by alpha (r8) then by 257 and divide by 65536 */
+ "mla r6, r6, r8, %[component_half]\n\t"
+ "mla r7, r7, r8, %[component_half]\n\t"
+
+ "uxtab16 r6, r6, r6, ror #8\n\t"
+ "uxtab16 r7, r7, r7, ror #8\n\t"
+
+ "uxtb16 r6, r6, ror #8\n\t"
+ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r6, r6, r7, lsl #8\n\t"
+
+ "uqadd8 r5, r6, r5\n\t"
+
+#ifdef inner_branch
+ "3:\n\t"
+
+#endif
+ "str r5, [%[dest]], #4\n\t"
+ /* increment counter and jmp to top */
+ "subs %[w], %[w], #1\n\t"
+ "bne 1b\n\t"
+ "2:\n\t"
+ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src)
+ : [component_half] "r" (component_half), [mask_alpha] "r" (mask),
+ [alpha_mask] "r" (alpha_mask)
+ : "r4", "r5", "r6", "r7", "r8", "r9", "cc", "memory"
+ );
+ }
+}
+
+void
+pixman_composite_over_n_8_8888_asm_armv6 (int32_t width,
+ int32_t height,
+ uint32_t *dst_line,
+ int32_t dst_stride,
+ uint32_t src,
+ int32_t unused,
+ uint8_t *mask_line,
+ int32_t mask_stride)
+{
+ uint32_t srca;
+ uint32_t *dst;
+ uint8_t *mask;
+ int32_t w;
+
+ srca = src >> 24;
+
+ uint32_t component_mask = 0xff00ff;
+ uint32_t component_half = 0x800080;
+
+ uint32_t src_hi = (src >> 8) & component_mask;
+ uint32_t src_lo = src & component_mask;
+
+ while (height--)
+ {
+ dst = dst_line;
+ dst_line += dst_stride;
+ mask = mask_line;
+ mask_line += mask_stride;
+ w = width;
+
+/* #define inner_branch */
+ asm volatile (
+ "cmp %[w], #0\n\t"
+ "beq 2f\n\t"
+ "1:\n\t"
+ /* load mask */
+ "ldrb r5, [%[mask]], #1\n\t"
+#ifdef inner_branch
+ /* We can avoid doing the multiplication in two cases: 0x0 or 0xff.
+ * The 0x0 case also allows us to avoid doing an unecessary data
+ * write which is more valuable so we only check for that
+ */
+ "cmp r5, #0\n\t"
+ "beq 3f\n\t"
+
+#endif
+ "ldr r4, [%[dest]] \n\t"
+
+ /* multiply by alpha (r8) then by 257 and divide by 65536 */
+ "mla r6, %[src_lo], r5, %[component_half]\n\t"
+ "mla r7, %[src_hi], r5, %[component_half]\n\t"
+
+ "uxtab16 r6, r6, r6, ror #8\n\t"
+ "uxtab16 r7, r7, r7, ror #8\n\t"
+
+ "uxtb16 r6, r6, ror #8\n\t"
+ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r5, r6, r7, lsl #8\n\t"
+
+ "uxtb16 r6, r4\n\t"
+ "uxtb16 r7, r4, ror #8\n\t"
+
+ /* we could simplify this to use 'sub' if we were
+ * willing to give up a register for alpha_mask
+ */
+ "mvn r8, r5\n\t"
+ "mov r8, r8, lsr #24\n\t"
+
+ /* multiply by alpha (r8) then by 257 and divide by 65536 */
+ "mla r6, r6, r8, %[component_half]\n\t"
+ "mla r7, r7, r8, %[component_half]\n\t"
+
+ "uxtab16 r6, r6, r6, ror #8\n\t"
+ "uxtab16 r7, r7, r7, ror #8\n\t"
+
+ "uxtb16 r6, r6, ror #8\n\t"
+ "uxtb16 r7, r7, ror #8\n\t"
+
+ /* recombine */
+ "orr r6, r6, r7, lsl #8\n\t"
+
+ "uqadd8 r5, r6, r5\n\t"
+
+#ifdef inner_branch
+ "3:\n\t"
+
+#endif
+ "str r5, [%[dest]], #4\n\t"
+ /* increment counter and jmp to top */
+ "subs %[w], %[w], #1\n\t"
+ "bne 1b\n\t"
+ "2:\n\t"
+ : [w] "+r" (w), [dest] "+r" (dst), [src] "+r" (src), [mask] "+r" (mask)
+ : [component_half] "r" (component_half),
+ [src_hi] "r" (src_hi), [src_lo] "r" (src_lo)
+ : "r4", "r5", "r6", "r7", "r8", "cc", "memory");
+ }
+}
+
+#endif
+
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, add_8_8,
+ uint8_t, 1, uint8_t, 1)
+PIXMAN_ARM_BIND_FAST_PATH_SRC_DST (armv6, over_8888_8888,
+ uint32_t, 1, uint32_t, 1)
+
+PIXMAN_ARM_BIND_FAST_PATH_SRC_N_DST (SKIP_ZERO_MASK, armv6, over_8888_n_8888,
+ uint32_t, 1, uint32_t, 1)
+
+PIXMAN_ARM_BIND_FAST_PATH_N_MASK_DST (SKIP_ZERO_SRC, armv6, over_n_8_8888,
+ uint8_t, 1, uint32_t, 1)
+
+PIXMAN_ARM_BIND_SCALED_NEAREST_SRC_DST (armv6, 0565_0565, SRC,
+ uint16_t, uint16_t)
+PIXMAN_ARM_BIND_SCALED_NEAREST_SRC_DST (armv6, 8888_8888, SRC,
+ uint32_t, uint32_t)
+
+static const pixman_fast_path_t arm_simd_fast_paths[] =
+{
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, a8r8g8b8, armv6_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, null, x8r8g8b8, armv6_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, a8b8g8r8, armv6_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, null, x8b8g8r8, armv6_composite_over_8888_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, a8r8g8b8, armv6_composite_over_8888_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8r8g8b8, solid, x8r8g8b8, armv6_composite_over_8888_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, solid, a8b8g8r8, armv6_composite_over_8888_n_8888),
+ PIXMAN_STD_FAST_PATH (OVER, a8b8g8r8, solid, x8b8g8r8, armv6_composite_over_8888_n_8888),
+
+ PIXMAN_STD_FAST_PATH (ADD, a8, null, a8, armv6_composite_add_8_8),
+
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8r8g8b8, armv6_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8r8g8b8, armv6_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, a8b8g8r8, armv6_composite_over_n_8_8888),
+ PIXMAN_STD_FAST_PATH (OVER, solid, a8, x8b8g8r8, armv6_composite_over_n_8_8888),
+
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, r5g6b5, r5g6b5, armv6_0565_0565),
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, b5g6r5, b5g6r5, armv6_0565_0565),
+
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8r8g8b8, a8r8g8b8, armv6_8888_8888),
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8r8g8b8, x8r8g8b8, armv6_8888_8888),
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, x8r8g8b8, x8r8g8b8, armv6_8888_8888),
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8b8g8r8, a8b8g8r8, armv6_8888_8888),
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, a8b8g8r8, x8b8g8r8, armv6_8888_8888),
+ PIXMAN_ARM_SIMPLE_NEAREST_FAST_PATH (SRC, x8b8g8r8, x8b8g8r8, armv6_8888_8888),
+
+ { PIXMAN_OP_NONE },
+};
+
+pixman_implementation_t *
+_pixman_implementation_create_arm_simd (pixman_implementation_t *fallback)
+{
+ pixman_implementation_t *imp = _pixman_implementation_create (fallback, arm_simd_fast_paths);
+
+ return imp;
+}
diff --git a/pixman/pixman/pixman-bits-image.c b/pixman/pixman/pixman-bits-image.c
index 40ccaa8bd..f540c76e1 100644
--- a/pixman/pixman/pixman-bits-image.c
+++ b/pixman/pixman/pixman-bits-image.c
@@ -1,1581 +1,1463 @@
-/*
- * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
- * 2005 Lars Knoll & Zack Rusin, Trolltech
- * 2008 Aaron Plattner, NVIDIA Corporation
- * Copyright © 2000 SuSE, Inc.
- * Copyright © 2007, 2009 Red Hat, Inc.
- * Copyright © 2008 André Tupinambá <andrelrt@gmail.com>
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of Keith Packard not be used in
- * advertising or publicity pertaining to distribution of the software without
- * specific, written prior permission. Keith Packard makes no
- * representations about the suitability of this software for any purpose. It
- * is provided "as is" without express or implied warranty.
- *
- * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
- * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
- * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
- * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- * SOFTWARE.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include "pixman-private.h"
-#include "pixman-combine32.h"
-
-/*
- * By default, just evaluate the image at 32bpp and expand. Individual image
- * types can plug in a better scanline getter if they want to. For example
- * we could produce smoother gradients by evaluating them at higher color
- * depth, but that's a project for the future.
- */
-static void
-_pixman_image_get_scanline_generic_64 (pixman_image_t * image,
- int x,
- int y,
- int width,
- uint32_t * buffer,
- const uint32_t * mask)
-{
- uint32_t *mask8 = NULL;
-
- /* Contract the mask image, if one exists, so that the 32-bit fetch
- * function can use it.
- */
- if (mask)
- {
- mask8 = pixman_malloc_ab (width, sizeof(uint32_t));
- if (!mask8)
- return;
-
- pixman_contract (mask8, (uint64_t *)mask, width);
- }
-
- /* Fetch the source image into the first half of buffer. */
- image->bits.get_scanline_32 (image, x, y, width, (uint32_t*)buffer, mask8);
-
- /* Expand from 32bpp to 64bpp in place. */
- pixman_expand ((uint64_t *)buffer, buffer, PIXMAN_a8r8g8b8, width);
-
- free (mask8);
-}
-
-/* Fetch functions */
-
-static force_inline uint32_t
-fetch_pixel_no_alpha (bits_image_t *image,
- int x, int y, pixman_bool_t check_bounds)
-{
- if (check_bounds &&
- (x < 0 || x >= image->width || y < 0 || y >= image->height))
- {
- return 0;
- }
-
- return image->fetch_pixel_32 (image, x, y);
-}
-
-typedef uint32_t (* get_pixel_t) (bits_image_t *image,
- int x, int y, pixman_bool_t check_bounds);
-
-static force_inline void
-repeat (pixman_repeat_t repeat, int size, int *coord)
-{
- switch (repeat)
- {
- case PIXMAN_REPEAT_NORMAL:
- *coord = MOD (*coord, size);
- break;
-
- case PIXMAN_REPEAT_PAD:
- *coord = CLIP (*coord, 0, size - 1);
- break;
-
- case PIXMAN_REPEAT_REFLECT:
- *coord = MOD (*coord, size * 2);
-
- if (*coord >= size)
- *coord = size * 2 - *coord - 1;
- break;
-
- case PIXMAN_REPEAT_NONE:
- break;
-
- default:
- break;
- }
-}
-
-static force_inline uint32_t
-bits_image_fetch_pixel_nearest (bits_image_t *image,
- pixman_fixed_t x,
- pixman_fixed_t y,
- get_pixel_t get_pixel)
-{
- int x0 = pixman_fixed_to_int (x - pixman_fixed_e);
- int y0 = pixman_fixed_to_int (y - pixman_fixed_e);
-
- if (image->common.repeat != PIXMAN_REPEAT_NONE)
- {
- repeat (image->common.repeat, image->width, &x0);
- repeat (image->common.repeat, image->height, &y0);
-
- return get_pixel (image, x0, y0, FALSE);
- }
- else
- {
- return get_pixel (image, x0, y0, TRUE);
- }
-}
-
-#if SIZEOF_LONG > 4
-
-static force_inline uint32_t
-bilinear_interpolation (uint32_t tl, uint32_t tr,
- uint32_t bl, uint32_t br,
- int distx, int disty)
-{
- uint64_t distxy, distxiy, distixy, distixiy;
- uint64_t tl64, tr64, bl64, br64;
- uint64_t f, r;
-
- distxy = distx * disty;
- distxiy = distx * (256 - disty);
- distixy = (256 - distx) * disty;
- distixiy = (256 - distx) * (256 - disty);
-
- /* Alpha and Blue */
- tl64 = tl & 0xff0000ff;
- tr64 = tr & 0xff0000ff;
- bl64 = bl & 0xff0000ff;
- br64 = br & 0xff0000ff;
-
- f = tl64 * distixiy + tr64 * distxiy + bl64 * distixy + br64 * distxy;
- r = f & 0x0000ff0000ff0000ull;
-
- /* Red and Green */
- tl64 = tl;
- tl64 = ((tl64 << 16) & 0x000000ff00000000ull) | (tl64 & 0x0000ff00ull);
-
- tr64 = tr;
- tr64 = ((tr64 << 16) & 0x000000ff00000000ull) | (tr64 & 0x0000ff00ull);
-
- bl64 = bl;
- bl64 = ((bl64 << 16) & 0x000000ff00000000ull) | (bl64 & 0x0000ff00ull);
-
- br64 = br;
- br64 = ((br64 << 16) & 0x000000ff00000000ull) | (br64 & 0x0000ff00ull);
-
- f = tl64 * distixiy + tr64 * distxiy + bl64 * distixy + br64 * distxy;
- r |= ((f >> 16) & 0x000000ff00000000ull) | (f & 0xff000000ull);
-
- return (uint32_t)(r >> 16);
-}
-
-#else
-
-static force_inline uint32_t
-bilinear_interpolation (uint32_t tl, uint32_t tr,
- uint32_t bl, uint32_t br,
- int distx, int disty)
-{
- int distxy, distxiy, distixy, distixiy;
- uint32_t f, r;
-
- distxy = distx * disty;
- distxiy = (distx << 8) - distxy; /* distx * (256 - disty) */
- distixy = (disty << 8) - distxy; /* disty * (256 - distx) */
- distixiy =
- 256 * 256 - (disty << 8) -
- (distx << 8) + distxy; /* (256 - distx) * (256 - disty) */
-
- /* Blue */
- r = (tl & 0x000000ff) * distixiy + (tr & 0x000000ff) * distxiy
- + (bl & 0x000000ff) * distixy + (br & 0x000000ff) * distxy;
-
- /* Green */
- f = (tl & 0x0000ff00) * distixiy + (tr & 0x0000ff00) * distxiy
- + (bl & 0x0000ff00) * distixy + (br & 0x0000ff00) * distxy;
- r |= f & 0xff000000;
-
- tl >>= 16;
- tr >>= 16;
- bl >>= 16;
- br >>= 16;
- r >>= 16;
-
- /* Red */
- f = (tl & 0x000000ff) * distixiy + (tr & 0x000000ff) * distxiy
- + (bl & 0x000000ff) * distixy + (br & 0x000000ff) * distxy;
- r |= f & 0x00ff0000;
-
- /* Alpha */
- f = (tl & 0x0000ff00) * distixiy + (tr & 0x0000ff00) * distxiy
- + (bl & 0x0000ff00) * distixy + (br & 0x0000ff00) * distxy;
- r |= f & 0xff000000;
-
- return r;
-}
-
-#endif
-
-static force_inline uint32_t
-bits_image_fetch_pixel_bilinear (bits_image_t *image,
- pixman_fixed_t x,
- pixman_fixed_t y,
- get_pixel_t get_pixel)
-{
- pixman_repeat_t repeat_mode = image->common.repeat;
- int width = image->width;
- int height = image->height;
- int x1, y1, x2, y2;
- uint32_t tl, tr, bl, br;
- int32_t distx, disty;
-
- x1 = x - pixman_fixed_1 / 2;
- y1 = y - pixman_fixed_1 / 2;
-
- distx = (x1 >> 8) & 0xff;
- disty = (y1 >> 8) & 0xff;
-
- x1 = pixman_fixed_to_int (x1);
- y1 = pixman_fixed_to_int (y1);
- x2 = x1 + 1;
- y2 = y1 + 1;
-
- if (repeat_mode != PIXMAN_REPEAT_NONE)
- {
- repeat (repeat_mode, width, &x1);
- repeat (repeat_mode, height, &y1);
- repeat (repeat_mode, width, &x2);
- repeat (repeat_mode, height, &y2);
-
- tl = get_pixel (image, x1, y1, FALSE);
- bl = get_pixel (image, x1, y2, FALSE);
- tr = get_pixel (image, x2, y1, FALSE);
- br = get_pixel (image, x2, y2, FALSE);
- }
- else
- {
- tl = get_pixel (image, x1, y1, TRUE);
- tr = get_pixel (image, x2, y1, TRUE);
- bl = get_pixel (image, x1, y2, TRUE);
- br = get_pixel (image, x2, y2, TRUE);
- }
-
- return bilinear_interpolation (tl, tr, bl, br, distx, disty);
-}
-
-static void
-bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima,
- int offset,
- int line,
- int width,
- uint32_t * buffer,
- const uint32_t * mask)
-{
- bits_image_t *bits = &ima->bits;
- pixman_fixed_t x_top, x_bottom, x;
- pixman_fixed_t ux_top, ux_bottom, ux;
- pixman_vector_t v;
- uint32_t top_mask, bottom_mask;
- uint32_t *top_row;
- uint32_t *bottom_row;
- uint32_t *end;
- uint32_t zero[2] = { 0, 0 };
- uint32_t one = 1;
- int y, y1, y2;
- int disty;
- int mask_inc;
- int w;
-
- /* reference point is the center of the pixel */
- v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
- v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
- v.vector[2] = pixman_fixed_1;
-
- if (!pixman_transform_point_3d (bits->common.transform, &v))
- return;
-
- ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0];
- x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2;
-
- y = v.vector[1] - pixman_fixed_1/2;
- disty = (y >> 8) & 0xff;
-
- /* Load the pointers to the first and second lines from the source
- * image that bilinear code must read.
- *
- * The main trick in this code is about the check if any line are
- * outside of the image;
- *
- * When I realize that a line (any one) is outside, I change
- * the pointer to a dummy area with zeros. Once I change this, I
- * must be sure the pointer will not change, so I set the
- * variables to each pointer increments inside the loop.
- */
- y1 = pixman_fixed_to_int (y);
- y2 = y1 + 1;
-
- if (y1 < 0 || y1 >= bits->height)
- {
- top_row = zero;
- x_top = 0;
- ux_top = 0;
- }
- else
- {
- top_row = bits->bits + y1 * bits->rowstride;
- x_top = x;
- ux_top = ux;
- }
-
- if (y2 < 0 || y2 >= bits->height)
- {
- bottom_row = zero;
- x_bottom = 0;
- ux_bottom = 0;
- }
- else
- {
- bottom_row = bits->bits + y2 * bits->rowstride;
- x_bottom = x;
- ux_bottom = ux;
- }
-
- /* Instead of checking whether the operation uses the mast in
- * each loop iteration, verify this only once and prepare the
- * variables to make the code smaller inside the loop.
- */
- if (!mask)
- {
- mask_inc = 0;
- mask = &one;
- }
- else
- {
- /* If have a mask, prepare the variables to check it */
- mask_inc = 1;
- }
-
- /* If both are zero, then the whole thing is zero */
- if (top_row == zero && bottom_row == zero)
- {
- memset (buffer, 0, width * sizeof (uint32_t));
- return;
- }
- else if (bits->format == PIXMAN_x8r8g8b8)
- {
- if (top_row == zero)
- {
- top_mask = 0;
- bottom_mask = 0xff000000;
- }
- else if (bottom_row == zero)
- {
- top_mask = 0xff000000;
- bottom_mask = 0;
- }
- else
- {
- top_mask = 0xff000000;
- bottom_mask = 0xff000000;
- }
- }
- else
- {
- top_mask = 0;
- bottom_mask = 0;
- }
-
- end = buffer + width;
-
- /* Zero fill to the left of the image */
- while (buffer < end && x < pixman_fixed_minus_1)
- {
- *buffer++ = 0;
- x += ux;
- x_top += ux_top;
- x_bottom += ux_bottom;
- mask += mask_inc;
- }
-
- /* Left edge
- */
- while (buffer < end && x < 0)
- {
- uint32_t tr, br;
- int32_t distx;
-
- tr = top_row[pixman_fixed_to_int (x_top) + 1] | top_mask;
- br = bottom_row[pixman_fixed_to_int (x_bottom) + 1] | bottom_mask;
-
- distx = (x >> 8) & 0xff;
-
- *buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty);
-
- x += ux;
- x_top += ux_top;
- x_bottom += ux_bottom;
- mask += mask_inc;
- }
-
- /* Main part */
- w = pixman_int_to_fixed (bits->width - 1);
-
- while (buffer < end && x < w)
- {
- if (*mask)
- {
- uint32_t tl, tr, bl, br;
- int32_t distx;
-
- tl = top_row [pixman_fixed_to_int (x_top)] | top_mask;
- tr = top_row [pixman_fixed_to_int (x_top) + 1] | top_mask;
- bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask;
- br = bottom_row [pixman_fixed_to_int (x_bottom) + 1] | bottom_mask;
-
- distx = (x >> 8) & 0xff;
-
- *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty);
- }
-
- buffer++;
- x += ux;
- x_top += ux_top;
- x_bottom += ux_bottom;
- mask += mask_inc;
- }
-
- /* Right Edge */
- w = pixman_int_to_fixed (bits->width);
- while (buffer < end && x < w)
- {
- if (*mask)
- {
- uint32_t tl, bl;
- int32_t distx;
-
- tl = top_row [pixman_fixed_to_int (x_top)] | top_mask;
- bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask;
-
- distx = (x >> 8) & 0xff;
-
- *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty);
- }
-
- buffer++;
- x += ux;
- x_top += ux_top;
- x_bottom += ux_bottom;
- mask += mask_inc;
- }
-
- /* Zero fill to the left of the image */
- while (buffer < end)
- *buffer++ = 0;
-}
-
-static force_inline uint32_t
-bits_image_fetch_pixel_convolution (bits_image_t *image,
- pixman_fixed_t x,
- pixman_fixed_t y,
- get_pixel_t get_pixel)
-{
- pixman_fixed_t *params = image->common.filter_params;
- int x_off = (params[0] - pixman_fixed_1) >> 1;
- int y_off = (params[1] - pixman_fixed_1) >> 1;
- int32_t cwidth = pixman_fixed_to_int (params[0]);
- int32_t cheight = pixman_fixed_to_int (params[1]);
- int32_t srtot, sgtot, sbtot, satot;
- int32_t i, j, x1, x2, y1, y2;
- pixman_repeat_t repeat_mode = image->common.repeat;
- int width = image->width;
- int height = image->height;
-
- params += 2;
-
- x1 = pixman_fixed_to_int (x - pixman_fixed_e - x_off);
- y1 = pixman_fixed_to_int (y - pixman_fixed_e - y_off);
- x2 = x1 + cwidth;
- y2 = y1 + cheight;
-
- srtot = sgtot = sbtot = satot = 0;
-
- for (i = y1; i < y2; ++i)
- {
- for (j = x1; j < x2; ++j)
- {
- int rx = j;
- int ry = i;
-
- pixman_fixed_t f = *params;
-
- if (f)
- {
- uint32_t pixel;
-
- if (repeat_mode != PIXMAN_REPEAT_NONE)
- {
- repeat (repeat_mode, width, &rx);
- repeat (repeat_mode, height, &ry);
-
- pixel = get_pixel (image, rx, ry, FALSE);
- }
- else
- {
- pixel = get_pixel (image, rx, ry, TRUE);
- }
-
- srtot += RED_8 (pixel) * f;
- sgtot += GREEN_8 (pixel) * f;
- sbtot += BLUE_8 (pixel) * f;
- satot += ALPHA_8 (pixel) * f;
- }
-
- params++;
- }
- }
-
- satot >>= 16;
- srtot >>= 16;
- sgtot >>= 16;
- sbtot >>= 16;
-
- satot = CLIP (satot, 0, 0xff);
- srtot = CLIP (srtot, 0, 0xff);
- sgtot = CLIP (sgtot, 0, 0xff);
- sbtot = CLIP (sbtot, 0, 0xff);
-
- return ((satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot));
-}
-
-static force_inline uint32_t
-bits_image_fetch_pixel_filtered (bits_image_t *image,
- pixman_fixed_t x,
- pixman_fixed_t y,
- get_pixel_t get_pixel)
-{
- switch (image->common.filter)
- {
- case PIXMAN_FILTER_NEAREST:
- case PIXMAN_FILTER_FAST:
- return bits_image_fetch_pixel_nearest (image, x, y, get_pixel);
- break;
-
- case PIXMAN_FILTER_BILINEAR:
- case PIXMAN_FILTER_GOOD:
- case PIXMAN_FILTER_BEST:
- return bits_image_fetch_pixel_bilinear (image, x, y, get_pixel);
- break;
-
- case PIXMAN_FILTER_CONVOLUTION:
- return bits_image_fetch_pixel_convolution (image, x, y, get_pixel);
- break;
-
- default:
- break;
- }
-
- return 0;
-}
-
-static void
-bits_image_fetch_affine_no_alpha (pixman_image_t * image,
- int offset,
- int line,
- int width,
- uint32_t * buffer,
- const uint32_t * mask)
-{
- pixman_fixed_t x, y;
- pixman_fixed_t ux, uy;
- pixman_vector_t v;
- int i;
-
- /* reference point is the center of the pixel */
- v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
- v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
- v.vector[2] = pixman_fixed_1;
-
- if (image->common.transform)
- {
- if (!pixman_transform_point_3d (image->common.transform, &v))
- return;
-
- ux = image->common.transform->matrix[0][0];
- uy = image->common.transform->matrix[1][0];
- }
- else
- {
- ux = pixman_fixed_1;
- uy = 0;
- }
-
- x = v.vector[0];
- y = v.vector[1];
-
- for (i = 0; i < width; ++i)
- {
- if (!mask || mask[i])
- {
- buffer[i] = bits_image_fetch_pixel_filtered (
- &image->bits, x, y, fetch_pixel_no_alpha);
- }
-
- x += ux;
- y += uy;
- }
-}
-
-/* General fetcher */
-static force_inline uint32_t
-fetch_pixel_general (bits_image_t *image, int x, int y, pixman_bool_t check_bounds)
-{
- uint32_t pixel;
-
- if (check_bounds &&
- (x < 0 || x >= image->width || y < 0 || y >= image->height))
- {
- return 0;
- }
-
- pixel = image->fetch_pixel_32 (image, x, y);
-
- if (image->common.alpha_map)
- {
- uint32_t pixel_a;
-
- x -= image->common.alpha_origin_x;
- y -= image->common.alpha_origin_y;
-
- if (x < 0 || x >= image->common.alpha_map->width ||
- y < 0 || y >= image->common.alpha_map->height)
- {
- pixel_a = 0;
- }
- else
- {
- pixel_a = image->common.alpha_map->fetch_pixel_32 (
- image->common.alpha_map, x, y);
-
- pixel_a = ALPHA_8 (pixel_a);
- }
-
- pixel &= 0x00ffffff;
- pixel |= (pixel_a << 24);
- }
-
- return pixel;
-}
-
-static void
-bits_image_fetch_general (pixman_image_t * image,
- int offset,
- int line,
- int width,
- uint32_t * buffer,
- const uint32_t * mask)
-{
- pixman_fixed_t x, y, w;
- pixman_fixed_t ux, uy, uw;
- pixman_vector_t v;
- int i;
-
- /* reference point is the center of the pixel */
- v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
- v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
- v.vector[2] = pixman_fixed_1;
-
- if (image->common.transform)
- {
- if (!pixman_transform_point_3d (image->common.transform, &v))
- return;
-
- ux = image->common.transform->matrix[0][0];
- uy = image->common.transform->matrix[1][0];
- uw = image->common.transform->matrix[2][0];
- }
- else
- {
- ux = pixman_fixed_1;
- uy = 0;
- uw = 0;
- }
-
- x = v.vector[0];
- y = v.vector[1];
- w = v.vector[2];
-
- for (i = 0; i < width; ++i)
- {
- pixman_fixed_t x0, y0;
-
- if (!mask || mask[i])
- {
- if (w != 0)
- {
- x0 = ((pixman_fixed_48_16_t)x << 16) / w;
- y0 = ((pixman_fixed_48_16_t)y << 16) / w;
- }
- else
- {
- x0 = 0;
- y0 = 0;
- }
-
- buffer[i] = bits_image_fetch_pixel_filtered (
- &image->bits, x0, y0, fetch_pixel_general);
- }
-
- x += ux;
- y += uy;
- w += uw;
- }
-}
-
-static const uint8_t zero[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
-
-typedef uint32_t (* convert_pixel_t) (const uint8_t *row, int x);
-
-static force_inline void
-bits_image_fetch_bilinear_affine (pixman_image_t * image,
- int offset,
- int line,
- int width,
- uint32_t * buffer,
- const uint32_t * mask,
-
- convert_pixel_t convert_pixel,
- pixman_format_code_t format,
- pixman_repeat_t repeat_mode)
-{
- pixman_fixed_t x, y;
- pixman_fixed_t ux, uy;
- pixman_vector_t v;
- bits_image_t *bits = &image->bits;
- int i;
-
- /* reference point is the center of the pixel */
- v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
- v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
- v.vector[2] = pixman_fixed_1;
-
- if (!pixman_transform_point_3d (image->common.transform, &v))
- return;
-
- ux = image->common.transform->matrix[0][0];
- uy = image->common.transform->matrix[1][0];
-
- x = v.vector[0];
- y = v.vector[1];
-
- for (i = 0; i < width; ++i)
- {
- int x1, y1, x2, y2;
- uint32_t tl, tr, bl, br;
- int32_t distx, disty;
- int width = image->bits.width;
- int height = image->bits.height;
- const uint8_t *row1;
- const uint8_t *row2;
-
- if (mask && !mask[i])
- goto next;
-
- x1 = x - pixman_fixed_1 / 2;
- y1 = y - pixman_fixed_1 / 2;
-
- distx = (x1 >> 8) & 0xff;
- disty = (y1 >> 8) & 0xff;
-
- y1 = pixman_fixed_to_int (y1);
- y2 = y1 + 1;
- x1 = pixman_fixed_to_int (x1);
- x2 = x1 + 1;
-
- if (repeat_mode != PIXMAN_REPEAT_NONE)
- {
- uint32_t mask;
-
- mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
-
- repeat (repeat_mode, width, &x1);
- repeat (repeat_mode, height, &y1);
- repeat (repeat_mode, width, &x2);
- repeat (repeat_mode, height, &y2);
-
- row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1;
- row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2;
-
- tl = convert_pixel (row1, x1) | mask;
- tr = convert_pixel (row1, x2) | mask;
- bl = convert_pixel (row2, x1) | mask;
- br = convert_pixel (row2, x2) | mask;
- }
- else
- {
- uint32_t mask1, mask2;
- int bpp;
-
- /* Note: PIXMAN_FORMAT_BPP() returns an unsigned value,
- * which means if you use it in expressions, those
- * expressions become unsigned themselves. Since
- * the variables below can be negative in some cases,
- * that will lead to crashes on 64 bit architectures.
- *
- * So this line makes sure bpp is signed
- */
- bpp = PIXMAN_FORMAT_BPP (format);
-
- if (x1 >= width || x2 < 0 || y1 >= height || y2 < 0)
- {
- buffer[i] = 0;
- goto next;
- }
-
- if (y2 == 0)
- {
- row1 = zero;
- mask1 = 0;
- }
- else
- {
- row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1;
- row1 += bpp / 8 * x1;
-
- mask1 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
- }
-
- if (y1 == height - 1)
- {
- row2 = zero;
- mask2 = 0;
- }
- else
- {
- row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2;
- row2 += bpp / 8 * x1;
-
- mask2 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
- }
-
- if (x2 == 0)
- {
- tl = 0;
- bl = 0;
- }
- else
- {
- tl = convert_pixel (row1, 0) | mask1;
- bl = convert_pixel (row2, 0) | mask2;
- }
-
- if (x1 == width - 1)
- {
- tr = 0;
- br = 0;
- }
- else
- {
- tr = convert_pixel (row1, 1) | mask1;
- br = convert_pixel (row2, 1) | mask2;
- }
- }
-
- buffer[i] = bilinear_interpolation (
- tl, tr, bl, br, distx, disty);
-
- next:
- x += ux;
- y += uy;
- }
-}
-
-static force_inline void
-bits_image_fetch_nearest_affine (pixman_image_t * image,
- int offset,
- int line,
- int width,
- uint32_t * buffer,
- const uint32_t * mask,
-
- convert_pixel_t convert_pixel,
- pixman_format_code_t format,
- pixman_repeat_t repeat_mode)
-{
- pixman_fixed_t x, y;
- pixman_fixed_t ux, uy;
- pixman_vector_t v;
- bits_image_t *bits = &image->bits;
- int i;
-
- /* reference point is the center of the pixel */
- v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
- v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
- v.vector[2] = pixman_fixed_1;
-
- if (!pixman_transform_point_3d (image->common.transform, &v))
- return;
-
- ux = image->common.transform->matrix[0][0];
- uy = image->common.transform->matrix[1][0];
-
- x = v.vector[0];
- y = v.vector[1];
-
- for (i = 0; i < width; ++i)
- {
- int width, height, x0, y0;
- const uint8_t *row;
-
- if (mask && !mask[i])
- goto next;
-
- width = image->bits.width;
- height = image->bits.height;
- x0 = pixman_fixed_to_int (x - pixman_fixed_e);
- y0 = pixman_fixed_to_int (y - pixman_fixed_e);
-
- if (repeat_mode == PIXMAN_REPEAT_NONE &&
- (y0 < 0 || y0 >= height || x0 < 0 || x0 >= width))
- {
- buffer[i] = 0;
- }
- else
- {
- uint32_t mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
-
- if (repeat_mode != PIXMAN_REPEAT_NONE)
- {
- repeat (repeat_mode, width, &x0);
- repeat (repeat_mode, height, &y0);
- }
-
- row = (uint8_t *)bits->bits + bits->rowstride * 4 * y0;
-
- buffer[i] = convert_pixel (row, x0) | mask;
- }
-
- next:
- x += ux;
- y += uy;
- }
-}
-
-static force_inline uint32_t
-convert_a8r8g8b8 (const uint8_t *row, int x)
-{
- return *(((uint32_t *)row) + x);
-}
-
-static force_inline uint32_t
-convert_x8r8g8b8 (const uint8_t *row, int x)
-{
- return *(((uint32_t *)row) + x);
-}
-
-static force_inline uint32_t
-convert_a8 (const uint8_t *row, int x)
-{
- return *(row + x) << 24;
-}
-
-static force_inline uint32_t
-convert_r5g6b5 (const uint8_t *row, int x)
-{
- return CONVERT_0565_TO_0888 (*((uint16_t *)row + x));
-}
-
-#define MAKE_BILINEAR_FETCHER(name, format, repeat_mode) \
- static void \
- bits_image_fetch_bilinear_affine_ ## name (pixman_image_t *image, \
- int offset, \
- int line, \
- int width, \
- uint32_t * buffer, \
- const uint32_t * mask) \
- { \
- bits_image_fetch_bilinear_affine (image, offset, line, \
- width, buffer, mask, \
- convert_ ## format, \
- PIXMAN_ ## format, \
- repeat_mode); \
- }
-
-#define MAKE_NEAREST_FETCHER(name, format, repeat_mode) \
- static void \
- bits_image_fetch_nearest_affine_ ## name (pixman_image_t *image, \
- int offset, \
- int line, \
- int width, \
- uint32_t * buffer, \
- const uint32_t * mask) \
- { \
- bits_image_fetch_nearest_affine (image, offset, line, \
- width, buffer, mask, \
- convert_ ## format, \
- PIXMAN_ ## format, \
- repeat_mode); \
- }
-
-#define MAKE_FETCHERS(name, format, repeat_mode) \
- MAKE_NEAREST_FETCHER (name, format, repeat_mode) \
- MAKE_BILINEAR_FETCHER (name, format, repeat_mode)
-
-MAKE_FETCHERS (pad_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_PAD)
-MAKE_FETCHERS (none_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NONE)
-MAKE_FETCHERS (reflect_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_REFLECT)
-MAKE_FETCHERS (normal_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NORMAL)
-MAKE_FETCHERS (pad_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_PAD)
-MAKE_FETCHERS (none_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NONE)
-MAKE_FETCHERS (reflect_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_REFLECT)
-MAKE_FETCHERS (normal_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NORMAL)
-MAKE_FETCHERS (pad_a8, a8, PIXMAN_REPEAT_PAD)
-MAKE_FETCHERS (none_a8, a8, PIXMAN_REPEAT_NONE)
-MAKE_FETCHERS (reflect_a8, a8, PIXMAN_REPEAT_REFLECT)
-MAKE_FETCHERS (normal_a8, a8, PIXMAN_REPEAT_NORMAL)
-MAKE_FETCHERS (pad_r5g6b5, r5g6b5, PIXMAN_REPEAT_PAD)
-MAKE_FETCHERS (none_r5g6b5, r5g6b5, PIXMAN_REPEAT_NONE)
-MAKE_FETCHERS (reflect_r5g6b5, r5g6b5, PIXMAN_REPEAT_REFLECT)
-MAKE_FETCHERS (normal_r5g6b5, r5g6b5, PIXMAN_REPEAT_NORMAL)
-
-static void
-bits_image_fetch_solid_32 (pixman_image_t * image,
- int x,
- int y,
- int width,
- uint32_t * buffer,
- const uint32_t * mask)
-{
- uint32_t color;
- uint32_t *end;
-
- color = image->bits.fetch_pixel_32 (&image->bits, 0, 0);
-
- end = buffer + width;
- while (buffer < end)
- *(buffer++) = color;
-}
-
-static void
-bits_image_fetch_solid_64 (pixman_image_t * image,
- int x,
- int y,
- int width,
- uint32_t * b,
- const uint32_t * unused)
-{
- uint64_t color;
- uint64_t *buffer = (uint64_t *)b;
- uint64_t *end;
-
- color = image->bits.fetch_pixel_64 (&image->bits, 0, 0);
-
- end = buffer + width;
- while (buffer < end)
- *(buffer++) = color;
-}
-
-static void
-bits_image_fetch_untransformed_repeat_none (bits_image_t *image,
- pixman_bool_t wide,
- int x,
- int y,
- int width,
- uint32_t * buffer)
-{
- uint32_t w;
-
- if (y < 0 || y >= image->height)
- {
- memset (buffer, 0, width * (wide? 8 : 4));
- return;
- }
-
- if (x < 0)
- {
- w = MIN (width, -x);
-
- memset (buffer, 0, w * (wide ? 8 : 4));
-
- width -= w;
- buffer += w * (wide? 2 : 1);
- x += w;
- }
-
- if (x < image->width)
- {
- w = MIN (width, image->width - x);
-
- if (wide)
- image->fetch_scanline_64 ((pixman_image_t *)image, x, y, w, buffer, NULL);
- else
- image->fetch_scanline_32 ((pixman_image_t *)image, x, y, w, buffer, NULL);
-
- width -= w;
- buffer += w * (wide? 2 : 1);
- x += w;
- }
-
- memset (buffer, 0, width * (wide ? 8 : 4));
-}
-
-static void
-bits_image_fetch_untransformed_repeat_normal (bits_image_t *image,
- pixman_bool_t wide,
- int x,
- int y,
- int width,
- uint32_t * buffer)
-{
- uint32_t w;
-
- while (y < 0)
- y += image->height;
-
- while (y >= image->height)
- y -= image->height;
-
- while (width)
- {
- while (x < 0)
- x += image->width;
- while (x >= image->width)
- x -= image->width;
-
- w = MIN (width, image->width - x);
-
- if (wide)
- image->fetch_scanline_64 ((pixman_image_t *)image, x, y, w, buffer, NULL);
- else
- image->fetch_scanline_32 ((pixman_image_t *)image, x, y, w, buffer, NULL);
-
- buffer += w * (wide? 2 : 1);
- x += w;
- width -= w;
- }
-}
-
-static void
-bits_image_fetch_untransformed_32 (pixman_image_t * image,
- int x,
- int y,
- int width,
- uint32_t * buffer,
- const uint32_t * mask)
-{
- if (image->common.repeat == PIXMAN_REPEAT_NONE)
- {
- bits_image_fetch_untransformed_repeat_none (
- &image->bits, FALSE, x, y, width, buffer);
- }
- else
- {
- bits_image_fetch_untransformed_repeat_normal (
- &image->bits, FALSE, x, y, width, buffer);
- }
-}
-
-static void
-bits_image_fetch_untransformed_64 (pixman_image_t * image,
- int x,
- int y,
- int width,
- uint32_t * buffer,
- const uint32_t * unused)
-{
- if (image->common.repeat == PIXMAN_REPEAT_NONE)
- {
- bits_image_fetch_untransformed_repeat_none (
- &image->bits, TRUE, x, y, width, buffer);
- }
- else
- {
- bits_image_fetch_untransformed_repeat_normal (
- &image->bits, TRUE, x, y, width, buffer);
- }
-}
-
-typedef struct
-{
- pixman_format_code_t format;
- uint32_t flags;
- fetch_scanline_t fetch_32;
- fetch_scanline_t fetch_64;
-} fetcher_info_t;
-
-static const fetcher_info_t fetcher_info[] =
-{
- { PIXMAN_solid,
- FAST_PATH_NO_ALPHA_MAP,
- bits_image_fetch_solid_32,
- bits_image_fetch_solid_64
- },
-
- { PIXMAN_any,
- (FAST_PATH_NO_ALPHA_MAP |
- FAST_PATH_ID_TRANSFORM |
- FAST_PATH_NO_CONVOLUTION_FILTER |
- FAST_PATH_NO_PAD_REPEAT |
- FAST_PATH_NO_REFLECT_REPEAT),
- bits_image_fetch_untransformed_32,
- bits_image_fetch_untransformed_64
- },
-
-#define FAST_BILINEAR_FLAGS \
- (FAST_PATH_NO_ALPHA_MAP | \
- FAST_PATH_NO_ACCESSORS | \
- FAST_PATH_HAS_TRANSFORM | \
- FAST_PATH_AFFINE_TRANSFORM | \
- FAST_PATH_X_UNIT_POSITIVE | \
- FAST_PATH_Y_UNIT_ZERO | \
- FAST_PATH_NONE_REPEAT | \
- FAST_PATH_BILINEAR_FILTER)
-
- { PIXMAN_a8r8g8b8,
- FAST_BILINEAR_FLAGS,
- bits_image_fetch_bilinear_no_repeat_8888,
- _pixman_image_get_scanline_generic_64
- },
-
- { PIXMAN_x8r8g8b8,
- FAST_BILINEAR_FLAGS,
- bits_image_fetch_bilinear_no_repeat_8888,
- _pixman_image_get_scanline_generic_64
- },
-
-#define GENERAL_BILINEAR_FLAGS \
- (FAST_PATH_NO_ALPHA_MAP | \
- FAST_PATH_NO_ACCESSORS | \
- FAST_PATH_HAS_TRANSFORM | \
- FAST_PATH_AFFINE_TRANSFORM | \
- FAST_PATH_BILINEAR_FILTER)
-
-#define GENERAL_NEAREST_FLAGS \
- (FAST_PATH_NO_ALPHA_MAP | \
- FAST_PATH_NO_ACCESSORS | \
- FAST_PATH_HAS_TRANSFORM | \
- FAST_PATH_AFFINE_TRANSFORM | \
- FAST_PATH_NEAREST_FILTER)
-
-#define BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \
- { PIXMAN_ ## format, \
- GENERAL_BILINEAR_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \
- bits_image_fetch_bilinear_affine_ ## name, \
- _pixman_image_get_scanline_generic_64 \
- },
-
-#define NEAREST_AFFINE_FAST_PATH(name, format, repeat) \
- { PIXMAN_ ## format, \
- GENERAL_NEAREST_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \
- bits_image_fetch_nearest_affine_ ## name, \
- _pixman_image_get_scanline_generic_64 \
- },
-
-#define AFFINE_FAST_PATHS(name, format, repeat) \
- BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \
- NEAREST_AFFINE_FAST_PATH(name, format, repeat)
-
- AFFINE_FAST_PATHS (pad_a8r8g8b8, a8r8g8b8, PAD)
- AFFINE_FAST_PATHS (none_a8r8g8b8, a8r8g8b8, NONE)
- AFFINE_FAST_PATHS (reflect_a8r8g8b8, a8r8g8b8, REFLECT)
- AFFINE_FAST_PATHS (normal_a8r8g8b8, a8r8g8b8, NORMAL)
- AFFINE_FAST_PATHS (pad_x8r8g8b8, x8r8g8b8, PAD)
- AFFINE_FAST_PATHS (none_x8r8g8b8, x8r8g8b8, NONE)
- AFFINE_FAST_PATHS (reflect_x8r8g8b8, x8r8g8b8, REFLECT)
- AFFINE_FAST_PATHS (normal_x8r8g8b8, x8r8g8b8, NORMAL)
- AFFINE_FAST_PATHS (pad_a8, a8, PAD)
- AFFINE_FAST_PATHS (none_a8, a8, NONE)
- AFFINE_FAST_PATHS (reflect_a8, a8, REFLECT)
- AFFINE_FAST_PATHS (normal_a8, a8, NORMAL)
- AFFINE_FAST_PATHS (pad_r5g6b5, r5g6b5, PAD)
- AFFINE_FAST_PATHS (none_r5g6b5, r5g6b5, NONE)
- AFFINE_FAST_PATHS (reflect_r5g6b5, r5g6b5, REFLECT)
- AFFINE_FAST_PATHS (normal_r5g6b5, r5g6b5, NORMAL)
-
- /* Affine, no alpha */
- { PIXMAN_any,
- (FAST_PATH_NO_ALPHA_MAP | FAST_PATH_HAS_TRANSFORM | FAST_PATH_AFFINE_TRANSFORM),
- bits_image_fetch_affine_no_alpha,
- _pixman_image_get_scanline_generic_64
- },
-
- /* General */
- { PIXMAN_any, 0, bits_image_fetch_general, _pixman_image_get_scanline_generic_64 },
-
- { PIXMAN_null },
-};
-
-static void
-bits_image_property_changed (pixman_image_t *image)
-{
- uint32_t flags = image->common.flags;
- pixman_format_code_t format = image->common.extended_format_code;
- const fetcher_info_t *info;
-
- _pixman_bits_image_setup_accessors (&image->bits);
-
- info = fetcher_info;
- while (info->format != PIXMAN_null)
- {
- if ((info->format == format || info->format == PIXMAN_any) &&
- (info->flags & flags) == info->flags)
- {
- image->bits.get_scanline_32 = info->fetch_32;
- image->bits.get_scanline_64 = info->fetch_64;
- break;
- }
-
- info++;
- }
-}
-
-static uint32_t *
-src_get_scanline_narrow (pixman_iter_t *iter, const uint32_t *mask)
-{
- iter->image->bits.get_scanline_32 (
- iter->image, iter->x, iter->y++, iter->width, iter->buffer, mask);
-
- return iter->buffer;
-}
-
-static uint32_t *
-src_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask)
-{
- iter->image->bits.get_scanline_64 (
- iter->image, iter->x, iter->y++, iter->width, iter->buffer, mask);
-
- return iter->buffer;
-}
-
-void
-_pixman_bits_image_src_iter_init (pixman_image_t *image, pixman_iter_t *iter)
-{
- if (iter->flags & ITER_NARROW)
- iter->get_scanline = src_get_scanline_narrow;
- else
- iter->get_scanline = src_get_scanline_wide;
-}
-
-static uint32_t *
-dest_get_scanline_narrow (pixman_iter_t *iter, const uint32_t *mask)
-{
- pixman_image_t *image = iter->image;
- int x = iter->x;
- int y = iter->y;
- int width = iter->width;
- uint32_t * buffer = iter->buffer;
-
- image->bits.fetch_scanline_32 (image, x, y, width, buffer, mask);
- if (image->common.alpha_map)
- {
- x -= image->common.alpha_origin_x;
- y -= image->common.alpha_origin_y;
-
- image->common.alpha_map->fetch_scanline_32 (
- (pixman_image_t *)image->common.alpha_map,
- x, y, width, buffer, mask);
- }
-
- return iter->buffer;
-}
-
-static uint32_t *
-dest_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask)
-{
- bits_image_t * image = &iter->image->bits;
- int x = iter->x;
- int y = iter->y;
- int width = iter->width;
- uint32_t * buffer = iter->buffer;
-
- image->fetch_scanline_64 (
- (pixman_image_t *)image, x, y, width, buffer, mask);
- if (image->common.alpha_map)
- {
- x -= image->common.alpha_origin_x;
- y -= image->common.alpha_origin_y;
-
- image->common.alpha_map->fetch_scanline_64 (
- (pixman_image_t *)image->common.alpha_map, x, y, width, buffer, mask);
- }
-
- return iter->buffer;
-}
-
-static void
-dest_write_back_narrow (pixman_iter_t *iter)
-{
- bits_image_t * image = &iter->image->bits;
- int x = iter->x;
- int y = iter->y;
- int width = iter->width;
- const uint32_t *buffer = iter->buffer;
-
- image->store_scanline_32 (image, x, y, width, buffer);
-
- if (image->common.alpha_map)
- {
- x -= image->common.alpha_origin_x;
- y -= image->common.alpha_origin_y;
-
- image->common.alpha_map->store_scanline_32 (
- image->common.alpha_map, x, y, width, buffer);
- }
-
- iter->y++;
-}
-
-static void
-dest_write_back_wide (pixman_iter_t *iter)
-{
- bits_image_t * image = &iter->image->bits;
- int x = iter->x;
- int y = iter->y;
- int width = iter->width;
- const uint32_t *buffer = iter->buffer;
-
- image->store_scanline_64 (image, x, y, width, buffer);
-
- if (image->common.alpha_map)
- {
- x -= image->common.alpha_origin_x;
- y -= image->common.alpha_origin_y;
-
- image->common.alpha_map->store_scanline_64 (
- image->common.alpha_map, x, y, width, buffer);
- }
-
- iter->y++;
-}
-
-void
-_pixman_bits_image_dest_iter_init (pixman_image_t *image, pixman_iter_t *iter)
-{
- if (iter->flags & ITER_NARROW)
- {
- if ((iter->flags & (ITER_IGNORE_RGB | ITER_IGNORE_ALPHA)) ==
- (ITER_IGNORE_RGB | ITER_IGNORE_ALPHA))
- {
- iter->get_scanline = _pixman_iter_get_scanline_noop;
- }
- else
- {
- iter->get_scanline = dest_get_scanline_narrow;
- }
-
- iter->write_back = dest_write_back_narrow;
- }
- else
- {
- iter->get_scanline = dest_get_scanline_wide;
- iter->write_back = dest_write_back_wide;
- }
-}
-
-static uint32_t *
-create_bits (pixman_format_code_t format,
- int width,
- int height,
- int * rowstride_bytes)
-{
- int stride;
- int buf_size;
- int bpp;
-
- /* what follows is a long-winded way, avoiding any possibility of integer
- * overflows, of saying:
- * stride = ((width * bpp + 0x1f) >> 5) * sizeof (uint32_t);
- */
-
- bpp = PIXMAN_FORMAT_BPP (format);
- if (pixman_multiply_overflows_int (width, bpp))
- return NULL;
-
- stride = width * bpp;
- if (pixman_addition_overflows_int (stride, 0x1f))
- return NULL;
-
- stride += 0x1f;
- stride >>= 5;
-
- stride *= sizeof (uint32_t);
-
- if (pixman_multiply_overflows_int (height, stride))
- return NULL;
-
- buf_size = height * stride;
-
- if (rowstride_bytes)
- *rowstride_bytes = stride;
-
- return calloc (buf_size, 1);
-}
-
-PIXMAN_EXPORT pixman_image_t *
-pixman_image_create_bits (pixman_format_code_t format,
- int width,
- int height,
- uint32_t * bits,
- int rowstride_bytes)
-{
- pixman_image_t *image;
- uint32_t *free_me = NULL;
-
- /* must be a whole number of uint32_t's
- */
- return_val_if_fail (
- bits == NULL || (rowstride_bytes % sizeof (uint32_t)) == 0, NULL);
-
- return_val_if_fail (PIXMAN_FORMAT_BPP (format) >= PIXMAN_FORMAT_DEPTH (format), NULL);
-
- if (!bits && width && height)
- {
- free_me = bits = create_bits (format, width, height, &rowstride_bytes);
- if (!bits)
- return NULL;
- }
-
- image = _pixman_image_allocate ();
-
- if (!image)
- {
- if (free_me)
- free (free_me);
-
- return NULL;
- }
-
- image->type = BITS;
- image->bits.format = format;
- image->bits.width = width;
- image->bits.height = height;
- image->bits.bits = bits;
- image->bits.free_me = free_me;
- image->bits.read_func = NULL;
- image->bits.write_func = NULL;
-
- /* The rowstride is stored in number of uint32_t */
- image->bits.rowstride = rowstride_bytes / (int) sizeof (uint32_t);
-
- image->bits.indexed = NULL;
-
- image->common.property_changed = bits_image_property_changed;
-
- _pixman_image_reset_clip_region (image);
-
- return image;
-}
+/*
+ * Copyright © 2000 Keith Packard, member of The XFree86 Project, Inc.
+ * 2005 Lars Knoll & Zack Rusin, Trolltech
+ * 2008 Aaron Plattner, NVIDIA Corporation
+ * Copyright © 2000 SuSE, Inc.
+ * Copyright © 2007, 2009 Red Hat, Inc.
+ * Copyright © 2008 André Tupinambá <andrelrt@gmail.com>
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Keith Packard not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission. Keith Packard makes no
+ * representations about the suitability of this software for any purpose. It
+ * is provided "as is" without express or implied warranty.
+ *
+ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+ * SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "pixman-private.h"
+#include "pixman-combine32.h"
+#include "pixman-inlines.h"
+
+/*
+ * By default, just evaluate the image at 32bpp and expand. Individual image
+ * types can plug in a better scanline getter if they want to. For example
+ * we could produce smoother gradients by evaluating them at higher color
+ * depth, but that's a project for the future.
+ */
+static void
+_pixman_image_get_scanline_generic_64 (pixman_image_t * image,
+ int x,
+ int y,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask)
+{
+ uint32_t *mask8 = NULL;
+
+ /* Contract the mask image, if one exists, so that the 32-bit fetch
+ * function can use it.
+ */
+ if (mask)
+ {
+ mask8 = pixman_malloc_ab (width, sizeof(uint32_t));
+ if (!mask8)
+ return;
+
+ pixman_contract (mask8, (uint64_t *)mask, width);
+ }
+
+ /* Fetch the source image into the first half of buffer. */
+ image->bits.get_scanline_32 (image, x, y, width, (uint32_t*)buffer, mask8);
+
+ /* Expand from 32bpp to 64bpp in place. */
+ pixman_expand ((uint64_t *)buffer, buffer, PIXMAN_a8r8g8b8, width);
+
+ free (mask8);
+}
+
+/* Fetch functions */
+
+static force_inline uint32_t
+fetch_pixel_no_alpha (bits_image_t *image,
+ int x, int y, pixman_bool_t check_bounds)
+{
+ if (check_bounds &&
+ (x < 0 || x >= image->width || y < 0 || y >= image->height))
+ {
+ return 0;
+ }
+
+ return image->fetch_pixel_32 (image, x, y);
+}
+
+typedef uint32_t (* get_pixel_t) (bits_image_t *image,
+ int x, int y, pixman_bool_t check_bounds);
+
+static force_inline uint32_t
+bits_image_fetch_pixel_nearest (bits_image_t *image,
+ pixman_fixed_t x,
+ pixman_fixed_t y,
+ get_pixel_t get_pixel)
+{
+ int x0 = pixman_fixed_to_int (x - pixman_fixed_e);
+ int y0 = pixman_fixed_to_int (y - pixman_fixed_e);
+
+ if (image->common.repeat != PIXMAN_REPEAT_NONE)
+ {
+ repeat (image->common.repeat, &x0, image->width);
+ repeat (image->common.repeat, &y0, image->height);
+
+ return get_pixel (image, x0, y0, FALSE);
+ }
+ else
+ {
+ return get_pixel (image, x0, y0, TRUE);
+ }
+}
+
+static force_inline uint32_t
+bits_image_fetch_pixel_bilinear (bits_image_t *image,
+ pixman_fixed_t x,
+ pixman_fixed_t y,
+ get_pixel_t get_pixel)
+{
+ pixman_repeat_t repeat_mode = image->common.repeat;
+ int width = image->width;
+ int height = image->height;
+ int x1, y1, x2, y2;
+ uint32_t tl, tr, bl, br;
+ int32_t distx, disty;
+
+ x1 = x - pixman_fixed_1 / 2;
+ y1 = y - pixman_fixed_1 / 2;
+
+ distx = (x1 >> 8) & 0xff;
+ disty = (y1 >> 8) & 0xff;
+
+ x1 = pixman_fixed_to_int (x1);
+ y1 = pixman_fixed_to_int (y1);
+ x2 = x1 + 1;
+ y2 = y1 + 1;
+
+ if (repeat_mode != PIXMAN_REPEAT_NONE)
+ {
+ repeat (repeat_mode, &x1, width);
+ repeat (repeat_mode, &y1, height);
+ repeat (repeat_mode, &x2, width);
+ repeat (repeat_mode, &y2, height);
+
+ tl = get_pixel (image, x1, y1, FALSE);
+ bl = get_pixel (image, x1, y2, FALSE);
+ tr = get_pixel (image, x2, y1, FALSE);
+ br = get_pixel (image, x2, y2, FALSE);
+ }
+ else
+ {
+ tl = get_pixel (image, x1, y1, TRUE);
+ tr = get_pixel (image, x2, y1, TRUE);
+ bl = get_pixel (image, x1, y2, TRUE);
+ br = get_pixel (image, x2, y2, TRUE);
+ }
+
+ return bilinear_interpolation (tl, tr, bl, br, distx, disty);
+}
+
+static void
+bits_image_fetch_bilinear_no_repeat_8888 (pixman_image_t * ima,
+ int offset,
+ int line,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask)
+{
+ bits_image_t *bits = &ima->bits;
+ pixman_fixed_t x_top, x_bottom, x;
+ pixman_fixed_t ux_top, ux_bottom, ux;
+ pixman_vector_t v;
+ uint32_t top_mask, bottom_mask;
+ uint32_t *top_row;
+ uint32_t *bottom_row;
+ uint32_t *end;
+ uint32_t zero[2] = { 0, 0 };
+ uint32_t one = 1;
+ int y, y1, y2;
+ int disty;
+ int mask_inc;
+ int w;
+
+ /* reference point is the center of the pixel */
+ v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
+ v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
+ v.vector[2] = pixman_fixed_1;
+
+ if (!pixman_transform_point_3d (bits->common.transform, &v))
+ return;
+
+ ux = ux_top = ux_bottom = bits->common.transform->matrix[0][0];
+ x = x_top = x_bottom = v.vector[0] - pixman_fixed_1/2;
+
+ y = v.vector[1] - pixman_fixed_1/2;
+ disty = (y >> 8) & 0xff;
+
+ /* Load the pointers to the first and second lines from the source
+ * image that bilinear code must read.
+ *
+ * The main trick in this code is about the check if any line are
+ * outside of the image;
+ *
+ * When I realize that a line (any one) is outside, I change
+ * the pointer to a dummy area with zeros. Once I change this, I
+ * must be sure the pointer will not change, so I set the
+ * variables to each pointer increments inside the loop.
+ */
+ y1 = pixman_fixed_to_int (y);
+ y2 = y1 + 1;
+
+ if (y1 < 0 || y1 >= bits->height)
+ {
+ top_row = zero;
+ x_top = 0;
+ ux_top = 0;
+ }
+ else
+ {
+ top_row = bits->bits + y1 * bits->rowstride;
+ x_top = x;
+ ux_top = ux;
+ }
+
+ if (y2 < 0 || y2 >= bits->height)
+ {
+ bottom_row = zero;
+ x_bottom = 0;
+ ux_bottom = 0;
+ }
+ else
+ {
+ bottom_row = bits->bits + y2 * bits->rowstride;
+ x_bottom = x;
+ ux_bottom = ux;
+ }
+
+ /* Instead of checking whether the operation uses the mast in
+ * each loop iteration, verify this only once and prepare the
+ * variables to make the code smaller inside the loop.
+ */
+ if (!mask)
+ {
+ mask_inc = 0;
+ mask = &one;
+ }
+ else
+ {
+ /* If have a mask, prepare the variables to check it */
+ mask_inc = 1;
+ }
+
+ /* If both are zero, then the whole thing is zero */
+ if (top_row == zero && bottom_row == zero)
+ {
+ memset (buffer, 0, width * sizeof (uint32_t));
+ return;
+ }
+ else if (bits->format == PIXMAN_x8r8g8b8)
+ {
+ if (top_row == zero)
+ {
+ top_mask = 0;
+ bottom_mask = 0xff000000;
+ }
+ else if (bottom_row == zero)
+ {
+ top_mask = 0xff000000;
+ bottom_mask = 0;
+ }
+ else
+ {
+ top_mask = 0xff000000;
+ bottom_mask = 0xff000000;
+ }
+ }
+ else
+ {
+ top_mask = 0;
+ bottom_mask = 0;
+ }
+
+ end = buffer + width;
+
+ /* Zero fill to the left of the image */
+ while (buffer < end && x < pixman_fixed_minus_1)
+ {
+ *buffer++ = 0;
+ x += ux;
+ x_top += ux_top;
+ x_bottom += ux_bottom;
+ mask += mask_inc;
+ }
+
+ /* Left edge
+ */
+ while (buffer < end && x < 0)
+ {
+ uint32_t tr, br;
+ int32_t distx;
+
+ tr = top_row[pixman_fixed_to_int (x_top) + 1] | top_mask;
+ br = bottom_row[pixman_fixed_to_int (x_bottom) + 1] | bottom_mask;
+
+ distx = (x >> 8) & 0xff;
+
+ *buffer++ = bilinear_interpolation (0, tr, 0, br, distx, disty);
+
+ x += ux;
+ x_top += ux_top;
+ x_bottom += ux_bottom;
+ mask += mask_inc;
+ }
+
+ /* Main part */
+ w = pixman_int_to_fixed (bits->width - 1);
+
+ while (buffer < end && x < w)
+ {
+ if (*mask)
+ {
+ uint32_t tl, tr, bl, br;
+ int32_t distx;
+
+ tl = top_row [pixman_fixed_to_int (x_top)] | top_mask;
+ tr = top_row [pixman_fixed_to_int (x_top) + 1] | top_mask;
+ bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask;
+ br = bottom_row [pixman_fixed_to_int (x_bottom) + 1] | bottom_mask;
+
+ distx = (x >> 8) & 0xff;
+
+ *buffer = bilinear_interpolation (tl, tr, bl, br, distx, disty);
+ }
+
+ buffer++;
+ x += ux;
+ x_top += ux_top;
+ x_bottom += ux_bottom;
+ mask += mask_inc;
+ }
+
+ /* Right Edge */
+ w = pixman_int_to_fixed (bits->width);
+ while (buffer < end && x < w)
+ {
+ if (*mask)
+ {
+ uint32_t tl, bl;
+ int32_t distx;
+
+ tl = top_row [pixman_fixed_to_int (x_top)] | top_mask;
+ bl = bottom_row [pixman_fixed_to_int (x_bottom)] | bottom_mask;
+
+ distx = (x >> 8) & 0xff;
+
+ *buffer = bilinear_interpolation (tl, 0, bl, 0, distx, disty);
+ }
+
+ buffer++;
+ x += ux;
+ x_top += ux_top;
+ x_bottom += ux_bottom;
+ mask += mask_inc;
+ }
+
+ /* Zero fill to the left of the image */
+ while (buffer < end)
+ *buffer++ = 0;
+}
+
+static force_inline uint32_t
+bits_image_fetch_pixel_convolution (bits_image_t *image,
+ pixman_fixed_t x,
+ pixman_fixed_t y,
+ get_pixel_t get_pixel)
+{
+ pixman_fixed_t *params = image->common.filter_params;
+ int x_off = (params[0] - pixman_fixed_1) >> 1;
+ int y_off = (params[1] - pixman_fixed_1) >> 1;
+ int32_t cwidth = pixman_fixed_to_int (params[0]);
+ int32_t cheight = pixman_fixed_to_int (params[1]);
+ int32_t srtot, sgtot, sbtot, satot;
+ int32_t i, j, x1, x2, y1, y2;
+ pixman_repeat_t repeat_mode = image->common.repeat;
+ int width = image->width;
+ int height = image->height;
+
+ params += 2;
+
+ x1 = pixman_fixed_to_int (x - pixman_fixed_e - x_off);
+ y1 = pixman_fixed_to_int (y - pixman_fixed_e - y_off);
+ x2 = x1 + cwidth;
+ y2 = y1 + cheight;
+
+ srtot = sgtot = sbtot = satot = 0;
+
+ for (i = y1; i < y2; ++i)
+ {
+ for (j = x1; j < x2; ++j)
+ {
+ int rx = j;
+ int ry = i;
+
+ pixman_fixed_t f = *params;
+
+ if (f)
+ {
+ uint32_t pixel;
+
+ if (repeat_mode != PIXMAN_REPEAT_NONE)
+ {
+ repeat (repeat_mode, &rx, width);
+ repeat (repeat_mode, &ry, height);
+
+ pixel = get_pixel (image, rx, ry, FALSE);
+ }
+ else
+ {
+ pixel = get_pixel (image, rx, ry, TRUE);
+ }
+
+ srtot += RED_8 (pixel) * f;
+ sgtot += GREEN_8 (pixel) * f;
+ sbtot += BLUE_8 (pixel) * f;
+ satot += ALPHA_8 (pixel) * f;
+ }
+
+ params++;
+ }
+ }
+
+ satot >>= 16;
+ srtot >>= 16;
+ sgtot >>= 16;
+ sbtot >>= 16;
+
+ satot = CLIP (satot, 0, 0xff);
+ srtot = CLIP (srtot, 0, 0xff);
+ sgtot = CLIP (sgtot, 0, 0xff);
+ sbtot = CLIP (sbtot, 0, 0xff);
+
+ return ((satot << 24) | (srtot << 16) | (sgtot << 8) | (sbtot));
+}
+
+static force_inline uint32_t
+bits_image_fetch_pixel_filtered (bits_image_t *image,
+ pixman_fixed_t x,
+ pixman_fixed_t y,
+ get_pixel_t get_pixel)
+{
+ switch (image->common.filter)
+ {
+ case PIXMAN_FILTER_NEAREST:
+ case PIXMAN_FILTER_FAST:
+ return bits_image_fetch_pixel_nearest (image, x, y, get_pixel);
+ break;
+
+ case PIXMAN_FILTER_BILINEAR:
+ case PIXMAN_FILTER_GOOD:
+ case PIXMAN_FILTER_BEST:
+ return bits_image_fetch_pixel_bilinear (image, x, y, get_pixel);
+ break;
+
+ case PIXMAN_FILTER_CONVOLUTION:
+ return bits_image_fetch_pixel_convolution (image, x, y, get_pixel);
+ break;
+
+ default:
+ break;
+ }
+
+ return 0;
+}
+
+static void
+bits_image_fetch_affine_no_alpha (pixman_image_t * image,
+ int offset,
+ int line,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask)
+{
+ pixman_fixed_t x, y;
+ pixman_fixed_t ux, uy;
+ pixman_vector_t v;
+ int i;
+
+ /* reference point is the center of the pixel */
+ v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
+ v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
+ v.vector[2] = pixman_fixed_1;
+
+ if (image->common.transform)
+ {
+ if (!pixman_transform_point_3d (image->common.transform, &v))
+ return;
+
+ ux = image->common.transform->matrix[0][0];
+ uy = image->common.transform->matrix[1][0];
+ }
+ else
+ {
+ ux = pixman_fixed_1;
+ uy = 0;
+ }
+
+ x = v.vector[0];
+ y = v.vector[1];
+
+ for (i = 0; i < width; ++i)
+ {
+ if (!mask || mask[i])
+ {
+ buffer[i] = bits_image_fetch_pixel_filtered (
+ &image->bits, x, y, fetch_pixel_no_alpha);
+ }
+
+ x += ux;
+ y += uy;
+ }
+}
+
+/* General fetcher */
+static force_inline uint32_t
+fetch_pixel_general (bits_image_t *image, int x, int y, pixman_bool_t check_bounds)
+{
+ uint32_t pixel;
+
+ if (check_bounds &&
+ (x < 0 || x >= image->width || y < 0 || y >= image->height))
+ {
+ return 0;
+ }
+
+ pixel = image->fetch_pixel_32 (image, x, y);
+
+ if (image->common.alpha_map)
+ {
+ uint32_t pixel_a;
+
+ x -= image->common.alpha_origin_x;
+ y -= image->common.alpha_origin_y;
+
+ if (x < 0 || x >= image->common.alpha_map->width ||
+ y < 0 || y >= image->common.alpha_map->height)
+ {
+ pixel_a = 0;
+ }
+ else
+ {
+ pixel_a = image->common.alpha_map->fetch_pixel_32 (
+ image->common.alpha_map, x, y);
+
+ pixel_a = ALPHA_8 (pixel_a);
+ }
+
+ pixel &= 0x00ffffff;
+ pixel |= (pixel_a << 24);
+ }
+
+ return pixel;
+}
+
+static void
+bits_image_fetch_general (pixman_image_t * image,
+ int offset,
+ int line,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask)
+{
+ pixman_fixed_t x, y, w;
+ pixman_fixed_t ux, uy, uw;
+ pixman_vector_t v;
+ int i;
+
+ /* reference point is the center of the pixel */
+ v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
+ v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
+ v.vector[2] = pixman_fixed_1;
+
+ if (image->common.transform)
+ {
+ if (!pixman_transform_point_3d (image->common.transform, &v))
+ return;
+
+ ux = image->common.transform->matrix[0][0];
+ uy = image->common.transform->matrix[1][0];
+ uw = image->common.transform->matrix[2][0];
+ }
+ else
+ {
+ ux = pixman_fixed_1;
+ uy = 0;
+ uw = 0;
+ }
+
+ x = v.vector[0];
+ y = v.vector[1];
+ w = v.vector[2];
+
+ for (i = 0; i < width; ++i)
+ {
+ pixman_fixed_t x0, y0;
+
+ if (!mask || mask[i])
+ {
+ if (w != 0)
+ {
+ x0 = ((pixman_fixed_48_16_t)x << 16) / w;
+ y0 = ((pixman_fixed_48_16_t)y << 16) / w;
+ }
+ else
+ {
+ x0 = 0;
+ y0 = 0;
+ }
+
+ buffer[i] = bits_image_fetch_pixel_filtered (
+ &image->bits, x0, y0, fetch_pixel_general);
+ }
+
+ x += ux;
+ y += uy;
+ w += uw;
+ }
+}
+
+static const uint8_t zero[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
+
+typedef uint32_t (* convert_pixel_t) (const uint8_t *row, int x);
+
+static force_inline void
+bits_image_fetch_bilinear_affine (pixman_image_t * image,
+ int offset,
+ int line,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask,
+
+ convert_pixel_t convert_pixel,
+ pixman_format_code_t format,
+ pixman_repeat_t repeat_mode)
+{
+ pixman_fixed_t x, y;
+ pixman_fixed_t ux, uy;
+ pixman_vector_t v;
+ bits_image_t *bits = &image->bits;
+ int i;
+
+ /* reference point is the center of the pixel */
+ v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
+ v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
+ v.vector[2] = pixman_fixed_1;
+
+ if (!pixman_transform_point_3d (image->common.transform, &v))
+ return;
+
+ ux = image->common.transform->matrix[0][0];
+ uy = image->common.transform->matrix[1][0];
+
+ x = v.vector[0];
+ y = v.vector[1];
+
+ for (i = 0; i < width; ++i)
+ {
+ int x1, y1, x2, y2;
+ uint32_t tl, tr, bl, br;
+ int32_t distx, disty;
+ int width = image->bits.width;
+ int height = image->bits.height;
+ const uint8_t *row1;
+ const uint8_t *row2;
+
+ if (mask && !mask[i])
+ goto next;
+
+ x1 = x - pixman_fixed_1 / 2;
+ y1 = y - pixman_fixed_1 / 2;
+
+ distx = (x1 >> 8) & 0xff;
+ disty = (y1 >> 8) & 0xff;
+
+ y1 = pixman_fixed_to_int (y1);
+ y2 = y1 + 1;
+ x1 = pixman_fixed_to_int (x1);
+ x2 = x1 + 1;
+
+ if (repeat_mode != PIXMAN_REPEAT_NONE)
+ {
+ uint32_t mask;
+
+ mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
+
+ repeat (repeat_mode, &x1, width);
+ repeat (repeat_mode, &y1, height);
+ repeat (repeat_mode, &x2, width);
+ repeat (repeat_mode, &y2, height);
+
+ row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1;
+ row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2;
+
+ tl = convert_pixel (row1, x1) | mask;
+ tr = convert_pixel (row1, x2) | mask;
+ bl = convert_pixel (row2, x1) | mask;
+ br = convert_pixel (row2, x2) | mask;
+ }
+ else
+ {
+ uint32_t mask1, mask2;
+ int bpp;
+
+ /* Note: PIXMAN_FORMAT_BPP() returns an unsigned value,
+ * which means if you use it in expressions, those
+ * expressions become unsigned themselves. Since
+ * the variables below can be negative in some cases,
+ * that will lead to crashes on 64 bit architectures.
+ *
+ * So this line makes sure bpp is signed
+ */
+ bpp = PIXMAN_FORMAT_BPP (format);
+
+ if (x1 >= width || x2 < 0 || y1 >= height || y2 < 0)
+ {
+ buffer[i] = 0;
+ goto next;
+ }
+
+ if (y2 == 0)
+ {
+ row1 = zero;
+ mask1 = 0;
+ }
+ else
+ {
+ row1 = (uint8_t *)bits->bits + bits->rowstride * 4 * y1;
+ row1 += bpp / 8 * x1;
+
+ mask1 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
+ }
+
+ if (y1 == height - 1)
+ {
+ row2 = zero;
+ mask2 = 0;
+ }
+ else
+ {
+ row2 = (uint8_t *)bits->bits + bits->rowstride * 4 * y2;
+ row2 += bpp / 8 * x1;
+
+ mask2 = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
+ }
+
+ if (x2 == 0)
+ {
+ tl = 0;
+ bl = 0;
+ }
+ else
+ {
+ tl = convert_pixel (row1, 0) | mask1;
+ bl = convert_pixel (row2, 0) | mask2;
+ }
+
+ if (x1 == width - 1)
+ {
+ tr = 0;
+ br = 0;
+ }
+ else
+ {
+ tr = convert_pixel (row1, 1) | mask1;
+ br = convert_pixel (row2, 1) | mask2;
+ }
+ }
+
+ buffer[i] = bilinear_interpolation (
+ tl, tr, bl, br, distx, disty);
+
+ next:
+ x += ux;
+ y += uy;
+ }
+}
+
+static force_inline void
+bits_image_fetch_nearest_affine (pixman_image_t * image,
+ int offset,
+ int line,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask,
+
+ convert_pixel_t convert_pixel,
+ pixman_format_code_t format,
+ pixman_repeat_t repeat_mode)
+{
+ pixman_fixed_t x, y;
+ pixman_fixed_t ux, uy;
+ pixman_vector_t v;
+ bits_image_t *bits = &image->bits;
+ int i;
+
+ /* reference point is the center of the pixel */
+ v.vector[0] = pixman_int_to_fixed (offset) + pixman_fixed_1 / 2;
+ v.vector[1] = pixman_int_to_fixed (line) + pixman_fixed_1 / 2;
+ v.vector[2] = pixman_fixed_1;
+
+ if (!pixman_transform_point_3d (image->common.transform, &v))
+ return;
+
+ ux = image->common.transform->matrix[0][0];
+ uy = image->common.transform->matrix[1][0];
+
+ x = v.vector[0];
+ y = v.vector[1];
+
+ for (i = 0; i < width; ++i)
+ {
+ int width, height, x0, y0;
+ const uint8_t *row;
+
+ if (mask && !mask[i])
+ goto next;
+
+ width = image->bits.width;
+ height = image->bits.height;
+ x0 = pixman_fixed_to_int (x - pixman_fixed_e);
+ y0 = pixman_fixed_to_int (y - pixman_fixed_e);
+
+ if (repeat_mode == PIXMAN_REPEAT_NONE &&
+ (y0 < 0 || y0 >= height || x0 < 0 || x0 >= width))
+ {
+ buffer[i] = 0;
+ }
+ else
+ {
+ uint32_t mask = PIXMAN_FORMAT_A (format)? 0 : 0xff000000;
+
+ if (repeat_mode != PIXMAN_REPEAT_NONE)
+ {
+ repeat (repeat_mode, &x0, width);
+ repeat (repeat_mode, &y0, height);
+ }
+
+ row = (uint8_t *)bits->bits + bits->rowstride * 4 * y0;
+
+ buffer[i] = convert_pixel (row, x0) | mask;
+ }
+
+ next:
+ x += ux;
+ y += uy;
+ }
+}
+
+static force_inline uint32_t
+convert_a8r8g8b8 (const uint8_t *row, int x)
+{
+ return *(((uint32_t *)row) + x);
+}
+
+static force_inline uint32_t
+convert_x8r8g8b8 (const uint8_t *row, int x)
+{
+ return *(((uint32_t *)row) + x);
+}
+
+static force_inline uint32_t
+convert_a8 (const uint8_t *row, int x)
+{
+ return *(row + x) << 24;
+}
+
+static force_inline uint32_t
+convert_r5g6b5 (const uint8_t *row, int x)
+{
+ return CONVERT_0565_TO_0888 (*((uint16_t *)row + x));
+}
+
+#define MAKE_BILINEAR_FETCHER(name, format, repeat_mode) \
+ static void \
+ bits_image_fetch_bilinear_affine_ ## name (pixman_image_t *image, \
+ int offset, \
+ int line, \
+ int width, \
+ uint32_t * buffer, \
+ const uint32_t * mask) \
+ { \
+ bits_image_fetch_bilinear_affine (image, offset, line, \
+ width, buffer, mask, \
+ convert_ ## format, \
+ PIXMAN_ ## format, \
+ repeat_mode); \
+ }
+
+#define MAKE_NEAREST_FETCHER(name, format, repeat_mode) \
+ static void \
+ bits_image_fetch_nearest_affine_ ## name (pixman_image_t *image, \
+ int offset, \
+ int line, \
+ int width, \
+ uint32_t * buffer, \
+ const uint32_t * mask) \
+ { \
+ bits_image_fetch_nearest_affine (image, offset, line, \
+ width, buffer, mask, \
+ convert_ ## format, \
+ PIXMAN_ ## format, \
+ repeat_mode); \
+ }
+
+#define MAKE_FETCHERS(name, format, repeat_mode) \
+ MAKE_NEAREST_FETCHER (name, format, repeat_mode) \
+ MAKE_BILINEAR_FETCHER (name, format, repeat_mode)
+
+MAKE_FETCHERS (pad_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_PAD)
+MAKE_FETCHERS (none_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NONE)
+MAKE_FETCHERS (reflect_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_REFLECT)
+MAKE_FETCHERS (normal_a8r8g8b8, a8r8g8b8, PIXMAN_REPEAT_NORMAL)
+MAKE_FETCHERS (pad_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_PAD)
+MAKE_FETCHERS (none_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NONE)
+MAKE_FETCHERS (reflect_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_REFLECT)
+MAKE_FETCHERS (normal_x8r8g8b8, x8r8g8b8, PIXMAN_REPEAT_NORMAL)
+MAKE_FETCHERS (pad_a8, a8, PIXMAN_REPEAT_PAD)
+MAKE_FETCHERS (none_a8, a8, PIXMAN_REPEAT_NONE)
+MAKE_FETCHERS (reflect_a8, a8, PIXMAN_REPEAT_REFLECT)
+MAKE_FETCHERS (normal_a8, a8, PIXMAN_REPEAT_NORMAL)
+MAKE_FETCHERS (pad_r5g6b5, r5g6b5, PIXMAN_REPEAT_PAD)
+MAKE_FETCHERS (none_r5g6b5, r5g6b5, PIXMAN_REPEAT_NONE)
+MAKE_FETCHERS (reflect_r5g6b5, r5g6b5, PIXMAN_REPEAT_REFLECT)
+MAKE_FETCHERS (normal_r5g6b5, r5g6b5, PIXMAN_REPEAT_NORMAL)
+
+static void
+bits_image_fetch_solid_32 (pixman_image_t * image,
+ int x,
+ int y,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask)
+{
+ uint32_t color;
+ uint32_t *end;
+
+ color = image->bits.fetch_pixel_32 (&image->bits, 0, 0);
+
+ end = buffer + width;
+ while (buffer < end)
+ *(buffer++) = color;
+}
+
+static void
+bits_image_fetch_solid_64 (pixman_image_t * image,
+ int x,
+ int y,
+ int width,
+ uint32_t * b,
+ const uint32_t * unused)
+{
+ uint64_t color;
+ uint64_t *buffer = (uint64_t *)b;
+ uint64_t *end;
+
+ color = image->bits.fetch_pixel_64 (&image->bits, 0, 0);
+
+ end = buffer + width;
+ while (buffer < end)
+ *(buffer++) = color;
+}
+
+static void
+bits_image_fetch_untransformed_repeat_none (bits_image_t *image,
+ pixman_bool_t wide,
+ int x,
+ int y,
+ int width,
+ uint32_t * buffer)
+{
+ uint32_t w;
+
+ if (y < 0 || y >= image->height)
+ {
+ memset (buffer, 0, width * (wide? 8 : 4));
+ return;
+ }
+
+ if (x < 0)
+ {
+ w = MIN (width, -x);
+
+ memset (buffer, 0, w * (wide ? 8 : 4));
+
+ width -= w;
+ buffer += w * (wide? 2 : 1);
+ x += w;
+ }
+
+ if (x < image->width)
+ {
+ w = MIN (width, image->width - x);
+
+ if (wide)
+ image->fetch_scanline_64 ((pixman_image_t *)image, x, y, w, buffer, NULL);
+ else
+ image->fetch_scanline_32 ((pixman_image_t *)image, x, y, w, buffer, NULL);
+
+ width -= w;
+ buffer += w * (wide? 2 : 1);
+ x += w;
+ }
+
+ memset (buffer, 0, width * (wide ? 8 : 4));
+}
+
+static void
+bits_image_fetch_untransformed_repeat_normal (bits_image_t *image,
+ pixman_bool_t wide,
+ int x,
+ int y,
+ int width,
+ uint32_t * buffer)
+{
+ uint32_t w;
+
+ while (y < 0)
+ y += image->height;
+
+ while (y >= image->height)
+ y -= image->height;
+
+ while (width)
+ {
+ while (x < 0)
+ x += image->width;
+ while (x >= image->width)
+ x -= image->width;
+
+ w = MIN (width, image->width - x);
+
+ if (wide)
+ image->fetch_scanline_64 ((pixman_image_t *)image, x, y, w, buffer, NULL);
+ else
+ image->fetch_scanline_32 ((pixman_image_t *)image, x, y, w, buffer, NULL);
+
+ buffer += w * (wide? 2 : 1);
+ x += w;
+ width -= w;
+ }
+}
+
+static void
+bits_image_fetch_untransformed_32 (pixman_image_t * image,
+ int x,
+ int y,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * mask)
+{
+ if (image->common.repeat == PIXMAN_REPEAT_NONE)
+ {
+ bits_image_fetch_untransformed_repeat_none (
+ &image->bits, FALSE, x, y, width, buffer);
+ }
+ else
+ {
+ bits_image_fetch_untransformed_repeat_normal (
+ &image->bits, FALSE, x, y, width, buffer);
+ }
+}
+
+static void
+bits_image_fetch_untransformed_64 (pixman_image_t * image,
+ int x,
+ int y,
+ int width,
+ uint32_t * buffer,
+ const uint32_t * unused)
+{
+ if (image->common.repeat == PIXMAN_REPEAT_NONE)
+ {
+ bits_image_fetch_untransformed_repeat_none (
+ &image->bits, TRUE, x, y, width, buffer);
+ }
+ else
+ {
+ bits_image_fetch_untransformed_repeat_normal (
+ &image->bits, TRUE, x, y, width, buffer);
+ }
+}
+
+typedef struct
+{
+ pixman_format_code_t format;
+ uint32_t flags;
+ fetch_scanline_t fetch_32;
+ fetch_scanline_t fetch_64;
+} fetcher_info_t;
+
+static const fetcher_info_t fetcher_info[] =
+{
+ { PIXMAN_solid,
+ FAST_PATH_NO_ALPHA_MAP,
+ bits_image_fetch_solid_32,
+ bits_image_fetch_solid_64
+ },
+
+ { PIXMAN_any,
+ (FAST_PATH_NO_ALPHA_MAP |
+ FAST_PATH_ID_TRANSFORM |
+ FAST_PATH_NO_CONVOLUTION_FILTER |
+ FAST_PATH_NO_PAD_REPEAT |
+ FAST_PATH_NO_REFLECT_REPEAT),
+ bits_image_fetch_untransformed_32,
+ bits_image_fetch_untransformed_64
+ },
+
+#define FAST_BILINEAR_FLAGS \
+ (FAST_PATH_NO_ALPHA_MAP | \
+ FAST_PATH_NO_ACCESSORS | \
+ FAST_PATH_HAS_TRANSFORM | \
+ FAST_PATH_AFFINE_TRANSFORM | \
+ FAST_PATH_X_UNIT_POSITIVE | \
+ FAST_PATH_Y_UNIT_ZERO | \
+ FAST_PATH_NONE_REPEAT | \
+ FAST_PATH_BILINEAR_FILTER)
+
+ { PIXMAN_a8r8g8b8,
+ FAST_BILINEAR_FLAGS,
+ bits_image_fetch_bilinear_no_repeat_8888,
+ _pixman_image_get_scanline_generic_64
+ },
+
+ { PIXMAN_x8r8g8b8,
+ FAST_BILINEAR_FLAGS,
+ bits_image_fetch_bilinear_no_repeat_8888,
+ _pixman_image_get_scanline_generic_64
+ },
+
+#define GENERAL_BILINEAR_FLAGS \
+ (FAST_PATH_NO_ALPHA_MAP | \
+ FAST_PATH_NO_ACCESSORS | \
+ FAST_PATH_HAS_TRANSFORM | \
+ FAST_PATH_AFFINE_TRANSFORM | \
+ FAST_PATH_BILINEAR_FILTER)
+
+#define GENERAL_NEAREST_FLAGS \
+ (FAST_PATH_NO_ALPHA_MAP | \
+ FAST_PATH_NO_ACCESSORS | \
+ FAST_PATH_HAS_TRANSFORM | \
+ FAST_PATH_AFFINE_TRANSFORM | \
+ FAST_PATH_NEAREST_FILTER)
+
+#define BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \
+ { PIXMAN_ ## format, \
+ GENERAL_BILINEAR_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \
+ bits_image_fetch_bilinear_affine_ ## name, \
+ _pixman_image_get_scanline_generic_64 \
+ },
+
+#define NEAREST_AFFINE_FAST_PATH(name, format, repeat) \
+ { PIXMAN_ ## format, \
+ GENERAL_NEAREST_FLAGS | FAST_PATH_ ## repeat ## _REPEAT, \
+ bits_image_fetch_nearest_affine_ ## name, \
+ _pixman_image_get_scanline_generic_64 \
+ },
+
+#define AFFINE_FAST_PATHS(name, format, repeat) \
+ BILINEAR_AFFINE_FAST_PATH(name, format, repeat) \
+ NEAREST_AFFINE_FAST_PATH(name, format, repeat)
+
+ AFFINE_FAST_PATHS (pad_a8r8g8b8, a8r8g8b8, PAD)
+ AFFINE_FAST_PATHS (none_a8r8g8b8, a8r8g8b8, NONE)
+ AFFINE_FAST_PATHS (reflect_a8r8g8b8, a8r8g8b8, REFLECT)
+ AFFINE_FAST_PATHS (normal_a8r8g8b8, a8r8g8b8, NORMAL)
+ AFFINE_FAST_PATHS (pad_x8r8g8b8, x8r8g8b8, PAD)
+ AFFINE_FAST_PATHS (none_x8r8g8b8, x8r8g8b8, NONE)
+ AFFINE_FAST_PATHS (reflect_x8r8g8b8, x8r8g8b8, REFLECT)
+ AFFINE_FAST_PATHS (normal_x8r8g8b8, x8r8g8b8, NORMAL)
+ AFFINE_FAST_PATHS (pad_a8, a8, PAD)
+ AFFINE_FAST_PATHS (none_a8, a8, NONE)
+ AFFINE_FAST_PATHS (reflect_a8, a8, REFLECT)
+ AFFINE_FAST_PATHS (normal_a8, a8, NORMAL)
+ AFFINE_FAST_PATHS (pad_r5g6b5, r5g6b5, PAD)
+ AFFINE_FAST_PATHS (none_r5g6b5, r5g6b5, NONE)
+ AFFINE_FAST_PATHS (reflect_r5g6b5, r5g6b5, REFLECT)
+ AFFINE_FAST_PATHS (normal_r5g6b5, r5g6b5, NORMAL)
+
+ /* Affine, no alpha */
+ { PIXMAN_any,
+ (FAST_PATH_NO_ALPHA_MAP | FAST_PATH_HAS_TRANSFORM | FAST_PATH_AFFINE_TRANSFORM),
+ bits_image_fetch_affine_no_alpha,
+ _pixman_image_get_scanline_generic_64
+ },
+
+ /* General */
+ { PIXMAN_any, 0, bits_image_fetch_general, _pixman_image_get_scanline_generic_64 },
+
+ { PIXMAN_null },
+};
+
+static void
+bits_image_property_changed (pixman_image_t *image)
+{
+ uint32_t flags = image->common.flags;
+ pixman_format_code_t format = image->common.extended_format_code;
+ const fetcher_info_t *info;
+
+ _pixman_bits_image_setup_accessors (&image->bits);
+
+ info = fetcher_info;
+ while (info->format != PIXMAN_null)
+ {
+ if ((info->format == format || info->format == PIXMAN_any) &&
+ (info->flags & flags) == info->flags)
+ {
+ image->bits.get_scanline_32 = info->fetch_32;
+ image->bits.get_scanline_64 = info->fetch_64;
+ break;
+ }
+
+ info++;
+ }
+}
+
+static uint32_t *
+src_get_scanline_narrow (pixman_iter_t *iter, const uint32_t *mask)
+{
+ iter->image->bits.get_scanline_32 (
+ iter->image, iter->x, iter->y++, iter->width, iter->buffer, mask);
+
+ return iter->buffer;
+}
+
+static uint32_t *
+src_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask)
+{
+ iter->image->bits.get_scanline_64 (
+ iter->image, iter->x, iter->y++, iter->width, iter->buffer, mask);
+
+ return iter->buffer;
+}
+
+void
+_pixman_bits_image_src_iter_init (pixman_image_t *image, pixman_iter_t *iter)
+{
+ if (iter->flags & ITER_NARROW)
+ iter->get_scanline = src_get_scanline_narrow;
+ else
+ iter->get_scanline = src_get_scanline_wide;
+}
+
+static uint32_t *
+dest_get_scanline_narrow (pixman_iter_t *iter, const uint32_t *mask)
+{
+ pixman_image_t *image = iter->image;
+ int x = iter->x;
+ int y = iter->y;
+ int width = iter->width;
+ uint32_t * buffer = iter->buffer;
+
+ image->bits.fetch_scanline_32 (image, x, y, width, buffer, mask);
+ if (image->common.alpha_map)
+ {
+ x -= image->common.alpha_origin_x;
+ y -= image->common.alpha_origin_y;
+
+ image->common.alpha_map->fetch_scanline_32 (
+ (pixman_image_t *)image->common.alpha_map,
+ x, y, width, buffer, mask);
+ }
+
+ return iter->buffer;
+}
+
+static uint32_t *
+dest_get_scanline_wide (pixman_iter_t *iter, const uint32_t *mask)
+{
+ bits_image_t * image = &iter->image->bits;
+ int x = iter->x;
+ int y = iter->y;
+ int width = iter->width;
+ uint32_t * buffer = iter->buffer;
+
+ image->fetch_scanline_64 (
+ (pixman_image_t *)image, x, y, width, buffer, mask);
+ if (image->common.alpha_map)
+ {
+ x -= image->common.alpha_origin_x;
+ y -= image->common.alpha_origin_y;
+
+ image->common.alpha_map->fetch_scanline_64 (
+ (pixman_image_t *)image->common.alpha_map, x, y, width, buffer, mask);
+ }
+
+ return iter->buffer;
+}
+
+static void
+dest_write_back_narrow (pixman_iter_t *iter)
+{
+ bits_image_t * image = &iter->image->bits;
+ int x = iter->x;
+ int y = iter->y;
+ int width = iter->width;
+ const uint32_t *buffer = iter->buffer;
+
+ image->store_scanline_32 (image, x, y, width, buffer);
+
+ if (image->common.alpha_map)
+ {
+ x -= image->common.alpha_origin_x;
+ y -= image->common.alpha_origin_y;
+
+ image->common.alpha_map->store_scanline_32 (
+ image->common.alpha_map, x, y, width, buffer);
+ }
+
+ iter->y++;
+}
+
+static void
+dest_write_back_wide (pixman_iter_t *iter)
+{
+ bits_image_t * image = &iter->image->bits;
+ int x = iter->x;
+ int y = iter->y;
+ int width = iter->width;
+ const uint32_t *buffer = iter->buffer;
+
+ image->store_scanline_64 (image, x, y, width, buffer);
+
+ if (image->common.alpha_map)
+ {
+ x -= image->common.alpha_origin_x;
+ y -= image->common.alpha_origin_y;
+
+ image->common.alpha_map->store_scanline_64 (
+ image->common.alpha_map, x, y, width, buffer);
+ }
+
+ iter->y++;
+}
+
+void
+_pixman_bits_image_dest_iter_init (pixman_image_t *image, pixman_iter_t *iter)
+{
+ if (iter->flags & ITER_NARROW)
+ {
+ if ((iter->flags & (ITER_IGNORE_RGB | ITER_IGNORE_ALPHA)) ==
+ (ITER_IGNORE_RGB | ITER_IGNORE_ALPHA))
+ {
+ iter->get_scanline = _pixman_iter_get_scanline_noop;
+ }
+ else
+ {
+ iter->get_scanline = dest_get_scanline_narrow;
+ }
+
+ iter->write_back = dest_write_back_narrow;
+ }
+ else
+ {
+ iter->get_scanline = dest_get_scanline_wide;
+ iter->write_back = dest_write_back_wide;
+ }
+}
+
+static uint32_t *
+create_bits (pixman_format_code_t format,
+ int width,
+ int height,
+ int * rowstride_bytes)
+{
+ int stride;
+ size_t buf_size;
+ int bpp;
+
+ /* what follows is a long-winded way, avoiding any possibility of integer
+ * overflows, of saying:
+ * stride = ((width * bpp + 0x1f) >> 5) * sizeof (uint32_t);
+ */
+
+ bpp = PIXMAN_FORMAT_BPP (format);
+ if (_pixman_multiply_overflows_int (width, bpp))
+ return NULL;
+
+ stride = width * bpp;
+ if (_pixman_addition_overflows_int (stride, 0x1f))
+ return NULL;
+
+ stride += 0x1f;
+ stride >>= 5;
+
+ stride *= sizeof (uint32_t);
+
+ if (_pixman_multiply_overflows_size (height, stride))
+ return NULL;
+
+ buf_size = height * stride;
+
+ if (rowstride_bytes)
+ *rowstride_bytes = stride;
+
+ return calloc (buf_size, 1);
+}
+
+PIXMAN_EXPORT pixman_image_t *
+pixman_image_create_bits (pixman_format_code_t format,
+ int width,
+ int height,
+ uint32_t * bits,
+ int rowstride_bytes)
+{
+ pixman_image_t *image;
+ uint32_t *free_me = NULL;
+
+ /* must be a whole number of uint32_t's
+ */
+ return_val_if_fail (
+ bits == NULL || (rowstride_bytes % sizeof (uint32_t)) == 0, NULL);
+
+ return_val_if_fail (PIXMAN_FORMAT_BPP (format) >= PIXMAN_FORMAT_DEPTH (format), NULL);
+
+ if (!bits && width && height)
+ {
+ free_me = bits = create_bits (format, width, height, &rowstride_bytes);
+ if (!bits)
+ return NULL;
+ }
+
+ image = _pixman_image_allocate ();
+
+ if (!image)
+ {
+ if (free_me)
+ free (free_me);
+
+ return NULL;
+ }
+
+ image->type = BITS;
+ image->bits.format = format;
+ image->bits.width = width;
+ image->bits.height = height;
+ image->bits.bits = bits;
+ image->bits.free_me = free_me;
+ image->bits.read_func = NULL;
+ image->bits.write_func = NULL;
+
+ /* The rowstride is stored in number of uint32_t */
+ image->bits.rowstride = rowstride_bytes / (int) sizeof (uint32_t);
+
+ image->bits.indexed = NULL;
+
+ image->common.property_changed = bits_image_property_changed;
+
+ _pixman_image_reset_clip_region (image);
+
+ return image;
+}
diff --git a/pixman/pixman/pixman-fast-path.c b/pixman/pixman/pixman-fast-path.c
index 71d13da78..ad05493ca 100644
--- a/pixman/pixman/pixman-fast-path.c
+++ b/pixman/pixman/pixman-fast-path.c
@@ -30,7 +30,7 @@
#include <stdlib.h>
#include "pixman-private.h"
#include "pixman-combine32.h"
-#include "pixman-fast-path.h"
+#include "pixman-inlines.h"
static force_inline uint32_t
fetch_24 (uint8_t *a)
diff --git a/pixman/pixman/pixman-fast-path.h b/pixman/pixman/pixman-inlines.h
index 64a3b3fdf..664d4a1a6 100644
--- a/pixman/pixman/pixman-fast-path.h
+++ b/pixman/pixman/pixman-inlines.h
@@ -81,6 +81,97 @@ repeat (pixman_repeat_t repeat, int *c, int size)
return TRUE;
}
+#if SIZEOF_LONG > 4
+
+static force_inline uint32_t
+bilinear_interpolation (uint32_t tl, uint32_t tr,
+ uint32_t bl, uint32_t br,
+ int distx, int disty)
+{
+ uint64_t distxy, distxiy, distixy, distixiy;
+ uint64_t tl64, tr64, bl64, br64;
+ uint64_t f, r;
+
+ distxy = distx * disty;
+ distxiy = distx * (256 - disty);
+ distixy = (256 - distx) * disty;
+ distixiy = (256 - distx) * (256 - disty);
+
+ /* Alpha and Blue */
+ tl64 = tl & 0xff0000ff;
+ tr64 = tr & 0xff0000ff;
+ bl64 = bl & 0xff0000ff;
+ br64 = br & 0xff0000ff;
+
+ f = tl64 * distixiy + tr64 * distxiy + bl64 * distixy + br64 * distxy;
+ r = f & 0x0000ff0000ff0000ull;
+
+ /* Red and Green */
+ tl64 = tl;
+ tl64 = ((tl64 << 16) & 0x000000ff00000000ull) | (tl64 & 0x0000ff00ull);
+
+ tr64 = tr;
+ tr64 = ((tr64 << 16) & 0x000000ff00000000ull) | (tr64 & 0x0000ff00ull);
+
+ bl64 = bl;
+ bl64 = ((bl64 << 16) & 0x000000ff00000000ull) | (bl64 & 0x0000ff00ull);
+
+ br64 = br;
+ br64 = ((br64 << 16) & 0x000000ff00000000ull) | (br64 & 0x0000ff00ull);
+
+ f = tl64 * distixiy + tr64 * distxiy + bl64 * distixy + br64 * distxy;
+ r |= ((f >> 16) & 0x000000ff00000000ull) | (f & 0xff000000ull);
+
+ return (uint32_t)(r >> 16);
+}
+
+#else
+
+static force_inline uint32_t
+bilinear_interpolation (uint32_t tl, uint32_t tr,
+ uint32_t bl, uint32_t br,
+ int distx, int disty)
+{
+ int distxy, distxiy, distixy, distixiy;
+ uint32_t f, r;
+
+ distxy = distx * disty;
+ distxiy = (distx << 8) - distxy; /* distx * (256 - disty) */
+ distixy = (disty << 8) - distxy; /* disty * (256 - distx) */
+ distixiy =
+ 256 * 256 - (disty << 8) -
+ (distx << 8) + distxy; /* (256 - distx) * (256 - disty) */
+
+ /* Blue */
+ r = (tl & 0x000000ff) * distixiy + (tr & 0x000000ff) * distxiy
+ + (bl & 0x000000ff) * distixy + (br & 0x000000ff) * distxy;
+
+ /* Green */
+ f = (tl & 0x0000ff00) * distixiy + (tr & 0x0000ff00) * distxiy
+ + (bl & 0x0000ff00) * distixy + (br & 0x0000ff00) * distxy;
+ r |= f & 0xff000000;
+
+ tl >>= 16;
+ tr >>= 16;
+ bl >>= 16;
+ br >>= 16;
+ r >>= 16;
+
+ /* Red */
+ f = (tl & 0x000000ff) * distixiy + (tr & 0x000000ff) * distxiy
+ + (bl & 0x000000ff) * distixy + (br & 0x000000ff) * distxy;
+ r |= f & 0x00ff0000;
+
+ /* Alpha */
+ f = (tl & 0x0000ff00) * distixiy + (tr & 0x0000ff00) * distxiy
+ + (bl & 0x0000ff00) * distixy + (br & 0x0000ff00) * distxy;
+ r |= f & 0xff000000;
+
+ return r;
+}
+
+#endif
+
/*
* For each scanline fetched from source image with PAD repeat:
* - calculate how many pixels need to be padded on the left side
diff --git a/pixman/pixman/pixman-noop.c b/pixman/pixman/pixman-noop.c
index 4f8c3a18e..906a491f5 100644
--- a/pixman/pixman/pixman-noop.c
+++ b/pixman/pixman/pixman-noop.c
@@ -28,7 +28,7 @@
#include <stdlib.h>
#include "pixman-private.h"
#include "pixman-combine32.h"
-#include "pixman-fast-path.h"
+#include "pixman-inlines.h"
static void
noop_composite (pixman_implementation_t *imp,
diff --git a/pixman/pixman/pixman-private.h b/pixman/pixman/pixman-private.h
index 6a3935e4d..a25897d77 100644
--- a/pixman/pixman/pixman-private.h
+++ b/pixman/pixman/pixman-private.h
@@ -691,10 +691,13 @@ void *
pixman_malloc_abc (unsigned int a, unsigned int b, unsigned int c);
pixman_bool_t
-pixman_multiply_overflows_int (unsigned int a, unsigned int b);
+_pixman_multiply_overflows_size (size_t a, size_t b);
pixman_bool_t
-pixman_addition_overflows_int (unsigned int a, unsigned int b);
+_pixman_multiply_overflows_int (unsigned int a, unsigned int b);
+
+pixman_bool_t
+_pixman_addition_overflows_int (unsigned int a, unsigned int b);
/* Compositing utilities */
void
diff --git a/pixman/pixman/pixman-region.c b/pixman/pixman/pixman-region.c
index 142493b77..47beb5238 100644
--- a/pixman/pixman/pixman-region.c
+++ b/pixman/pixman/pixman-region.c
@@ -102,7 +102,11 @@
static const box_type_t PREFIX (_empty_box_) = { 0, 0, 0, 0 };
static const region_data_type_t PREFIX (_empty_data_) = { 0, 0 };
+#if defined (__llvm__) && !defined (__clang__)
+static const volatile region_data_type_t PREFIX (_broken_data_) = { 0, 0 };
+#else
static const region_data_type_t PREFIX (_broken_data_) = { 0, 0 };
+#endif
static box_type_t *pixman_region_empty_box =
(box_type_t *)&PREFIX (_empty_box_);
@@ -2086,6 +2090,40 @@ PIXMAN_EXPORT PREFIX (_inverse) (region_type_t *new_reg, /* Destination region
return TRUE;
}
+/* In time O(log n), locate the first box whose y2 is greater than y.
+ * Return @end if no such box exists.
+ */
+static box_type_t *
+find_box_for_y (box_type_t *begin, box_type_t *end, int y)
+{
+ box_type_t *mid;
+
+ if (end == begin)
+ return end;
+
+ if (end - begin == 1)
+ {
+ if (begin->y2 > y)
+ return begin;
+ else
+ return end;
+ }
+
+ mid = begin + (end - begin) / 2;
+ if (mid->y2 > y)
+ {
+ /* If no box is found in [begin, mid], the function
+ * will return @mid, which is then known to be the
+ * correct answer.
+ */
+ return find_box_for_y (begin, mid, y);
+ }
+ else
+ {
+ return find_box_for_y (mid, end, y);
+ }
+}
+
/*
* rect_in(region, rect)
* This routine takes a pointer to a region and a pointer to a box
@@ -2102,7 +2140,6 @@ PIXMAN_EXPORT PREFIX (_inverse) (region_type_t *new_reg, /* Destination region
* partially in the region) or is outside the region (we reached a band
* that doesn't overlap the box at all and part_in is false)
*/
-
pixman_region_overlap_t
PIXMAN_EXPORT PREFIX (_contains_rectangle) (region_type_t * region,
box_type_t * prect)
@@ -2139,12 +2176,15 @@ PIXMAN_EXPORT PREFIX (_contains_rectangle) (region_type_t * region,
/* can stop when both part_out and part_in are TRUE, or we reach prect->y2 */
for (pbox = PIXREGION_BOXPTR (region), pbox_end = pbox + numRects;
- pbox != pbox_end;
- pbox++)
+ pbox != pbox_end;
+ pbox++)
{
-
- if (pbox->y2 <= y)
- continue; /* getting up to speed or skipping remainder of band */
+ /* getting up to speed or skipping remainder of band */
+ if (pbox->y2 <= y)
+ {
+ if ((pbox = find_box_for_y (pbox, pbox_end, y)) == pbox_end)
+ break;
+ }
if (pbox->y1 > y)
{
@@ -2342,13 +2382,13 @@ PREFIX (_contains_point) (region_type_t * region,
return(TRUE);
}
- for (pbox = PIXREGION_BOXPTR (region), pbox_end = pbox + numRects;
- pbox != pbox_end;
- pbox++)
- {
- if (y >= pbox->y2)
- continue; /* not there yet */
+ pbox = PIXREGION_BOXPTR (region);
+ pbox_end = pbox + numRects;
+ pbox = find_box_for_y (pbox, pbox_end, y);
+
+ for (;pbox != pbox_end; pbox++)
+ {
if ((y < pbox->y1) || (x < pbox->x1))
break; /* missed it */
diff --git a/pixman/pixman/pixman-sse2.c b/pixman/pixman/pixman-sse2.c
index 3d51c2fda..6689c53a2 100644
--- a/pixman/pixman/pixman-sse2.c
+++ b/pixman/pixman/pixman-sse2.c
@@ -34,7 +34,7 @@
#include <emmintrin.h> /* for SSE2 intrinsics */
#include "pixman-private.h"
#include "pixman-combine32.h"
-#include "pixman-fast-path.h"
+#include "pixman-inlines.h"
static __m128i mask_0080;
static __m128i mask_00ff;
diff --git a/pixman/pixman/pixman-utils.c b/pixman/pixman/pixman-utils.c
index cb4e62199..49e3488aa 100644
--- a/pixman/pixman/pixman-utils.c
+++ b/pixman/pixman/pixman-utils.c
@@ -31,15 +31,19 @@
#include "pixman-private.h"
pixman_bool_t
-pixman_multiply_overflows_int (unsigned int a,
- unsigned int b)
+_pixman_multiply_overflows_size (size_t a, size_t b)
+{
+ return a >= SIZE_MAX / b;
+}
+
+pixman_bool_t
+_pixman_multiply_overflows_int (unsigned int a, unsigned int b)
{
return a >= INT32_MAX / b;
}
pixman_bool_t
-pixman_addition_overflows_int (unsigned int a,
- unsigned int b)
+_pixman_addition_overflows_int (unsigned int a, unsigned int b)
{
return a > INT32_MAX - b;
}
diff --git a/pixman/test/Makefile.am b/pixman/test/Makefile.am
index d785c2c2e..eca692236 100644
--- a/pixman/test/Makefile.am
+++ b/pixman/test/Makefile.am
@@ -15,6 +15,7 @@ TESTPROGRAMS = \
scaling-crash-test \
scaling-helpers-test \
gradient-crash-test \
+ region-contains-test \
alphamap \
stress-test \
composite-traps-test \
@@ -26,6 +27,7 @@ TESTPROGRAMS = \
pdf_op_test_SOURCES = pdf-op-test.c utils.c utils.h
region_test_SOURCES = region-test.c utils.c utils.h
blitters_test_SOURCES = blitters-test.c utils.c utils.h
+region_contains_test_SOURCES = region-contains-test.c utils.c utils.h
composite_traps_test_SOURCES = composite-traps-test.c utils.c utils.h
scaling_test_SOURCES = scaling-test.c utils.c utils.h
affine_test_SOURCES = affine-test.c utils.c utils.h
diff --git a/pixman/test/Makefile.win32 b/pixman/test/Makefile.win32
index c71afe187..a62b6fc35 100644
--- a/pixman/test/Makefile.win32
+++ b/pixman/test/Makefile.win32
@@ -35,6 +35,7 @@ SOURCES = \
scaling-test.c \
affine-test.c \
composite.c \
+ lowlevel-blt-bench.c \
utils.c
TESTS = \
@@ -56,6 +57,8 @@ TESTS = \
$(CFG_VAR)/affine-test.exe \
$(CFG_VAR)/composite.exe
+BENCHMARKS = \
+ $(CFG_VAR)/lowlevel-blt-bench.exe
OBJECTS = $(patsubst %.c, $(CFG_VAR)/%.obj, $(SOURCES))
@@ -66,7 +69,7 @@ $(CFG_VAR)/%.obj: %.c
$(CFG_VAR)/%.exe: $(CFG_VAR)/%.obj
$(LINK) /NOLOGO /OUT:$@ $< $(CFG_VAR)/utils.obj $(TEST_LDADD)
-all: $(OBJECTS) $(TESTS)
+all: $(OBJECTS) $(TESTS) $(BENCHMARKS)
@exit 0
clean:
diff --git a/pixman/test/lowlevel-blt-bench.c b/pixman/test/lowlevel-blt-bench.c
index d58587d51..099e434f0 100644
--- a/pixman/test/lowlevel-blt-bench.c
+++ b/pixman/test/lowlevel-blt-bench.c
@@ -22,16 +22,13 @@
* DEALINGS IN THE SOFTWARE.
*/
-#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
+#define PIXMAN_USE_INTERNAL_API
+#include <pixman.h>
-#include "pixman-private.h"
#include "utils.h"
#define SOLID_FLAG 1
diff --git a/pixman/test/region-contains-test.c b/pixman/test/region-contains-test.c
new file mode 100644
index 000000000..d761c4bdf
--- /dev/null
+++ b/pixman/test/region-contains-test.c
@@ -0,0 +1,169 @@
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "utils.h"
+
+static void
+make_random_region (pixman_region32_t *region)
+{
+ int n_boxes;
+
+ pixman_region32_init (region);
+
+ n_boxes = lcg_rand_n (64);
+ while (n_boxes--)
+ {
+ int32_t x1, y1, x2, y2;
+
+ x1 = (int32_t)lcg_rand_u32();
+ y1 = (int32_t)lcg_rand_u32();
+ x2 = (int32_t)lcg_rand_u32();
+ y2 = (int32_t)lcg_rand_u32();
+
+ pixman_region32_union_rect (region, region, x1, y1, x2, y2);
+ }
+}
+
+static void
+print_box (pixman_box32_t *box)
+{
+ printf (" %d %d %d %d\n", box->x1, box->y1, box->x2, box->y2);
+}
+
+static int32_t
+random_coord (pixman_region32_t *region, pixman_bool_t x)
+{
+ pixman_box32_t *b, *bb;
+ int n_boxes;
+ int begin, end;
+
+ if (lcg_rand_n (14))
+ {
+ bb = pixman_region32_rectangles (region, &n_boxes);
+ if (n_boxes == 0)
+ goto use_extent;
+ b = bb + lcg_rand_n (n_boxes);
+ }
+ else
+ {
+ use_extent:
+ b = pixman_region32_extents (region);
+ n_boxes = 1;
+ }
+
+ if (x)
+ {
+ begin = b->x1;
+ end = b->x2;
+ }
+ else
+ {
+ begin = b->y1;
+ end = b->y2;
+ }
+
+ switch (lcg_rand_n (5))
+ {
+ case 0:
+ return begin - lcg_rand_u32();
+ case 1:
+ return end + lcg_rand_u32 ();
+ case 2:
+ return end;
+ case 3:
+ return begin;
+ default:
+ return (begin + end) / 2;
+ }
+ return 0;
+}
+
+static uint32_t
+compute_crc32_u32 (uint32_t crc32, uint32_t v)
+{
+ if (!is_little_endian())
+ {
+ v = ((v & 0xff000000) >> 24) |
+ ((v & 0x00ff0000) >> 8) |
+ ((v & 0x0000ff00) << 8) |
+ ((v & 0x000000ff) << 24);
+ }
+
+ return compute_crc32 (crc32, &v, sizeof (int32_t));
+}
+
+static uint32_t
+crc32_box32 (uint32_t crc32, pixman_box32_t *box)
+{
+ crc32 = compute_crc32_u32 (crc32, box->x1);
+ crc32 = compute_crc32_u32 (crc32, box->y1);
+ crc32 = compute_crc32_u32 (crc32, box->x2);
+ crc32 = compute_crc32_u32 (crc32, box->y2);
+
+ return crc32;
+}
+
+static uint32_t
+test_region_contains_rectangle (int i, int verbose)
+{
+ pixman_box32_t box;
+ pixman_box32_t rbox = { 0, 0, 0, 0 };
+ pixman_region32_t region;
+ uint32_t r, r1, r2, r3, r4, crc32;
+
+ lcg_srand (i);
+
+ make_random_region (&region);
+
+ box.x1 = random_coord (&region, TRUE);
+ box.x2 = box.x1 + lcg_rand_u32 ();
+ box.y1 = random_coord (&region, FALSE);
+ box.y2 = box.y1 + lcg_rand_u32 ();
+
+ if (verbose)
+ {
+ int n_rects;
+ pixman_box32_t *boxes;
+
+ boxes = pixman_region32_rectangles (&region, &n_rects);
+
+ printf ("region:\n");
+ while (n_rects--)
+ print_box (boxes++);
+ printf ("box:\n");
+ print_box (&box);
+ }
+
+ crc32 = 0;
+
+ r1 = pixman_region32_contains_point (&region, box.x1, box.y1, &rbox);
+ crc32 = crc32_box32 (crc32, &rbox);
+ r2 = pixman_region32_contains_point (&region, box.x1, box.y2, &rbox);
+ crc32 = crc32_box32 (crc32, &rbox);
+ r3 = pixman_region32_contains_point (&region, box.x2, box.y1, &rbox);
+ crc32 = crc32_box32 (crc32, &rbox);
+ r4 = pixman_region32_contains_point (&region, box.x2, box.y2, &rbox);
+ crc32 = crc32_box32 (crc32, &rbox);
+
+ r = pixman_region32_contains_rectangle (&region, &box);
+ r = (i << 8) | (r << 4) | (r1 << 3) | (r2 << 2) | (r3 << 1) | (r4 << 0);
+
+ crc32 = compute_crc32_u32 (crc32, r);
+
+ if (verbose)
+ printf ("results: %d %d %d %d %d\n", (r & 0xf0) >> 4, r1, r2, r3, r4);
+
+ pixman_region32_fini (&region);
+
+ return crc32;
+}
+
+int
+main (int argc, const char *argv[])
+{
+ return fuzzer_test_main ("region_contains",
+ 1000000,
+ 0x86311506,
+ test_region_contains_rectangle,
+ argc, argv);
+}
diff --git a/pixman/test/scaling-helpers-test.c b/pixman/test/scaling-helpers-test.c
index c1861389b..a38cac544 100644
--- a/pixman/test/scaling-helpers-test.c
+++ b/pixman/test/scaling-helpers-test.c
@@ -4,7 +4,7 @@
#include <stdio.h>
#include <assert.h>
#include "utils.h"
-#include "pixman-fast-path.h"
+#include "pixman-inlines.h"
/* A trivial reference implementation for
* 'bilinear_pad_repeat_get_scanline_bounds'
diff --git a/pixman/test/utils.c b/pixman/test/utils.c
index 06c5e5128..da494cf59 100644
--- a/pixman/test/utils.c
+++ b/pixman/test/utils.c
@@ -130,6 +130,14 @@ compute_crc32 (uint32_t in_crc32,
return (crc32 ^ 0xFFFFFFFF);
}
+pixman_bool_t
+is_little_endian (void)
+{
+ volatile uint16_t endian_check_var = 0x1234;
+
+ return (*(volatile uint8_t *)&endian_check_var == 0x34);
+}
+
/* perform endian conversion of pixel data
*/
void
@@ -142,8 +150,7 @@ image_endian_swap (pixman_image_t *img)
int i, j;
/* swap bytes only on big endian systems */
- volatile uint16_t endian_check_var = 0x1234;
- if (*(volatile uint8_t *)&endian_check_var != 0x12)
+ if (is_little_endian())
return;
if (bpp == 8)
diff --git a/pixman/test/utils.h b/pixman/test/utils.h
index 8f0e0c0e5..9b4d984f7 100644
--- a/pixman/test/utils.h
+++ b/pixman/test/utils.h
@@ -44,10 +44,14 @@ lcg_rand_N (int max)
static inline uint32_t
lcg_rand_u32 (void)
{
- uint32_t lo = lcg_rand();
- uint32_t hi = lcg_rand();
-
- return (hi << 16) | lo;
+ /* This uses the 10/11 most significant bits from the 3 lcg results
+ * (and mixes them with the low from the adjacent one).
+ */
+ uint32_t lo = lcg_rand() >> -(32 - 15 - 11 * 2);
+ uint32_t mid = lcg_rand() << (32 - 15 - 11 * 1);
+ uint32_t hi = lcg_rand() << (32 - 15 - 11 * 0);
+
+ return (hi ^ mid ^ lo);
}
/* CRC 32 computation
@@ -57,6 +61,10 @@ compute_crc32 (uint32_t in_crc32,
const void *buf,
size_t buf_len);
+/* Returns TRUE if running on a little endian system */
+pixman_bool_t
+is_little_endian (void);
+
/* perform endian conversion of pixel data
*/
void
diff --git a/xorg-server/configure.ac b/xorg-server/configure.ac
index 841224885..403f08188 100644
--- a/xorg-server/configure.ac
+++ b/xorg-server/configure.ac
@@ -26,8 +26,8 @@ dnl
dnl Process this file with autoconf to create configure.
AC_PREREQ(2.57)
-AC_INIT([xorg-server], 1.10.99.902, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
-RELEASE_DATE="2011-08-03"
+AC_INIT([xorg-server], 1.11.0, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xorg-server)
+RELEASE_DATE="2011-08-26"
AC_CONFIG_SRCDIR([Makefile.am])
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE
diff --git a/xorg-server/exa/exa_mixed.c b/xorg-server/exa/exa_mixed.c
index 58645aea0..0b1a4a4a4 100644
--- a/xorg-server/exa/exa_mixed.c
+++ b/xorg-server/exa/exa_mixed.c
@@ -186,17 +186,20 @@ exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
}
/* Need to re-create system copy if there's also a GPU copy */
- if (has_gpu_copy && pExaPixmap->sys_ptr) {
- free(pExaPixmap->sys_ptr);
- pExaPixmap->sys_ptr = NULL;
- pExaPixmap->sys_pitch = PixmapBytePad(width, depth);
- DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
- DamageDestroy(pExaPixmap->pDamage);
- pExaPixmap->pDamage = NULL;
- RegionEmpty(&pExaPixmap->validSys);
+ if (has_gpu_copy) {
+ if (pExaPixmap->sys_ptr) {
+ free(pExaPixmap->sys_ptr);
+ pExaPixmap->sys_ptr = NULL;
+ DamageUnregister(&pPixmap->drawable, pExaPixmap->pDamage);
+ DamageDestroy(pExaPixmap->pDamage);
+ pExaPixmap->pDamage = NULL;
+ RegionEmpty(&pExaPixmap->validSys);
- if (pExaScr->deferred_mixed_pixmap == pPixmap)
- pExaScr->deferred_mixed_pixmap = NULL;
+ if (pExaScr->deferred_mixed_pixmap == pPixmap)
+ pExaScr->deferred_mixed_pixmap = NULL;
+ }
+
+ pExaPixmap->sys_pitch = PixmapBytePad(width, depth);
}
}
diff --git a/xorg-server/fb/fbblt.c b/xorg-server/fb/fbblt.c
index 053b78ab2..6b5327080 100644
--- a/xorg-server/fb/fbblt.c
+++ b/xorg-server/fb/fbblt.c
@@ -65,6 +65,7 @@ fbBlt (FbBits *srcLine,
int n, nmiddle;
Bool destInvarient;
int startbyte, endbyte;
+ int careful;
FbDeclareMergeRop ();
if (bpp == 24 && !FbCheck24Pix (pm))
@@ -74,12 +75,16 @@ fbBlt (FbBits *srcLine,
return;
}
- if (alu == GXcopy && pm == FB_ALLONES && !reverse &&
+ careful = !((srcLine < dstLine && srcLine + width * (bpp>>3) > dstLine) ||
+ (dstLine < srcLine && dstLine + width * (bpp>>3) > srcLine)) ||
+ (bpp & 7);
+
+ if (alu == GXcopy && pm == FB_ALLONES && !careful &&
!(srcX & 7) && !(dstX & 7) && !(width & 7)) {
int i;
CARD8 *src = (CARD8 *) srcLine;
CARD8 *dst = (CARD8 *) dstLine;
-
+
srcStride *= sizeof(FbBits);
dstStride *= sizeof(FbBits);
width >>= 3;
diff --git a/xorg-server/hw/xquartz/darwin.c b/xorg-server/hw/xquartz/darwin.c
index 8250f064a..06099398d 100644
--- a/xorg-server/hw/xquartz/darwin.c
+++ b/xorg-server/hw/xquartz/darwin.c
@@ -322,8 +322,8 @@ static int DarwinMouseProc(DeviceIntPtr pPointer, int what) {
(PtrCtrlProcPtr)NoopDDA,
GetMotionHistorySize(), NAXES,
axes_labels);
-// InitValuatorAxisStruct(pPointer, 0, 0, XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute);
-// InitValuatorAxisStruct(pPointer, 1, 0, XQUARTZ_VALUATOR_LIMIT, 1, 0, 1, Absolute);
+ InitValuatorAxisStruct(pPointer, 0, axes_labels[0], NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Absolute);
+ InitValuatorAxisStruct(pPointer, 1, axes_labels[1], NO_AXIS_LIMITS, NO_AXIS_LIMITS, 0, 0, 0, Absolute);
break;
case DEVICE_ON:
pPointer->public.on = TRUE;
diff --git a/xorg-server/xkeyboard-config/symbols/de b/xorg-server/xkeyboard-config/symbols/de
index 4b33becf1..3b183b2ed 100644
--- a/xorg-server/xkeyboard-config/symbols/de
+++ b/xorg-server/xkeyboard-config/symbols/de
@@ -64,7 +64,6 @@ xkb_symbols "nodeadkeys" {
key <AC10> { [odiaeresis, Odiaeresis, doubleacute, doubleacute ] };
key <AC11> { [adiaeresis, Adiaeresis, asciicircum, asciicircum ] };
key <BKSL> { [numbersign, apostrophe, grave, grave ] };
- key <AB10> { [ minus, underscore, dead_belowdot, abovedot ] };
};
partial alphanumeric_keys